Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-22282

Simba driver prepares an INSERT SQL statement incorrectly

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 5.0.0
    • 4.5.1
    • query_drivers
    • Triaged
    • Unknown
    • Query-Sprint-02-06-2017

    Description

      System details :  

      1. Client is 172.23.100.204
      2. cd /root/CASSANDRA-YCSB/YCSB_3
      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.

      Attachments

        1. schema_cb.json
          2 kB
          Sandip Nandi
        2. simbacb.java.txt
          2 kB
          Sandip Nandi

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              Prasad.Varakur Prasad Varakur
              johan.larson Johan Larson (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty