diff --git a/packages/sql-parser/base/fromClauseParser.js b/packages/sql-parser/base/fromClauseParser.js index bb063b13..6b57bcb8 100644 --- a/packages/sql-parser/base/fromClauseParser.js +++ b/packages/sql-parser/base/fromClauseParser.js @@ -284,44 +284,62 @@ function peg$parse(input, options) { var peg$c105 = "not"; var peg$c106 = "and"; var peg$c107 = "or"; - var peg$c108 = "count"; - var peg$c109 = "max"; - var peg$c110 = "min"; - var peg$c111 = "sum"; - var peg$c112 = "avg"; - var peg$c113 = "cast"; - var peg$c114 = "recursive"; - var peg$c115 = "foreign key"; - var peg$c116 = "references"; - var peg$c117 = "index"; - var peg$c118 = "cascade"; - var peg$c119 = "set null"; - var peg$c120 = "set default"; - var peg$c121 = "restrict"; - var peg$c122 = "no action"; - var peg$c123 = "type"; - var peg$c124 = "enum"; - var peg$c125 = "range"; - var peg$c126 = "["; - var peg$c127 = "]"; - var peg$c128 = "{"; - var peg$c129 = "}"; - var peg$c130 = "--"; - var peg$c131 = "/*"; - var peg$c132 = "*/"; - var peg$c133 = ";"; - var peg$c134 = "current_user"; - var peg$c135 = "current_date"; - var peg$c136 = "current_time"; - var peg$c137 = "current_timestamp"; - var peg$c138 = "localtime"; - var peg$c139 = "localtimestamp"; - var peg$c140 = "session_user"; - var peg$c141 = "system_user"; - var peg$c142 = "user"; - var peg$c143 = "$"; - var peg$c144 = "return"; - var peg$c145 = ":="; + var peg$c108 = "to"; + var peg$c109 = "count"; + var peg$c110 = "max"; + var peg$c111 = "min"; + var peg$c112 = "sum"; + var peg$c113 = "avg"; + var peg$c114 = "cast"; + var peg$c115 = "recursive"; + var peg$c116 = "foreign key"; + var peg$c117 = "references"; + var peg$c118 = "index"; + var peg$c119 = "cascade"; + var peg$c120 = "set null"; + var peg$c121 = "set default"; + var peg$c122 = "restrict"; + var peg$c123 = "no action"; + var peg$c124 = "type"; + var peg$c125 = "enum"; + var peg$c126 = "range"; + var peg$c127 = "session"; + var peg$c128 = "authorization"; + var peg$c129 = "transaction"; + var peg$c130 = "isolation"; + var peg$c131 = "level"; + var peg$c132 = "serializable"; + var peg$c133 = "repeatable read"; + var peg$c134 = "read committed"; + var peg$c135 = "read uncommitted"; + var peg$c136 = "read write"; + var peg$c137 = "read only"; + var peg$c138 = "deferrable"; + var peg$c139 = "search_path"; + var peg$c140 = "role"; + var peg$c141 = "time zone"; + var peg$c142 = "local"; + var peg$c143 = "["; + var peg$c144 = "]"; + var peg$c145 = "{"; + var peg$c146 = "}"; + var peg$c147 = "--"; + var peg$c148 = "/*"; + var peg$c149 = "*/"; + var peg$c150 = ";"; + var peg$c151 = "current_user"; + var peg$c152 = "current_date"; + var peg$c153 = "current_time"; + var peg$c154 = "current_timestamp"; + var peg$c155 = "localtime"; + var peg$c156 = "localtimestamp"; + var peg$c157 = "session_user"; + var peg$c158 = "system_user"; + var peg$c159 = "user"; + var peg$c160 = "$"; + var peg$c161 = "return"; + var peg$c162 = ":="; + var peg$c163 = "@"; var peg$r0 = /^[^)]/; var peg$r1 = /^[^`]/; @@ -466,45 +484,63 @@ function peg$parse(input, options) { var peg$e122 = peg$literalExpectation("NOT", true); var peg$e123 = peg$literalExpectation("AND", true); var peg$e124 = peg$literalExpectation("OR", true); - var peg$e125 = peg$literalExpectation("COUNT", true); - var peg$e126 = peg$literalExpectation("MAX", true); - var peg$e127 = peg$literalExpectation("MIN", true); - var peg$e128 = peg$literalExpectation("SUM", true); - var peg$e129 = peg$literalExpectation("AVG", true); - var peg$e130 = peg$literalExpectation("CAST", true); - var peg$e131 = peg$literalExpectation("RECURSIVE", true); - var peg$e132 = peg$literalExpectation("FOREIGN KEY", true); - var peg$e133 = peg$literalExpectation("REFERENCES", true); - var peg$e134 = peg$literalExpectation("INDEX", true); - var peg$e135 = peg$literalExpectation("CASCADE", true); - var peg$e136 = peg$literalExpectation("SET NULL", true); - var peg$e137 = peg$literalExpectation("SET DEFAULT", true); - var peg$e138 = peg$literalExpectation("RESTRICT", true); - var peg$e139 = peg$literalExpectation("NO ACTION", true); - var peg$e140 = peg$literalExpectation("TYPE", true); - var peg$e141 = peg$literalExpectation("ENUM", true); - var peg$e142 = peg$literalExpectation("RANGE", true); - var peg$e143 = peg$literalExpectation("[", false); - var peg$e144 = peg$literalExpectation("]", false); - var peg$e145 = peg$literalExpectation("{", false); - var peg$e146 = peg$literalExpectation("}", false); - var peg$e147 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); - var peg$e148 = peg$literalExpectation("--", false); - var peg$e149 = peg$literalExpectation("/*", false); - var peg$e150 = peg$literalExpectation("*/", false); - var peg$e151 = peg$literalExpectation(";", false); - var peg$e152 = peg$literalExpectation("CURRENT_USER", true); - var peg$e153 = peg$literalExpectation("CURRENT_DATE", true); - var peg$e154 = peg$literalExpectation("CURRENT_TIME", true); - var peg$e155 = peg$literalExpectation("CURRENT_TIMESTAMP", true); - var peg$e156 = peg$literalExpectation("LOCALTIME", true); - var peg$e157 = peg$literalExpectation("LOCALTIMESTAMP", true); - var peg$e158 = peg$literalExpectation("SESSION_USER", true); - var peg$e159 = peg$literalExpectation("SYSTEM_USER", true); - var peg$e160 = peg$literalExpectation("USER", true); - var peg$e161 = peg$literalExpectation("$", false); - var peg$e162 = peg$literalExpectation("return", true); - var peg$e163 = peg$literalExpectation(":=", false); + var peg$e125 = peg$literalExpectation("TO", true); + var peg$e126 = peg$literalExpectation("COUNT", true); + var peg$e127 = peg$literalExpectation("MAX", true); + var peg$e128 = peg$literalExpectation("MIN", true); + var peg$e129 = peg$literalExpectation("SUM", true); + var peg$e130 = peg$literalExpectation("AVG", true); + var peg$e131 = peg$literalExpectation("CAST", true); + var peg$e132 = peg$literalExpectation("RECURSIVE", true); + var peg$e133 = peg$literalExpectation("FOREIGN KEY", true); + var peg$e134 = peg$literalExpectation("REFERENCES", true); + var peg$e135 = peg$literalExpectation("INDEX", true); + var peg$e136 = peg$literalExpectation("CASCADE", true); + var peg$e137 = peg$literalExpectation("SET NULL", true); + var peg$e138 = peg$literalExpectation("SET DEFAULT", true); + var peg$e139 = peg$literalExpectation("RESTRICT", true); + var peg$e140 = peg$literalExpectation("NO ACTION", true); + var peg$e141 = peg$literalExpectation("TYPE", true); + var peg$e142 = peg$literalExpectation("ENUM", true); + var peg$e143 = peg$literalExpectation("RANGE", true); + var peg$e144 = peg$literalExpectation("SESSION", true); + var peg$e145 = peg$literalExpectation("AUTHORIZATION", true); + var peg$e146 = peg$literalExpectation("TRANSACTION", true); + var peg$e147 = peg$literalExpectation("ISOLATION", true); + var peg$e148 = peg$literalExpectation("LEVEL", true); + var peg$e149 = peg$literalExpectation("SERIALIZABLE", true); + var peg$e150 = peg$literalExpectation("REPEATABLE READ", true); + var peg$e151 = peg$literalExpectation("READ COMMITTED", true); + var peg$e152 = peg$literalExpectation("READ UNCOMMITTED", true); + var peg$e153 = peg$literalExpectation("READ WRITE", true); + var peg$e154 = peg$literalExpectation("READ ONLY", true); + var peg$e155 = peg$literalExpectation("DEFERRABLE", true); + var peg$e156 = peg$literalExpectation("SEARCH_PATH", true); + var peg$e157 = peg$literalExpectation("ROLE", true); + var peg$e158 = peg$literalExpectation("TIME ZONE", true); + var peg$e159 = peg$literalExpectation("LOCAL", true); + var peg$e160 = peg$literalExpectation("[", false); + var peg$e161 = peg$literalExpectation("]", false); + var peg$e162 = peg$literalExpectation("{", false); + var peg$e163 = peg$literalExpectation("}", false); + var peg$e164 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); + var peg$e165 = peg$literalExpectation("--", false); + var peg$e166 = peg$literalExpectation("/*", false); + var peg$e167 = peg$literalExpectation("*/", false); + var peg$e168 = peg$literalExpectation(";", false); + var peg$e169 = peg$literalExpectation("CURRENT_USER", true); + var peg$e170 = peg$literalExpectation("CURRENT_DATE", true); + var peg$e171 = peg$literalExpectation("CURRENT_TIME", true); + var peg$e172 = peg$literalExpectation("CURRENT_TIMESTAMP", true); + var peg$e173 = peg$literalExpectation("LOCALTIME", true); + var peg$e174 = peg$literalExpectation("LOCALTIMESTAMP", true); + var peg$e175 = peg$literalExpectation("SESSION_USER", true); + var peg$e176 = peg$literalExpectation("SYSTEM_USER", true); + var peg$e177 = peg$literalExpectation("USER", true); + var peg$e178 = peg$literalExpectation("$", false); + var peg$e179 = peg$literalExpectation("return", true); + var peg$e180 = peg$literalExpectation(":=", false); + var peg$e181 = peg$literalExpectation("@", false); var peg$f0 = function() { return true; }; var peg$f1 = function(ast, tail) { @@ -1175,12 +1211,12 @@ function peg$parse(input, options) { var peg$f158 = function() { return 'NOT'; }; var peg$f159 = function() { return 'AND'; }; var peg$f160 = function() { return 'OR'; }; - var peg$f161 = function() { return 'COUNT'; }; - var peg$f162 = function() { return 'MAX'; }; - var peg$f163 = function() { return 'MIN'; }; - var peg$f164 = function() { return 'SUM'; }; - var peg$f165 = function() { return 'AVG'; }; - var peg$f166 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f161 = function() { return 'TO'; }; + var peg$f162 = function() { return 'COUNT'; }; + var peg$f163 = function() { return 'MAX'; }; + var peg$f164 = function() { return 'MIN'; }; + var peg$f165 = function() { return 'SUM'; }; + var peg$f166 = function() { return 'AVG'; }; var peg$f167 = function(val) { return makeKeywordNode(val, location()) }; var peg$f168 = function(val) { return makeKeywordNode(val, location()) }; var peg$f169 = function(val) { return makeKeywordNode(val, location()) }; @@ -1193,32 +1229,49 @@ function peg$parse(input, options) { var peg$f176 = function(val) { return makeKeywordNode(val, location()) }; var peg$f177 = function(val) { return makeKeywordNode(val, location()) }; var peg$f178 = function(val) { return makeKeywordNode(val, location()) }; - var peg$f179 = function() { return true; }; - var peg$f180 = function(s) { + var peg$f179 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f180 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f181 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f182 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f183 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f184 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f185 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f186 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f187 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f188 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f189 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f190 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f191 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f192 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f193 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f194 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f195 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f196 = function() { return true; }; + var peg$f197 = function(s) { return { stmt : s, } }; - var peg$f181 = function(va, e) { + var peg$f198 = function(va, e) { return { type : 'assign', left : va, right: e } }; - var peg$f182 = function(e) { + var peg$f199 = function(e) { return { type : 'return', expr: e } }; - var peg$f183 = function(head, tail) { + var peg$f200 = function(head, tail) { return createBinaryExprChain(head, tail); }; - var peg$f184 = function(head, tail) { + var peg$f201 = function(head, tail) { return createBinaryExprChain(head, tail); }; - var peg$f185 = function(lt, op, rt, expr) { + var peg$f202 = function(lt, op, rt, expr) { return { type : 'join', ltable : lt, @@ -1227,11 +1280,11 @@ function peg$parse(input, options) { on : expr } }; - var peg$f186 = function(e) { + var peg$f203 = function(e) { e.paren = true; return e; }; - var peg$f187 = function(name, l) { + var peg$f204 = function(name, l) { //compatible with original func_call return { type : 'function', @@ -1243,23 +1296,23 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f188 = function(value) { + var peg$f205 = function(value) { return { type : 'special_system_function', name : value, location: location(), } }; - var peg$f189 = function(head, tail) { + var peg$f206 = function(head, tail) { return createList(head, tail); }; - var peg$f190 = function(l) { + var peg$f207 = function(l) { return { type : 'array', value : l } }; - var peg$f191 = function(name, m) { + var peg$f208 = function(name, m) { return { type : 'var', name : name, @@ -1267,7 +1320,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f192 = function(name, m) { + var peg$f209 = function(name, m) { return { type : 'var_pg_promise', name : name, @@ -1275,14 +1328,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f193 = function(l) { + var peg$f210 = function(l) { var s = []; for (var i = 0; i < l.length; i++) { s.push(l[i][1]); } return s; }; - var peg$f194 = function(with_clause, val, t, w) { + var peg$f211 = function(with_clause, val, t, w) { return { type : 'delete', with : with_clause, @@ -1290,7 +1343,7 @@ function peg$parse(input, options) { where : w } }; - var peg$f195 = function(db, t) { + var peg$f212 = function(db, t) { return { type: 'table', db : db, @@ -1298,7 +1351,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f196 = function(t) { + var peg$f213 = function(t) { return { type: 'table', db : '', @@ -1306,7 +1359,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f197 = function(keyword, if_exists_keyword, table) { + var peg$f214 = function(keyword, if_exists_keyword, table) { return { type: 'drop_table', keyword: keyword, @@ -1314,7 +1367,7 @@ function peg$parse(input, options) { table: table } }; - var peg$f198 = function(keyword, table) { + var peg$f215 = function(keyword, table) { return { type: 'drop_table', keyword: keyword, @@ -1322,14 +1375,14 @@ function peg$parse(input, options) { table: table } }; - var peg$f199 = function(val) { + var peg$f216 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f200 = function(keyword, table, as, select) { + var peg$f217 = function(keyword, table, as, select) { return { type: 'create_table', keyword: keyword, @@ -1339,7 +1392,7 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f201 = function(keyword, if_not_exists_keyword, table, fields) { + var peg$f218 = function(keyword, if_not_exists_keyword, table, fields) { return { type: 'create_table', keyword: keyword, @@ -1349,7 +1402,7 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f202 = function(keyword, table, fields) { + var peg$f219 = function(keyword, table, fields) { return { type: 'create_table', if_not_exists: null, @@ -1359,24 +1412,24 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f203 = function(val) { + var peg$f220 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f204 = function(val) { + var peg$f221 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f205 = function(head, tail) { + var peg$f222 = function(head, tail) { return createList(head, tail); }; - var peg$f206 = function(name, type, constraints) { + var peg$f223 = function(name, type, constraints) { return { type: 'field', name: name, @@ -1385,7 +1438,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f207 = function(name, type) { + var peg$f224 = function(name, type) { return { type: 'field', name: name, @@ -1394,7 +1447,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f208 = function(k1, col_head, col_tail, k2, ref_table, ref_col_head, ref_col_tail, on) { + var peg$f225 = function(k1, col_head, col_tail, k2, ref_table, ref_col_head, ref_col_tail, on) { return { type: 'foreign_key', foreign_keyword: k1, @@ -1406,7 +1459,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f209 = function(on, trigger, action) { + var peg$f226 = function(on, trigger, action) { return { type: 'foreign_key_on', on_keyword: on, @@ -1415,7 +1468,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f210 = function(k, col_head, col_tail) { + var peg$f227 = function(k, col_head, col_tail) { return { type: 'primary_key', keyword: k, @@ -1423,7 +1476,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f211 = function(name, args_head, args_tail) { + var peg$f228 = function(name, args_head, args_tail) { return { type: 'field_data_type', name: name, @@ -1431,7 +1484,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f212 = function(name) { + var peg$f229 = function(name) { return { type: 'field_data_type', name: name, @@ -1439,100 +1492,100 @@ function peg$parse(input, options) { location: location() } }; - var peg$f213 = function(head, tail) { + var peg$f230 = function(head, tail) { return createList(head, tail, 1); }; - var peg$f214 = function(k) { + var peg$f231 = function(k) { return { type: 'constraint_not_null', keyword: k, location: location() } }; - var peg$f215 = function(k) { + var peg$f232 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f216 = function(k) { + var peg$f233 = function(k) { return { type: 'constraint_primary_key', keyword: k, location: location() } }; - var peg$f217 = function(k) { + var peg$f234 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f218 = function(k) { + var peg$f235 = function(k) { return { type: 'constraint_unique', keyword: k, location: location() } }; - var peg$f219 = function(k) { + var peg$f236 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f220 = function(k) { + var peg$f237 = function(k) { return { type: 'constraint_auto_increment', keyword: k, location: location() } }; - var peg$f221 = function(k) { + var peg$f238 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f222 = function(g, opt, data, seq) { + var peg$f239 = function(g, opt, data, seq) { return { type: 'constraint_generated', option: opt, data_type: data, sequence_options: seq } }; - var peg$f223 = function(k) { + var peg$f240 = function(k) { return { type: 'constraint_generated_option', option: 'ALWAYS', keyword: k } }; - var peg$f224 = function(k) { + var peg$f241 = function(k) { return { type: 'constraint_generated_option', option: 'BY_DEFAULT', keyword: k } }; - var peg$f225 = function(k) { + var peg$f242 = function(k) { return { type: 'constraint_generated_option', option: 'BY_DEFAULT_ON_NULL', keyword: k } }; - var peg$f226 = function(k, value) { + var peg$f243 = function(k, value) { return { type: 'constraint_default', keyword: k, value: value, location: location() } }; - var peg$f227 = function(k) { + var peg$f244 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f228 = function(k) { + var peg$f245 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f229 = function(k) { + var peg$f246 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f230 = function(val) { + var peg$f247 = function(val) { return { type: 'sequence_option_data_type', value: val, location: location() } }; - var peg$f231 = function(s) { + var peg$f248 = function(s) { return s[2] }; - var peg$f232 = function(head, tail) { + var peg$f249 = function(head, tail) { return createList(head, tail, 1); }; - var peg$f233 = function(val) { + var peg$f250 = function(val) { return { type: 'sequence_option_increment', value: val, location: location() } }; - var peg$f234 = function(val) { + var peg$f251 = function(val) { return { type: 'sequence_option_increment', value: val, location: location() } }; - var peg$f235 = function(val) { + var peg$f252 = function(val) { return { type: 'sequence_option_maxvalue', value: val, location: location() } }; - var peg$f236 = function(val) { + var peg$f253 = function(val) { return { type: 'sequence_option_maxvalue', value: val, location: location() } }; - var peg$f237 = function() { + var peg$f254 = function() { return { type: 'sequence_option_no_maxvalue', location: location() } }; - var peg$f238 = function() { + var peg$f255 = function() { return { type: 'sequence_option_no_minvalue', location: location() } }; - var peg$f239 = function(val) { + var peg$f256 = function(val) { return { type: 'sequence_option_cache', value: val, location: location() } }; - var peg$f240 = function() { + var peg$f257 = function() { return { type: 'sequence_option_cycle', location: location() } }; - var peg$f241 = function() { + var peg$f258 = function() { return { type: 'sequence_option_no_cycle', location: location() } }; - var peg$f242 = function(val) { + var peg$f259 = function(val) { return { type: 'sequence_option_owned_by', value: val, location: location() } }; - var peg$f243 = function() { + var peg$f260 = function() { return { type: 'sequence_option_owned_by_none', location: location() } }; - var peg$f244 = function(keyword, table, command) { + var peg$f261 = function(keyword, table, command) { return { type: 'alter_table', keyword: keyword, @@ -1540,14 +1593,14 @@ function peg$parse(input, options) { command: command } }; - var peg$f245 = function(val) { + var peg$f262 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f246 = function(keyword, field) { + var peg$f263 = function(keyword, field) { return { type: 'alter_table_add_column', keyword: keyword, @@ -1555,15 +1608,15 @@ function peg$parse(input, options) { location: location() } }; - var peg$f247 = function(val) { + var peg$f264 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f248 = function(keyword) {error('EXPECTED COLUMN NAME')}; - var peg$f249 = function(keyword, column) { + var peg$f265 = function(keyword) {error('EXPECTED COLUMN NAME')}; + var peg$f266 = function(keyword, column) { return { type: 'alter_table_drop_column', keyword: keyword, @@ -1571,15 +1624,15 @@ function peg$parse(input, options) { location: location() } }; - var peg$f250 = function(val) { + var peg$f267 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f251 = function(keyword) {error('EXPECTED COLUMN NAME')}; - var peg$f252 = function(keyword, field) { + var peg$f268 = function(keyword) {error('EXPECTED COLUMN NAME')}; + var peg$f269 = function(keyword, field) { return { type: 'alter_table_modify_column', keyword: keyword, @@ -1587,14 +1640,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f253 = function(val) { + var peg$f270 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f254 = function(val) { + var peg$f271 = function(val) { const ary = val || [] return { type: 'keyword', @@ -1602,14 +1655,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f255 = function(val) { + var peg$f272 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f256 = function(kw_create, kw_index, kw_if_not_exists, name, kw_on, table, columns) { + var peg$f273 = function(kw_create, kw_index, kw_if_not_exists, name, kw_on, table, columns) { return { type: 'create_index', create_keyword: kw_create, @@ -1623,7 +1676,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f257 = function(kw_create, kw_type, name, kw_as, fields) { + var peg$f274 = function(kw_create, kw_type, name, kw_as, fields) { return { type: 'create_type', type_variant: 'composite_type', @@ -1635,7 +1688,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f258 = function(name, type) { + var peg$f275 = function(name, type) { return { type: 'composite_type_field', name: name, @@ -1643,10 +1696,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f259 = function(head, tail) { + var peg$f276 = function(head, tail) { return createList(head, tail); }; - var peg$f260 = function(kw_create, kw_type, name, kw_as, kw_enum, values) { + var peg$f277 = function(kw_create, kw_type, name, kw_as, kw_enum, values) { return { type: 'create_type', type_variant: 'enum_type', @@ -1659,10 +1712,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f261 = function(head, tail) { + var peg$f278 = function(head, tail) { return createList(head, tail); }; - var peg$f262 = function(kw_create, kw_type, name, kw_as, kw_range, values) { + var peg$f279 = function(kw_create, kw_type, name, kw_as, kw_range, values) { return { type: 'create_type', type_variant: 'range_type', @@ -1675,7 +1728,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f263 = function(name, val) { + var peg$f280 = function(name, val) { if (val.type === 'number') { val = val.value } @@ -1686,7 +1739,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f264 = function(name) { + var peg$f281 = function(name) { return { type: 'assign_value_expr', name: name, @@ -1694,10 +1747,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f265 = function(head, tail) { + var peg$f282 = function(head, tail) { return createList(head, tail); }; - var peg$f266 = function(kw_create, kw_type, name, values) { + var peg$f283 = function(kw_create, kw_type, name, values) { return { type: 'create_type', type_variant: 'base_type', @@ -1708,7 +1761,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f267 = function(kw_drop, kw_type, kw_if_exists, names, dependency_action) { + var peg$f284 = function(kw_drop, kw_type, kw_if_exists, names, dependency_action) { return { type: 'drop_type', drop_keyword: kw_drop, @@ -1719,7 +1772,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f268 = function(keyword, if_exists_keyword, views, dependency_action) { + var peg$f285 = function(keyword, if_exists_keyword, views, dependency_action) { return { type: 'drop_view', keyword: keyword, @@ -1728,22 +1781,96 @@ function peg$parse(input, options) { dependency_action: dependency_action || null, } }; - var peg$f269 = function(head, tail) { + var peg$f286 = function(head, tail) { return createList(head, tail); }; - var peg$f270 = function(view) { + var peg$f287 = function(view) { return { type: 'view', value : view, } }; - var peg$f271 = function(val) { + var peg$f288 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; + var peg$f289 = function(assignments) { + return { + type: 'set', + assignments: assignments, + location: location() + } + }; + var peg$f290 = function(value) { + return { + type: 'session_authorization', + value: value, + location: location() + } + }; + var peg$f291 = function(name, head, tail) { + return { + type: 'search_path', + value: createList(head, tail), + location: location() + } + }; + var peg$f292 = function(head, tail) { + return createList(head, tail) + }; + var peg$f293 = function(name, value) { + return { + type: 'variable', + name: name[0] + name[1], + value: value, + location: location() + } + }; + var peg$f294 = function(modes) { + return { + type: 'transaction', + modes: modes, + location: location() + } + }; + var peg$f295 = function(head, tail) { + return createList(head, tail); + }; + var peg$f296 = function(level) { + return { + type: 'isolation_level', + level: level + } + }; + var peg$f297 = function(mode) { + return { + type: 'access_mode', + mode: mode + } + }; + var peg$f298 = function(mode) { + return { + type: 'deferrable_mode', + mode: mode.join(' ') + } + }; + var peg$f299 = function(value) { + return { + type: 'role', + value: value, + location: location() + } + }; + var peg$f300 = function(value) { + return { + type: 'time_zone', + value: value, + location: location() + } + }; var peg$currPos = 0; var peg$savedPos = 0; var peg$posDetailsCache = [{ line: 1, column: 1 }]; @@ -2007,6 +2134,9 @@ function peg$parse(input, options) { s0 = peg$parsecreate_type_stmt(); if (s0 === peg$FAILED) { s0 = peg$parsedrop_type_stmt(); + if (s0 === peg$FAILED) { + s0 = peg$parseset_stmt(); + } } } } @@ -9602,13 +9732,13 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_COUNT() { + function peg$parseKW_TO() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c108) { - s1 = input.substr(peg$currPos, 5); - peg$currPos += 5; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c108) { + s1 = input.substr(peg$currPos, 2); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e125); } @@ -9639,13 +9769,13 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_MAX() { + function peg$parseKW_COUNT() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 3).toLowerCase() === peg$c109) { - s1 = input.substr(peg$currPos, 3); - peg$currPos += 3; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c109) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e126); } @@ -9676,7 +9806,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_MIN() { + function peg$parseKW_MAX() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9713,7 +9843,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_SUM() { + function peg$parseKW_MIN() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9750,7 +9880,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_AVG() { + function peg$parseKW_SUM() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9787,16 +9917,53 @@ function peg$parse(input, options) { return s0; } + function peg$parseKW_AVG() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c113) { + s1 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e130); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f166(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parseKW_CAST() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c113) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c114) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9811,7 +9978,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f166(s1); + s0 = peg$f167(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9828,12 +9995,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c114) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c115) { s1 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9848,7 +10015,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f167(s1); + s0 = peg$f168(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9865,12 +10032,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c115) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c116) { s1 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9885,7 +10052,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f168(s1); + s0 = peg$f169(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9902,12 +10069,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 10).toLowerCase() === peg$c116) { + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c117) { s1 = input.substr(peg$currPos, 10); peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9922,7 +10089,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f169(s1); + s0 = peg$f170(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9939,12 +10106,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c117) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c118) { s1 = input.substr(peg$currPos, 5); peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9959,7 +10126,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f170(s1); + s0 = peg$f171(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9976,12 +10143,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 7).toLowerCase() === peg$c118) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c119) { s1 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9996,7 +10163,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f171(s1); + s0 = peg$f172(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10013,12 +10180,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 8).toLowerCase() === peg$c119) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c120) { s1 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10033,7 +10200,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f172(s1); + s0 = peg$f173(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10050,12 +10217,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c120) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c121) { s1 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10070,7 +10237,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f173(s1); + s0 = peg$f174(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10087,12 +10254,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 8).toLowerCase() === peg$c121) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c122) { s1 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10107,7 +10274,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f174(s1); + s0 = peg$f175(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10124,12 +10291,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c122) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c123) { s1 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10144,7 +10311,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f175(s1); + s0 = peg$f176(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10161,12 +10328,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c123) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c124) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10181,7 +10348,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f176(s1); + s0 = peg$f177(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10198,12 +10365,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c124) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c125) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10218,7 +10385,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f177(s1); + s0 = peg$f178(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10235,12 +10402,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c125) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c126) { s1 = input.substr(peg$currPos, 5); peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10255,7 +10422,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f178(s1); + s0 = peg$f179(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10268,55 +10435,647 @@ function peg$parse(input, options) { return s0; } - function peg$parseDOT() { - var s0; + function peg$parseKW_SESSION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 46) { - s0 = peg$c30; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c127) { + s1 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e144); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f180(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } } return s0; } - function peg$parseCOMMA() { - var s0; + function peg$parseKW_AUTHORIZATION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 44) { - s0 = peg$c2; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 13).toLowerCase() === peg$c128) { + s1 = input.substr(peg$currPos, 13); + peg$currPos += 13; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e145); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f181(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e3); } } return s0; } - function peg$parseSTAR() { - var s0; + function peg$parseKW_TRANSACTION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 42) { - s0 = peg$c14; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c129) { + s1 = input.substr(peg$currPos, 11); + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e146); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f182(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } } return s0; } - function peg$parseLPAREN() { - var s0; + function peg$parseKW_ISOLATION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 40) { - s0 = peg$c0; - peg$currPos++; - } else { + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c130) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e147); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f183(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_LEVEL() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c131) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e148); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f184(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_SERIALIZABLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c132) { + s1 = input.substr(peg$currPos, 12); + peg$currPos += 12; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e149); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f185(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_REPEATABLE_READ() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 15).toLowerCase() === peg$c133) { + s1 = input.substr(peg$currPos, 15); + peg$currPos += 15; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e150); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f186(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_COMMITTED() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 14).toLowerCase() === peg$c134) { + s1 = input.substr(peg$currPos, 14); + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e151); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f187(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_UNCOMMITTED() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 16).toLowerCase() === peg$c135) { + s1 = input.substr(peg$currPos, 16); + peg$currPos += 16; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e152); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f188(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_WRITE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c136) { + s1 = input.substr(peg$currPos, 10); + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e153); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f189(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_ONLY() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c137) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e154); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f190(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_DEFERRABLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c138) { + s1 = input.substr(peg$currPos, 10); + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e155); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f191(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_SEARCH_PATH() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c139) { + s1 = input.substr(peg$currPos, 11); + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e156); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f192(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_ROLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c140) { + s1 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e157); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f193(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_TIME_ZONE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c141) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e158); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f194(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_LOCAL() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c142) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e159); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f195(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseDOT() { + var s0; + + if (input.charCodeAt(peg$currPos) === 46) { + s0 = peg$c30; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e42); } + } + + return s0; + } + + function peg$parseCOMMA() { + var s0; + + if (input.charCodeAt(peg$currPos) === 44) { + s0 = peg$c2; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e3); } + } + + return s0; + } + + function peg$parseSTAR() { + var s0; + + if (input.charCodeAt(peg$currPos) === 42) { + s0 = peg$c14; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e16); } + } + + return s0; + } + + function peg$parseLPAREN() { + var s0; + + if (input.charCodeAt(peg$currPos) === 40) { + s0 = peg$c0; + peg$currPos++; + } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e0); } } @@ -10342,11 +11101,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 91) { - s0 = peg$c126; + s0 = peg$c143; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e160); } } return s0; @@ -10356,11 +11115,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 93) { - s0 = peg$c127; + s0 = peg$c144; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e161); } } return s0; @@ -10370,11 +11129,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 123) { - s0 = peg$c128; + s0 = peg$c145; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e162); } } return s0; @@ -10384,11 +11143,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 125) { - s0 = peg$c129; + s0 = peg$c146; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e163); } } return s0; @@ -10449,7 +11208,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e164); } } return s0; @@ -10470,12 +11229,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c130) { - s1 = peg$c130; + if (input.substr(peg$currPos, 2) === peg$c147) { + s1 = peg$c147; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e165); } } if (s1 !== peg$FAILED) { s2 = []; @@ -10544,24 +11303,24 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c131) { - s1 = peg$c131; + if (input.substr(peg$currPos, 2) === peg$c148) { + s1 = peg$c148; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e166); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; s4 = peg$currPos; peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c132) { - s5 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s5 = peg$c149; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } peg$silentFails--; if (s5 === peg$FAILED) { @@ -10588,12 +11347,12 @@ function peg$parse(input, options) { s3 = peg$currPos; s4 = peg$currPos; peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c132) { - s5 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s5 = peg$c149; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } peg$silentFails--; if (s5 === peg$FAILED) { @@ -10616,12 +11375,12 @@ function peg$parse(input, options) { s3 = peg$FAILED; } } - if (input.substr(peg$currPos, 2) === peg$c132) { - s3 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s3 = peg$c149; peg$currPos += 2; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; @@ -10697,11 +11456,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 59) { - s0 = peg$c133; + s0 = peg$c150; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e168); } } return s0; @@ -10725,7 +11484,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f179(); + s1 = peg$f196(); if (s1) { s1 = undefined; } else { @@ -10739,7 +11498,7 @@ function peg$parse(input, options) { } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f180(s3); + s0 = peg$f197(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10765,7 +11524,7 @@ function peg$parse(input, options) { s5 = peg$parseproc_expr(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f181(s1, s5); + s0 = peg$f198(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10792,7 +11551,7 @@ function peg$parse(input, options) { s3 = peg$parseproc_expr(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f182(s3); + s0 = peg$f199(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10867,7 +11626,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f183(s1, s2); + s0 = peg$f200(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10921,7 +11680,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f184(s1, s2); + s0 = peg$f201(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10946,7 +11705,7 @@ function peg$parse(input, options) { s7 = peg$parseon_clause(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f185(s1, s3, s5, s7); + s0 = peg$f202(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10990,7 +11749,7 @@ function peg$parse(input, options) { s5 = peg$parseRPAREN(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f186(s3); + s0 = peg$f203(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11028,7 +11787,7 @@ function peg$parse(input, options) { s7 = peg$parseRPAREN(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f187(s1, s5); + s0 = peg$f204(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11054,12 +11813,12 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c134) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c151) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e152); } + if (peg$silentFails === 0) { peg$fail(peg$e169); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11085,12 +11844,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c135) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c152) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e153); } + if (peg$silentFails === 0) { peg$fail(peg$e170); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11116,12 +11875,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c136) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c153) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e154); } + if (peg$silentFails === 0) { peg$fail(peg$e171); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11147,12 +11906,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 17).toLowerCase() === peg$c137) { + if (input.substr(peg$currPos, 17).toLowerCase() === peg$c154) { s2 = input.substr(peg$currPos, 17); peg$currPos += 17; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e155); } + if (peg$silentFails === 0) { peg$fail(peg$e172); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11178,12 +11937,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c138) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c155) { s2 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e156); } + if (peg$silentFails === 0) { peg$fail(peg$e173); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11209,12 +11968,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 14).toLowerCase() === peg$c139) { + if (input.substr(peg$currPos, 14).toLowerCase() === peg$c156) { s2 = input.substr(peg$currPos, 14); peg$currPos += 14; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e157); } + if (peg$silentFails === 0) { peg$fail(peg$e174); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11240,12 +11999,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c140) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c157) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e158); } + if (peg$silentFails === 0) { peg$fail(peg$e175); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11271,12 +12030,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c141) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c158) { s2 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e159); } + if (peg$silentFails === 0) { peg$fail(peg$e176); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11302,12 +12061,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c142) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c159) { s2 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e160); } + if (peg$silentFails === 0) { peg$fail(peg$e177); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11341,7 +12100,7 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f188(s1); + s1 = peg$f205(s1); } s0 = s1; @@ -11393,7 +12152,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f189(s1, s2); + s0 = peg$f206(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11415,7 +12174,7 @@ function peg$parse(input, options) { s5 = peg$parseRBRAKE(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f190(s3); + s0 = peg$f207(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11453,7 +12212,7 @@ function peg$parse(input, options) { if (s2 !== peg$FAILED) { s3 = peg$parsemem_chain(); peg$savedPos = s0; - s0 = peg$f191(s2, s3); + s0 = peg$f208(s2, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11480,7 +12239,7 @@ function peg$parse(input, options) { s5 = peg$parseRBRACE(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f192(s3, s4); + s0 = peg$f209(s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11552,7 +12311,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s1 = peg$f193(s1); + s1 = peg$f210(s1); s0 = s1; return s0; @@ -11562,11 +12321,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 36) { - s0 = peg$c143; + s0 = peg$c160; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e161); } + if (peg$silentFails === 0) { peg$fail(peg$e178); } } return s0; @@ -11575,12 +12334,12 @@ function peg$parse(input, options) { function peg$parseKW_RETURN() { var s0; - if (input.substr(peg$currPos, 6).toLowerCase() === peg$c144) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c161) { s0 = input.substr(peg$currPos, 6); peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e162); } + if (peg$silentFails === 0) { peg$fail(peg$e179); } } return s0; @@ -11589,12 +12348,12 @@ function peg$parse(input, options) { function peg$parseKW_ASSIGN() { var s0; - if (input.substr(peg$currPos, 2) === peg$c145) { - s0 = peg$c145; + if (input.substr(peg$currPos, 2) === peg$c162) { + s0 = peg$c162; peg$currPos += 2; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e163); } + if (peg$silentFails === 0) { peg$fail(peg$e180); } } return s0; @@ -11623,7 +12382,7 @@ function peg$parse(input, options) { s9 = null; } peg$savedPos = s0; - s0 = peg$f194(s1, s3, s7, s9); + s0 = peg$f211(s1, s3, s7, s9); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11653,7 +12412,7 @@ function peg$parse(input, options) { s5 = peg$parsetable_name(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f195(s1, s5); + s0 = peg$f212(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11671,7 +12430,7 @@ function peg$parse(input, options) { s1 = peg$parsetable_name(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f196(s1); + s1 = peg$f213(s1); } s0 = s1; } @@ -11693,7 +12452,7 @@ function peg$parse(input, options) { if (s5 !== peg$FAILED) { s6 = peg$parse__(); peg$savedPos = s0; - s0 = peg$f197(s1, s3, s5); + s0 = peg$f214(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11715,7 +12474,7 @@ function peg$parse(input, options) { if (s3 !== peg$FAILED) { s4 = peg$parse__(); peg$savedPos = s0; - s0 = peg$f198(s1, s3); + s0 = peg$f215(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11736,7 +12495,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_DROP_TABLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f199(s1); + s1 = peg$f216(s1); } s0 = s1; @@ -11759,7 +12518,7 @@ function peg$parse(input, options) { s7 = peg$parseselect_stmt(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f200(s1, s3, s5, s7); + s0 = peg$f217(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11796,7 +12555,7 @@ function peg$parse(input, options) { s11 = peg$parseRPAREN(); if (s11 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f201(s1, s3, s5, s9); + s0 = peg$f218(s1, s3, s5, s9); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11838,7 +12597,7 @@ function peg$parse(input, options) { s9 = peg$parseRPAREN(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f202(s1, s3, s7); + s0 = peg$f219(s1, s3, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11872,7 +12631,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_CREATE_TABLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f203(s1); + s1 = peg$f220(s1); } s0 = s1; @@ -11886,7 +12645,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_IF_NOT_EXISTS(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f204(s1); + s1 = peg$f221(s1); } s0 = s1; @@ -11952,7 +12711,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f205(s1, s2); + s0 = peg$f222(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11974,7 +12733,7 @@ function peg$parse(input, options) { s5 = peg$parsefield_constraint_list(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f206(s1, s3, s5); + s0 = peg$f223(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11995,7 +12754,7 @@ function peg$parse(input, options) { s3 = peg$parsefield_data_type(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f207(s1, s3); + s0 = peg$f224(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12121,7 +12880,7 @@ function peg$parse(input, options) { s21 = null; } peg$savedPos = s0; - s0 = peg$f208(s1, s5, s6, s10, s12, s16, s17, s21); + s0 = peg$f225(s1, s5, s6, s10, s12, s16, s17, s21); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12190,7 +12949,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f209(s1, s3, s5); + s0 = peg$f226(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12261,7 +13020,7 @@ function peg$parse(input, options) { s8 = peg$parseRPAREN(); if (s8 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f210(s1, s5, s6); + s0 = peg$f227(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12336,7 +13095,7 @@ function peg$parse(input, options) { s8 = peg$parseRPAREN(); if (s8 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f211(s1, s5, s6); + s0 = peg$f228(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12358,7 +13117,7 @@ function peg$parse(input, options) { s1 = peg$parseident(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f212(s1); + s1 = peg$f229(s1); } s0 = s1; } @@ -12397,7 +13156,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f213(s1, s2); + s0 = peg$f230(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12436,7 +13195,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_not_null(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f214(s1); + s1 = peg$f231(s1); } s0 = s1; @@ -12450,7 +13209,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_NOT_NULL(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f215(s1); + s1 = peg$f232(s1); } s0 = s1; @@ -12464,7 +13223,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_primary_key(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f216(s1); + s1 = peg$f233(s1); } s0 = s1; @@ -12478,7 +13237,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_PRIMARY_KEY(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f217(s1); + s1 = peg$f234(s1); } s0 = s1; @@ -12492,7 +13251,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_unique(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f218(s1); + s1 = peg$f235(s1); } s0 = s1; @@ -12506,7 +13265,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_UNIQUE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f219(s1); + s1 = peg$f236(s1); } s0 = s1; @@ -12520,7 +13279,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_auto_increment(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f220(s1); + s1 = peg$f237(s1); } s0 = s1; @@ -12534,7 +13293,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_AUTO_INCREMENT(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f221(s1); + s1 = peg$f238(s1); } s0 = s1; @@ -12561,7 +13320,7 @@ function peg$parse(input, options) { s7 = null; } peg$savedPos = s0; - s0 = peg$f222(s1, s3, s5, s7); + s0 = peg$f239(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12581,7 +13340,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_always(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f223(s1); + s1 = peg$f240(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -12589,7 +13348,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_by_default(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f224(s1); + s1 = peg$f241(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -12597,7 +13356,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_by_default_on_null(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f225(s1); + s1 = peg$f242(s1); } s0 = s1; } @@ -12622,7 +13381,7 @@ function peg$parse(input, options) { } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f226(s1, s3); + s0 = peg$f243(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12642,7 +13401,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_ALWAYS(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f227(s1); + s1 = peg$f244(s1); } s0 = s1; @@ -12656,7 +13415,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_BY_DEFAULT(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f228(s1); + s1 = peg$f245(s1); } s0 = s1; @@ -12670,7 +13429,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_BY_DEFAULT_ON_NULL(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f229(s1); + s1 = peg$f246(s1); } s0 = s1; @@ -12687,7 +13446,7 @@ function peg$parse(input, options) { s3 = peg$parseident(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f230(s3); + s0 = peg$f247(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12731,7 +13490,7 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f231(s1); + s1 = peg$f248(s1); } s0 = s1; } @@ -12770,7 +13529,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f232(s1, s2); + s0 = peg$f249(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12830,7 +13589,235 @@ function peg$parse(input, options) { s5 = peg$parseint(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f233(s5); + s0 = peg$f250(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_start() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_START(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_WITH(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseint(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f251(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_maxvalue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_MAXVALUE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f252(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_minvalue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_MINVALUE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f253(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_no_maxvalue() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_MAXVALUE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f254(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_no_minvalue() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_MINVALUE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f255(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_cache() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_CACHE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f256(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_cycle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_CYCLE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f257(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_no_cycle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_CYCLE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f258(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_owned_by() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_OWNED_BY(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parsecolumn_ref(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f259(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_owned_by_none() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_OWNED_BY_NONE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f260(); + } + s0 = s1; + + return s0; + } + + function peg$parsealter_table_stmt() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsealter_table_keyword(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseident(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parsealter_table_add_column(); + if (s5 === peg$FAILED) { + s5 = peg$parsealter_table_drop_column(); + if (s5 === peg$FAILED) { + s5 = peg$parsealter_table_modify_column(); + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f261(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12847,24 +13834,46 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_start() { - var s0, s1, s2, s3, s4, s5; + function peg$parsealter_table_keyword() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseKW_ALTER(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_TABLE(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f262(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsealter_table_add_column() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_START(); + s1 = peg$parseadd_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_WITH(); + s3 = peg$parsefield(); if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseint(); - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f234(s5); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + peg$savedPos = s0; + s0 = peg$f263(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12877,40 +13886,40 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_maxvalue() { - var s0, s1, s2, s3; + function peg$parseadd_keyword() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_MAXVALUE(); + s1 = peg$parseKW_ADD(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseint(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f235(s3); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f264(s1); } + s0 = s1; return s0; } - function peg$parsesequence_option_minvalue() { + function peg$parsealter_table_drop_column() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_MINVALUE(); + s1 = peg$parsedrop_column_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseint(); + s3 = peg$parsecolumn_node(); + if (s3 === peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$f265(s1); + if (s3) { + s3 = peg$FAILED; + } else { + s3 = undefined; + } + } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f236(s3); + s0 = peg$f266(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12923,45 +13932,40 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_no_maxvalue() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_NO_MAXVALUE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f237(); - } - s0 = s1; - - return s0; - } - - function peg$parsesequence_option_no_minvalue() { + function peg$parsedrop_column_keyword() { var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_NO_MINVALUE(); + s1 = peg$parseKW_DROP_COLUMN(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f238(); + s1 = peg$f267(s1); } s0 = s1; return s0; } - function peg$parsesequence_option_cache() { + function peg$parsealter_table_modify_column() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_CACHE(); + s1 = peg$parsemodify_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseint(); + s3 = peg$parsefield(); + if (s3 === peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$f268(s1); + if (s3) { + s3 = peg$FAILED; + } else { + s3 = undefined; + } + } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f239(s3); + s0 = peg$f269(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12974,45 +13978,126 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_cycle() { - var s0, s1; + function peg$parsemodify_keyword() { + var s0, s1, s2, s3, s4; s0 = peg$currPos; - s1 = peg$parseKW_CYCLE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f240(); + s1 = peg$currPos; + s2 = peg$parseKW_MODIFY(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_COLUMN(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; } - s0 = s1; - - return s0; - } - - function peg$parsesequence_option_no_cycle() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_NO_CYCLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f241(); + s1 = peg$f270(s1); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseKW_MODIFY(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f271(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseKW_ALTER(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_COLUMN(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f272(s1); + } + s0 = s1; + } + } return s0; } - function peg$parsesequence_option_owned_by() { - var s0, s1, s2, s3; + function peg$parsecreate_index_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; s0 = peg$currPos; - s1 = peg$parseKW_OWNED_BY(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsecolumn_ref(); + s3 = peg$parseKW_INDEX(); if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f242(s3); + s4 = peg$parse__(); + s5 = peg$parseKW_IF_NOT_EXISTS(); + if (s5 === peg$FAILED) { + s5 = null; + } + s6 = peg$parse__(); + s7 = peg$parseident(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_ON(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseident(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseLPAREN(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parsecolumn_list(); + if (s15 !== peg$FAILED) { + s16 = peg$parse__(); + s17 = peg$parseRPAREN(); + if (s17 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f273(s1, s3, s5, s7, s9, s11, s15); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13025,40 +14110,65 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_owned_by_none() { - var s0, s1; + function peg$parsecreate_type_stmt() { + var s0; - s0 = peg$currPos; - s1 = peg$parseKW_OWNED_BY_NONE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f243(); + s0 = peg$parsecreate_type_stmt_composite(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_enum(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_base(); + } + } } - s0 = s1; return s0; } - function peg$parsealter_table_stmt() { - var s0, s1, s2, s3, s4, s5; + function peg$parsecreate_type_stmt_composite() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; s0 = peg$currPos; - s1 = peg$parsealter_table_keyword(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseident(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parsealter_table_add_column(); - if (s5 === peg$FAILED) { - s5 = peg$parsealter_table_drop_column(); - if (s5 === peg$FAILED) { - s5 = peg$parsealter_table_modify_column(); + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseLPAREN(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parsecomposite_type_field_list(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseRPAREN(); + if (s13 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f274(s1, s3, s5, s7, s11); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - } - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f244(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13075,46 +14185,17 @@ function peg$parse(input, options) { return s0; } - function peg$parsealter_table_keyword() { - var s0, s1, s2, s3, s4; - - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_ALTER(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_TABLE(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f245(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_add_column() { + function peg$parsecomposite_type_field() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseadd_keyword(); + s1 = peg$parseident(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield(); + s3 = peg$parsefield_data_type(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f246(s1, s3); + s0 = peg$f275(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13127,44 +14208,52 @@ function peg$parse(input, options) { return s0; } - function peg$parseadd_keyword() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_ADD(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f247(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_drop_column() { - var s0, s1, s2, s3; + function peg$parsecomposite_type_field_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parsedrop_column_keyword(); + s1 = peg$parsecomposite_type_field(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parsecolumn_node(); - if (s3 === peg$FAILED) { - peg$savedPos = peg$currPos; - s3 = peg$f248(s1); - if (s3) { - s3 = peg$FAILED; + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parsecomposite_type_field(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; } else { - s3 = undefined; + peg$currPos = s3; + s3 = peg$FAILED; } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f249(s1, s3); } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parsecomposite_type_field(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } } + peg$savedPos = s0; + s0 = peg$f276(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13173,40 +14262,59 @@ function peg$parse(input, options) { return s0; } - function peg$parsedrop_column_keyword() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_DROP_COLUMN(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f250(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_modify_column() { - var s0, s1, s2, s3; + function peg$parsecreate_type_stmt_enum() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; s0 = peg$currPos; - s1 = peg$parsemodify_keyword(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield(); - if (s3 === peg$FAILED) { - peg$savedPos = peg$currPos; - s3 = peg$f251(s1); - if (s3) { - s3 = peg$FAILED; + s3 = peg$parseKW_TYPE(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_ENUM(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseLPAREN(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parsecreate_type_value_list(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parseRPAREN(); + if (s15 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f277(s1, s3, s5, s7, s9, s13); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { - s3 = undefined; + peg$currPos = s0; + s0 = peg$FAILED; } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f252(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13219,102 +14327,89 @@ function peg$parse(input, options) { return s0; } - function peg$parsemodify_keyword() { - var s0, s1, s2, s3, s4; + function peg$parsecreate_type_value_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_MODIFY(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_COLUMN(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } + s1 = peg$parseliteral_string(); if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f253(s1); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseKW_MODIFY(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f254(s1); + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseliteral_string(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_ALTER(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_COLUMN(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseliteral_string(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; } else { - peg$currPos = s1; - s1 = peg$FAILED; + peg$currPos = s3; + s3 = peg$FAILED; } } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f255(s1); + peg$currPos = s3; + s3 = peg$FAILED; } - s0 = s1; } + peg$savedPos = s0; + s0 = peg$f278(s1, s2); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsecreate_index_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; + function peg$parsecreate_type_stmt_range() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; s0 = peg$currPos; s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_INDEX(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseKW_IF_NOT_EXISTS(); - if (s5 === peg$FAILED) { - s5 = null; - } - s6 = peg$parse__(); - s7 = peg$parseident(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_ON(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseident(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseLPAREN(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parsecolumn_list(); - if (s15 !== peg$FAILED) { - s16 = peg$parse__(); - s17 = peg$parseRPAREN(); - if (s17 !== peg$FAILED) { + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_RANGE(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseLPAREN(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseassign_value_expr_list(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parseRPAREN(); + if (s15 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f256(s1, s3, s5, s7, s9, s11, s15); + s0 = peg$f279(s1, s3, s5, s7, s9, s13); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13351,25 +14446,110 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt() { - var s0; + function peg$parseassign_value_expr() { + var s0, s1, s2, s3, s4, s5; - s0 = peg$parsecreate_type_stmt_composite(); + s0 = peg$currPos; + s1 = peg$parseident(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseident(); + if (s5 === peg$FAILED) { + s5 = peg$parseliteral_numeric(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f280(s1, s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_enum(); - if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_range(); - if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_base(); + s0 = peg$currPos; + s1 = peg$parseident(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f281(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parseassign_value_expr_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseassign_value_expr(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseassign_value_expr(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseassign_value_expr(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; } } + peg$savedPos = s0; + s0 = peg$f282(s1, s2); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsecreate_type_stmt_composite() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; + function peg$parsecreate_type_stmt_base() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; s1 = peg$parseKW_CREATE(); @@ -13381,35 +14561,34 @@ function peg$parse(input, options) { s5 = peg$parseident(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseKW_AS(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseLPAREN(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parsecomposite_type_field_list(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseRPAREN(); - if (s13 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f257(s1, s3, s5, s7, s11); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + s7 = peg$currPos; + s8 = peg$parseLPAREN(); + if (s8 !== peg$FAILED) { + s9 = peg$parse__(); + s10 = peg$parseassign_value_expr_list(); + if (s10 !== peg$FAILED) { + s11 = peg$parse__(); + s12 = peg$parseRPAREN(); + if (s12 !== peg$FAILED) { + s8 = [s8, s9, s10, s11, s12]; + s7 = s8; } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 === peg$FAILED) { + s7 = null; } + peg$savedPos = s0; + s0 = peg$f283(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13426,17 +14605,73 @@ function peg$parse(input, options) { return s0; } - function peg$parsecomposite_type_field() { - var s0, s1, s2, s3; + function peg$parsedrop_type_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_DROP(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield_data_type(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseKW_IF_EXISTS(); + if (s5 === peg$FAILED) { + s5 = null; + } + s6 = peg$parse__(); + s7 = peg$parseident_list(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_CASCADE(); + if (s9 === peg$FAILED) { + s9 = peg$parseKW_RESTRICT(); + } + if (s9 === peg$FAILED) { + s9 = null; + } + peg$savedPos = s0; + s0 = peg$f284(s1, s3, s5, s7, s9); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsedrop_view_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsedrop_view_keyword(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_IF_EXISTS(); + if (s3 === peg$FAILED) { + s3 = null; + } + s4 = peg$parse__(); + s5 = peg$parseview_ref_list(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_CASCADE(); + if (s7 === peg$FAILED) { + s7 = peg$parseKW_RESTRICT(); + } + if (s7 === peg$FAILED) { + s7 = null; + } peg$savedPos = s0; - s0 = peg$f258(s1, s3); + s0 = peg$f285(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13449,11 +14684,11 @@ function peg$parse(input, options) { return s0; } - function peg$parsecomposite_type_field_list() { + function peg$parseview_ref_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parsecomposite_type_field(); + s1 = peg$parseview_ref(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13461,7 +14696,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parsecomposite_type_field(); + s7 = peg$parseview_ref(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13480,7 +14715,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parsecomposite_type_field(); + s7 = peg$parseview_ref(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13494,7 +14729,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f259(s1, s2); + s0 = peg$f286(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13503,117 +14738,64 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_enum() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; + function peg$parseview_ref() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); + s1 = peg$parseident(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); - if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseKW_AS(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_ENUM(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseLPAREN(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parsecreate_type_value_list(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parseRPAREN(); - if (s15 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f260(s1, s3, s5, s7, s9, s13); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f287(s1); } + s0 = s1; return s0; } - function peg$parsecreate_type_value_list() { - var s0, s1, s2, s3, s4, s5, s6, s7; + function peg$parsedrop_view_keyword() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseliteral_string(); + s1 = peg$parseKW_DROP_VIEW(); if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$currPos; - s4 = peg$parse__(); - s5 = peg$parseCOMMA(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseliteral_string(); - if (s7 !== peg$FAILED) { - s4 = [s4, s5, s6, s7]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$parse__(); - s5 = peg$parseCOMMA(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseliteral_string(); - if (s7 !== peg$FAILED) { - s4 = [s4, s5, s6, s7]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f288(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseset_stmt() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_SET(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parsesession_authorization_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsesearch_path_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsevariable_assignment_list(); + if (s3 === peg$FAILED) { + s3 = peg$parsetransaction_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parserole_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsetime_zone_assignment(); + } + } } - } else { - peg$currPos = s3; - s3 = peg$FAILED; } } - peg$savedPos = s0; - s0 = peg$f261(s1, s2); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f289(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13622,51 +14804,32 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_range() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; + function peg$parsesession_authorization_assignment() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); + s1 = peg$parseKW_SESSION(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + s3 = peg$parseKW_AUTHORIZATION(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseident(); + s5 = peg$parseKW_TO(); + if (s5 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s5 = peg$c4; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseKW_AS(); + s7 = peg$parseliteral_string(); if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_RANGE(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseLPAREN(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseassign_value_expr_list(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parseRPAREN(); - if (s15 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f262(s1, s3, s5, s7, s9, s13); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + peg$savedPos = s0; + s0 = peg$f290(s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13687,29 +14850,67 @@ function peg$parse(input, options) { return s0; } - function peg$parseassign_value_expr() { - var s0, s1, s2, s3, s4, s5; + function peg$parsesearch_path_assignment() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_SEARCH_PATH(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - if (input.charCodeAt(peg$currPos) === 61) { - s3 = peg$c4; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e6); } + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 === peg$FAILED) { - s5 = peg$parseliteral_numeric(); - } + s5 = peg$parseliteral_string(); if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parse__(); + s9 = peg$parseCOMMA(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseliteral_string(); + if (s11 !== peg$FAILED) { + s8 = [s8, s9, s10, s11]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parse__(); + s9 = peg$parseCOMMA(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseliteral_string(); + if (s11 !== peg$FAILED) { + s8 = [s8, s9, s10, s11]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } peg$savedPos = s0; - s0 = peg$f263(s1, s5); + s0 = peg$f291(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13719,27 +14920,18 @@ function peg$parse(input, options) { s0 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseident(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f264(s1); - } - s0 = s1; + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parseassign_value_expr_list() { + function peg$parsevariable_assignment_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseassign_value_expr(); + s1 = peg$parsevariable_assignment(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13747,7 +14939,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseassign_value_expr(); + s7 = peg$parsevariable_assignment(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13766,7 +14958,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseassign_value_expr(); + s7 = peg$parsevariable_assignment(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13780,7 +14972,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f265(s1, s2); + s0 = peg$f292(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13789,90 +14981,49 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_base() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + function peg$parsevariable_assignment() { + var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + s1 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s2 = peg$c163; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e181); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseident_name(); if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$currPos; - s8 = peg$parseLPAREN(); - if (s8 !== peg$FAILED) { - s9 = peg$parse__(); - s10 = peg$parseassign_value_expr_list(); - if (s10 !== peg$FAILED) { - s11 = peg$parse__(); - s12 = peg$parseRPAREN(); - if (s12 !== peg$FAILED) { - s8 = [s8, s9, s10, s11, s12]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 === peg$FAILED) { - s7 = null; - } - peg$savedPos = s0; - s0 = peg$f266(s1, s3, s5, s7); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + s2 = [s2, s3]; + s1 = s2; } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s1; + s1 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s1; + s1 = peg$FAILED; } - - return s0; - } - - function peg$parsedrop_type_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - - s0 = peg$currPos; - s1 = peg$parseKW_DROP(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseKW_IF_EXISTS(); + s5 = peg$parseliteral(); if (s5 === peg$FAILED) { - s5 = null; + s5 = peg$parseor_expr(); } - s6 = peg$parse__(); - s7 = peg$parseident_list(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_CASCADE(); - if (s9 === peg$FAILED) { - s9 = peg$parseKW_RESTRICT(); - } - if (s9 === peg$FAILED) { - s9 = null; - } + if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f267(s1, s3, s5, s7, s9); + s0 = peg$f293(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13889,30 +15040,17 @@ function peg$parse(input, options) { return s0; } - function peg$parsedrop_view_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7; + function peg$parsetransaction_assignment() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parsedrop_view_keyword(); + s1 = peg$parseKW_TRANSACTION(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_IF_EXISTS(); - if (s3 === peg$FAILED) { - s3 = null; - } - s4 = peg$parse__(); - s5 = peg$parseview_ref_list(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseKW_CASCADE(); - if (s7 === peg$FAILED) { - s7 = peg$parseKW_RESTRICT(); - } - if (s7 === peg$FAILED) { - s7 = null; - } + s3 = peg$parsetransaction_mode_list(); + if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f268(s1, s3, s5, s7); + s0 = peg$f294(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13925,11 +15063,11 @@ function peg$parse(input, options) { return s0; } - function peg$parseview_ref_list() { + function peg$parsetransaction_mode_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseview_ref(); + s1 = peg$parsetransaction_mode(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13937,7 +15075,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseview_ref(); + s7 = peg$parsetransaction_mode(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13956,7 +15094,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseview_ref(); + s7 = peg$parsetransaction_mode(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13970,7 +15108,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f269(s1, s2); + s0 = peg$f295(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13979,34 +15117,192 @@ function peg$parse(input, options) { return s0; } - function peg$parseview_ref() { + function peg$parsetransaction_mode() { + var s0; + + s0 = peg$parseisolation_level(); + if (s0 === peg$FAILED) { + s0 = peg$parseaccess_mode(); + if (s0 === peg$FAILED) { + s0 = peg$parsedeferrable_mode(); + } + } + + return s0; + } + + function peg$parseisolation_level() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_ISOLATION(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_LEVEL(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseKW_SERIALIZABLE(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_REPEATABLE_READ(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_READ_COMMITTED(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_READ_UNCOMMITTED(); + } + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f296(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseaccess_mode() { var s0, s1; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_READ_WRITE(); + if (s1 === peg$FAILED) { + s1 = peg$parseKW_READ_ONLY(); + } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f270(s1); + s1 = peg$f297(s1); } s0 = s1; return s0; } - function peg$parsedrop_view_keyword() { - var s0, s1; + function peg$parsedeferrable_mode() { + var s0, s1, s2, s3, s4; s0 = peg$currPos; - s1 = peg$parseKW_DROP_VIEW(); + s1 = peg$parseKW_DEFERRABLE(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseKW_NOT(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_DEFERRABLE(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f271(s1); + s1 = peg$f298(s1); } s0 = s1; return s0; } + function peg$parserole_assignment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_ROLE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseliteral_string(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f299(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsetime_zone_assignment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_TIME_ZONE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseliteral_string(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_LOCAL(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_DEFAULT(); + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f300(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + var reservedMap = module.exports.reservedMap || {}; diff --git a/packages/sql-parser/base/parser.js b/packages/sql-parser/base/parser.js index 469a31b7..c37693c0 100644 --- a/packages/sql-parser/base/parser.js +++ b/packages/sql-parser/base/parser.js @@ -284,44 +284,62 @@ function peg$parse(input, options) { var peg$c105 = "not"; var peg$c106 = "and"; var peg$c107 = "or"; - var peg$c108 = "count"; - var peg$c109 = "max"; - var peg$c110 = "min"; - var peg$c111 = "sum"; - var peg$c112 = "avg"; - var peg$c113 = "cast"; - var peg$c114 = "recursive"; - var peg$c115 = "foreign key"; - var peg$c116 = "references"; - var peg$c117 = "index"; - var peg$c118 = "cascade"; - var peg$c119 = "set null"; - var peg$c120 = "set default"; - var peg$c121 = "restrict"; - var peg$c122 = "no action"; - var peg$c123 = "type"; - var peg$c124 = "enum"; - var peg$c125 = "range"; - var peg$c126 = "["; - var peg$c127 = "]"; - var peg$c128 = "{"; - var peg$c129 = "}"; - var peg$c130 = "--"; - var peg$c131 = "/*"; - var peg$c132 = "*/"; - var peg$c133 = ";"; - var peg$c134 = "current_user"; - var peg$c135 = "current_date"; - var peg$c136 = "current_time"; - var peg$c137 = "current_timestamp"; - var peg$c138 = "localtime"; - var peg$c139 = "localtimestamp"; - var peg$c140 = "session_user"; - var peg$c141 = "system_user"; - var peg$c142 = "user"; - var peg$c143 = "$"; - var peg$c144 = "return"; - var peg$c145 = ":="; + var peg$c108 = "to"; + var peg$c109 = "count"; + var peg$c110 = "max"; + var peg$c111 = "min"; + var peg$c112 = "sum"; + var peg$c113 = "avg"; + var peg$c114 = "cast"; + var peg$c115 = "recursive"; + var peg$c116 = "foreign key"; + var peg$c117 = "references"; + var peg$c118 = "index"; + var peg$c119 = "cascade"; + var peg$c120 = "set null"; + var peg$c121 = "set default"; + var peg$c122 = "restrict"; + var peg$c123 = "no action"; + var peg$c124 = "type"; + var peg$c125 = "enum"; + var peg$c126 = "range"; + var peg$c127 = "session"; + var peg$c128 = "authorization"; + var peg$c129 = "transaction"; + var peg$c130 = "isolation"; + var peg$c131 = "level"; + var peg$c132 = "serializable"; + var peg$c133 = "repeatable read"; + var peg$c134 = "read committed"; + var peg$c135 = "read uncommitted"; + var peg$c136 = "read write"; + var peg$c137 = "read only"; + var peg$c138 = "deferrable"; + var peg$c139 = "search_path"; + var peg$c140 = "role"; + var peg$c141 = "time zone"; + var peg$c142 = "local"; + var peg$c143 = "["; + var peg$c144 = "]"; + var peg$c145 = "{"; + var peg$c146 = "}"; + var peg$c147 = "--"; + var peg$c148 = "/*"; + var peg$c149 = "*/"; + var peg$c150 = ";"; + var peg$c151 = "current_user"; + var peg$c152 = "current_date"; + var peg$c153 = "current_time"; + var peg$c154 = "current_timestamp"; + var peg$c155 = "localtime"; + var peg$c156 = "localtimestamp"; + var peg$c157 = "session_user"; + var peg$c158 = "system_user"; + var peg$c159 = "user"; + var peg$c160 = "$"; + var peg$c161 = "return"; + var peg$c162 = ":="; + var peg$c163 = "@"; var peg$r0 = /^[^)]/; var peg$r1 = /^[^`]/; @@ -466,45 +484,63 @@ function peg$parse(input, options) { var peg$e122 = peg$literalExpectation("NOT", true); var peg$e123 = peg$literalExpectation("AND", true); var peg$e124 = peg$literalExpectation("OR", true); - var peg$e125 = peg$literalExpectation("COUNT", true); - var peg$e126 = peg$literalExpectation("MAX", true); - var peg$e127 = peg$literalExpectation("MIN", true); - var peg$e128 = peg$literalExpectation("SUM", true); - var peg$e129 = peg$literalExpectation("AVG", true); - var peg$e130 = peg$literalExpectation("CAST", true); - var peg$e131 = peg$literalExpectation("RECURSIVE", true); - var peg$e132 = peg$literalExpectation("FOREIGN KEY", true); - var peg$e133 = peg$literalExpectation("REFERENCES", true); - var peg$e134 = peg$literalExpectation("INDEX", true); - var peg$e135 = peg$literalExpectation("CASCADE", true); - var peg$e136 = peg$literalExpectation("SET NULL", true); - var peg$e137 = peg$literalExpectation("SET DEFAULT", true); - var peg$e138 = peg$literalExpectation("RESTRICT", true); - var peg$e139 = peg$literalExpectation("NO ACTION", true); - var peg$e140 = peg$literalExpectation("TYPE", true); - var peg$e141 = peg$literalExpectation("ENUM", true); - var peg$e142 = peg$literalExpectation("RANGE", true); - var peg$e143 = peg$literalExpectation("[", false); - var peg$e144 = peg$literalExpectation("]", false); - var peg$e145 = peg$literalExpectation("{", false); - var peg$e146 = peg$literalExpectation("}", false); - var peg$e147 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); - var peg$e148 = peg$literalExpectation("--", false); - var peg$e149 = peg$literalExpectation("/*", false); - var peg$e150 = peg$literalExpectation("*/", false); - var peg$e151 = peg$literalExpectation(";", false); - var peg$e152 = peg$literalExpectation("CURRENT_USER", true); - var peg$e153 = peg$literalExpectation("CURRENT_DATE", true); - var peg$e154 = peg$literalExpectation("CURRENT_TIME", true); - var peg$e155 = peg$literalExpectation("CURRENT_TIMESTAMP", true); - var peg$e156 = peg$literalExpectation("LOCALTIME", true); - var peg$e157 = peg$literalExpectation("LOCALTIMESTAMP", true); - var peg$e158 = peg$literalExpectation("SESSION_USER", true); - var peg$e159 = peg$literalExpectation("SYSTEM_USER", true); - var peg$e160 = peg$literalExpectation("USER", true); - var peg$e161 = peg$literalExpectation("$", false); - var peg$e162 = peg$literalExpectation("return", true); - var peg$e163 = peg$literalExpectation(":=", false); + var peg$e125 = peg$literalExpectation("TO", true); + var peg$e126 = peg$literalExpectation("COUNT", true); + var peg$e127 = peg$literalExpectation("MAX", true); + var peg$e128 = peg$literalExpectation("MIN", true); + var peg$e129 = peg$literalExpectation("SUM", true); + var peg$e130 = peg$literalExpectation("AVG", true); + var peg$e131 = peg$literalExpectation("CAST", true); + var peg$e132 = peg$literalExpectation("RECURSIVE", true); + var peg$e133 = peg$literalExpectation("FOREIGN KEY", true); + var peg$e134 = peg$literalExpectation("REFERENCES", true); + var peg$e135 = peg$literalExpectation("INDEX", true); + var peg$e136 = peg$literalExpectation("CASCADE", true); + var peg$e137 = peg$literalExpectation("SET NULL", true); + var peg$e138 = peg$literalExpectation("SET DEFAULT", true); + var peg$e139 = peg$literalExpectation("RESTRICT", true); + var peg$e140 = peg$literalExpectation("NO ACTION", true); + var peg$e141 = peg$literalExpectation("TYPE", true); + var peg$e142 = peg$literalExpectation("ENUM", true); + var peg$e143 = peg$literalExpectation("RANGE", true); + var peg$e144 = peg$literalExpectation("SESSION", true); + var peg$e145 = peg$literalExpectation("AUTHORIZATION", true); + var peg$e146 = peg$literalExpectation("TRANSACTION", true); + var peg$e147 = peg$literalExpectation("ISOLATION", true); + var peg$e148 = peg$literalExpectation("LEVEL", true); + var peg$e149 = peg$literalExpectation("SERIALIZABLE", true); + var peg$e150 = peg$literalExpectation("REPEATABLE READ", true); + var peg$e151 = peg$literalExpectation("READ COMMITTED", true); + var peg$e152 = peg$literalExpectation("READ UNCOMMITTED", true); + var peg$e153 = peg$literalExpectation("READ WRITE", true); + var peg$e154 = peg$literalExpectation("READ ONLY", true); + var peg$e155 = peg$literalExpectation("DEFERRABLE", true); + var peg$e156 = peg$literalExpectation("SEARCH_PATH", true); + var peg$e157 = peg$literalExpectation("ROLE", true); + var peg$e158 = peg$literalExpectation("TIME ZONE", true); + var peg$e159 = peg$literalExpectation("LOCAL", true); + var peg$e160 = peg$literalExpectation("[", false); + var peg$e161 = peg$literalExpectation("]", false); + var peg$e162 = peg$literalExpectation("{", false); + var peg$e163 = peg$literalExpectation("}", false); + var peg$e164 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false); + var peg$e165 = peg$literalExpectation("--", false); + var peg$e166 = peg$literalExpectation("/*", false); + var peg$e167 = peg$literalExpectation("*/", false); + var peg$e168 = peg$literalExpectation(";", false); + var peg$e169 = peg$literalExpectation("CURRENT_USER", true); + var peg$e170 = peg$literalExpectation("CURRENT_DATE", true); + var peg$e171 = peg$literalExpectation("CURRENT_TIME", true); + var peg$e172 = peg$literalExpectation("CURRENT_TIMESTAMP", true); + var peg$e173 = peg$literalExpectation("LOCALTIME", true); + var peg$e174 = peg$literalExpectation("LOCALTIMESTAMP", true); + var peg$e175 = peg$literalExpectation("SESSION_USER", true); + var peg$e176 = peg$literalExpectation("SYSTEM_USER", true); + var peg$e177 = peg$literalExpectation("USER", true); + var peg$e178 = peg$literalExpectation("$", false); + var peg$e179 = peg$literalExpectation("return", true); + var peg$e180 = peg$literalExpectation(":=", false); + var peg$e181 = peg$literalExpectation("@", false); var peg$f0 = function() { return true; }; var peg$f1 = function(ast, tail) { @@ -1175,12 +1211,12 @@ function peg$parse(input, options) { var peg$f158 = function() { return 'NOT'; }; var peg$f159 = function() { return 'AND'; }; var peg$f160 = function() { return 'OR'; }; - var peg$f161 = function() { return 'COUNT'; }; - var peg$f162 = function() { return 'MAX'; }; - var peg$f163 = function() { return 'MIN'; }; - var peg$f164 = function() { return 'SUM'; }; - var peg$f165 = function() { return 'AVG'; }; - var peg$f166 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f161 = function() { return 'TO'; }; + var peg$f162 = function() { return 'COUNT'; }; + var peg$f163 = function() { return 'MAX'; }; + var peg$f164 = function() { return 'MIN'; }; + var peg$f165 = function() { return 'SUM'; }; + var peg$f166 = function() { return 'AVG'; }; var peg$f167 = function(val) { return makeKeywordNode(val, location()) }; var peg$f168 = function(val) { return makeKeywordNode(val, location()) }; var peg$f169 = function(val) { return makeKeywordNode(val, location()) }; @@ -1193,32 +1229,49 @@ function peg$parse(input, options) { var peg$f176 = function(val) { return makeKeywordNode(val, location()) }; var peg$f177 = function(val) { return makeKeywordNode(val, location()) }; var peg$f178 = function(val) { return makeKeywordNode(val, location()) }; - var peg$f179 = function() { return true; }; - var peg$f180 = function(s) { + var peg$f179 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f180 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f181 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f182 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f183 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f184 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f185 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f186 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f187 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f188 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f189 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f190 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f191 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f192 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f193 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f194 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f195 = function(val) { return makeKeywordNode(val, location()) }; + var peg$f196 = function() { return true; }; + var peg$f197 = function(s) { return { stmt : s, } }; - var peg$f181 = function(va, e) { + var peg$f198 = function(va, e) { return { type : 'assign', left : va, right: e } }; - var peg$f182 = function(e) { + var peg$f199 = function(e) { return { type : 'return', expr: e } }; - var peg$f183 = function(head, tail) { + var peg$f200 = function(head, tail) { return createBinaryExprChain(head, tail); }; - var peg$f184 = function(head, tail) { + var peg$f201 = function(head, tail) { return createBinaryExprChain(head, tail); }; - var peg$f185 = function(lt, op, rt, expr) { + var peg$f202 = function(lt, op, rt, expr) { return { type : 'join', ltable : lt, @@ -1227,11 +1280,11 @@ function peg$parse(input, options) { on : expr } }; - var peg$f186 = function(e) { + var peg$f203 = function(e) { e.paren = true; return e; }; - var peg$f187 = function(name, l) { + var peg$f204 = function(name, l) { //compatible with original func_call return { type : 'function', @@ -1243,23 +1296,23 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f188 = function(value) { + var peg$f205 = function(value) { return { type : 'special_system_function', name : value, location: location(), } }; - var peg$f189 = function(head, tail) { + var peg$f206 = function(head, tail) { return createList(head, tail); }; - var peg$f190 = function(l) { + var peg$f207 = function(l) { return { type : 'array', value : l } }; - var peg$f191 = function(name, m) { + var peg$f208 = function(name, m) { return { type : 'var', name : name, @@ -1267,7 +1320,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f192 = function(name, m) { + var peg$f209 = function(name, m) { return { type : 'var_pg_promise', name : name, @@ -1275,14 +1328,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f193 = function(l) { + var peg$f210 = function(l) { var s = []; for (var i = 0; i < l.length; i++) { s.push(l[i][1]); } return s; }; - var peg$f194 = function(with_clause, val, t, w) { + var peg$f211 = function(with_clause, val, t, w) { return { type : 'delete', with : with_clause, @@ -1290,7 +1343,7 @@ function peg$parse(input, options) { where : w } }; - var peg$f195 = function(db, t) { + var peg$f212 = function(db, t) { return { type: 'table', db : db, @@ -1298,7 +1351,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f196 = function(t) { + var peg$f213 = function(t) { return { type: 'table', db : '', @@ -1306,7 +1359,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f197 = function(keyword, if_exists_keyword, table) { + var peg$f214 = function(keyword, if_exists_keyword, table) { return { type: 'drop_table', keyword: keyword, @@ -1314,7 +1367,7 @@ function peg$parse(input, options) { table: table } }; - var peg$f198 = function(keyword, table) { + var peg$f215 = function(keyword, table) { return { type: 'drop_table', keyword: keyword, @@ -1322,14 +1375,14 @@ function peg$parse(input, options) { table: table } }; - var peg$f199 = function(val) { + var peg$f216 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f200 = function(keyword, table, as, select) { + var peg$f217 = function(keyword, table, as, select) { return { type: 'create_table', keyword: keyword, @@ -1339,7 +1392,7 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f201 = function(keyword, if_not_exists_keyword, table, fields) { + var peg$f218 = function(keyword, if_not_exists_keyword, table, fields) { return { type: 'create_table', keyword: keyword, @@ -1349,7 +1402,7 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f202 = function(keyword, table, fields) { + var peg$f219 = function(keyword, table, fields) { return { type: 'create_table', if_not_exists: null, @@ -1359,24 +1412,24 @@ function peg$parse(input, options) { location: location(), } }; - var peg$f203 = function(val) { + var peg$f220 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f204 = function(val) { + var peg$f221 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f205 = function(head, tail) { + var peg$f222 = function(head, tail) { return createList(head, tail); }; - var peg$f206 = function(name, type, constraints) { + var peg$f223 = function(name, type, constraints) { return { type: 'field', name: name, @@ -1385,7 +1438,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f207 = function(name, type) { + var peg$f224 = function(name, type) { return { type: 'field', name: name, @@ -1394,7 +1447,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f208 = function(k1, col_head, col_tail, k2, ref_table, ref_col_head, ref_col_tail, on) { + var peg$f225 = function(k1, col_head, col_tail, k2, ref_table, ref_col_head, ref_col_tail, on) { return { type: 'foreign_key', foreign_keyword: k1, @@ -1406,7 +1459,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f209 = function(on, trigger, action) { + var peg$f226 = function(on, trigger, action) { return { type: 'foreign_key_on', on_keyword: on, @@ -1415,7 +1468,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f210 = function(k, col_head, col_tail) { + var peg$f227 = function(k, col_head, col_tail) { return { type: 'primary_key', keyword: k, @@ -1423,7 +1476,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f211 = function(name, args_head, args_tail) { + var peg$f228 = function(name, args_head, args_tail) { return { type: 'field_data_type', name: name, @@ -1431,7 +1484,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f212 = function(name) { + var peg$f229 = function(name) { return { type: 'field_data_type', name: name, @@ -1439,100 +1492,100 @@ function peg$parse(input, options) { location: location() } }; - var peg$f213 = function(head, tail) { + var peg$f230 = function(head, tail) { return createList(head, tail, 1); }; - var peg$f214 = function(k) { + var peg$f231 = function(k) { return { type: 'constraint_not_null', keyword: k, location: location() } }; - var peg$f215 = function(k) { + var peg$f232 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f216 = function(k) { + var peg$f233 = function(k) { return { type: 'constraint_primary_key', keyword: k, location: location() } }; - var peg$f217 = function(k) { + var peg$f234 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f218 = function(k) { + var peg$f235 = function(k) { return { type: 'constraint_unique', keyword: k, location: location() } }; - var peg$f219 = function(k) { + var peg$f236 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f220 = function(k) { + var peg$f237 = function(k) { return { type: 'constraint_auto_increment', keyword: k, location: location() } }; - var peg$f221 = function(k) { + var peg$f238 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f222 = function(g, opt, data, seq) { + var peg$f239 = function(g, opt, data, seq) { return { type: 'constraint_generated', option: opt, data_type: data, sequence_options: seq } }; - var peg$f223 = function(k) { + var peg$f240 = function(k) { return { type: 'constraint_generated_option', option: 'ALWAYS', keyword: k } }; - var peg$f224 = function(k) { + var peg$f241 = function(k) { return { type: 'constraint_generated_option', option: 'BY_DEFAULT', keyword: k } }; - var peg$f225 = function(k) { + var peg$f242 = function(k) { return { type: 'constraint_generated_option', option: 'BY_DEFAULT_ON_NULL', keyword: k } }; - var peg$f226 = function(k, value) { + var peg$f243 = function(k, value) { return { type: 'constraint_default', keyword: k, value: value, location: location() } }; - var peg$f227 = function(k) { + var peg$f244 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f228 = function(k) { + var peg$f245 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f229 = function(k) { + var peg$f246 = function(k) { return { type: 'keyword', value: k && k[0], location: location() } }; - var peg$f230 = function(val) { + var peg$f247 = function(val) { return { type: 'sequence_option_data_type', value: val, location: location() } }; - var peg$f231 = function(s) { + var peg$f248 = function(s) { return s[2] }; - var peg$f232 = function(head, tail) { + var peg$f249 = function(head, tail) { return createList(head, tail, 1); }; - var peg$f233 = function(val) { + var peg$f250 = function(val) { return { type: 'sequence_option_increment', value: val, location: location() } }; - var peg$f234 = function(val) { + var peg$f251 = function(val) { return { type: 'sequence_option_increment', value: val, location: location() } }; - var peg$f235 = function(val) { + var peg$f252 = function(val) { return { type: 'sequence_option_maxvalue', value: val, location: location() } }; - var peg$f236 = function(val) { + var peg$f253 = function(val) { return { type: 'sequence_option_maxvalue', value: val, location: location() } }; - var peg$f237 = function() { + var peg$f254 = function() { return { type: 'sequence_option_no_maxvalue', location: location() } }; - var peg$f238 = function() { + var peg$f255 = function() { return { type: 'sequence_option_no_minvalue', location: location() } }; - var peg$f239 = function(val) { + var peg$f256 = function(val) { return { type: 'sequence_option_cache', value: val, location: location() } }; - var peg$f240 = function() { + var peg$f257 = function() { return { type: 'sequence_option_cycle', location: location() } }; - var peg$f241 = function() { + var peg$f258 = function() { return { type: 'sequence_option_no_cycle', location: location() } }; - var peg$f242 = function(val) { + var peg$f259 = function(val) { return { type: 'sequence_option_owned_by', value: val, location: location() } }; - var peg$f243 = function() { + var peg$f260 = function() { return { type: 'sequence_option_owned_by_none', location: location() } }; - var peg$f244 = function(keyword, table, command) { + var peg$f261 = function(keyword, table, command) { return { type: 'alter_table', keyword: keyword, @@ -1540,14 +1593,14 @@ function peg$parse(input, options) { command: command } }; - var peg$f245 = function(val) { + var peg$f262 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f246 = function(keyword, field) { + var peg$f263 = function(keyword, field) { return { type: 'alter_table_add_column', keyword: keyword, @@ -1555,15 +1608,15 @@ function peg$parse(input, options) { location: location() } }; - var peg$f247 = function(val) { + var peg$f264 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f248 = function(keyword) {error('EXPECTED COLUMN NAME')}; - var peg$f249 = function(keyword, column) { + var peg$f265 = function(keyword) {error('EXPECTED COLUMN NAME')}; + var peg$f266 = function(keyword, column) { return { type: 'alter_table_drop_column', keyword: keyword, @@ -1571,15 +1624,15 @@ function peg$parse(input, options) { location: location() } }; - var peg$f250 = function(val) { + var peg$f267 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; - var peg$f251 = function(keyword) {error('EXPECTED COLUMN NAME')}; - var peg$f252 = function(keyword, field) { + var peg$f268 = function(keyword) {error('EXPECTED COLUMN NAME')}; + var peg$f269 = function(keyword, field) { return { type: 'alter_table_modify_column', keyword: keyword, @@ -1587,14 +1640,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f253 = function(val) { + var peg$f270 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f254 = function(val) { + var peg$f271 = function(val) { const ary = val || [] return { type: 'keyword', @@ -1602,14 +1655,14 @@ function peg$parse(input, options) { location: location() } }; - var peg$f255 = function(val) { + var peg$f272 = function(val) { return { type: 'keyword', value: (val || []).map((v) => (v && v[0]) || [], []).join(''), location: location() } }; - var peg$f256 = function(kw_create, kw_index, kw_if_not_exists, name, kw_on, table, columns) { + var peg$f273 = function(kw_create, kw_index, kw_if_not_exists, name, kw_on, table, columns) { return { type: 'create_index', create_keyword: kw_create, @@ -1623,7 +1676,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f257 = function(kw_create, kw_type, name, kw_as, fields) { + var peg$f274 = function(kw_create, kw_type, name, kw_as, fields) { return { type: 'create_type', type_variant: 'composite_type', @@ -1635,7 +1688,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f258 = function(name, type) { + var peg$f275 = function(name, type) { return { type: 'composite_type_field', name: name, @@ -1643,10 +1696,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f259 = function(head, tail) { + var peg$f276 = function(head, tail) { return createList(head, tail); }; - var peg$f260 = function(kw_create, kw_type, name, kw_as, kw_enum, values) { + var peg$f277 = function(kw_create, kw_type, name, kw_as, kw_enum, values) { return { type: 'create_type', type_variant: 'enum_type', @@ -1659,10 +1712,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f261 = function(head, tail) { + var peg$f278 = function(head, tail) { return createList(head, tail); }; - var peg$f262 = function(kw_create, kw_type, name, kw_as, kw_range, values) { + var peg$f279 = function(kw_create, kw_type, name, kw_as, kw_range, values) { return { type: 'create_type', type_variant: 'range_type', @@ -1675,7 +1728,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f263 = function(name, val) { + var peg$f280 = function(name, val) { if (val.type === 'number') { val = val.value } @@ -1686,7 +1739,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f264 = function(name) { + var peg$f281 = function(name) { return { type: 'assign_value_expr', name: name, @@ -1694,10 +1747,10 @@ function peg$parse(input, options) { location: location() } }; - var peg$f265 = function(head, tail) { + var peg$f282 = function(head, tail) { return createList(head, tail); }; - var peg$f266 = function(kw_create, kw_type, name, values) { + var peg$f283 = function(kw_create, kw_type, name, values) { return { type: 'create_type', type_variant: 'base_type', @@ -1708,7 +1761,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f267 = function(kw_drop, kw_type, kw_if_exists, names, dependency_action) { + var peg$f284 = function(kw_drop, kw_type, kw_if_exists, names, dependency_action) { return { type: 'drop_type', drop_keyword: kw_drop, @@ -1719,7 +1772,7 @@ function peg$parse(input, options) { location: location() } }; - var peg$f268 = function(keyword, if_exists_keyword, views, dependency_action) { + var peg$f285 = function(keyword, if_exists_keyword, views, dependency_action) { return { type: 'drop_view', keyword: keyword, @@ -1728,22 +1781,96 @@ function peg$parse(input, options) { dependency_action: dependency_action || null, } }; - var peg$f269 = function(head, tail) { + var peg$f286 = function(head, tail) { return createList(head, tail); }; - var peg$f270 = function(view) { + var peg$f287 = function(view) { return { type: 'view', value : view, } }; - var peg$f271 = function(val) { + var peg$f288 = function(val) { return { type: 'keyword', value: val && val[0], location: location() } }; + var peg$f289 = function(assignments) { + return { + type: 'set', + assignments: assignments, + location: location() + } + }; + var peg$f290 = function(value) { + return { + type: 'session_authorization', + value: value, + location: location() + } + }; + var peg$f291 = function(name, head, tail) { + return { + type: 'search_path', + value: createList(head, tail), + location: location() + } + }; + var peg$f292 = function(head, tail) { + return createList(head, tail) + }; + var peg$f293 = function(name, value) { + return { + type: 'variable', + name: name[0] + name[1], + value: value, + location: location() + } + }; + var peg$f294 = function(modes) { + return { + type: 'transaction', + modes: modes, + location: location() + } + }; + var peg$f295 = function(head, tail) { + return createList(head, tail); + }; + var peg$f296 = function(level) { + return { + type: 'isolation_level', + level: level + } + }; + var peg$f297 = function(mode) { + return { + type: 'access_mode', + mode: mode + } + }; + var peg$f298 = function(mode) { + return { + type: 'deferrable_mode', + mode: mode.join(' ') + } + }; + var peg$f299 = function(value) { + return { + type: 'role', + value: value, + location: location() + } + }; + var peg$f300 = function(value) { + return { + type: 'time_zone', + value: value, + location: location() + } + }; var peg$currPos = 0; var peg$savedPos = 0; var peg$posDetailsCache = [{ line: 1, column: 1 }]; @@ -2007,6 +2134,9 @@ function peg$parse(input, options) { s0 = peg$parsecreate_type_stmt(); if (s0 === peg$FAILED) { s0 = peg$parsedrop_type_stmt(); + if (s0 === peg$FAILED) { + s0 = peg$parseset_stmt(); + } } } } @@ -9602,13 +9732,13 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_COUNT() { + function peg$parseKW_TO() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c108) { - s1 = input.substr(peg$currPos, 5); - peg$currPos += 5; + if (input.substr(peg$currPos, 2).toLowerCase() === peg$c108) { + s1 = input.substr(peg$currPos, 2); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e125); } @@ -9639,13 +9769,13 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_MAX() { + function peg$parseKW_COUNT() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 3).toLowerCase() === peg$c109) { - s1 = input.substr(peg$currPos, 3); - peg$currPos += 3; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c109) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e126); } @@ -9676,7 +9806,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_MIN() { + function peg$parseKW_MAX() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9713,7 +9843,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_SUM() { + function peg$parseKW_MIN() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9750,7 +9880,7 @@ function peg$parse(input, options) { return s0; } - function peg$parseKW_AVG() { + function peg$parseKW_SUM() { var s0, s1, s2, s3; s0 = peg$currPos; @@ -9787,16 +9917,53 @@ function peg$parse(input, options) { return s0; } + function peg$parseKW_AVG() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 3).toLowerCase() === peg$c113) { + s1 = input.substr(peg$currPos, 3); + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e130); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f166(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + function peg$parseKW_CAST() { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c113) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c114) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e130); } + if (peg$silentFails === 0) { peg$fail(peg$e131); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9811,7 +9978,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f166(s1); + s0 = peg$f167(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9828,12 +9995,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c114) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c115) { s1 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e131); } + if (peg$silentFails === 0) { peg$fail(peg$e132); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9848,7 +10015,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f167(s1); + s0 = peg$f168(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9865,12 +10032,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c115) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c116) { s1 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e132); } + if (peg$silentFails === 0) { peg$fail(peg$e133); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9885,7 +10052,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f168(s1); + s0 = peg$f169(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9902,12 +10069,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 10).toLowerCase() === peg$c116) { + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c117) { s1 = input.substr(peg$currPos, 10); peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e133); } + if (peg$silentFails === 0) { peg$fail(peg$e134); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9922,7 +10089,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f169(s1); + s0 = peg$f170(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9939,12 +10106,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c117) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c118) { s1 = input.substr(peg$currPos, 5); peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e134); } + if (peg$silentFails === 0) { peg$fail(peg$e135); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9959,7 +10126,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f170(s1); + s0 = peg$f171(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -9976,12 +10143,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 7).toLowerCase() === peg$c118) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c119) { s1 = input.substr(peg$currPos, 7); peg$currPos += 7; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e135); } + if (peg$silentFails === 0) { peg$fail(peg$e136); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -9996,7 +10163,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f171(s1); + s0 = peg$f172(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10013,12 +10180,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 8).toLowerCase() === peg$c119) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c120) { s1 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e136); } + if (peg$silentFails === 0) { peg$fail(peg$e137); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10033,7 +10200,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f172(s1); + s0 = peg$f173(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10050,12 +10217,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c120) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c121) { s1 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e137); } + if (peg$silentFails === 0) { peg$fail(peg$e138); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10070,7 +10237,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f173(s1); + s0 = peg$f174(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10087,12 +10254,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 8).toLowerCase() === peg$c121) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c122) { s1 = input.substr(peg$currPos, 8); peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e138); } + if (peg$silentFails === 0) { peg$fail(peg$e139); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10107,7 +10274,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f174(s1); + s0 = peg$f175(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10124,12 +10291,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c122) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c123) { s1 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e139); } + if (peg$silentFails === 0) { peg$fail(peg$e140); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10144,7 +10311,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f175(s1); + s0 = peg$f176(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10161,12 +10328,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c123) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c124) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e140); } + if (peg$silentFails === 0) { peg$fail(peg$e141); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10181,7 +10348,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f176(s1); + s0 = peg$f177(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10198,12 +10365,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c124) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c125) { s1 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e141); } + if (peg$silentFails === 0) { peg$fail(peg$e142); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10218,7 +10385,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f177(s1); + s0 = peg$f178(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10235,12 +10402,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 5).toLowerCase() === peg$c125) { + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c126) { s1 = input.substr(peg$currPos, 5); peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e142); } + if (peg$silentFails === 0) { peg$fail(peg$e143); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -10255,7 +10422,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f178(s1); + s0 = peg$f179(s1); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10268,55 +10435,647 @@ function peg$parse(input, options) { return s0; } - function peg$parseDOT() { - var s0; + function peg$parseKW_SESSION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 46) { - s0 = peg$c30; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c127) { + s1 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e144); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f180(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } } return s0; } - function peg$parseCOMMA() { - var s0; + function peg$parseKW_AUTHORIZATION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 44) { - s0 = peg$c2; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 13).toLowerCase() === peg$c128) { + s1 = input.substr(peg$currPos, 13); + peg$currPos += 13; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e145); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f181(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e3); } } return s0; } - function peg$parseSTAR() { - var s0; + function peg$parseKW_TRANSACTION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 42) { - s0 = peg$c14; - peg$currPos++; + s0 = peg$currPos; + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c129) { + s1 = input.substr(peg$currPos, 11); + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e146); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f182(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { + peg$currPos = s0; s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } } return s0; } - function peg$parseLPAREN() { - var s0; + function peg$parseKW_ISOLATION() { + var s0, s1, s2, s3; - if (input.charCodeAt(peg$currPos) === 40) { - s0 = peg$c0; - peg$currPos++; - } else { + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c130) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e147); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f183(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_LEVEL() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c131) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e148); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f184(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_SERIALIZABLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c132) { + s1 = input.substr(peg$currPos, 12); + peg$currPos += 12; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e149); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f185(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_REPEATABLE_READ() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 15).toLowerCase() === peg$c133) { + s1 = input.substr(peg$currPos, 15); + peg$currPos += 15; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e150); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f186(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_COMMITTED() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 14).toLowerCase() === peg$c134) { + s1 = input.substr(peg$currPos, 14); + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e151); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f187(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_UNCOMMITTED() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 16).toLowerCase() === peg$c135) { + s1 = input.substr(peg$currPos, 16); + peg$currPos += 16; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e152); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f188(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_WRITE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c136) { + s1 = input.substr(peg$currPos, 10); + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e153); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f189(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_READ_ONLY() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c137) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e154); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f190(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_DEFERRABLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 10).toLowerCase() === peg$c138) { + s1 = input.substr(peg$currPos, 10); + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e155); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f191(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_SEARCH_PATH() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c139) { + s1 = input.substr(peg$currPos, 11); + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e156); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f192(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_ROLE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c140) { + s1 = input.substr(peg$currPos, 4); + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e157); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f193(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_TIME_ZONE() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c141) { + s1 = input.substr(peg$currPos, 9); + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e158); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f194(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseKW_LOCAL() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 5).toLowerCase() === peg$c142) { + s1 = input.substr(peg$currPos, 5); + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e159); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseident_start(); + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = undefined; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f195(s1); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseDOT() { + var s0; + + if (input.charCodeAt(peg$currPos) === 46) { + s0 = peg$c30; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e42); } + } + + return s0; + } + + function peg$parseCOMMA() { + var s0; + + if (input.charCodeAt(peg$currPos) === 44) { + s0 = peg$c2; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e3); } + } + + return s0; + } + + function peg$parseSTAR() { + var s0; + + if (input.charCodeAt(peg$currPos) === 42) { + s0 = peg$c14; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e16); } + } + + return s0; + } + + function peg$parseLPAREN() { + var s0; + + if (input.charCodeAt(peg$currPos) === 40) { + s0 = peg$c0; + peg$currPos++; + } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e0); } } @@ -10342,11 +11101,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 91) { - s0 = peg$c126; + s0 = peg$c143; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e143); } + if (peg$silentFails === 0) { peg$fail(peg$e160); } } return s0; @@ -10356,11 +11115,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 93) { - s0 = peg$c127; + s0 = peg$c144; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e144); } + if (peg$silentFails === 0) { peg$fail(peg$e161); } } return s0; @@ -10370,11 +11129,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 123) { - s0 = peg$c128; + s0 = peg$c145; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e145); } + if (peg$silentFails === 0) { peg$fail(peg$e162); } } return s0; @@ -10384,11 +11143,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 125) { - s0 = peg$c129; + s0 = peg$c146; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e146); } + if (peg$silentFails === 0) { peg$fail(peg$e163); } } return s0; @@ -10449,7 +11208,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e147); } + if (peg$silentFails === 0) { peg$fail(peg$e164); } } return s0; @@ -10470,12 +11229,12 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c130) { - s1 = peg$c130; + if (input.substr(peg$currPos, 2) === peg$c147) { + s1 = peg$c147; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e148); } + if (peg$silentFails === 0) { peg$fail(peg$e165); } } if (s1 !== peg$FAILED) { s2 = []; @@ -10544,24 +11303,24 @@ function peg$parse(input, options) { var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c131) { - s1 = peg$c131; + if (input.substr(peg$currPos, 2) === peg$c148) { + s1 = peg$c148; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e149); } + if (peg$silentFails === 0) { peg$fail(peg$e166); } } if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; s4 = peg$currPos; peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c132) { - s5 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s5 = peg$c149; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } peg$silentFails--; if (s5 === peg$FAILED) { @@ -10588,12 +11347,12 @@ function peg$parse(input, options) { s3 = peg$currPos; s4 = peg$currPos; peg$silentFails++; - if (input.substr(peg$currPos, 2) === peg$c132) { - s5 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s5 = peg$c149; peg$currPos += 2; } else { s5 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } peg$silentFails--; if (s5 === peg$FAILED) { @@ -10616,12 +11375,12 @@ function peg$parse(input, options) { s3 = peg$FAILED; } } - if (input.substr(peg$currPos, 2) === peg$c132) { - s3 = peg$c132; + if (input.substr(peg$currPos, 2) === peg$c149) { + s3 = peg$c149; peg$currPos += 2; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e150); } + if (peg$silentFails === 0) { peg$fail(peg$e167); } } if (s3 !== peg$FAILED) { s1 = [s1, s2, s3]; @@ -10697,11 +11456,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 59) { - s0 = peg$c133; + s0 = peg$c150; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e151); } + if (peg$silentFails === 0) { peg$fail(peg$e168); } } return s0; @@ -10725,7 +11484,7 @@ function peg$parse(input, options) { s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f179(); + s1 = peg$f196(); if (s1) { s1 = undefined; } else { @@ -10739,7 +11498,7 @@ function peg$parse(input, options) { } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f180(s3); + s0 = peg$f197(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10765,7 +11524,7 @@ function peg$parse(input, options) { s5 = peg$parseproc_expr(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f181(s1, s5); + s0 = peg$f198(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10792,7 +11551,7 @@ function peg$parse(input, options) { s3 = peg$parseproc_expr(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f182(s3); + s0 = peg$f199(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10867,7 +11626,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f183(s1, s2); + s0 = peg$f200(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10921,7 +11680,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f184(s1, s2); + s0 = peg$f201(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10946,7 +11705,7 @@ function peg$parse(input, options) { s7 = peg$parseon_clause(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f185(s1, s3, s5, s7); + s0 = peg$f202(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -10990,7 +11749,7 @@ function peg$parse(input, options) { s5 = peg$parseRPAREN(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f186(s3); + s0 = peg$f203(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11028,7 +11787,7 @@ function peg$parse(input, options) { s7 = peg$parseRPAREN(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f187(s1, s5); + s0 = peg$f204(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11054,12 +11813,12 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c134) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c151) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e152); } + if (peg$silentFails === 0) { peg$fail(peg$e169); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11085,12 +11844,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c135) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c152) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e153); } + if (peg$silentFails === 0) { peg$fail(peg$e170); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11116,12 +11875,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c136) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c153) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e154); } + if (peg$silentFails === 0) { peg$fail(peg$e171); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11147,12 +11906,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 17).toLowerCase() === peg$c137) { + if (input.substr(peg$currPos, 17).toLowerCase() === peg$c154) { s2 = input.substr(peg$currPos, 17); peg$currPos += 17; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e155); } + if (peg$silentFails === 0) { peg$fail(peg$e172); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11178,12 +11937,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 9).toLowerCase() === peg$c138) { + if (input.substr(peg$currPos, 9).toLowerCase() === peg$c155) { s2 = input.substr(peg$currPos, 9); peg$currPos += 9; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e156); } + if (peg$silentFails === 0) { peg$fail(peg$e173); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11209,12 +11968,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 14).toLowerCase() === peg$c139) { + if (input.substr(peg$currPos, 14).toLowerCase() === peg$c156) { s2 = input.substr(peg$currPos, 14); peg$currPos += 14; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e157); } + if (peg$silentFails === 0) { peg$fail(peg$e174); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11240,12 +11999,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 12).toLowerCase() === peg$c140) { + if (input.substr(peg$currPos, 12).toLowerCase() === peg$c157) { s2 = input.substr(peg$currPos, 12); peg$currPos += 12; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e158); } + if (peg$silentFails === 0) { peg$fail(peg$e175); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11271,12 +12030,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 11).toLowerCase() === peg$c141) { + if (input.substr(peg$currPos, 11).toLowerCase() === peg$c158) { s2 = input.substr(peg$currPos, 11); peg$currPos += 11; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e159); } + if (peg$silentFails === 0) { peg$fail(peg$e176); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11302,12 +12061,12 @@ function peg$parse(input, options) { } if (s1 === peg$FAILED) { s1 = peg$currPos; - if (input.substr(peg$currPos, 4).toLowerCase() === peg$c142) { + if (input.substr(peg$currPos, 4).toLowerCase() === peg$c159) { s2 = input.substr(peg$currPos, 4); peg$currPos += 4; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e160); } + if (peg$silentFails === 0) { peg$fail(peg$e177); } } if (s2 !== peg$FAILED) { s3 = peg$currPos; @@ -11341,7 +12100,7 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f188(s1); + s1 = peg$f205(s1); } s0 = s1; @@ -11393,7 +12152,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f189(s1, s2); + s0 = peg$f206(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11415,7 +12174,7 @@ function peg$parse(input, options) { s5 = peg$parseRBRAKE(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f190(s3); + s0 = peg$f207(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11453,7 +12212,7 @@ function peg$parse(input, options) { if (s2 !== peg$FAILED) { s3 = peg$parsemem_chain(); peg$savedPos = s0; - s0 = peg$f191(s2, s3); + s0 = peg$f208(s2, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11480,7 +12239,7 @@ function peg$parse(input, options) { s5 = peg$parseRBRACE(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f192(s3, s4); + s0 = peg$f209(s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11552,7 +12311,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s1 = peg$f193(s1); + s1 = peg$f210(s1); s0 = s1; return s0; @@ -11562,11 +12321,11 @@ function peg$parse(input, options) { var s0; if (input.charCodeAt(peg$currPos) === 36) { - s0 = peg$c143; + s0 = peg$c160; peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e161); } + if (peg$silentFails === 0) { peg$fail(peg$e178); } } return s0; @@ -11575,12 +12334,12 @@ function peg$parse(input, options) { function peg$parseKW_RETURN() { var s0; - if (input.substr(peg$currPos, 6).toLowerCase() === peg$c144) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c161) { s0 = input.substr(peg$currPos, 6); peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e162); } + if (peg$silentFails === 0) { peg$fail(peg$e179); } } return s0; @@ -11589,12 +12348,12 @@ function peg$parse(input, options) { function peg$parseKW_ASSIGN() { var s0; - if (input.substr(peg$currPos, 2) === peg$c145) { - s0 = peg$c145; + if (input.substr(peg$currPos, 2) === peg$c162) { + s0 = peg$c162; peg$currPos += 2; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e163); } + if (peg$silentFails === 0) { peg$fail(peg$e180); } } return s0; @@ -11623,7 +12382,7 @@ function peg$parse(input, options) { s9 = null; } peg$savedPos = s0; - s0 = peg$f194(s1, s3, s7, s9); + s0 = peg$f211(s1, s3, s7, s9); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11653,7 +12412,7 @@ function peg$parse(input, options) { s5 = peg$parsetable_name(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f195(s1, s5); + s0 = peg$f212(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11671,7 +12430,7 @@ function peg$parse(input, options) { s1 = peg$parsetable_name(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f196(s1); + s1 = peg$f213(s1); } s0 = s1; } @@ -11693,7 +12452,7 @@ function peg$parse(input, options) { if (s5 !== peg$FAILED) { s6 = peg$parse__(); peg$savedPos = s0; - s0 = peg$f197(s1, s3, s5); + s0 = peg$f214(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11715,7 +12474,7 @@ function peg$parse(input, options) { if (s3 !== peg$FAILED) { s4 = peg$parse__(); peg$savedPos = s0; - s0 = peg$f198(s1, s3); + s0 = peg$f215(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11736,7 +12495,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_DROP_TABLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f199(s1); + s1 = peg$f216(s1); } s0 = s1; @@ -11759,7 +12518,7 @@ function peg$parse(input, options) { s7 = peg$parseselect_stmt(); if (s7 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f200(s1, s3, s5, s7); + s0 = peg$f217(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11796,7 +12555,7 @@ function peg$parse(input, options) { s11 = peg$parseRPAREN(); if (s11 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f201(s1, s3, s5, s9); + s0 = peg$f218(s1, s3, s5, s9); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11838,7 +12597,7 @@ function peg$parse(input, options) { s9 = peg$parseRPAREN(); if (s9 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f202(s1, s3, s7); + s0 = peg$f219(s1, s3, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11872,7 +12631,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_CREATE_TABLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f203(s1); + s1 = peg$f220(s1); } s0 = s1; @@ -11886,7 +12645,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_IF_NOT_EXISTS(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f204(s1); + s1 = peg$f221(s1); } s0 = s1; @@ -11952,7 +12711,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f205(s1, s2); + s0 = peg$f222(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11974,7 +12733,7 @@ function peg$parse(input, options) { s5 = peg$parsefield_constraint_list(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f206(s1, s3, s5); + s0 = peg$f223(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -11995,7 +12754,7 @@ function peg$parse(input, options) { s3 = peg$parsefield_data_type(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f207(s1, s3); + s0 = peg$f224(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12121,7 +12880,7 @@ function peg$parse(input, options) { s21 = null; } peg$savedPos = s0; - s0 = peg$f208(s1, s5, s6, s10, s12, s16, s17, s21); + s0 = peg$f225(s1, s5, s6, s10, s12, s16, s17, s21); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12190,7 +12949,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f209(s1, s3, s5); + s0 = peg$f226(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12261,7 +13020,7 @@ function peg$parse(input, options) { s8 = peg$parseRPAREN(); if (s8 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f210(s1, s5, s6); + s0 = peg$f227(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12336,7 +13095,7 @@ function peg$parse(input, options) { s8 = peg$parseRPAREN(); if (s8 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f211(s1, s5, s6); + s0 = peg$f228(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12358,7 +13117,7 @@ function peg$parse(input, options) { s1 = peg$parseident(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f212(s1); + s1 = peg$f229(s1); } s0 = s1; } @@ -12397,7 +13156,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f213(s1, s2); + s0 = peg$f230(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12436,7 +13195,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_not_null(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f214(s1); + s1 = peg$f231(s1); } s0 = s1; @@ -12450,7 +13209,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_NOT_NULL(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f215(s1); + s1 = peg$f232(s1); } s0 = s1; @@ -12464,7 +13223,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_primary_key(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f216(s1); + s1 = peg$f233(s1); } s0 = s1; @@ -12478,7 +13237,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_PRIMARY_KEY(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f217(s1); + s1 = peg$f234(s1); } s0 = s1; @@ -12492,7 +13251,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_unique(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f218(s1); + s1 = peg$f235(s1); } s0 = s1; @@ -12506,7 +13265,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_UNIQUE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f219(s1); + s1 = peg$f236(s1); } s0 = s1; @@ -12520,7 +13279,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_auto_increment(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f220(s1); + s1 = peg$f237(s1); } s0 = s1; @@ -12534,7 +13293,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_AUTO_INCREMENT(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f221(s1); + s1 = peg$f238(s1); } s0 = s1; @@ -12561,7 +13320,7 @@ function peg$parse(input, options) { s7 = null; } peg$savedPos = s0; - s0 = peg$f222(s1, s3, s5, s7); + s0 = peg$f239(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12581,7 +13340,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_always(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f223(s1); + s1 = peg$f240(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -12589,7 +13348,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_by_default(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f224(s1); + s1 = peg$f241(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -12597,7 +13356,7 @@ function peg$parse(input, options) { s1 = peg$parsekeyword_by_default_on_null(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f225(s1); + s1 = peg$f242(s1); } s0 = s1; } @@ -12622,7 +13381,7 @@ function peg$parse(input, options) { } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f226(s1, s3); + s0 = peg$f243(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12642,7 +13401,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_ALWAYS(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f227(s1); + s1 = peg$f244(s1); } s0 = s1; @@ -12656,7 +13415,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_BY_DEFAULT(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f228(s1); + s1 = peg$f245(s1); } s0 = s1; @@ -12670,7 +13429,7 @@ function peg$parse(input, options) { s1 = peg$parseKW_BY_DEFAULT_ON_NULL(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f229(s1); + s1 = peg$f246(s1); } s0 = s1; @@ -12687,7 +13446,7 @@ function peg$parse(input, options) { s3 = peg$parseident(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f230(s3); + s0 = peg$f247(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12731,7 +13490,7 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f231(s1); + s1 = peg$f248(s1); } s0 = s1; } @@ -12770,7 +13529,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f232(s1, s2); + s0 = peg$f249(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12830,7 +13589,235 @@ function peg$parse(input, options) { s5 = peg$parseint(); if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f233(s5); + s0 = peg$f250(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_start() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_START(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_WITH(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseint(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f251(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_maxvalue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_MAXVALUE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f252(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_minvalue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_MINVALUE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f253(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_no_maxvalue() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_MAXVALUE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f254(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_no_minvalue() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_MINVALUE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f255(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_cache() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_CACHE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseint(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f256(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_cycle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_CYCLE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f257(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_no_cycle() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_NO_CYCLE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f258(); + } + s0 = s1; + + return s0; + } + + function peg$parsesequence_option_owned_by() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_OWNED_BY(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parsecolumn_ref(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f259(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsesequence_option_owned_by_none() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseKW_OWNED_BY_NONE(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f260(); + } + s0 = s1; + + return s0; + } + + function peg$parsealter_table_stmt() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parsealter_table_keyword(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseident(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parsealter_table_add_column(); + if (s5 === peg$FAILED) { + s5 = peg$parsealter_table_drop_column(); + if (s5 === peg$FAILED) { + s5 = peg$parsealter_table_modify_column(); + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f261(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12847,24 +13834,46 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_start() { - var s0, s1, s2, s3, s4, s5; + function peg$parsealter_table_keyword() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseKW_ALTER(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_TABLE(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f262(s1); + } + s0 = s1; + + return s0; + } + + function peg$parsealter_table_add_column() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_START(); + s1 = peg$parseadd_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_WITH(); + s3 = peg$parsefield(); if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseint(); - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f234(s5); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + peg$savedPos = s0; + s0 = peg$f263(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12877,40 +13886,40 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_maxvalue() { - var s0, s1, s2, s3; + function peg$parseadd_keyword() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_MAXVALUE(); + s1 = peg$parseKW_ADD(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseint(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f235(s3); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f264(s1); } + s0 = s1; return s0; } - function peg$parsesequence_option_minvalue() { + function peg$parsealter_table_drop_column() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_MINVALUE(); + s1 = peg$parsedrop_column_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseint(); + s3 = peg$parsecolumn_node(); + if (s3 === peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$f265(s1); + if (s3) { + s3 = peg$FAILED; + } else { + s3 = undefined; + } + } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f236(s3); + s0 = peg$f266(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12923,45 +13932,40 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_no_maxvalue() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_NO_MAXVALUE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f237(); - } - s0 = s1; - - return s0; - } - - function peg$parsesequence_option_no_minvalue() { + function peg$parsedrop_column_keyword() { var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_NO_MINVALUE(); + s1 = peg$parseKW_DROP_COLUMN(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f238(); + s1 = peg$f267(s1); } s0 = s1; return s0; } - function peg$parsesequence_option_cache() { + function peg$parsealter_table_modify_column() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseKW_CACHE(); + s1 = peg$parsemodify_keyword(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseint(); + s3 = peg$parsefield(); + if (s3 === peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$f268(s1); + if (s3) { + s3 = peg$FAILED; + } else { + s3 = undefined; + } + } if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f239(s3); + s0 = peg$f269(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -12974,45 +13978,126 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_cycle() { - var s0, s1; + function peg$parsemodify_keyword() { + var s0, s1, s2, s3, s4; s0 = peg$currPos; - s1 = peg$parseKW_CYCLE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f240(); + s1 = peg$currPos; + s2 = peg$parseKW_MODIFY(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_COLUMN(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; } - s0 = s1; - - return s0; - } - - function peg$parsesequence_option_no_cycle() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_NO_CYCLE(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f241(); + s1 = peg$f270(s1); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseKW_MODIFY(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f271(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseKW_ALTER(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_COLUMN(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f272(s1); + } + s0 = s1; + } + } return s0; } - function peg$parsesequence_option_owned_by() { - var s0, s1, s2, s3; + function peg$parsecreate_index_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; s0 = peg$currPos; - s1 = peg$parseKW_OWNED_BY(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsecolumn_ref(); + s3 = peg$parseKW_INDEX(); if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f242(s3); + s4 = peg$parse__(); + s5 = peg$parseKW_IF_NOT_EXISTS(); + if (s5 === peg$FAILED) { + s5 = null; + } + s6 = peg$parse__(); + s7 = peg$parseident(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_ON(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseident(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseLPAREN(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parsecolumn_list(); + if (s15 !== peg$FAILED) { + s16 = peg$parse__(); + s17 = peg$parseRPAREN(); + if (s17 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f273(s1, s3, s5, s7, s9, s11, s15); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13025,40 +14110,65 @@ function peg$parse(input, options) { return s0; } - function peg$parsesequence_option_owned_by_none() { - var s0, s1; + function peg$parsecreate_type_stmt() { + var s0; - s0 = peg$currPos; - s1 = peg$parseKW_OWNED_BY_NONE(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f243(); + s0 = peg$parsecreate_type_stmt_composite(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_enum(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_range(); + if (s0 === peg$FAILED) { + s0 = peg$parsecreate_type_stmt_base(); + } + } } - s0 = s1; return s0; } - function peg$parsealter_table_stmt() { - var s0, s1, s2, s3, s4, s5; + function peg$parsecreate_type_stmt_composite() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; s0 = peg$currPos; - s1 = peg$parsealter_table_keyword(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseident(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parsealter_table_add_column(); - if (s5 === peg$FAILED) { - s5 = peg$parsealter_table_drop_column(); - if (s5 === peg$FAILED) { - s5 = peg$parsealter_table_modify_column(); + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseLPAREN(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parsecomposite_type_field_list(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseRPAREN(); + if (s13 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f274(s1, s3, s5, s7, s11); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - } - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f244(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13075,46 +14185,17 @@ function peg$parse(input, options) { return s0; } - function peg$parsealter_table_keyword() { - var s0, s1, s2, s3, s4; - - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_ALTER(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_TABLE(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f245(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_add_column() { + function peg$parsecomposite_type_field() { var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parseadd_keyword(); + s1 = peg$parseident(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield(); + s3 = peg$parsefield_data_type(); if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f246(s1, s3); + s0 = peg$f275(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13127,44 +14208,52 @@ function peg$parse(input, options) { return s0; } - function peg$parseadd_keyword() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_ADD(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f247(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_drop_column() { - var s0, s1, s2, s3; + function peg$parsecomposite_type_field_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parsedrop_column_keyword(); + s1 = peg$parsecomposite_type_field(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parsecolumn_node(); - if (s3 === peg$FAILED) { - peg$savedPos = peg$currPos; - s3 = peg$f248(s1); - if (s3) { - s3 = peg$FAILED; + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parsecomposite_type_field(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; } else { - s3 = undefined; + peg$currPos = s3; + s3 = peg$FAILED; } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f249(s1, s3); } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parsecomposite_type_field(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } } + peg$savedPos = s0; + s0 = peg$f276(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13173,40 +14262,59 @@ function peg$parse(input, options) { return s0; } - function peg$parsedrop_column_keyword() { - var s0, s1; - - s0 = peg$currPos; - s1 = peg$parseKW_DROP_COLUMN(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f250(s1); - } - s0 = s1; - - return s0; - } - - function peg$parsealter_table_modify_column() { - var s0, s1, s2, s3; + function peg$parsecreate_type_stmt_enum() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; s0 = peg$currPos; - s1 = peg$parsemodify_keyword(); + s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield(); - if (s3 === peg$FAILED) { - peg$savedPos = peg$currPos; - s3 = peg$f251(s1); - if (s3) { - s3 = peg$FAILED; + s3 = peg$parseKW_TYPE(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_ENUM(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseLPAREN(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parsecreate_type_value_list(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parseRPAREN(); + if (s15 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f277(s1, s3, s5, s7, s9, s13); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { - s3 = undefined; + peg$currPos = s0; + s0 = peg$FAILED; } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f252(s1, s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13219,102 +14327,89 @@ function peg$parse(input, options) { return s0; } - function peg$parsemodify_keyword() { - var s0, s1, s2, s3, s4; + function peg$parsecreate_type_value_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_MODIFY(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_COLUMN(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } + s1 = peg$parseliteral_string(); if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f253(s1); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseKW_MODIFY(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f254(s1); + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseliteral_string(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$currPos; - s2 = peg$parseKW_ALTER(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - s4 = peg$parseKW_COLUMN(); - if (s4 !== peg$FAILED) { - s2 = [s2, s3, s4]; - s1 = s2; + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseliteral_string(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; } else { - peg$currPos = s1; - s1 = peg$FAILED; + peg$currPos = s3; + s3 = peg$FAILED; } } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f255(s1); + peg$currPos = s3; + s3 = peg$FAILED; } - s0 = s1; } + peg$savedPos = s0; + s0 = peg$f278(s1, s2); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsecreate_index_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17; + function peg$parsecreate_type_stmt_range() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; s0 = peg$currPos; s1 = peg$parseKW_CREATE(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_INDEX(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseKW_IF_NOT_EXISTS(); - if (s5 === peg$FAILED) { - s5 = null; - } - s6 = peg$parse__(); - s7 = peg$parseident(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_ON(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseident(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseLPAREN(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parsecolumn_list(); - if (s15 !== peg$FAILED) { - s16 = peg$parse__(); - s17 = peg$parseRPAREN(); - if (s17 !== peg$FAILED) { + s5 = peg$parseident(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_AS(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_RANGE(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseLPAREN(); + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + s13 = peg$parseassign_value_expr_list(); + if (s13 !== peg$FAILED) { + s14 = peg$parse__(); + s15 = peg$parseRPAREN(); + if (s15 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f256(s1, s3, s5, s7, s9, s11, s15); + s0 = peg$f279(s1, s3, s5, s7, s9, s13); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13351,25 +14446,110 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt() { - var s0; + function peg$parseassign_value_expr() { + var s0, s1, s2, s3, s4, s5; - s0 = peg$parsecreate_type_stmt_composite(); + s0 = peg$currPos; + s1 = peg$parseident(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseident(); + if (s5 === peg$FAILED) { + s5 = peg$parseliteral_numeric(); + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f280(s1, s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_enum(); - if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_range(); - if (s0 === peg$FAILED) { - s0 = peg$parsecreate_type_stmt_base(); + s0 = peg$currPos; + s1 = peg$parseident(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f281(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parseassign_value_expr_list() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parseassign_value_expr(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseassign_value_expr(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$parse__(); + s5 = peg$parseCOMMA(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseassign_value_expr(); + if (s7 !== peg$FAILED) { + s4 = [s4, s5, s6, s7]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + } else { + peg$currPos = s3; + s3 = peg$FAILED; } } + peg$savedPos = s0; + s0 = peg$f282(s1, s2); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsecreate_type_stmt_composite() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13; + function peg$parsecreate_type_stmt_base() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; s0 = peg$currPos; s1 = peg$parseKW_CREATE(); @@ -13381,35 +14561,34 @@ function peg$parse(input, options) { s5 = peg$parseident(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseKW_AS(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseLPAREN(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parsecomposite_type_field_list(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseRPAREN(); - if (s13 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f257(s1, s3, s5, s7, s11); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + s7 = peg$currPos; + s8 = peg$parseLPAREN(); + if (s8 !== peg$FAILED) { + s9 = peg$parse__(); + s10 = peg$parseassign_value_expr_list(); + if (s10 !== peg$FAILED) { + s11 = peg$parse__(); + s12 = peg$parseRPAREN(); + if (s12 !== peg$FAILED) { + s8 = [s8, s9, s10, s11, s12]; + s7 = s8; } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s7; + s7 = peg$FAILED; + } + if (s7 === peg$FAILED) { + s7 = null; } + peg$savedPos = s0; + s0 = peg$f283(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13426,17 +14605,73 @@ function peg$parse(input, options) { return s0; } - function peg$parsecomposite_type_field() { - var s0, s1, s2, s3; + function peg$parsedrop_type_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_DROP(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parsefield_data_type(); + s3 = peg$parseKW_TYPE(); if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseKW_IF_EXISTS(); + if (s5 === peg$FAILED) { + s5 = null; + } + s6 = peg$parse__(); + s7 = peg$parseident_list(); + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + s9 = peg$parseKW_CASCADE(); + if (s9 === peg$FAILED) { + s9 = peg$parseKW_RESTRICT(); + } + if (s9 === peg$FAILED) { + s9 = null; + } + peg$savedPos = s0; + s0 = peg$f284(s1, s3, s5, s7, s9); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsedrop_view_stmt() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + s1 = peg$parsedrop_view_keyword(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_IF_EXISTS(); + if (s3 === peg$FAILED) { + s3 = null; + } + s4 = peg$parse__(); + s5 = peg$parseview_ref_list(); + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + s7 = peg$parseKW_CASCADE(); + if (s7 === peg$FAILED) { + s7 = peg$parseKW_RESTRICT(); + } + if (s7 === peg$FAILED) { + s7 = null; + } peg$savedPos = s0; - s0 = peg$f258(s1, s3); + s0 = peg$f285(s1, s3, s5, s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13449,11 +14684,11 @@ function peg$parse(input, options) { return s0; } - function peg$parsecomposite_type_field_list() { + function peg$parseview_ref_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parsecomposite_type_field(); + s1 = peg$parseview_ref(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13461,7 +14696,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parsecomposite_type_field(); + s7 = peg$parseview_ref(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13480,7 +14715,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parsecomposite_type_field(); + s7 = peg$parseview_ref(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13494,7 +14729,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f259(s1, s2); + s0 = peg$f286(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13503,117 +14738,64 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_enum() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; + function peg$parseview_ref() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); + s1 = peg$parseident(); if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); - if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseKW_AS(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_ENUM(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseLPAREN(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parsecreate_type_value_list(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parseRPAREN(); - if (s15 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f260(s1, s3, s5, s7, s9, s13); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f287(s1); } + s0 = s1; return s0; } - function peg$parsecreate_type_value_list() { - var s0, s1, s2, s3, s4, s5, s6, s7; + function peg$parsedrop_view_keyword() { + var s0, s1; s0 = peg$currPos; - s1 = peg$parseliteral_string(); + s1 = peg$parseKW_DROP_VIEW(); if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$currPos; - s4 = peg$parse__(); - s5 = peg$parseCOMMA(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseliteral_string(); - if (s7 !== peg$FAILED) { - s4 = [s4, s5, s6, s7]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - } else { - peg$currPos = s3; - s3 = peg$FAILED; - } - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$currPos; - s4 = peg$parse__(); - s5 = peg$parseCOMMA(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseliteral_string(); - if (s7 !== peg$FAILED) { - s4 = [s4, s5, s6, s7]; - s3 = s4; - } else { - peg$currPos = s3; - s3 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f288(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseset_stmt() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parseKW_SET(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parsesession_authorization_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsesearch_path_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsevariable_assignment_list(); + if (s3 === peg$FAILED) { + s3 = peg$parsetransaction_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parserole_assignment(); + if (s3 === peg$FAILED) { + s3 = peg$parsetime_zone_assignment(); + } + } } - } else { - peg$currPos = s3; - s3 = peg$FAILED; } } - peg$savedPos = s0; - s0 = peg$f261(s1, s2); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f289(s3); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13622,51 +14804,32 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_range() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15; + function peg$parsesession_authorization_assignment() { + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); + s1 = peg$parseKW_SESSION(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + s3 = peg$parseKW_AUTHORIZATION(); if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseident(); + s5 = peg$parseKW_TO(); + if (s5 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s5 = peg$c4; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseKW_AS(); + s7 = peg$parseliteral_string(); if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_RANGE(); - if (s9 !== peg$FAILED) { - s10 = peg$parse__(); - s11 = peg$parseLPAREN(); - if (s11 !== peg$FAILED) { - s12 = peg$parse__(); - s13 = peg$parseassign_value_expr_list(); - if (s13 !== peg$FAILED) { - s14 = peg$parse__(); - s15 = peg$parseRPAREN(); - if (s15 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f262(s1, s3, s5, s7, s9, s13); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + peg$savedPos = s0; + s0 = peg$f290(s7); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13687,29 +14850,67 @@ function peg$parse(input, options) { return s0; } - function peg$parseassign_value_expr() { - var s0, s1, s2, s3, s4, s5; + function peg$parsesearch_path_assignment() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_SEARCH_PATH(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - if (input.charCodeAt(peg$currPos) === 61) { - s3 = peg$c4; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e6); } + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } } if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 === peg$FAILED) { - s5 = peg$parseliteral_numeric(); - } + s5 = peg$parseliteral_string(); if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$currPos; + s8 = peg$parse__(); + s9 = peg$parseCOMMA(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseliteral_string(); + if (s11 !== peg$FAILED) { + s8 = [s8, s9, s10, s11]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$currPos; + s8 = peg$parse__(); + s9 = peg$parseCOMMA(); + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + s11 = peg$parseliteral_string(); + if (s11 !== peg$FAILED) { + s8 = [s8, s9, s10, s11]; + s7 = s8; + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } else { + peg$currPos = s7; + s7 = peg$FAILED; + } + } peg$savedPos = s0; - s0 = peg$f263(s1, s5); + s0 = peg$f291(s1, s5, s6); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13719,27 +14920,18 @@ function peg$parse(input, options) { s0 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseident(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f264(s1); - } - s0 = s1; + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parseassign_value_expr_list() { + function peg$parsevariable_assignment_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseassign_value_expr(); + s1 = peg$parsevariable_assignment(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13747,7 +14939,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseassign_value_expr(); + s7 = peg$parsevariable_assignment(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13766,7 +14958,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseassign_value_expr(); + s7 = peg$parsevariable_assignment(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13780,7 +14972,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f265(s1, s2); + s0 = peg$f292(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13789,90 +14981,49 @@ function peg$parse(input, options) { return s0; } - function peg$parsecreate_type_stmt_base() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + function peg$parsevariable_assignment() { + var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; - s1 = peg$parseKW_CREATE(); - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + s1 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s2 = peg$c163; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e181); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseident_name(); if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - s5 = peg$parseident(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$currPos; - s8 = peg$parseLPAREN(); - if (s8 !== peg$FAILED) { - s9 = peg$parse__(); - s10 = peg$parseassign_value_expr_list(); - if (s10 !== peg$FAILED) { - s11 = peg$parse__(); - s12 = peg$parseRPAREN(); - if (s12 !== peg$FAILED) { - s8 = [s8, s9, s10, s11, s12]; - s7 = s8; - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - } else { - peg$currPos = s7; - s7 = peg$FAILED; - } - if (s7 === peg$FAILED) { - s7 = null; - } - peg$savedPos = s0; - s0 = peg$f266(s1, s3, s5, s7); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + s2 = [s2, s3]; + s1 = s2; } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s1; + s1 = peg$FAILED; } } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$currPos = s1; + s1 = peg$FAILED; } - - return s0; - } - - function peg$parsedrop_type_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; - - s0 = peg$currPos; - s1 = peg$parseKW_DROP(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_TYPE(); + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } if (s3 !== peg$FAILED) { s4 = peg$parse__(); - s5 = peg$parseKW_IF_EXISTS(); + s5 = peg$parseliteral(); if (s5 === peg$FAILED) { - s5 = null; + s5 = peg$parseor_expr(); } - s6 = peg$parse__(); - s7 = peg$parseident_list(); - if (s7 !== peg$FAILED) { - s8 = peg$parse__(); - s9 = peg$parseKW_CASCADE(); - if (s9 === peg$FAILED) { - s9 = peg$parseKW_RESTRICT(); - } - if (s9 === peg$FAILED) { - s9 = null; - } + if (s5 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f267(s1, s3, s5, s7, s9); + s0 = peg$f293(s1, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13889,30 +15040,17 @@ function peg$parse(input, options) { return s0; } - function peg$parsedrop_view_stmt() { - var s0, s1, s2, s3, s4, s5, s6, s7; + function peg$parsetransaction_assignment() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = peg$parsedrop_view_keyword(); + s1 = peg$parseKW_TRANSACTION(); if (s1 !== peg$FAILED) { s2 = peg$parse__(); - s3 = peg$parseKW_IF_EXISTS(); - if (s3 === peg$FAILED) { - s3 = null; - } - s4 = peg$parse__(); - s5 = peg$parseview_ref_list(); - if (s5 !== peg$FAILED) { - s6 = peg$parse__(); - s7 = peg$parseKW_CASCADE(); - if (s7 === peg$FAILED) { - s7 = peg$parseKW_RESTRICT(); - } - if (s7 === peg$FAILED) { - s7 = null; - } + s3 = peg$parsetransaction_mode_list(); + if (s3 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f268(s1, s3, s5, s7); + s0 = peg$f294(s3); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13925,11 +15063,11 @@ function peg$parse(input, options) { return s0; } - function peg$parseview_ref_list() { + function peg$parsetransaction_mode_list() { var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; - s1 = peg$parseview_ref(); + s1 = peg$parsetransaction_mode(); if (s1 !== peg$FAILED) { s2 = []; s3 = peg$currPos; @@ -13937,7 +15075,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseview_ref(); + s7 = peg$parsetransaction_mode(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13956,7 +15094,7 @@ function peg$parse(input, options) { s5 = peg$parseCOMMA(); if (s5 !== peg$FAILED) { s6 = peg$parse__(); - s7 = peg$parseview_ref(); + s7 = peg$parsetransaction_mode(); if (s7 !== peg$FAILED) { s4 = [s4, s5, s6, s7]; s3 = s4; @@ -13970,7 +15108,7 @@ function peg$parse(input, options) { } } peg$savedPos = s0; - s0 = peg$f269(s1, s2); + s0 = peg$f295(s1, s2); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -13979,34 +15117,192 @@ function peg$parse(input, options) { return s0; } - function peg$parseview_ref() { + function peg$parsetransaction_mode() { + var s0; + + s0 = peg$parseisolation_level(); + if (s0 === peg$FAILED) { + s0 = peg$parseaccess_mode(); + if (s0 === peg$FAILED) { + s0 = peg$parsedeferrable_mode(); + } + } + + return s0; + } + + function peg$parseisolation_level() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_ISOLATION(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_LEVEL(); + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseKW_SERIALIZABLE(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_REPEATABLE_READ(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_READ_COMMITTED(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_READ_UNCOMMITTED(); + } + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f296(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseaccess_mode() { var s0, s1; s0 = peg$currPos; - s1 = peg$parseident(); + s1 = peg$parseKW_READ_WRITE(); + if (s1 === peg$FAILED) { + s1 = peg$parseKW_READ_ONLY(); + } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f270(s1); + s1 = peg$f297(s1); } s0 = s1; return s0; } - function peg$parsedrop_view_keyword() { - var s0, s1; + function peg$parsedeferrable_mode() { + var s0, s1, s2, s3, s4; s0 = peg$currPos; - s1 = peg$parseKW_DROP_VIEW(); + s1 = peg$parseKW_DEFERRABLE(); + if (s1 === peg$FAILED) { + s1 = peg$currPos; + s2 = peg$parseKW_NOT(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + s4 = peg$parseKW_DEFERRABLE(); + if (s4 !== peg$FAILED) { + s2 = [s2, s3, s4]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f271(s1); + s1 = peg$f298(s1); } s0 = s1; return s0; } + function peg$parserole_assignment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_ROLE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseliteral_string(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f299(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsetime_zone_assignment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parseKW_TIME_ZONE(); + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + s3 = peg$parseKW_TO(); + if (s3 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c4; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e6); } + } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + s5 = peg$parseliteral_string(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_LOCAL(); + if (s5 === peg$FAILED) { + s5 = peg$parseKW_DEFAULT(); + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f300(s5); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + var reservedMap = module.exports.reservedMap || {}; diff --git a/packages/sql-parser/parser.pegjs b/packages/sql-parser/parser.pegjs index 10c940fe..c561a703 100644 --- a/packages/sql-parser/parser.pegjs +++ b/packages/sql-parser/parser.pegjs @@ -88,7 +88,8 @@ ast = alter_table_stmt / create_index_stmt / create_type_stmt / - drop_type_stmt + drop_type_stmt / + set_stmt union_stmt = head:select_stmt tail:(__ KW_UNION __ KW_ALL? __ select_stmt)* { @@ -1127,6 +1128,7 @@ KW_KEY = "KEY"i !ident_start { return 'KEY'; } KW_NOT = "NOT"i !ident_start { return 'NOT'; } KW_AND = "AND"i !ident_start { return 'AND'; } KW_OR = "OR"i !ident_start { return 'OR'; } +KW_TO = "TO"i !ident_start { return 'TO'; } KW_COUNT = "COUNT"i !ident_start { return 'COUNT'; } KW_MAX = "MAX"i !ident_start { return 'MAX'; } @@ -1149,6 +1151,23 @@ KW_NO_ACTION = val:"NO ACTION"i !ident_start { return makeKeywordNode(val KW_TYPE = val:"TYPE"i !ident_start { return makeKeywordNode(val, location()) } KW_ENUM = val:"ENUM"i !ident_start { return makeKeywordNode(val, location()) } KW_RANGE = val:"RANGE"i !ident_start { return makeKeywordNode(val, location()) } +KW_SESSION = val:"SESSION"i !ident_start { return makeKeywordNode(val, location()) } +KW_AUTHORIZATION = val:"AUTHORIZATION"i !ident_start { return makeKeywordNode(val, location()) } +KW_TRANSACTION = val:"TRANSACTION"i !ident_start { return makeKeywordNode(val, location()) } +KW_ISOLATION = val:"ISOLATION"i !ident_start { return makeKeywordNode(val, location()) } +KW_LEVEL = val:"LEVEL"i !ident_start { return makeKeywordNode(val, location()) } +KW_SERIALIZABLE = val:"SERIALIZABLE"i !ident_start { return makeKeywordNode(val, location()) } + +KW_REPEATABLE_READ = val:"REPEATABLE READ"i !ident_start { return makeKeywordNode(val, location()) } +KW_READ_COMMITTED = val:"READ COMMITTED"i !ident_start { return makeKeywordNode(val, location()) } +KW_READ_UNCOMMITTED = val:"READ UNCOMMITTED"i !ident_start { return makeKeywordNode(val, location()) } +KW_READ_WRITE = val:"READ WRITE"i !ident_start { return makeKeywordNode(val, location()) } +KW_READ_ONLY = val:"READ ONLY"i !ident_start { return makeKeywordNode(val, location()) } +KW_DEFERRABLE = val:"DEFERRABLE"i !ident_start { return makeKeywordNode(val, location()) } +KW_SEARCH_PATH = val:"SEARCH_PATH"i !ident_start { return makeKeywordNode(val, location()) } +KW_ROLE = val:"ROLE"i !ident_start { return makeKeywordNode(val, location()) } +KW_TIME_ZONE = val:"TIME ZONE"i !ident_start { return makeKeywordNode(val, location()) } +KW_LOCAL = val:"LOCAL"i !ident_start { return makeKeywordNode(val, location()) } //specail character DOT = '.' @@ -1990,3 +2009,127 @@ drop_view_keyword } } +set_stmt + = KW_SET __ + assignments:( + session_authorization_assignment / + search_path_assignment / + variable_assignment_list / + transaction_assignment / + role_assignment / + time_zone_assignment + ) { + return { + type: 'set', + assignments: assignments, + location: location() + } + } + +session_authorization_assignment + = KW_SESSION __ KW_AUTHORIZATION __ + (KW_TO / "=") __ + value:literal_string { + return { + type: 'session_authorization', + value: value, + location: location() + } + } + +search_path_assignment + = name:KW_SEARCH_PATH __ + (KW_TO / "=") __ + head:literal_string + tail:(__ COMMA __ literal_string)* { + return { + type: 'search_path', + value: createList(head, tail), + location: location() + } + } + +variable_assignment_list + = head:variable_assignment + tail:(__ COMMA __ variable_assignment)* { + return createList(head, tail) + } + +variable_assignment + = name:("@" ident_name) __ + "=" __ + value:(literal / expr) { + return { + type: 'variable', + name: name[0] + name[1], + value: value, + location: location() + } + } + +transaction_assignment + = KW_TRANSACTION __ + modes:transaction_mode_list { + return { + type: 'transaction', + modes: modes, + location: location() + } + } + +transaction_mode_list + = head:transaction_mode tail:(__ COMMA __ transaction_mode)* { + return createList(head, tail); + } + +transaction_mode + = isolation_level + / access_mode + / deferrable_mode + +isolation_level + = KW_ISOLATION __ KW_LEVEL __ level:(KW_SERIALIZABLE / KW_REPEATABLE_READ / KW_READ_COMMITTED / KW_READ_UNCOMMITTED) { + return { + type: 'isolation_level', + level: level + } + } + +access_mode + = mode:(KW_READ_WRITE / KW_READ_ONLY) { + return { + type: 'access_mode', + mode: mode + } + } + +deferrable_mode + = mode:(KW_DEFERRABLE / KW_NOT __ KW_DEFERRABLE) { + return { + type: 'deferrable_mode', + mode: mode.join(' ') + } + } + +role_assignment + = KW_ROLE __ + (KW_TO / "=") __ + value:literal_string { + return { + type: 'role', + value: value, + location: location() + } + } + +time_zone_assignment + = KW_TIME_ZONE __ + (KW_TO / "=") __ + value:(literal_string / KW_LOCAL / KW_DEFAULT) { + return { + type: 'time_zone', + value: value, + location: location() + } + } + diff --git a/packages/sql-parser/test/set.test.js b/packages/sql-parser/test/set.test.js new file mode 100644 index 00000000..f976b050 --- /dev/null +++ b/packages/sql-parser/test/set.test.js @@ -0,0 +1,222 @@ +const { parse } = require('../index'); + +describe('SET statement', () => { + describe('Basic statement', () => { + it('should success to parse variable assignments', () => { + const sql = 'SET @var1 = 1, @var2 = 2;'; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: [ + { + type: 'variable', + name: '@var1', + value: { + type: 'number', + value: 1, + }, + }, + { + type: 'variable', + name: '@var2', + value: { + type: 'number', + value: 2, + }, + }, + ], + }); + }); + }); + + describe('Session Authorization', () => { + it('should parse session authorization with TO', () => { + const sql = "SET SESSION AUTHORIZATION TO 'username';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'session_authorization', + value: { + type: 'string', + value: 'username', + }, + }, + }); + }); + + it('should parse session authorization with =', () => { + const sql = "SET SESSION AUTHORIZATION = 'username';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'session_authorization', + value: { + type: 'string', + value: 'username', + }, + }, + }); + }); + }); + + describe('Search Path', () => { + it('should parse search path with TO', () => { + const sql = "SET search_path TO 'public', 'myschema';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'search_path', + value: [ + { type: 'string', value: 'public' }, + { type: 'string', value: 'myschema' }, + ], + }, + }); + }); + + it('should parse search path with =', () => { + const sql = "SET search_path = 'public', 'myschema';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'search_path', + value: [ + { type: 'string', value: 'public' }, + { type: 'string', value: 'myschema' }, + ], + }, + }); + }); + }); + + describe('Transaction', () => { + it('should parse transaction local', () => { + const sql = "SET TRANSACTION LOCAL;"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'transaction', + value: 'LOCAL', + }, + }); + }); + + it('should parse transaction default', () => { + const sql = "SET TRANSACTION DEFAULT;"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'transaction', + value: 'DEFAULT', + }, + }); + }); + }); + + describe('Role', () => { + it('should parse role with TO', () => { + const sql = "SET ROLE TO 'role_name';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'role', + value: { + type: 'string', + value: 'role_name', + }, + }, + }); + }); + + it('should parse role with =', () => { + const sql = "SET ROLE = 'role_name';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'role', + value: { + type: 'string', + value: 'role_name', + }, + }, + }); + }); + }); + + describe('Time Zone', () => { + it('should parse time zone with TO', () => { + const sql = "SET TIME ZONE TO 'UTC';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'time_zone', + value: { + type: 'string', + value: 'UTC', + }, + }, + }); + }); + + it('should parse time zone with =', () => { + const sql = "SET TIME ZONE = 'UTC';"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'time_zone', + value: { + type: 'string', + value: 'UTC', + }, + }, + }); + }); + + it('should parse time zone local', () => { + const sql = "SET TIME ZONE LOCAL;"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'time_zone', + value: 'LOCAL', + }, + }); + }); + + it('should parse time zone default', () => { + const sql = "SET TIME ZONE DEFAULT;"; + const result = parse(sql); + expect(result).toBeDefined(); + expect(result).toMatchObject({ + type: 'set', + assignments: { + type: 'time_zone', + value: 'DEFAULT', + }, + }); + }); + }); +}); \ No newline at end of file