diff options
author | Urban Müller | 2020-04-21 15:15:40 +0200 |
---|---|---|
committer | Urban Müller | 2020-04-21 15:15:40 +0200 |
commit | 6a80c9eb76c5828ae1584bab1019fd05eaf84984 (patch) | |
tree | 9b2c317c57ece073b891591f669ee55623579df6 | |
parent | 8b65a2b2426fd04d46c943c76af40347a611bcee (diff) | |
download | itools-6a80c9eb76c5828ae1584bab1019fd05eaf84984.tar.gz itools-6a80c9eb76c5828ae1584bab1019fd05eaf84984.tar.bz2 itools-6a80c9eb76c5828ae1584bab1019fd05eaf84984.zip |
support safe LIMIT
-rw-r--r-- | it_dbi.class | 4 | ||||
-rwxr-xr-x | test/it_dbi.t | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/it_dbi.class b/it_dbi.class index 8cf8d54..7c13eec 100644 --- a/it_dbi.class +++ b/it_dbi.class @@ -355,6 +355,10 @@ function _where($params) else $sep = ' OR '; } + else if ($field == "LIMIT") + { + $stringquery .= " LIMIT " . (it::match('^[ ,\d]+$', $value) ?: it::error(['title' => "invalid LIMIT $value", 'body' => $params]) + 0); + } else { $needs_where = true; diff --git a/test/it_dbi.t b/test/it_dbi.t index 9f43f6e..165861f 100755 --- a/test/it_dbi.t +++ b/test/it_dbi.t @@ -348,6 +348,11 @@ $r->update(['key4' => "val4'"]); is($r->_writes, 0); is($r- $r->update(['key4' => "val4'", 'key5' => "val5'"]); is($r->_writes, 1); is($r->key4, "val4'"); is($r->key5, "val5'"); $r->update(['key4' => "val4'", 'key5' => "val5'"]); is($r->_writes, 1); is($r->key4, "val4'"); is($r->key5, "val5'"); +# Check LIMIT +$count = $r->select('ID >' => 0, 'ORDER BY ID DESC', 'LIMIT' => 1); +is($count, 1); +is($r->ID, 6); + # Check if iterator clears dynfields left over from previous record $r->delete(["WHERE 1"]); $r->replace(['ID' => 1, 'key1' => "a"]); |