You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
duird version: 1.2.22
sql:
SELECT id FROM a_product WHERE a_product.tenant_id=123 AND (tenant_id=123 AND del_flg=0 AND (product_name COLLATE "C" ILIKE '%70%' AND (INDEPENDENT_PRODUCT=1 AND ((1711942157815>=START_DATE AND 1711942157815< END_DATE) OR (START_DATE IS NULL AND END_DATE IS NULL) OR (START_DATE IS NULL AND 1711942157815< END_DATE) OR (1711942157815>=START_DATE AND END_DATE IS NULL))) AND id IN (SELECT dbc_relation_2 FROM p_custom_data_408 WHERE p_custom_data_408.tenant_id=123 AND (TENANT_ID=123 AND dbc_relation_1=1706133096090917 AND DELETE_FLG=0 AND dbc_select_2=1)) AND (((EXISTS (SELECT id FROM b_entity_checkbox pickvalue WHERE pickvalue.tenant_id=123 AND (a_product.id=pickvalue.object_id AND item_id=1776944933031192 AND option_code IN (1))) AND 1=1) OR (EXISTS (SELECT id FROM b_entity_checkbox pickvalue WHERE pickvalue.tenant_id=123 AND (a_product.id=pickvalue.object_id AND item_id=1776944933031192 AND option_code IN (2))) AND id=-999999999)) AND dbc_varchar_16='FERT') AND 1=1)) ORDER BY product_name,created_at DESC,id DESC LIMIT 20
代码:
List sqlStatements = SQLUtils.parseStatements(sql, JdbcConstants.POSTGRESQL);
异常信息:
com.alibaba.druid.sql.parser.ParserException: syntax error, expect ), actual IDENTIFIER pos 139, line 1, column 133, token IDENTIFIER COLLATE
at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:4668)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:394)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser.primary(PGExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:153)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:255)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:3304)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:3350)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:3076)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:3095)
at com.alibaba.druid.sql.parser.SQLExprParser.relational(SQLExprParser.java:3591)
at com.alibaba.druid.sql.parser.SQLExprParser.andRest(SQLExprParser.java:3442)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:117)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:369)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser.primary(PGExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:153)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:255)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:3304)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:3350)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:3076)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:3095)
at com.alibaba.druid.sql.parser.SQLExprParser.relational(SQLExprParser.java:3591)
at com.alibaba.druid.sql.parser.SQLExprParser.andRest(SQLExprParser.java:3442)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseWhere(SQLSelectParser.java:710)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGSelectParser.query(PGSelectParser.java:131)
The text was updated successfully, but these errors were encountered:
lizongbo
added a commit
to lizongbo/druid
that referenced
this issue
May 4, 2024
Postgresql的sql解析失败,应该和like中的COLLATE 有关。
duird version: 1.2.22
sql:
SELECT id FROM a_product WHERE a_product.tenant_id=123 AND (tenant_id=123 AND del_flg=0 AND (product_name COLLATE "C" ILIKE '%70%' AND (INDEPENDENT_PRODUCT=1 AND ((1711942157815>=START_DATE AND 1711942157815< END_DATE) OR (START_DATE IS NULL AND END_DATE IS NULL) OR (START_DATE IS NULL AND 1711942157815< END_DATE) OR (1711942157815>=START_DATE AND END_DATE IS NULL))) AND id IN (SELECT dbc_relation_2 FROM p_custom_data_408 WHERE p_custom_data_408.tenant_id=123 AND (TENANT_ID=123 AND dbc_relation_1=1706133096090917 AND DELETE_FLG=0 AND dbc_select_2=1)) AND (((EXISTS (SELECT id FROM b_entity_checkbox pickvalue WHERE pickvalue.tenant_id=123 AND (a_product.id=pickvalue.object_id AND item_id=1776944933031192 AND option_code IN (1))) AND 1=1) OR (EXISTS (SELECT id FROM b_entity_checkbox pickvalue WHERE pickvalue.tenant_id=123 AND (a_product.id=pickvalue.object_id AND item_id=1776944933031192 AND option_code IN (2))) AND id=-999999999)) AND dbc_varchar_16='FERT') AND 1=1)) ORDER BY product_name,created_at DESC,id DESC LIMIT 20
代码:
List sqlStatements = SQLUtils.parseStatements(sql, JdbcConstants.POSTGRESQL);
异常信息:
com.alibaba.druid.sql.parser.ParserException: syntax error, expect ), actual IDENTIFIER pos 139, line 1, column 133, token IDENTIFIER COLLATE
at com.alibaba.druid.sql.parser.SQLExprParser.accept(SQLExprParser.java:4668)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:394)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser.primary(PGExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:153)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:255)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:3304)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:3350)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:3076)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:3095)
at com.alibaba.druid.sql.parser.SQLExprParser.relational(SQLExprParser.java:3591)
at com.alibaba.druid.sql.parser.SQLExprParser.andRest(SQLExprParser.java:3442)
at com.alibaba.druid.sql.parser.SQLExprParser.expr(SQLExprParser.java:117)
at com.alibaba.druid.sql.parser.SQLExprParser.primary(SQLExprParser.java:369)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser.primary(PGExprParser.java:163)
at com.alibaba.druid.sql.parser.SQLExprParser.bitXor(SQLExprParser.java:153)
at com.alibaba.druid.sql.parser.SQLExprParser.multiplicative(SQLExprParser.java:255)
at com.alibaba.druid.sql.parser.SQLExprParser.additive(SQLExprParser.java:3304)
at com.alibaba.druid.sql.parser.SQLExprParser.shift(SQLExprParser.java:3350)
at com.alibaba.druid.sql.parser.SQLExprParser.bitAnd(SQLExprParser.java:3076)
at com.alibaba.druid.sql.parser.SQLExprParser.bitOr(SQLExprParser.java:3095)
at com.alibaba.druid.sql.parser.SQLExprParser.relational(SQLExprParser.java:3591)
at com.alibaba.druid.sql.parser.SQLExprParser.andRest(SQLExprParser.java:3442)
at com.alibaba.druid.sql.parser.SQLSelectParser.parseWhere(SQLSelectParser.java:710)
at com.alibaba.druid.sql.dialect.postgresql.parser.PGSelectParser.query(PGSelectParser.java:131)
The text was updated successfully, but these errors were encountered: