Details
-
Bug
-
Resolution: Fixed
-
Major
-
4.5.1
-
Triaged
-
Unknown
-
Query-Sprint-02-06-2017
Description
System details :
- Client is 172.23.100.204
- cd /root/CASSANDRA-YCSB/YCSB_3
- run jdbcload.sh
Server :
1. server is 172.23.100.190
2. CB version 4.5.1
The problem here is that the ycsb client sends this query to JDBC:
INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)
This statement is correct SQL but not correct N1QL. The Simba driver tries to prepare this statement by converting it into this statement, as though it were N1QL:
prepare INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)
This is not correct N1QL. The Simba driver should convert the original statement to N1QL and then prepend a "prepare".
Here is the log output:
Jan 11 11:21:05.852 TRACE 24 com.simba.couchbase.dataengine.CBNativeQueryExecutor.CBNativeQueryExecutor("INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)", null, false): +++++ enter +++++
|
Jan 11 11:21:05.853 TRACE 24 com.simba.couchbase.core.CBClient.preparedStatement("INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)"): +++++ enter +++++
|
Jan 11 11:21:05.853 TRACE 24 com.simba.couchbase.client.N1QLClient.prepareStatement("INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)"): +++++ enter +++++
|
Jan 11 11:21:05.853 TRACE 24 com.simba.couchbase.client.N1QLClientUtil.GET("prepare INSERT INTO usertable (YCSB_KEY,field1,field0,field7,field6,field9,field8,field3,field2,field5,field4) VALUES(?,?,?,?,?,?,?,?,?,?,?)", "statement"): +++++ enter +++++
|
Jan 11 11:21:05.856 TRACE 24 com.simba.couchbase.client.N1QLClientUtil.GET("Error Detected in during GET operation"): +++++ enter +++++
|
Jan 11 11:21:05.862 ERROR 24 com.simba.exceptions.ExceptionConverter.toSQLException: [Simba][CouchbaseJDBCDriver](500207) Error preparing statement, prepare statement fail. Code: 3000, message syntax error - at YCSB_KEY
|
java.sql.SQLException: [Simba][CouchbaseJDBCDriver](500207) Error preparing statement, prepare statement fail. Code: 3000, message syntax error - at YCSB_KEY
|
at com.simba.couchbase.utils.CBQueryUtils.buildServerErrorMessage(CBQueryUtils.java:114)
|
at com.simba.couchbase.core.CBClient.preparedStatement(CBClient.java:367)
|
at com.simba.couchbase.dataengine.CBNativeQueryExecutor.<init>(CBNativeQueryExecutor.java:189)
|
at com.simba.couchbase.dataengine.CBSQLDataEngine.prepare(CBSQLDataEngine.java:323)
|
at com.simba.jdbc.common.SPreparedStatement.<init>(Unknown Source)
|
at com.simba.jdbc.jdbc4.S4PreparedStatement.<init>(Unknown Source)
|
at com.simba.jdbc.jdbc4.JDBC4ObjectFactory.createPreparedStatement(Unknown Source)
|
at com.simba.couchbase.jdbc4.CBJDBC4ObjectFactory.createPreparedStatement(CBJDBC4ObjectFactory.java:115)
|
at com.simba.jdbc.common.SConnection.prepareStatement(Unknown Source)
|
at com.yahoo.ycsb.db.JdbcDBClient.createAndCacheInsertStatement(JdbcDBClient.java:263)
|
at com.yahoo.ycsb.db.JdbcDBClient.insert(JdbcDBClient.java:415)
|
at com.yahoo.ycsb.DBWrapper.insert(DBWrapper.java:240)
|
at com.yahoo.ycsb.workloads.CoreWorkload.doInsert(CoreWorkload.java:593)
|
at com.yahoo.ycsb.ClientThread.run(Client.java:475)
|
Caused by: com.simba.support.exceptions.GeneralException: [Simba][CouchbaseJDBCDriver](500207) Error preparing statement, prepare statement fail. Code: 3000, message syntax error - at YCSB_KEY
|
... 14 more
|
I will file a ticket with Simba for this problem.