Skip to content

Cannot use Cloud SQL array item syntax #128

@O1O1O1O

Description

@O1O1O1O

When attempting to access an item of an array in a query using syntax that is accepted in interactive SQL console we get a parsing error from nl.topicus.jdbc.shaded.net.sf.jsqlparser

ERROR - SQL execution failed (Reason: Error while parsing sql statement SELECT DISTINCT DOMAIN FROM foo WHERE client_id=4 AND profile_id=42 AND visits[0] > 0: null):

   SELECT DISTINCT DOMAIN FROM foo WHERE client_id=4 AND profile_id=42 AND visits[0] > 0

nl.topicus.jdbc.exception.CloudSpannerSQLException: Error while parsing sql statement SELECT DISTINCT DOMAIN FROM foo WHERE client_id=4 AND profile_id=42 AND visits[0] > 0: null
  at nl.topicus.jdbc.statement.CloudSpannerPreparedStatement.executeQuery(CloudSpannerPreparedStatement.java:141)
  at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
  at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:83)
  at scalikejdbc.DBConnectionAttributesWiredPreparedStatement.executeQuery(DBConnectionAttributesWiredPreparedStatement.scala:63)
  at scalikejdbc.StatementExecutor$$anonfun$executeQuery$1.apply(StatementExecutor.scala:337)
  at scalikejdbc.StatementExecutor$$anonfun$executeQuery$1.apply(StatementExecutor.scala:337)
  at scalikejdbc.StatementExecutor$NakedExecutor.apply(StatementExecutor.scala:18)
  at scalikejdbc.StatementExecutor$$anon$1.scalikejdbc$StatementExecutor$LoggingSQLAndTiming$$super$apply(StatementExecutor.scala:319)
  at scalikejdbc.StatementExecutor$LoggingSQLAndTiming$class.apply(StatementExecutor.scala:263)
  at scalikejdbc.StatementExecutor$$anon$1.scalikejdbc$StatementExecutor$LoggingSQLIfFailed$$super$apply(StatementExecutor.scala:319)
  at scalikejdbc.StatementExecutor$LoggingSQLIfFailed$class.apply(StatementExecutor.scala:296)
  at scalikejdbc.StatementExecutor$$anon$1.apply(StatementExecutor.scala:319)
  at scalikejdbc.StatementExecutor.executeQuery(StatementExecutor.scala:337)
  at scalikejdbc.DBSession$$anonfun$collection$1.apply(DBSession.scala:318)
  at scalikejdbc.DBSession$$anonfun$collection$1.apply(DBSession.scala:317)
  at scalikejdbc.LoanPattern$class.using(LoanPattern.scala:18)
  at scalikejdbc.ActiveSession.using(DBSession.scala:705)
  at scalikejdbc.DBSession$class.collection(DBSession.scala:316)
  at scalikejdbc.ActiveSession.collection(DBSession.scala:705)
  at scalikejdbc.DBSession$class.list(DBSession.scala:302)
  at scalikejdbc.ActiveSession.list(DBSession.scala:705)
  at scalikejdbc.DBSessionWrapper$$anonfun$list$1.apply(DBSessionWrapper.scala:53)
  at scalikejdbc.DBSessionWrapper$$anonfun$list$1.apply(DBSessionWrapper.scala:53)
  at scalikejdbc.DBSessionWrapper$$anonfun$withAttributesSwitchedDBSession$1.apply(DBSessionWrapper.scala:35)
  at scalikejdbc.DBSessionWrapper$$anonfun$withAttributesSwitchedDBSession$1.apply(DBSessionWrapper.scala:34)
  at scalikejdbc.DBSessionAttributesSwitcher.withSwitchedDBSession(DBSessionAttributesSwitcher.scala:31)
  at scalikejdbc.DBSessionWrapper.withAttributesSwitchedDBSession(DBSessionWrapper.scala:34)
  at scalikejdbc.DBSessionWrapper.list(DBSessionWrapper.scala:53)
  at scalikejdbc.SQLToList$class.result(SQL.scala:855)
  at scalikejdbc.SQLToListImpl.result(SQL.scala:868)
  at scalikejdbc.SQLToListImpl.result(SQL.scala:868)
  at scalikejdbc.SQLToResult$$anonfun$11.apply(SQL.scala:731)
  at scalikejdbc.SQLToResult$$anonfun$11.apply(SQL.scala:731)
  at scalikejdbc.SQLToResult$class.apply(SQL.scala:737)
  at scalikejdbc.SQLToListImpl.apply(SQL.scala:868)
  at $anonfun$1.apply(<console>:25)
  at $anonfun$1.apply(<console>:24)
  at scalikejdbc.DBConnection$$anonfun$readOnly$1.apply(DBConnection.scala:201)
  at scalikejdbc.DBConnection$$anonfun$readOnly$1.apply(DBConnection.scala:201)
  at scalikejdbc.LoanPattern$class.using(LoanPattern.scala:18)
  at scalikejdbc.NamedDB.using(NamedDB.scala:20)
  at scalikejdbc.DBConnection$class.readOnly(DBConnection.scala:201)
  at scalikejdbc.NamedDB.readOnly(NamedDB.scala:20)
  ... 43 elided
Caused by: nl.topicus.jdbc.shaded.net.sf.jsqlparser.JSQLParserException: nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "[" "["
    at line 1, column 79.

Was expecting one of:

    "&&"
    ";"
    "AND"
    "CONNECT"
    "EXCEPT"
    "FOR"
    "GROUP"
    "HAVING"
    "INTERSECT"
    "MINUS"
    "ORDER"
    "START"
    "UNION"
    <EOF>

  at nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:55)
  at nl.topicus.jdbc.statement.CloudSpannerPreparedStatement.executeQuery(CloudSpannerPreparedStatement.java:139)
  ... 85 more
Caused by: nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "[" "["
    at line 1, column 79.

Was expecting one of:

    "&&"
    ";"
    "AND"
    "CONNECT"
    "EXCEPT"
    "FOR"
    "GROUP"
    "HAVING"
    "INTERSECT"
    "MINUS"
    "ORDER"
    "START"
    "UNION"
    <EOF>

  at nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:18164)
  at nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:18014)
  at nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:91)
  at nl.topicus.jdbc.shaded.net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:53)
  ... 86 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions