summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Flatz2018-10-25 18:28:47 +0200
committerDavid Flatz2018-10-25 18:28:47 +0200
commitddbe04f2924cfc6e3a00fd8df57d3ed14cff71fa (patch)
tree4d81b865fad72537d8b8f01de3fdfa3a8ca02461
parent26515c537900698895e29f062aa2c219f56b0878 (diff)
downloaditools-ddbe04f2924cfc6e3a00fd8df57d3ed14cff71fa.tar.gz
itools-ddbe04f2924cfc6e3a00fd8df57d3ed14cff71fa.tar.bz2
itools-ddbe04f2924cfc6e3a00fd8df57d3ed14cff71fa.zip
don't do JSON_EXTRACT when we use SQL functions with dyncols
-rw-r--r--it_dbi.class2
-rwxr-xr-xtest/it_dbi.t2
2 files changed, 3 insertions, 1 deletions
diff --git a/it_dbi.class b/it_dbi.class
index 76f4d1a..d3dbc11 100644
--- a/it_dbi.class
+++ b/it_dbi.class
@@ -383,7 +383,7 @@ function _where($params)
$qval = $this->escape_string((string)$value);
}
- if ($dyncols_enabled && $this->_fields['dyncols'] && !$this->_fields[$field])
+ if ($dyncols_enabled && $this->_fields['dyncols'] && !$this->_fields[$field] && strpos($field, '(') === false)
$field = "JSON_EXTRACT(dyncols, " . $this->escape_string('$.' . $field) . ")";
switch ($op)
diff --git a/test/it_dbi.t b/test/it_dbi.t
index a257105..6214716 100755
--- a/test/it_dbi.t
+++ b/test/it_dbi.t
@@ -377,6 +377,8 @@ is($r->select(['-key1 IS NOT' => 'NULL']), 0, 'no entry should have a value for
is($r->_where(['FROM' => 'it_dbi_test AS a, it_dbi_test AS b', '-a.ID' => 'b.ID']), 'WHERE a.ID = b.ID', "don't do JSON_EXTRACT when we have multiple tables in FROM");
is($r->_where(['JOIN' => 'it_dbi_test AS b', '-a.ID' => 'b.ID']), 'WHERE a.ID = b.ID', "don't do JSON_EXTRACT when we JOIN");
+is($r->_where(['LOWER(a)' => 'x']), "WHERE LOWER(a) = 'x'", "don't do JSON_EXTRACT when we use SQL functions");
+
#
# Test tracked update
#