diff --git a/lib/modules/Sql.pmod/mysql.pike b/lib/modules/Sql.pmod/mysql.pike index bc600e69c761dde6a82bffb6cfcd81a81709ea6f..bf4c1acd27b2508a864e1eeb2bc02edb15dd2693 100644 --- a/lib/modules/Sql.pmod/mysql.pike +++ b/lib/modules/Sql.pmod/mysql.pike @@ -1,5 +1,5 @@ /* - * $Id: mysql.pike,v 1.38 2007/05/03 14:09:30 mast Exp $ + * $Id: mysql.pike,v 1.39 2007/05/26 13:53:26 mast Exp $ * * Glue for the Mysql-module */ @@ -732,48 +732,75 @@ Mysql.mysql_result streaming_query (string query, } int(0..1) is_keyword( string name ) -//! Return 1 if the argument @[name] is a mysql keyword. +//! Return 1 if the argument @[name] is a mysql keyword that needs to +//! be quoted in a query. The list is currently up-to-date with MySQL +//! 5.1. { - // FIXME: Document which version of MySQL this is up-to-date with. - return (< - "action", "add", "aggregate", "all", "alter", "after", "and", "as", - "asc", "avg", "avg_row_length", "auto_increment", "between", "bigint", - "bit", "binary", "blob", "bool", "both", "by", "cascade", "case", - "char", "character", "change", "check", "checksum", "column", - "columns", "comment", "constraint", "create", "cross", "current_date", - "current_time", "current_timestamp", "data", "database", "databases", - "date", "datetime", "day", "day_hour", "day_minute", "day_second", - "dayofmonth", "dayofweek", "dayofyear", "dec", "decimal", "default", - "delayed", "delay_key_write", "delete", "desc", "describe", "distinct", - "distinctrow", "double", "drop", "end", "else", "escape", "escaped", - "enclosed", "enum", "explain", "exists", "fields", "file", "first", - "float", "float4", "float8", "flush", "foreign", "from", "for", "full", - "function", "global", "grant", "grants", "group", "having", "heap", - "high_priority", "hour", "hour_minute", "hour_second", "hosts", - "identified", "ignore", "in", "index", "infile", "inner", "insert", - "insert_id", "int", "integer", "interval", "int1", "int2", "int3", - "int4", "int8", "into", "if", "is", "isam", "join", "key", "keys", - "kill", "last_insert_id", "leading", "left", "length", "like", - "lines", "limit", "load", "local", "lock", "logs", "long", "longblob", - "longtext", "low_priority", "max", "max_rows", "match", "mediumblob", - "mediumtext", "mediumint", "middleint", "min_rows", "minute", - "minute_second", "modify", "month", "monthname", "myisam", "natural", - "numeric", "no", "not", "null", "on", "optimize", "option", - "optionally", "or", "order", "outer", "outfile", "pack_keys", - "partial", "password", "precision", "primary", "procedure", "process", - "processlist", "privileges", "read", "real", "references", "reload", - "regexp", "rename", "replace", "restrict", "returns", "revoke", - "rlike", "row", "rows", "second", "select", "set", "show", "shutdown", - "smallint", "soname", "sql_big_tables", "sql_big_selects", - "sql_low_priority_updates", "sql_log_off", "sql_log_update", - "sql_select_limit", "sql_small_result", "sql_big_result", - "sql_warnings", "straight_join", "starting", "status", "string", - "table", "tables", "temporary", "terminated", "text", "then", "time", - "timestamp", "tinyblob", "tinytext", "tinyint", "trailing", "to", - "type", "use", "using", "unique", "unlock", "unsigned", "update", - "usage", "values", "varchar", "variables", "varying", "varbinary", - "with", "write", "when", "where", "year", "year_month", "zerofill", - >)[ lower_case(name) ]; + return ([ + "accessible": 1, "add": 1, "all": 1, "alter": 1, "analyze": 1, "and": 1, + "as": 1, "asc": 1, "asensitive": 1, "before": 1, "between": 1, "bigint": 1, + "binary": 1, "blob": 1, "both": 1, "by": 1, "call": 1, "cascade": 1, + "case": 1, "change": 1, "char": 1, "character": 1, "check": 1, "collate": 1, + "column": 1, "condition": 1, "constraint": 1, "continue": 1, "convert": 1, + "create": 1, "cross": 1, "current_date": 1, "current_time": 1, + "current_timestamp": 1, "current_user": 1, "cursor": 1, "database": 1, + "databases": 1, "day_hour": 1, "day_microsecond": 1, "day_minute": 1, + "day_second": 1, "dec": 1, "decimal": 1, "declare": 1, "default": 1, + "delayed": 1, "delete": 1, "desc": 1, "describe": 1, "deterministic": 1, + "distinct": 1, "distinctrow": 1, "div": 1, "double": 1, "drop": 1, + "dual": 1, "each": 1, "else": 1, "elseif": 1, "enclosed": 1, "escaped": 1, + "exists": 1, "exit": 1, "explain": 1, "false": 1, "fetch": 1, "float": 1, + "float4": 1, "float8": 1, "for": 1, "force": 1, "foreign": 1, "from": 1, + "fulltext": 1, "grant": 1, "group": 1, "having": 1, "high_priority": 1, + "hour_microsecond": 1, "hour_minute": 1, "hour_second": 1, "if": 1, + "ignore": 1, "in": 1, "index": 1, "infile": 1, "inner": 1, "inout": 1, + "insensitive": 1, "insert": 1, "int": 1, "int1": 1, "int2": 1, "int3": 1, + "int4": 1, "int8": 1, "integer": 1, "interval": 1, "into": 1, "is": 1, + "iterate": 1, "join": 1, "key": 1, "keys": 1, "kill": 1, "leading": 1, + "leave": 1, "left": 1, "like": 1, "limit": 1, "linear": 1, "lines": 1, + "load": 1, "localtime": 1, "localtimestamp": 1, "lock": 1, "long": 1, + "longblob": 1, "longtext": 1, "loop": 1, "low_priority": 1, + "master_ssl_verify_server_cert": 1, "match": 1, "mediumblob": 1, + "mediumint": 1, "mediumtext": 1, "middleint": 1, "minute_microsecond": 1, + "minute_second": 1, "mod": 1, "modifies": 1, "natural": 1, "not": 1, + "no_write_to_binlog": 1, "null": 1, "numeric": 1, "on": 1, "optimize": 1, + "option": 1, "optionally": 1, "or": 1, "order": 1, "out": 1, "outer": 1, + "outfile": 1, "precision": 1, "primary": 1, "procedure": 1, "purge": 1, + "range": 1, "read": 1, "reads": 1, "read_only": 1, "read_write": 1, + "real": 1, "references": 1, "regexp": 1, "release": 1, "rename": 1, + "repeat": 1, "replace": 1, "require": 1, "restrict": 1, "return": 1, + "revoke": 1, "right": 1, "rlike": 1, "schema": 1, "schemas": 1, + "second_microsecond": 1, "select": 1, "sensitive": 1, "separator": 1, + "set": 1, "show": 1, "smallint": 1, "spatial": 1, "specific": 1, "sql": 1, + "sqlexception": 1, "sqlstate": 1, "sqlwarning": 1, "sql_big_result": 1, + "sql_calc_found_rows": 1, "sql_small_result": 1, "ssl": 1, "starting": 1, + "straight_join": 1, "table": 1, "terminated": 1, "then": 1, "tinyblob": 1, + "tinyint": 1, "tinytext": 1, "to": 1, "trailing": 1, "trigger": 1, + "true": 1, "undo": 1, "union": 1, "unique": 1, "unlock": 1, "unsigned": 1, + "update": 1, "usage": 1, "use": 1, "using": 1, "utc_date": 1, "utc_time": 1, + "utc_timestamp": 1, "values": 1, "varbinary": 1, "varchar": 1, + "varcharacter": 1, "varying": 1, "when": 1, "where": 1, "while": 1, + "with": 1, "write": 1, "x509": 1, "xor": 1, "year_month": 1, "zerofill": 1, + // The following keywords were in the old list, but according to MySQL + // docs they don't need to be quoted: + // "action", "after", "aggregate", "auto_increment", "avg", + // "avg_row_length", "bit", "bool", "change", "checksum", "columns", + // "comment", "data", "date", "datetime", "day", "dayofmonth", "dayofweek", + // "dayofyear", "delay_key_write", "end", "enum", "escape", "escaped", + // "explain", "fields", "file", "first", "flush", "for", "full", "function", + // "global", "grants", "heap", "hosts", "hour", "identified", "if", + // "insert_id", "integer", "interval", "isam", "last_insert_id", "length", + // "lines", "local", "logs", "max", "max_rows", "mediumtext", "min_rows", + // "minute", "modify", "month", "monthname", "myisam", "no", "numeric", + // "pack_keys", "partial", "password", "privileges", "process", + // "processlist", "reload", "returns", "row", "rows", "second", "shutdown", + // "soname", "sql_big_selects", "sql_big_tables", "sql_log_off", + // "sql_log_update", "sql_low_priority_updates", "sql_select_limit", + // "sql_small_result", "sql_warnings", "status", "straight_join", "string", + // "tables", "temporary", "text", "time", "timestamp", "tinytext", + // "trailing", "type", "use", "using", "varbinary", "variables", "with", + // "write", "year" + ])[ lower_case(name) ]; } static void create(string|void host, string|void database,