Skip to content

SQL "update" statement does not recognize queries as array indexes #1083

Closed
@freya022

Description

@freya022

Describe the bug
SQL "update" statement with an array index are not recognized

To Reproduce
Steps to reproduce the behavior:

  1. Example SQL
    update utilisateur set listes[(select cardinality(listes))] = 1;
  2. Parsing this SQL using JSqlParser with this statements
final String query = "update utilisateur set listes[(select cardinality(listes))] = 1;";
final List<ValidationError> validate = Validation.validate(List.of(DatabaseType.POSTGRESQL), query);
  1. Exception
Exception in thread "main" net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "[" "["
    at line 1, column 30.

Was expecting one of:

    ","
    "="

	at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:26615)
	at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:26454)
	at net.sf.jsqlparser.parser.CCJSqlParser.Update(CCJSqlParser.java:1382)

Expected behavior
The query should be valid

This SQL statement is valid though :
select messages from liste where login = 'test' order by messages[(select cardinality(messages) from liste where idliste = 1)] asc;

System

  • Database you are using : PostgreSQL 13
  • Java Version : 15
  • JSqlParser version : 4.0-SNAPSHOT

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions