ksql-jdbc-driver icon indicating copy to clipboard operation
ksql-jdbc-driver copied to clipboard

Error parsing query: mismatched input 'PRIMARY' expecting {',', ')'

Open Hubbitus opened this issue 4 years ago • 5 comments

I've continue try (https://github.com/mmolimar/ksql-jdbc-driver/issues/29) using that driver and on query:

CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic='datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');

got error: SQL Error: Error parsing query 'CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');': line 1:41: mismatched input 'PRIMARY' expecting {',', ')'}

Stacktrace:

org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error: Error parsing query 'CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');': line 1:41: mismatched input 'PRIMARY' expecting {',', ')'}
Statement: CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');..
	at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:509)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:440)
	at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:168)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:427)
	at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:812)
	at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:3096)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:121)
	at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:168)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:119)
	at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:4460)
	at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLException: Error parsing query 'CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');': line 1:41: mismatched input 'PRIMARY' expecting {',', ')'}
Statement: CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');..
	at com.github.mmolimar.ksql.jdbc.Exceptions$.wrapException(Exceptions.scala:84)
	at com.github.mmolimar.ksql.jdbc.KsqlStatement.executeKsqlRequest(KsqlStatement.scala:149)
	at com.github.mmolimar.ksql.jdbc.KsqlStatement.execute(KsqlStatement.scala:187)
	at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:327)
	at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:130)
	... 12 more
Caused by: io.confluent.ksql.parser.exception.ParseFailedException: line 1:41: mismatched input 'PRIMARY' expecting {',', ')'}
Statement: CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');
	at io.confluent.ksql.parser.DefaultKsqlParser.parse(DefaultKsqlParser.java:64)
	at com.github.mmolimar.ksql.jdbc.KsqlStatement.$anonfun$executeKsqlRequest$1(KsqlStatement.scala:148)
	at scala.util.Try$.apply(Try.scala:213)
	at com.github.mmolimar.ksql.jdbc.KsqlStatement.executeKsqlRequest(KsqlStatement.scala:148)
	... 15 more
Caused by: io.confluent.ksql.parser.ParsingException: line 1:41: mismatched input 'PRIMARY' expecting {',', ')'}
	at io.confluent.ksql.parser.DefaultKsqlParser$1.syntaxError(DefaultKsqlParser.java:50)
	at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:41)
	at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:544)
	at org.antlr.v4.runtime.DefaultErrorStrategy.reportInputMismatch(DefaultErrorStrategy.java:299)
	at org.antlr.v4.runtime.DefaultErrorStrategy.reportError(DefaultErrorStrategy.java:124)
	at io.confluent.ksql.parser.SqlBaseParser.tableElements(SqlBaseParser.java:2117)
	at io.confluent.ksql.parser.SqlBaseParser.statement(SqlBaseParser.java:1541)
	at io.confluent.ksql.parser.SqlBaseParser.singleStatement(SqlBaseParser.java:260)
	at io.confluent.ksql.parser.SqlBaseParser.statements(SqlBaseParser.java:208)
	at io.confluent.ksql.parser.DefaultKsqlParser.getParseTree(DefaultKsqlParser.java:108)
	at io.confluent.ksql.parser.DefaultKsqlParser.parse(DefaultKsqlParser.java:57)
	... 18 more
Caused by: org.antlr.v4.runtime.InputMismatchException
	at org.antlr.v4.runtime.DefaultErrorStrategy.sync(DefaultErrorStrategy.java:242)
	at io.confluent.ksql.parser.SqlBaseParser.tableElements(SqlBaseParser.java:2096)
	... 23 more

On ksqlDB cli it works pretty well:

ksql> CREATE TABLE proposals_table (id STRING PRIMARY KEY) WITH (kafka_topic = 'datahub.epm_staf.qa20.v1.m_proposals', value_format='AVRO');

 Message       
---------------
 Table created 
---------------

Hubbitus avatar Nov 27 '20 11:11 Hubbitus

I guess your KSQL version is not the same like the version which is linked to the driver.

mmolimar avatar Jan 08 '21 20:01 mmolimar

How I could check it?

Hubbitus avatar Jan 15 '21 10:01 Hubbitus

If you don't know your KSQL server version, you can use the health check endpoint to query it.

mmolimar avatar Jan 15 '21 23:01 mmolimar

And what version is linked to your released driver?

Hubbitus avatar Aug 13 '21 09:08 Hubbitus

You can see that here.

mmolimar avatar Aug 14 '21 08:08 mmolimar