Skip to content

Cannot use Cloud SQL array item syntax #128

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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