From 170a42cdc545181bc166c3acb45af710683fa587 Mon Sep 17 00:00:00 2001 From: Ruben Dijkstra Date: Wed, 1 Oct 2014 22:32:54 +0200 Subject: [PATCH] Use the ANSI SQL 2008 reserved words list in SQLTemplates The list, taken from https://github.com/jgornick/reservedwordsearch/blob/master/words/ansi-sql2008.json list a total of 327 words. --- .../com/mysema/query/sql/SQLTemplates.java | 71 +++++++++++++++++-- 1 file changed, 66 insertions(+), 5 deletions(-) diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java b/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java index 2a6e7c246..13e8e1638 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplates.java @@ -40,12 +40,73 @@ import com.mysema.query.types.*; */ public class SQLTemplates extends Templates { - //TODO: Add all common SQL reserved words protected static final ImmutableSet SQL_RESERVED_WORDS - = ImmutableSet.builder() - .add("FROM", - "SELECT") - .build(); + = ImmutableSet.of( + "ABS", "ALL", "ALLOCATE", "ALTER", "AND", "ANY", "ARE", + "ARRAY", "ARRAY_AGG", "AS", "ASENSITIVE", "ASYMMETRIC", + "AT", "ATOMIC", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN", + "BIGINT", "BINARY", "BLOB", "BOOLEAN", "BOTH", "BY", "CALL", + "CALLED", "CARDINALITY", "CASCADED", "CASE", "CAST", "CEIL", + "CEILING", "CHAR", "CHARACTER", "CHARACTER_LENGTH", + "CHAR_LENGTH", "CHECK", "CLOB", "CLOSE", "COALESCE", + "COLLATE", "COLLECT", "COLUMN", "COMMIT", "CONDITION", + "CONNECT", "CONSTRAINT", "CONVERT", "CORR", "CORRESPONDING", + "COUNT", "COVAR_POP", "COVAR_SAMP", "CREATE", "CROSS", + "CUBE", "CUME_DIST", "CURRENT", "CURRENT_CATALOG", + "CURRENT_DATE", "CURRENT_DEFAULT_TRANSFORM_GROUP", + "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_SCHEMA", + "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_TRANSFORM_GROUP_FOR_TYPE", + "CURRENT_USER", "CURSOR", "CYCLE", "DATE", "DAY", + "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", + "DELETE", "DENSE_RANK", "DEREF", "DESCRIBE", + "DETERMINISTIC", "DISCONNECT", "DISTINCT", "DOUBLE", + "DROP", "DYNAMIC", "EACH", "ELEMENT", "ELSE", "END", + "END-EXEC", "ESCAPE", "EVERY", "EXCEPT", "EXEC", "EXECUTE", + "EXISTS", "EXP", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", + "FILTER", "FIRST_VALUE", "FLOAT", "FLOOR", "FOR", "FOREIGN", + "FREE", "FROM", "FULL", "FUNCTION", "FUSION", "GET", + "GLOBAL", "GRANT", "GROUP", "GROUPING", "HAVING", "HOLD", + "HOUR", "IDENTITY", "IN", "INDICATOR", "INNER", "INOUT", + "INSENSITIVE", "INSERT", "INT", "INTEGER", "INTERSECT", + "INTERSECTION", "INTERVAL", "INTO", "IS", "JOIN", "LAG", + "LANGUAGE", "LARGE", "LAST_VALUE", "LATERAL", "LEAD", + "LEADING", "LEFT", "LIKE", "LIKE_REGEX", "LN", "LOCAL", + "LOCALTIME", "LOCALTIMESTAMP", "LOWER", "MATCH", "MAX", + "MAX_CARDINALITY", "MEMBER", "MERGE", "METHOD", "MIN", + "MINUTE", "MOD", "MODIFIES", "MODULE", "MONTH", "MULTISET", + "NATIONAL", "NATURAL", "NCHAR", "NCLOB", "NEW", "NO", + "NONE", "NORMALIZE", "NOT", "NTH_VALUE", "NTILE", "NULL", + "NULLIF", "NUMERIC", "OCCURRENCES_REGEX", "OCTET_LENGTH", + "OF", "OFFSET", "OLD", "ON", "ONLY", "OPEN", "OR", "ORDER", + "OUT", "OUTER", "OVER", "OVERLAPS", "OVERLAY", "PARAMETER", + "PARTITION", "PERCENTILE_CONT", "PERCENTILE_DISC", + "PERCENT_RANK", "POSITION", "POSITION_REGEX", "POWER", + "PRECISION", "PREPARE", "PRIMARY", "PROCEDURE", "RANGE", + "RANK", "READS", "REAL", "RECURSIVE", "REF", "REFERENCES", + "REFERENCING", "REGR_AVGX", "REGR_AVGY", "REGR_COUNT", + "REGR_INTERCEPT", "REGR_R2", "REGR_SLOPE", "REGR_SXX", + "REGR_SXY", "REGR_SYY", "RELEASE", "RESULT", "RETURN", + "RETURNS", "REVOKE", "RIGHT", "ROLLBACK", "ROLLUP", + "ROW", "ROWS", "ROW_NUMBER", "SAVEPOINT", "SCOPE", "SCROLL", + "SEARCH", "SECOND", "SELECT", "SENSITIVE", "SESSION_USER", + "SET", "SIMILAR", "SMALLINT", "SOME", "SPECIFIC", + "SPECIFICTYPE", "SQL", "SQLEXCEPTION", "SQLSTATE", + "SQLWARNING", "SQRT", "START", "STATIC", "STDDEV_POP", + "STDDEV_SAMP", "SUBMULTISET", "SUBSTRING", "SUBSTRING_REGEX", + "SUM", "SYMMETRIC", "SYSTEM", "SYSTEM_USER", "TABLE", + "TABLESAMPLE", "THEN", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", + "TIMEZONE_MINUTE", "TO", "TRAILING", "TRANSLATE", + "TRANSLATE_REGEX", "TRANSLATION", "TREAT", "TRIGGER", "TRIM", + "TRIM_ARRAY", "TRUE", "TRUNCATE", "UESCAPE", "UNION", + "UNIQUE", "UNKNOWN", "UNNEST", "UPDATE", "UPPER", "USER", + "USING", "VALUE", "VALUES", "VARBINARY", "VARCHAR", + "VARYING", "VAR_POP", "VAR_SAMP", "WHEN", "WHENEVER", + "WHERE", "WIDTH_BUCKET", "WINDOW", "WITH", "WITHIN", + "WITHOUT", "XML", "XMLAGG", "XMLATTRIBUTES", "XMLBINARY", + "XMLCAST", "XMLCOMMENT", "XMLCONCAT", "XMLDOCUMENT", + "XMLELEMENT", "XMLEXISTS", "XMLFOREST", "XMLITERATE", + "XMLNAMESPACES", "XMLPARSE", "XMLPI", "XMLQUERY", + "XMLSERIALIZE", "XMLTABLE", "XMLTEXT", "XMLVALIDATE", "YEAR"); public static final Expression RECURSIVE = TemplateExpressionImpl.create(Object.class, "");