METAMODEL-1106: Fixed bug when JDBC column is named like 'index'.
authorkaspersorensen <i.am.kasper.sorensen@gmail.com>
Fri, 29 Jul 2016 15:40:49 +0000 (08:40 -0700)
committerkaspersorensen <i.am.kasper.sorensen@gmail.com>
Fri, 29 Jul 2016 15:40:49 +0000 (08:40 -0700)
Closes #117

CHANGES.md
jdbc/src/main/java/org/apache/metamodel/jdbc/SqlKeywords.java

index bd2cec8..f0264c6 100644 (file)
@@ -7,6 +7,7 @@
  * [METAMODEL-1086] - Fixed encoding issue when CsvDataContext is instantiated with InputStream.
  * [METAMODEL-1094] - Added support for Apache Cassandra version 3.x.
  * [METAMODEL-1093] - Close compiled ResultSets.
+ * [METAMODEL-1106] - Fixed bug in JDBC adaptor caused by not quoting columns named as a keyword, e.g. 'index'.
  * [METAMODEL-1102] - Separated FixedWidthLineParser.
  * [METAMODEL-1107] - Added support for PostgreSQL's "json" and "jsonb" data types.
  
index b2207df..7ffb6c9 100644 (file)
@@ -23,29 +23,45 @@ import java.util.Set;
 
 class SqlKeywords {
 
-       private static final Set<String> KEYWORDS;
+    private static final Set<String> KEYWORDS;
 
-       static {
-               KEYWORDS = new HashSet<String>();
-               KEYWORDS.add("SELECT");
-               KEYWORDS.add("DISTINCT");
-               KEYWORDS.add("AS");
-               KEYWORDS.add("COUNT");
-               KEYWORDS.add("SUM");
-               KEYWORDS.add("MIN");
-               KEYWORDS.add("MAX");
-               KEYWORDS.add("FROM");
-               KEYWORDS.add("WHERE");
-               KEYWORDS.add("LIKE");
-               KEYWORDS.add("IN");
-               KEYWORDS.add("GROUP");
-               KEYWORDS.add("BY");
-               KEYWORDS.add("HAVING");
-               KEYWORDS.add("ORDER");
-       }
+    static {
+        KEYWORDS = new HashSet<String>();
+        KEYWORDS.add("SELECT");
+        KEYWORDS.add("DISTINCT");
+        KEYWORDS.add("AS");
+        KEYWORDS.add("COUNT");
+        KEYWORDS.add("SUM");
+        KEYWORDS.add("MIN");
+        KEYWORDS.add("MAX");
+        KEYWORDS.add("FROM");
+        KEYWORDS.add("WHERE");
+        KEYWORDS.add("LIKE");
+        KEYWORDS.add("IN");
+        KEYWORDS.add("GROUP");
+        KEYWORDS.add("BY");
+        KEYWORDS.add("HAVING");
+        KEYWORDS.add("ORDER");
+        KEYWORDS.add("INDEX");
+        KEYWORDS.add("PRIMARY");
+        KEYWORDS.add("KEY");
+        KEYWORDS.add("CONSTRAINT");
+        KEYWORDS.add("UNIQUE");
+        KEYWORDS.add("IS");
+        KEYWORDS.add("NOT");
+        KEYWORDS.add("NULL");
+        KEYWORDS.add("CREATE");
+        KEYWORDS.add("INSERT");
+        KEYWORDS.add("INTO");
+        KEYWORDS.add("UPDATE");
+        KEYWORDS.add("VALUES");
+        KEYWORDS.add("DELETE");
+        KEYWORDS.add("AND");
+        KEYWORDS.add("OR");
+    }
 
-       public static boolean isKeyword(String str) {
-               str = str.toUpperCase();
-               return KEYWORDS.contains(str);
-       }
+    public static boolean isKeyword(String str) {
+        str = str.toUpperCase();
+        return KEYWORDS.contains(str);
+    }
 }