Informix - Problem description
Problem IT09439 | Status: Closed |
JSON LISTENER CANNNOT CORRECTLY HANDLE REGULAR EXPRESSIONS IN $REGEX | |
product: | |
INFORMIX SERVER / 5725A3900 / C10 - IDS 12.10 | |
Problem description: | |
JSON listener can't handle regular expressions for $regex. Expressions like: db.arquivos.find( {"nome" :{"$regex" : /\*.[Zz][Pp][Ii]$/}}, {"nome":1}) will result in the following error: "code" : null, "ok" : 0, "errmsg" : "The regular expression /\\*.[Zz][Pp][Ii]$/ is not supported." } Listener log shows: 2015-06-10 12:12:44 [JsonListener-1-thread-1] ERROR com.ibm.nosql.informix.json.api.InformixDMLUtils - Unable to process query com.ibm.nosql.informix.json.api.MongoException: The regular expression /\*.[Zz][Pp][Ii]$/ is not supported. at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertRegex PatternToLike(AbstractQueryProcessor.java:469) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processRegex (AbstractQueryProcessor.java:439) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:166) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:306) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:144) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToWhereClause(AbstractQueryProcessor.java:338) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToSQLQuery(AbstractQueryProcessor.java:101) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:405) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:327) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessNonSystemQuery(InformixRequestHandler.java:901) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessQuery(InformixRequestHandler.java:488) at com.ibm.nosql.informix.internal.request.QueryRequest.process(Que ryRequest.java:250) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. handleMessage(MongoListenerMessageHandler.java:305) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. run(MongoListenerMessageHandler.java:128) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoo lExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe cutor.java:908) at java.lang.Thread.run(Thread.java:736) Even simpler expressions like: db.arquivos.find( {nome :{$regex: /^ZIP/, $options:'i' }}) results in same error: "code" : null, "ok" : 0, "errmsg" : "The regular expression /^ZIP/ is not supported." } Listener log shows: 2015-06-10 12:20:48 [JsonListener-1-thread-1] ERROR com.ibm.nosql.informix.json.api.InformixDMLUtils - Unable to process query com.ibm.nosql.informix.json.api.MongoException: The regular expression /^ZIP/ is not supported. at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertRegex PatternToLike(AbstractQueryProcessor.java:469) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processRegex (AbstractQueryProcessor.java:439) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:166) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:306) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:144) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToWhereClause(AbstractQueryProcessor.java:338) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToSQLQuery(AbstractQueryProcessor.java:101) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:405) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:327) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessNonSystemQuery(InformixRequestHandler.java:901) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessQuery(InformixRequestHandler.java:488) at com.ibm.nosql.informix.internal.request.QueryRequest.process(Que ryRequest.java:250) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. handleMessage(MongoListenerMessageHandler.java:305) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. run(MongoListenerMessageHandler.java:128) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoo lExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe cutor.java:908) at java.lang.Thread.run(Thread.java:736) If regular expression is used with $nin you will get: db.arquivos.find( { "nome" : { "$nin" : [ { "$regex" : /.*\.[Zz][Ii][Pp]$/}]}}, {"nome":1}) throws: "code" : null, "ok" : 0, "errmsg" : "Cannot process DB objects inside of an Array for $in command" } You'll see the following in the listener log file: 2015-06-10 12:05:46 [JsonListener-1-thread-1] ERROR com.ibm.nosql.informix.json.api.InformixDMLUtils - Unable to process query com.ibm.nosql.informix.json.api.MongoException: Cannot process DB objects inside of an Array for $in command at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:284) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:306) at com.ibm.nosql.informix.query.AbstractQueryProcessor.processObjec t(AbstractQueryProcessor.java:144) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToWhereClause(AbstractQueryProcessor.java:338) at com.ibm.nosql.informix.query.AbstractQueryProcessor.convertDBObj ectToSQLQuery(AbstractQueryProcessor.java:101) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:405) at com.ibm.nosql.informix.json.api.InformixDMLUtils.processCollecti onQuery(InformixDMLUtils.java:327) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessNonSystemQuery(InformixRequestHandler.java:901) at com.ibm.nosql.informix.internal.request.InformixRequestHandler.p rocessQuery(InformixRequestHandler.java:488) at com.ibm.nosql.informix.internal.request.QueryRequest.process(Que ryRequest.java:250) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. handleMessage(MongoListenerMessageHandler.java:305) at com.ibm.nosql.informix.server.mongo.MongoListenerMessageHandler. run(MongoListenerMessageHandler.java:128) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoo lExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe cutor.java:908) at java.lang.Thread.run(Thread.java:736) | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * Users of the JSON Listener using the Mongo $regex query * * operator. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to any product release post 12.10.xC5W1. * **************************************************************** | |
Local Fix: | |
Solution | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 12.06.2015 30.12.2015 30.12.2015 |
Problem solved at the following versions (IBM BugInfos) | |
12.10.xC5 | |
Problem solved according to the fixlist(s) of the following version(s) |