From 69f0be2a3c667a692cb1566e12bff4e9145d7bc8 Mon Sep 17 00:00:00 2001
From: Donnie Pinkston <donnie@cms.caltech.edu>
Date: Mon, 25 Feb 2019 09:25:18 -0800
Subject: [PATCH] Translator supports NOT LIKE / NOT SIMILAR TO

---
 .../caltech/nanodb/sqlparse/NanoSQLTranslator.java | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/main/java/edu/caltech/nanodb/sqlparse/NanoSQLTranslator.java b/src/main/java/edu/caltech/nanodb/sqlparse/NanoSQLTranslator.java
index 3a7f236..fa80357 100644
--- a/src/main/java/edu/caltech/nanodb/sqlparse/NanoSQLTranslator.java
+++ b/src/main/java/edu/caltech/nanodb/sqlparse/NanoSQLTranslator.java
@@ -1002,16 +1002,26 @@ public class NanoSQLTranslator extends NanoSQLBaseVisitor<Object> {
 
     @Override
     public Object visitExprLike(NanoSQLParser.ExprLikeContext ctx) {
+        boolean invert = (ctx.NOT() != null);
         Expression lhs = (Expression) visit(ctx.expression(0));
         Expression rhs = (Expression) visit(ctx.expression(1));
-        return new StringMatchOperator(StringMatchOperator.Type.LIKE, lhs, rhs);
+
+        StringMatchOperator op = new StringMatchOperator(
+            StringMatchOperator.Type.LIKE, lhs, rhs);
+        op.setInvert(invert);
+        return op;
     }
 
     @Override
     public Object visitExprSimilarTo(NanoSQLParser.ExprSimilarToContext ctx) {
+        boolean invert = (ctx.NOT() != null);
         Expression lhs = (Expression) visit(ctx.expression(0));
         Expression rhs = (Expression) visit(ctx.expression(1));
-        return new StringMatchOperator(StringMatchOperator.Type.REGEX, lhs, rhs);
+
+        StringMatchOperator op = new StringMatchOperator(
+            StringMatchOperator.Type.REGEX, lhs, rhs);
+        op.setInvert(invert);
+        return op;
     }
 
     @Override
-- 
GitLab