Uploaded image for project: 'Teiid'
  1. Teiid
  2. TEIID-2988

MongoDB: Function substring - starting index and number of arguments

XMLWordPrintable

      Two minor bugs in function substring()

      Mongo's function $substr takes only 3 arguments so this query fails:

      SELECT intkey, SUBSTRING(BQT1.SmallA.stringkey, 1) FROM BQT1.SmallA ORDER BY intkey
      
      Exception:13:18:48,220 ERROR [org.teiid.CONNECTOR] (Worker38_QueryProcessorQueue345) Connector worker process failed for atomic-request=omsmHP0o16Sa.40.0.86: com.mongodb.CommandFailureException: { "serverUsed" : "localhost/127.0.0.1:27017" , "errmsg" : "exception: the $substr operator requires 3 operand(s)" , "code" : 16020 , "ok" : 0.0}
      	at com.mongodb.CommandResult.getException(CommandResult.java:71)
      	at com.mongodb.CommandResult.throwOnError(CommandResult.java:110)
      	at com.mongodb.DBCollection.aggregate(DBCollection.java:1308)
      

      Generated mongo command:

      { aggregate: "smalla", pipeline: [ { $project: { c_0: "$INTKEY", c_1: { $substr: [ "$STRINGKEY", 1 ] } } }, { $sort: { c_0: 1 } } ] }
      

      Mongo's $substr function second argument represents number of bytes to skip, not the starting index. The function substring(StringKey,1,1) returns the second letter, but it should return the first letter.

              rhn-engineering-rareddy Ramesh Reddy
              felias_jira Filip Elias (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: