@@ -6,28 +6,28 @@ import dev.mongocamp.driver.mongodb.database.DatabaseProvider
66import dev .mongocamp .driver .mongodb .database .DatabaseProvider .CollectionSeparator
77import dev .mongocamp .driver .mongodb .exception .SqlCommandNotSupportedException
88import dev .mongocamp .driver .mongodb .sql .SQLCommandType .SQLCommandType
9- import net .sf .jsqlparser .expression .operators .conditional .{ AndExpression , OrExpression }
9+ import net .sf .jsqlparser .expression .operators .conditional .{AndExpression , OrExpression }
1010import net .sf .jsqlparser .expression .operators .relational ._
11- import net .sf .jsqlparser .expression .{ Expression , Parenthesis }
12- import net .sf .jsqlparser .parser .{ CCJSqlParser , StreamProvider }
11+ import net .sf .jsqlparser .expression .{Expression , Parenthesis }
12+ import net .sf .jsqlparser .parser .{CCJSqlParser , StreamProvider }
1313import net .sf .jsqlparser .schema .Table
14- import net .sf .jsqlparser .statement .UnsupportedStatement
14+ import net .sf .jsqlparser .statement .{ ShowStatement , UnsupportedStatement }
1515import net .sf .jsqlparser .statement .alter .Alter
1616import net .sf .jsqlparser .statement .create .index .CreateIndex
1717import net .sf .jsqlparser .statement .create .table .CreateTable
1818import net .sf .jsqlparser .statement .delete .Delete
1919import net .sf .jsqlparser .statement .drop .Drop
2020import net .sf .jsqlparser .statement .execute .Execute
2121import net .sf .jsqlparser .statement .insert .Insert
22- import net .sf .jsqlparser .statement .select .{ FromItem , PlainSelect , Select , SelectItem }
22+ import net .sf .jsqlparser .statement .select .{FromItem , PlainSelect , Select , SelectItem }
2323import net .sf .jsqlparser .statement .show .ShowTablesStatement
2424import net .sf .jsqlparser .statement .truncate .Truncate
2525import net .sf .jsqlparser .statement .update .Update
2626import org .bson .conversions .Bson
2727import org .h2 .command .ddl .AlterTable
2828import org .mongodb .scala .model .IndexOptions
2929import org .mongodb .scala .model .Sorts .ascending
30- import org .mongodb .scala .{ Document , Observable , SingleObservable }
30+ import org .mongodb .scala .{Document , Observable , SingleObservable }
3131
3232import java .sql .SQLException
3333import java .util .Date
@@ -112,15 +112,14 @@ class MongoSqlQueryHolder {
112112 else if (classOf [Alter ].isAssignableFrom(statement.getClass)) {
113113 sqlCommandType = SQLCommandType .AlterTable
114114 }
115- else if (classOf [UnsupportedStatement ].isAssignableFrom(statement.getClass)) {
116- val unsupportedStatement = statement.asInstanceOf [UnsupportedStatement ]
117- val isShowDatabases = unsupportedStatement.toString.toLowerCase.contains(" show databases" )
118- val isShowSchemas = unsupportedStatement.toString.toLowerCase.contains(" show schemas" )
119- if (isShowDatabases | isShowSchemas) {
120- sqlCommandType = SQLCommandType .ShowDatabases
121- }
122- else {
123- throw new SqlCommandNotSupportedException (s " not supported sql command type < ${statement.getClass.getSimpleName}> " )
115+ else if (classOf [ShowStatement ].isAssignableFrom(statement.getClass)) {
116+ val unsupportedStatement = statement.asInstanceOf [ShowStatement ]
117+ unsupportedStatement.getName.trim.toUpperCase match {
118+ case " DATABASES" =>
119+ sqlCommandType = SQLCommandType .ShowDatabases
120+ case " SCHEMAS" =>
121+ sqlCommandType = SQLCommandType .ShowDatabases
122+ case _ =>
124123 }
125124 }
126125 else {
@@ -289,8 +288,8 @@ class MongoSqlQueryHolder {
289288 parseWhere(e.getLeftExpression, left)
290289 parseWhere(e.getRightExpression, right)
291290 queryMap.put(" $and" , List (left, right))
292- case e : Parenthesis =>
293- parseWhere(e.getExpression , queryMap)
291+ case e : ParenthesedExpressionList [ Expression ] =>
292+ e.asScala.foreach(ex => parseWhere(ex , queryMap) )
294293 case e : InExpression =>
295294 val value = e.getRightExpression match {
296295 case l : ParenthesedExpressionList [Expression ] => l.asScala.map(convertValue)
0 commit comments