MonetDB: reserved SQL keywords

martin van dinther martin.van.dinther at monetdbsolutions.com
Thu Dec 10 18:46:47 CET 2015


Hi Hannes,

FYI, we have a system table  sys.keywords  with all the reserved SQL 
keywords.
The intention of this table is to have one place (in the server) with 
all the reserved SQL keywords, such that API implementations (ODBC, 
JDBC, PHP, Ruby, Python, R, etc) can query that table and construct the 
list or string.
In the default branch I have implemented this already for 
jdbc/MonetDatabaseMetaData.java method getSQLKeywords().

This should reduce future maintenance of all the places where these 
reserved SQL keywords are hardcoded. The new keywords can simply be 
added/ in one place, the keywords table.
It is filled in sql/scripts/51_sys_schema_extension.sql

Regards,
Martin van Dinther


On 24-11-15 09:42, Hannes Muehleisen wrote:
> Changeset: c0fb9a0d91e3 for MonetDB
> URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c0fb9a0d91e3
> Modified Files:
> 	clients/R/MonetDB.R/R/dbi.R
> Branch: embedded
> Log Message:
>
> R Connector: More naughty words
>
>
> diffs (65 lines):
>
> diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R
> --- a/clients/R/MonetDB.R/R/dbi.R
> +++ b/clients/R/MonetDB.R/R/dbi.R
> @@ -391,24 +391,43 @@ setMethod("dbSendQuery", signature(conn=
>     invisible(new("MonetDBEmbeddedResult", env=env))
>     })
>   
> -
> -reserved_monetdb_keywords <- c(.SQL92Keywords,
> -"ADMIN", "AFTER", "AGGREGATE", "ALWAYS", "ASYMMETRIC", "ATOMIC",
> -"AUTO_INCREMENT", "BEFORE", "BEST", "BIGINT", "BIGSERIAL", "BINARY",
> -"BLOB", "CALL", "CHAIN", "CLOB", "COMMITTED", "COPY", "CROSS",
> -"CURRENT_ROLE", "CURRENT_TIME", "CURRENT_USER", "DELIMITERS",
> -"DO", "EACH", "EFFORT", "ELSEIF", "ENCRYPTED", "EXCLUDE", "FOLLOWING",
> -"FUNCTION", "GENERATED", "HUGEINT", "IF", "ILIKE", "LIMIT", "LOCALTIME",
> -"LOCALTIMESTAMP", "LOCKED", "MERGE", "NATURAL", "NEW", "NOCYCLE",
> -"NOMAXVALUE", "NOMINVALUE", "OFFSET", "OLD", "ON", "OTHERS",
> -"OVER", "PARTITION", "PRECEDING", "RANGE", "RECORDS", "REFERENCING",
> -"REMOTE", "RENAME", "REPEATABLE", "REPLICA", "RESTART", "RETURN",
> -"RETURNS", "SAMPLE", "SAVEPOINT", "SEQUENCE", "SERIAL", "SERIALIZABLE",
> -"SESSION_USER", "SIMPLE", "SPLIT_PART", "STDIN", "STDOUT", "STREAM",
> -"SYMMETRIC", "TIES", "TINYINT", "TRIGGER", "UNBOUNDED", "UNCOMMITTED",
> -"UNENCRYPTED", "WHILE", "XMLAGG", "XMLATTRIBUTES", "XMLCOMMENT",
> -"XMLCONCAT", "XMLDOCUMENT", "XMLELEMENT", "XMLFOREST", "XMLNAMESPACES",
> -"XMLPARSE", "XMLPI", "XMLQUERY", "XMLSCHEMA", "XMLTEXT", "XMLVALIDATE")
> +# found from sql_scan.c and trial/error
> +reserved_monetdb_keywords <- sort(unique(toupper(c(.SQL92Keywords,
> +"ADD", "ADMIN", "AFTER", "AGGREGATE", "ALL", "ALTER", "ALWAYS",
> +"AND", "ANY", "ASC", "ASYMMETRIC", "ATOMIC", "AUTO_INCREMENT",
> +"BEFORE", "BEGIN", "BEST", "BETWEEN", "BIGINT", "BIGSERIAL",
> +"BINARY", "BLOB", "BY", "CALL", "CASCADE", "CASE", "CAST", "CHAIN",
> +"CHAR", "CHARACTER", "CHECK", "CLOB", "COALESCE", "COMMIT", "COMMITTED",
> +"CONSTRAINT", "CONVERT", "COPY", "CORRESPONDING", "CREATE", "CROSS",
> +"CURRENT", "CURRENT_DATE", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP",
> +"CURRENT_USER", "DAY", "DEC", "DECIMAL", "DECLARE", "DEFAULT",
> +"DELETE", "DELIMITERS", "DESC", "DO", "DOUBLE", "DROP", "EACH",
> +"EFFORT", "ELSE", "ELSEIF", "ENCRYPTED", "END", "ESCAPE", "EVERY",
> +"EXCEPT", "EXCLUDE", "EXISTS", "EXTERNAL", "EXTRACT", "FALSE",
> +"FLOAT", "FOLLOWING", "FOR", "FOREIGN", "FROM", "FULL", "FUNCTION",
> +"GENERATED", "GLOBAL", "GRANT", "GROUP", "HAVING", "HOUR", "HUGEINT",
> +"IDENTITY", "IF", "ILIKE", "IN", "INDEX", "INNER", "INSERT",
> +"INT", "INTEGER", "INTERSECT", "INTO", "IS", "ISOLATION", "JOIN",
> +"LEFT", "LIKE", "LIMIT", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP",
> +"LOCKED", "MEDIUMINT", "MERGE", "MINUTE", "MONTH", "NATURAL",
> +"NEW", "NEXT", "NOCYCLE", "NOMAXVALUE", "NOMINVALUE", "NOT",
> +"NOW", "NULL", "NULLIF", "NUMERIC", "OF", "OFFSET", "OLD", "ON",
> +"ONLY", "OPTION", "OR", "ORDER", "OTHERS", "OUTER", "OVER", "PARTIAL",
> +"PARTITION", "POSITION", "PRECEDING", "PRESERVE", "PRIMARY",
> +"PRIVILEGES", "PROCEDURE", "PUBLIC", "RANGE", "READ", "REAL",
> +"RECORDS", "REFERENCES", "REFERENCING", "REMOTE", "RENAME", "REPEATABLE",
> +"REPLICA", "RESTART", "RESTRICT", "RETURN", "RETURNS", "REVOKE",
> +"RIGHT", "ROLLBACK", "ROWS", "SAMPLE", "SAVEPOINT", "SECOND",
> +"SELECT", "SEQUENCE", "SERIAL", "SERIALIZABLE", "SESSION_USER",
> +"SET", "SIMPLE", "SMALLINT", "SOME", "SPLIT_PART", "STDIN", "STDOUT",
> +"STORAGE", "STREAM", "STRING", "SUBSTRING", "SYMMETRIC", "THEN",
> +"TIES", "TINYINT", "TO", "TRANSACTION", "TRIGGER", "TRUE", "UNBOUNDED",
> +"UNCOMMITTED", "UNENCRYPTED", "UNION", "UNIQUE", "UPDATE", "USER",
> +"USING", "VALUES", "VARCHAR", "VARYING", "VIEW", "WHEN", "WHERE",
> +"WHILE", "WITH", "WORK", "WRITE", "XMLAGG", "XMLATTRIBUTES",
> +"XMLCOMMENT", "XMLCONCAT", "XMLDOCUMENT", "XMLELEMENT", "XMLFOREST",
> +"XMLNAMESPACES", "XMLPARSE", "XMLPI", "XMLQUERY", "XMLSCHEMA",
> +"XMLTEXT", "XMLVALIDATE", "YEAR"))))
>   
>   # quoting
>   quoteIfNeeded <- function(conn, x, warn=T, ...) {
> _______________________________________________
> checkin-list mailing list
> checkin-list at monetdb.org
> https://www.monetdb.org/mailman/listinfo/checkin-list



More information about the developers-list mailing list