{"version":3,"sources":["../src/mssql-parser.js","../src/index.ts","../src/traverse.ts","../src/pretty-print.ts"],"sourcesContent":["// @generated by Peggy 5.0.4.\n//\n// https://peggyjs.org/\n\n\"use strict\";\n\nclass peg$SyntaxError extends SyntaxError {\n  constructor(message, expected, found, location) {\n    super(message);\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = \"SyntaxError\";\n  }\n\n  format(sources) {\n    let str = \"Error: \" + this.message;\n    if (this.location) {\n      let src = null;\n      const st = sources.find(s => s.source === this.location.source);\n      if (st) {\n        src = st.text.split(/\\r\\n|\\n|\\r/g);\n      }\n      const s = this.location.start;\n      const offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n        ? this.location.source.offset(s)\n        : s;\n      const loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n      if (src) {\n        const e = this.location.end;\n        const filler = \"\".padEnd(offset_s.line.toString().length, \" \");\n        const line = src[s.line - 1];\n        const last = s.line === e.line ? e.column : line.length + 1;\n        const hatLen = (last - s.column) || 1;\n        str += \"\\n --> \" + loc + \"\\n\"\n            + filler + \" |\\n\"\n            + offset_s.line + \" | \" + line + \"\\n\"\n            + filler + \" | \" + \"\".padEnd(s.column - 1, \" \")\n            + \"\".padEnd(hatLen, \"^\");\n      } else {\n        str += \"\\n at \" + loc;\n      }\n    }\n    return str;\n  }\n\n  static buildMessage(expected, found) {\n    function hex(ch) {\n      return ch.codePointAt(0).toString(16).toUpperCase();\n    }\n\n    const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, \"unicode\")\n      ? new RegExp(\"[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]\", \"gu\")\n      : null;\n    function unicodeEscape(s) {\n      if (nonPrintable) {\n        return s.replace(nonPrintable,  ch => \"\\\\u{\" + hex(ch) + \"}\");\n      }\n      return s;\n    }\n\n    function literalEscape(s) {\n      return unicodeEscape(s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g,  \"\\\\\\\"\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,          ch => \"\\\\x0\" + hex(ch))\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\"  + hex(ch)));\n    }\n\n    function classEscape(s) {\n      return unicodeEscape(s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\\]/g, \"\\\\]\")\n        .replace(/\\^/g, \"\\\\^\")\n        .replace(/-/g,  \"\\\\-\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,          ch => \"\\\\x0\" + hex(ch))\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, ch => \"\\\\x\"  + hex(ch)));\n    }\n\n    const DESCRIBE_EXPECTATION_FNS = {\n      literal(expectation) {\n        return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n      },\n\n      class(expectation) {\n        const escapedParts = expectation.parts.map(\n          part => (Array.isArray(part)\n            ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n            : classEscape(part))\n        );\n\n        return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\" + (expectation.unicode ? \"u\" : \"\");\n      },\n\n      any() {\n        return \"any character\";\n      },\n\n      end() {\n        return \"end of input\";\n      },\n\n      other(expectation) {\n        return expectation.description;\n      },\n    };\n\n    function describeExpectation(expectation) {\n      return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n    }\n\n    function describeExpected(expected) {\n      const descriptions = expected.map(describeExpectation);\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        let j = 1;\n        for (let i = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found) {\n      return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  }\n}\n\nfunction peg$parse(input, options) {\n  options = options !== undefined ? options : {};\n\n  const peg$FAILED = {};\n  const peg$source = options.grammarSource;\n\n  const peg$startRuleFunctions = {\n    sql: peg$parsesql,\n  };\n  let peg$startRuleFunction = peg$parsesql;\n\n  const peg$c0 = \"select\";\n  const peg$c1 = \"from\";\n  const peg$c2 = \";\";\n  const peg$c3 = \"insert\";\n  const peg$c4 = \"into\";\n  const peg$c5 = \"(\";\n  const peg$c6 = \")\";\n  const peg$c7 = \"update\";\n  const peg$c8 = \"set\";\n  const peg$c9 = \",\";\n  const peg$c10 = \"=\";\n  const peg$c11 = \"values\";\n  const peg$c12 = \"NEWID()\";\n  const peg$c13 = \"as\";\n  const peg$c14 = \".\";\n  const peg$c15 = \"*\";\n  const peg$c16 = \"[\";\n  const peg$c17 = \"].[\";\n  const peg$c18 = \"]\";\n  const peg$c19 = \"COUNT(\";\n  const peg$c20 = \"inner\";\n  const peg$c21 = \"left\";\n  const peg$c22 = \"outer\";\n  const peg$c23 = \"right\";\n  const peg$c24 = \"join\";\n  const peg$c25 = \"on\";\n  const peg$c26 = \"where\";\n  const peg$c27 = \"group\";\n  const peg$c28 = \"by\";\n  const peg$c29 = \"order\";\n  const peg$c30 = \"output\";\n  const peg$c31 = \"asc\";\n  const peg$c32 = \"desc\";\n  const peg$c33 = \"or\";\n  const peg$c34 = \"and\";\n  const peg$c35 = \"<>\";\n  const peg$c36 = \"is\";\n  const peg$c37 = \"not\";\n  const peg$c38 = \"null\";\n  const peg$c39 = \"offset\";\n  const peg$c40 = \"rows\";\n  const peg$c41 = \"fetch\";\n  const peg$c42 = \"next\";\n  const peg$c43 = \"only\";\n  const peg$c44 = \"@\";\n  const peg$c45 = \"'\";\n\n  const peg$r0 = /^[A-Za-z_]/;\n  const peg$r1 = /^[0-9]/;\n  const peg$r2 = /^[^']/;\n  const peg$r3 = /^[A-Za-z0-9_]/;\n  const peg$r4 = /^[ \\t\\n]/;\n\n  const peg$e0 = peg$literalExpectation(\"select\", true);\n  const peg$e1 = peg$literalExpectation(\"from\", true);\n  const peg$e2 = peg$literalExpectation(\";\", false);\n  const peg$e3 = peg$literalExpectation(\"insert\", true);\n  const peg$e4 = peg$literalExpectation(\"into\", true);\n  const peg$e5 = peg$literalExpectation(\"(\", false);\n  const peg$e6 = peg$literalExpectation(\")\", false);\n  const peg$e7 = peg$literalExpectation(\"update\", true);\n  const peg$e8 = peg$literalExpectation(\"set\", true);\n  const peg$e9 = peg$literalExpectation(\",\", false);\n  const peg$e10 = peg$literalExpectation(\"=\", false);\n  const peg$e11 = peg$literalExpectation(\"values\", true);\n  const peg$e12 = peg$literalExpectation(\"NEWID()\", false);\n  const peg$e13 = peg$literalExpectation(\"as\", true);\n  const peg$e14 = peg$otherExpectation(\"column\");\n  const peg$e15 = peg$literalExpectation(\".\", false);\n  const peg$e16 = peg$literalExpectation(\"*\", false);\n  const peg$e17 = peg$literalExpectation(\"[\", false);\n  const peg$e18 = peg$literalExpectation(\"].[\", false);\n  const peg$e19 = peg$literalExpectation(\"]\", false);\n  const peg$e20 = peg$literalExpectation(\"COUNT(\", false);\n  const peg$e21 = peg$literalExpectation(\"inner\", true);\n  const peg$e22 = peg$literalExpectation(\"left\", true);\n  const peg$e23 = peg$literalExpectation(\"outer\", true);\n  const peg$e24 = peg$literalExpectation(\"right\", true);\n  const peg$e25 = peg$literalExpectation(\"join\", true);\n  const peg$e26 = peg$literalExpectation(\"on\", true);\n  const peg$e27 = peg$literalExpectation(\"where\", true);\n  const peg$e28 = peg$literalExpectation(\"group\", true);\n  const peg$e29 = peg$literalExpectation(\"by\", true);\n  const peg$e30 = peg$literalExpectation(\"order\", true);\n  const peg$e31 = peg$literalExpectation(\"output\", true);\n  const peg$e32 = peg$literalExpectation(\"asc\", true);\n  const peg$e33 = peg$literalExpectation(\"desc\", true);\n  const peg$e34 = peg$literalExpectation(\"or\", true);\n  const peg$e35 = peg$literalExpectation(\"and\", true);\n  const peg$e36 = peg$literalExpectation(\"<>\", false);\n  const peg$e37 = peg$literalExpectation(\"is\", true);\n  const peg$e38 = peg$literalExpectation(\"not\", true);\n  const peg$e39 = peg$literalExpectation(\"null\", true);\n  const peg$e40 = peg$literalExpectation(\"offset\", true);\n  const peg$e41 = peg$literalExpectation(\"rows\", true);\n  const peg$e42 = peg$literalExpectation(\"fetch\", true);\n  const peg$e43 = peg$literalExpectation(\"next\", true);\n  const peg$e44 = peg$literalExpectation(\"only\", true);\n  const peg$e45 = peg$literalExpectation(\"@\", false);\n  const peg$e46 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], \"_\"], false, false, false);\n  const peg$e47 = peg$classExpectation([[\"0\", \"9\"]], false, false, false);\n  const peg$e48 = peg$literalExpectation(\"'\", false);\n  const peg$e49 = peg$classExpectation([\"'\"], true, false, false);\n  const peg$e50 = peg$classExpectation([[\"A\", \"Z\"], [\"a\", \"z\"], [\"0\", \"9\"], \"_\"], false, false, false);\n  const peg$e51 = peg$otherExpectation(\"whitespace\");\n  const peg$e52 = peg$classExpectation([\" \", \"\\t\", \"\\n\"], false, false, false);\n\n  function peg$f0(st) {    return st  }\n  function peg$f1(select, from, joins, where, groupBy, orderBy, offset, limit) {    return { kind: \"select\", select, from, joins, where, groupBy, orderBy, offset, limit }  }\n  function peg$f2(target, columns, output, values) {    return { kind: \"insert\", target, columns: columns.map(c => ({ kind: \"column\", alias: null, name: c })), output, values }  }\n  function peg$f3(target, set, output, where) {    return { kind: \"update\", target, set, output, where }  }\n  function peg$f4(column) {    return column  }\n  function peg$f5(assignment) {    return assignment  }\n  function peg$f6(column, value) {    return { kind: \"assignment\", column, value }  }\n  function peg$f7(value) {    return value  }\n  function peg$f8(values) {    return { kind: \"values\", values }  }\n  function peg$f9() {    return { kind: \"function\", name: \"newid\", args: [] }  }\n  function peg$f10(source, alias) {    return { kind: \"select-source\", source, alias }  }\n  function peg$f11(source) {    return { kind: \"select-source\", source, alias: null }  }\n  function peg$f12(alias, column) {    return { kind: \"column\", alias, name: column }  }\n  function peg$f13(column) {    return { kind: \"column\", alias: null, name: column }  }\n  function peg$f14() {    return { kind: \"literal\", type: \"wildcard\" }  }\n  function peg$f15(table, alias) {    return { kind: \"table\", db: table.db, table: table.table, alias }  }\n  function peg$f16(db, table) {    return { kind: \"table\", db, table, alias: null }  }\n  function peg$f17(column) {    return { kind: \"function\", name: \"count\", args: [column] }  }\n  function peg$f18(column) {    return column  }\n  function peg$f19() {    return \"inner\"  }\n  function peg$f20() {    return \"left outer\"  }\n  function peg$f21() {    return \"right outer\"  }\n  function peg$f22(type, source, c) {    return c  }\n  function peg$f23(type, source, condition) {    return { \n       kind: \"join\", \n       type: type ?? \"inner\", \n       source,\n       condition\n     }  }\n  function peg$f24(c) {    return c  }\n  function peg$f25(c) {    return c  }\n  function peg$f26(c) {    return c  }\n  function peg$f27(c) {    return c  }\n  function peg$f28() {    return \"asc\"  }\n  function peg$f29() {    return \"desc\"  }\n  function peg$f30(c, d) {    return d  }\n  function peg$f31(c, direction) {    return { kind: \"order\", column: c, direction: direction ?? \"asc\" }  }\n  function peg$f32(head, tail) {\n    return tail.reduce((acc, [, , , next]) => ({\n      kind: \"condition\",\n      type: \"or\",\n      left: acc,\n      right: next\n    }), head);\n  }\n  function peg$f33(head, tail) {\n    return tail.reduce((acc, [, , , next]) => ({\n      kind: \"condition\",\n      type: \"and\",\n      left: acc,\n      right: next\n    }), head);\n  }\n  function peg$f34(c) {    return { kind: \"condition-group\", condition: c }  }\n  function peg$f35(left, right) {    return { kind: \"condition\", left, right, type: \"equality\" }  }\n  function peg$f36(left, right) {    return { kind: \"condition\", left, right, type: \"inequality\" }  }\n  function peg$f37(left, not) {    return { kind: \"condition\", left, right: { kind: \"literal\", type: \"null\" }, type: not ? \"inequality\" : \"equality\" }  }\n  function peg$f38(input) {    return { kind: \"offset\", rows: input }  }\n  function peg$f39(input) {    return { kind: \"limit\", rows: input }  }\n  function peg$f40(input) {    return { kind: \"input\", identifier: input }  }\n  function peg$f41() {    return { kind: \"literal\", type: \"null\" }  }\n  function peg$f42(n) {    return { kind: \"literal\", type: \"number\", value: parseInt(n) }  }\n  function peg$f43(value) {    return { kind: \"literal\", type: \"string\", value }  }\n  function peg$f44() {    return { kind: \"identifier\", name: text() }  }\n  let peg$currPos = options.peg$currPos | 0;\n  let peg$savedPos = peg$currPos;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = peg$currPos;\n  let peg$maxFailExpected = options.peg$maxFailExpected || [];\n  let peg$silentFails = options.peg$silentFails | 0;\n\n  let peg$result;\n\n  if (options.startRule) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function offset() {\n    return peg$savedPos;\n  }\n\n  function range() {\n    return {\n      source: peg$source,\n      start: peg$savedPos,\n      end: peg$currPos,\n    };\n  }\n\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location\n    );\n  }\n\n  function error(message, location) {\n    location = location !== undefined\n      ? location\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location);\n  }\n\n  function peg$getUnicode(pos = peg$currPos) {\n    const cp = input.codePointAt(pos);\n    if (cp === undefined) {\n      return \"\";\n    }\n    return String.fromCodePoint(cp);\n  }\n\n  function peg$literalExpectation(text, ignoreCase) {\n    return { type: \"literal\", text, ignoreCase };\n  }\n\n  function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n    return { type: \"class\", parts, inverted, ignoreCase, unicode };\n  }\n\n  function peg$anyExpectation() {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation() {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description) {\n    return { type: \"other\", description };\n  }\n\n  function peg$computePosDetails(pos) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n\n    if (details) {\n      return details;\n    } else {\n      if (pos >= peg$posDetailsCache.length) {\n        p = peg$posDetailsCache.length - 1;\n      } else {\n        p = pos;\n        while (!peg$posDetailsCache[--p]) {}\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column,\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos, endPos, offset) {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n\n    const res = {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column,\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column,\n      },\n    };\n    if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n      res.start = peg$source.offset(res.start);\n      res.end = peg$source.offset(res.end);\n    }\n    return res;\n  }\n\n  function peg$fail(expected) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected);\n  }\n\n  function peg$buildSimpleError(message, location) {\n    return new peg$SyntaxError(message, null, null, location);\n  }\n\n  function peg$buildStructuredError(expected, found, location) {\n    return new peg$SyntaxError(\n      peg$SyntaxError.buildMessage(expected, found),\n      expected,\n      found,\n      location\n    );\n  }\n\n  function peg$parsesql() {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    s2 = peg$parseselect();\n    if (s2 === peg$FAILED) {\n      s2 = peg$parseinsert();\n      if (s2 === peg$FAILED) {\n        s2 = peg$parseupdate();\n      }\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$parseWS();\n      if (s3 === peg$FAILED) {\n        s3 = null;\n      }\n      peg$savedPos = s0;\n      s0 = peg$f0(s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseselect() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 6);\n    if (s1.toLowerCase() === peg$c0) {\n      peg$currPos += (6);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e0); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseselection();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = input.substr(peg$currPos, 4);\n            if (s5.toLowerCase() === peg$c1) {\n              peg$currPos += (4);\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e1); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseWS();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parsetable_source();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parsejoins();\n                  if (s8 === peg$FAILED) {\n                    s8 = null;\n                  }\n                  s9 = peg$parsewhere();\n                  if (s9 === peg$FAILED) {\n                    s9 = null;\n                  }\n                  s10 = peg$parsegroup();\n                  if (s10 === peg$FAILED) {\n                    s10 = null;\n                  }\n                  s11 = peg$parseorder();\n                  if (s11 === peg$FAILED) {\n                    s11 = null;\n                  }\n                  s12 = peg$parseoffset();\n                  if (s12 === peg$FAILED) {\n                    s12 = null;\n                  }\n                  s13 = peg$parselimit();\n                  if (s13 === peg$FAILED) {\n                    s13 = null;\n                  }\n                  if (input.charCodeAt(peg$currPos) === 59) {\n                    s14 = peg$c2;\n                    peg$currPos++;\n                  } else {\n                    s14 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e2); }\n                  }\n                  if (s14 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s0 = peg$f1(s3, s7, s8, s9, s10, s11, s12, s13);\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseinsert() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 6);\n    if (s1.toLowerCase() === peg$c3) {\n      peg$currPos += (6);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e3); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = input.substr(peg$currPos, 4);\n        if (s3.toLowerCase() === peg$c4) {\n          peg$currPos += (4);\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e4); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parsetable_name();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseWS();\n              if (s6 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 40) {\n                  s7 = peg$c5;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e5); }\n                }\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseinsert_columns();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseWS();\n                    if (s9 === peg$FAILED) {\n                      s9 = null;\n                    }\n                    if (input.charCodeAt(peg$currPos) === 41) {\n                      s10 = peg$c6;\n                      peg$currPos++;\n                    } else {\n                      s10 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$e6); }\n                    }\n                    if (s10 !== peg$FAILED) {\n                      s11 = peg$parseoutput();\n                      if (s11 === peg$FAILED) {\n                        s11 = null;\n                      }\n                      s12 = peg$parsevalues();\n                      if (s12 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 59) {\n                          s13 = peg$c2;\n                          peg$currPos++;\n                        } else {\n                          s13 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$e2); }\n                        }\n                        if (s13 !== peg$FAILED) {\n                          peg$savedPos = s0;\n                          s0 = peg$f2(s5, s8, s11, s12);\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$FAILED;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseupdate() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 6);\n    if (s1.toLowerCase() === peg$c7) {\n      peg$currPos += (6);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e7); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parsetable_name();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = input.substr(peg$currPos, 3);\n            if (s5.toLowerCase() === peg$c8) {\n              peg$currPos += (3);\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e8); }\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseWS();\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseset_columns();\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseoutput();\n                  if (s8 === peg$FAILED) {\n                    s8 = null;\n                  }\n                  s9 = peg$parsewhere();\n                  if (s9 === peg$FAILED) {\n                    s9 = null;\n                  }\n                  if (input.charCodeAt(peg$currPos) === 59) {\n                    s10 = peg$c2;\n                    peg$currPos++;\n                  } else {\n                    s10 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e2); }\n                  }\n                  if (s10 !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s0 = peg$f3(s3, s7, s8, s9);\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseinsert_columns() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$currPos;\n    s3 = peg$parseWS();\n    if (s3 === peg$FAILED) {\n      s3 = null;\n    }\n    s4 = peg$parseidentifier();\n    if (s4 !== peg$FAILED) {\n      peg$savedPos = s2;\n      s2 = peg$f4(s4);\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$currPos;\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s4 = peg$c9;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e9); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseWS();\n        if (s5 === peg$FAILED) {\n          s5 = null;\n        }\n        s4 = [s4, s5];\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = peg$parseWS();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        s5 = peg$parseidentifier();\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s3 = peg$f4(s5);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 === peg$FAILED) {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        } else {\n          s2 = s3;\n        }\n      } else {\n        s2 = s3;\n      }\n    }\n    if (s1.length < 1) {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseset_columns() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$currPos;\n    s3 = peg$parseWS();\n    if (s3 === peg$FAILED) {\n      s3 = null;\n    }\n    s4 = peg$parseassignment();\n    if (s4 !== peg$FAILED) {\n      peg$savedPos = s2;\n      s2 = peg$f5(s4);\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$currPos;\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s4 = peg$c9;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e9); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseWS();\n        if (s5 === peg$FAILED) {\n          s5 = null;\n        }\n        s4 = [s4, s5];\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = peg$parseWS();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        s5 = peg$parseassignment();\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s3 = peg$f5(s5);\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 === peg$FAILED) {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        } else {\n          s2 = s3;\n        }\n      } else {\n        s2 = s3;\n      }\n    }\n    if (s1.length < 1) {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseassignment() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecolumn_name();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (input.charCodeAt(peg$currPos) === 61) {\n        s3 = peg$c10;\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e10); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseWS();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        s5 = peg$parseinput();\n        if (s5 === peg$FAILED) {\n          s5 = peg$parseliteral();\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f6(s1, s5);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsevalues() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 6);\n      if (s2.toLowerCase() === peg$c11) {\n        peg$currPos += (6);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e11); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (input.charCodeAt(peg$currPos) === 40) {\n          s4 = peg$c5;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e5); }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$currPos;\n          s6 = [];\n          s7 = peg$currPos;\n          s8 = peg$parseWS();\n          if (s8 === peg$FAILED) {\n            s8 = null;\n          }\n          s9 = peg$parseinsert_value();\n          if (s9 !== peg$FAILED) {\n            peg$savedPos = s7;\n            s7 = peg$f7(s9);\n          } else {\n            peg$currPos = s7;\n            s7 = peg$FAILED;\n          }\n          while (s7 !== peg$FAILED) {\n            s6.push(s7);\n            s7 = peg$currPos;\n            s8 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s9 = peg$c9;\n              peg$currPos++;\n            } else {\n              s9 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e9); }\n            }\n            if (s9 !== peg$FAILED) {\n              s10 = peg$parseWS();\n              if (s10 === peg$FAILED) {\n                s10 = null;\n              }\n              s9 = [s9, s10];\n              s8 = s9;\n            } else {\n              peg$currPos = s8;\n              s8 = peg$FAILED;\n            }\n            if (s8 !== peg$FAILED) {\n              s8 = peg$currPos;\n              s9 = peg$parseWS();\n              if (s9 === peg$FAILED) {\n                s9 = null;\n              }\n              s10 = peg$parseinsert_value();\n              if (s10 !== peg$FAILED) {\n                peg$savedPos = s8;\n                s8 = peg$f7(s10);\n              } else {\n                peg$currPos = s8;\n                s8 = peg$FAILED;\n              }\n              if (s8 === peg$FAILED) {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              } else {\n                s7 = s8;\n              }\n            } else {\n              s7 = s8;\n            }\n          }\n          if (s6.length < 1) {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          } else {\n            s5 = s6;\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseWS();\n            if (s6 === peg$FAILED) {\n              s6 = null;\n            }\n            if (input.charCodeAt(peg$currPos) === 41) {\n              s7 = peg$c6;\n              peg$currPos++;\n            } else {\n              s7 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e6); }\n            }\n            if (s7 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f8(s5);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseinsert_value() {\n    let s0, s1;\n\n    s0 = peg$parseinput();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseliteral();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.substr(peg$currPos, 7) === peg$c12) {\n          s1 = peg$c12;\n          peg$currPos += 7;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e12); }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f9();\n        }\n        s0 = s1;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseselection() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseselect_statement();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$currPos;\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 44) {\n        s4 = peg$c9;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e9); }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = peg$parseWS();\n        if (s5 === peg$FAILED) {\n          s5 = null;\n        }\n        s4 = [s4, s5];\n        s3 = s4;\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s3 = peg$parseselect_statement();\n        if (s3 === peg$FAILED) {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        } else {\n          s2 = s3;\n        }\n      } else {\n        s2 = s3;\n      }\n    }\n    if (s1.length < 1) {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseselect_statement() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseselect_source();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = input.substr(peg$currPos, 2);\n        if (s3.toLowerCase() === peg$c13) {\n          peg$currPos += (2);\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e13); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseidentifier();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f10(s1, s5);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseselect_source();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$f11(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecolumn_name() {\n    let s0, s1, s2, s3;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parseidentifier();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s2 = peg$c14;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e15); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseidentifier();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f12(s1, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseidentifier();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$f13(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 42) {\n          s1 = peg$c15;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e16); }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$f14();\n        }\n        s0 = s1;\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e14); }\n    }\n\n    return s0;\n  }\n\n  function peg$parsetable_source_alias() {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parsetable_name();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseidentifier();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f15(s1, s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsetable_source() {\n    let s0;\n\n    s0 = peg$parsetable_source_alias();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsetable_name();\n    }\n\n    return s0;\n  }\n\n  function peg$parsetable_name() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 91) {\n      s1 = peg$c16;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e17); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseidentifier();\n      if (s2 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 3) === peg$c17) {\n          s3 = peg$c17;\n          peg$currPos += 3;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e18); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseidentifier();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 93) {\n              s5 = peg$c18;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e19); }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f16(s2, s4);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseselect_source() {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 6) === peg$c19) {\n      s1 = peg$c19;\n      peg$currPos += 6;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e20); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsecolumn_name();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s3 = peg$c6;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e6); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f17(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parsecolumn_name();\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$f18(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parsejoins() {\n    let s0, s1;\n\n    s0 = [];\n    s1 = peg$parsejoin();\n    if (s1 !== peg$FAILED) {\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parsejoin();\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsejoinType() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 5);\n    if (s1.toLowerCase() === peg$c20) {\n      peg$currPos += (5);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e21); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f19();\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = input.substr(peg$currPos, 4);\n      if (s1.toLowerCase() === peg$c21) {\n        peg$currPos += (4);\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e22); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$currPos;\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = input.substr(peg$currPos, 5);\n          if (s4.toLowerCase() === peg$c22) {\n            peg$currPos += (5);\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e23); }\n          }\n          if (s4 !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 === peg$FAILED) {\n          s2 = null;\n        }\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f20();\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = input.substr(peg$currPos, 5);\n        if (s1.toLowerCase() === peg$c23) {\n          peg$currPos += (5);\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e24); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$currPos;\n          s3 = peg$parseWS();\n          if (s3 !== peg$FAILED) {\n            s4 = input.substr(peg$currPos, 5);\n            if (s4.toLowerCase() === peg$c22) {\n              peg$currPos += (5);\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e23); }\n            }\n            if (s4 !== peg$FAILED) {\n              s3 = [s3, s4];\n              s2 = s3;\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n          if (s2 === peg$FAILED) {\n            s2 = null;\n          }\n          s3 = peg$parseWS();\n          if (s3 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f21();\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsejoin() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parsejoinType();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      s3 = input.substr(peg$currPos, 4);\n      if (s3.toLowerCase() === peg$c24) {\n        peg$currPos += (4);\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e25); }\n      }\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseWS();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parsetable_source_alias();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$currPos;\n            s7 = peg$parseWS();\n            if (s7 !== peg$FAILED) {\n              s8 = input.substr(peg$currPos, 2);\n              if (s8.toLowerCase() === peg$c25) {\n                peg$currPos += (2);\n              } else {\n                s8 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e26); }\n              }\n              if (s8 !== peg$FAILED) {\n                s9 = peg$parseWS();\n                if (s9 !== peg$FAILED) {\n                  s10 = peg$parsecondition();\n                  if (s10 !== peg$FAILED) {\n                    peg$savedPos = s6;\n                    s6 = peg$f22(s2, s5, s10);\n                  } else {\n                    peg$currPos = s6;\n                    s6 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s6;\n                  s6 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s6;\n              s6 = peg$FAILED;\n            }\n            if (s6 === peg$FAILED) {\n              s6 = null;\n            }\n            peg$savedPos = s0;\n            s0 = peg$f23(s2, s5, s6);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsewhere() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 5);\n      if (s2.toLowerCase() === peg$c26) {\n        peg$currPos += (5);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e27); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseor_condition();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f24(s4);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsegroup() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 5);\n      if (s2.toLowerCase() === peg$c27) {\n        peg$currPos += (5);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e28); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = input.substr(peg$currPos, 2);\n          if (s4.toLowerCase() === peg$c28) {\n            peg$currPos += (2);\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e29); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseWS();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$currPos;\n              s7 = [];\n              s8 = peg$parsecolumn_name();\n              while (s8 !== peg$FAILED) {\n                s7.push(s8);\n                s8 = peg$currPos;\n                s9 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 44) {\n                  s10 = peg$c9;\n                  peg$currPos++;\n                } else {\n                  s10 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e9); }\n                }\n                if (s10 !== peg$FAILED) {\n                  s11 = peg$parseWS();\n                  if (s11 !== peg$FAILED) {\n                    s10 = [s10, s11];\n                    s9 = s10;\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s9;\n                  s9 = peg$FAILED;\n                }\n                if (s9 !== peg$FAILED) {\n                  s9 = peg$parsecolumn_name();\n                  if (s9 === peg$FAILED) {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  } else {\n                    s8 = s9;\n                  }\n                } else {\n                  s8 = s9;\n                }\n              }\n              if (s7.length < 1) {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              } else {\n                s6 = s7;\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f25(s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseorder() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 5);\n      if (s2.toLowerCase() === peg$c29) {\n        peg$currPos += (5);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e30); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = input.substr(peg$currPos, 2);\n          if (s4.toLowerCase() === peg$c28) {\n            peg$currPos += (2);\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e29); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseWS();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$currPos;\n              s7 = [];\n              s8 = peg$parsecolumn_sorting();\n              while (s8 !== peg$FAILED) {\n                s7.push(s8);\n                s8 = peg$currPos;\n                s9 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 44) {\n                  s10 = peg$c9;\n                  peg$currPos++;\n                } else {\n                  s10 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e9); }\n                }\n                if (s10 !== peg$FAILED) {\n                  s11 = peg$parseWS();\n                  if (s11 !== peg$FAILED) {\n                    s10 = [s10, s11];\n                    s9 = s10;\n                  } else {\n                    peg$currPos = s9;\n                    s9 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s9;\n                  s9 = peg$FAILED;\n                }\n                if (s9 !== peg$FAILED) {\n                  s9 = peg$parsecolumn_sorting();\n                  if (s9 === peg$FAILED) {\n                    peg$currPos = s8;\n                    s8 = peg$FAILED;\n                  } else {\n                    s8 = s9;\n                  }\n                } else {\n                  s8 = s9;\n                }\n              }\n              if (s7.length < 1) {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              } else {\n                s6 = s7;\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f26(s6);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseoutput() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 6);\n      if (s2.toLowerCase() === peg$c30) {\n        peg$currPos += (6);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e31); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$currPos;\n          s5 = [];\n          s6 = peg$parsecolumn_name();\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            s6 = peg$currPos;\n            s7 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 44) {\n              s8 = peg$c9;\n              peg$currPos++;\n            } else {\n              s8 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e9); }\n            }\n            if (s8 !== peg$FAILED) {\n              s9 = peg$parseWS();\n              if (s9 !== peg$FAILED) {\n                s8 = [s8, s9];\n                s7 = s8;\n              } else {\n                peg$currPos = s7;\n                s7 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s7;\n              s7 = peg$FAILED;\n            }\n            if (s7 !== peg$FAILED) {\n              s7 = peg$parsecolumn_name();\n              if (s7 === peg$FAILED) {\n                peg$currPos = s6;\n                s6 = peg$FAILED;\n              } else {\n                s6 = s7;\n              }\n            } else {\n              s6 = s7;\n            }\n          }\n          if (s5.length < 1) {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          } else {\n            s4 = s5;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s0 = peg$f27(s4);\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseorderDirection() {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 3);\n    if (s1.toLowerCase() === peg$c31) {\n      peg$currPos += (3);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e32); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f28();\n    }\n    s0 = s1;\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = input.substr(peg$currPos, 4);\n      if (s1.toLowerCase() === peg$c32) {\n        peg$currPos += (4);\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e33); }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$f29();\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parsecolumn_sorting() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecolumn_name();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = peg$parseWS();\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseorderDirection();\n        if (s4 !== peg$FAILED) {\n          peg$savedPos = s2;\n          s2 = peg$f30(s1, s4);\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      peg$savedPos = s0;\n      s0 = peg$f31(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseor_condition() {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseand_condition();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parseWS();\n      if (s4 !== peg$FAILED) {\n        s5 = input.substr(peg$currPos, 2);\n        if (s5.toLowerCase() === peg$c33) {\n          peg$currPos += (2);\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e34); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parseWS();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parseand_condition();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parseWS();\n        if (s4 !== peg$FAILED) {\n          s5 = input.substr(peg$currPos, 2);\n          if (s5.toLowerCase() === peg$c33) {\n            peg$currPos += (2);\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e34); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseWS();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseand_condition();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      peg$savedPos = s0;\n      s0 = peg$f32(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseand_condition() {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parsegrouped_condition();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$parseWS();\n      if (s4 !== peg$FAILED) {\n        s5 = input.substr(peg$currPos, 3);\n        if (s5.toLowerCase() === peg$c34) {\n          peg$currPos += (3);\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e35); }\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parseWS();\n          if (s6 !== peg$FAILED) {\n            s7 = peg$parsegrouped_condition();\n            if (s7 !== peg$FAILED) {\n              s4 = [s4, s5, s6, s7];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$parseWS();\n        if (s4 !== peg$FAILED) {\n          s5 = input.substr(peg$currPos, 3);\n          if (s5.toLowerCase() === peg$c34) {\n            peg$currPos += (3);\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e35); }\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseWS();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parsegrouped_condition();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      peg$savedPos = s0;\n      s0 = peg$f33(s1, s2);\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsegrouped_condition() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 40) {\n      s1 = peg$c5;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e5); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      s3 = peg$parseor_condition();\n      if (s3 !== peg$FAILED) {\n        s4 = peg$parseWS();\n        if (s4 === peg$FAILED) {\n          s4 = null;\n        }\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s5 = peg$c6;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e6); }\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f34(s3);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsecondition();\n    }\n\n    return s0;\n  }\n\n  function peg$parsecondition() {\n    let s0;\n\n    s0 = peg$parseequality_condition();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsenull_condition();\n    }\n\n    return s0;\n  }\n\n  function peg$parseequality_condition() {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecolumn_name();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s3 = peg$c10;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e10); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseliteral();\n            if (s5 === peg$FAILED) {\n              s5 = peg$parseinput();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parsecolumn_name();\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f35(s1, s5);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parsecolumn_name();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWS();\n        if (s2 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c35) {\n            s3 = peg$c35;\n            peg$currPos += 2;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e36); }\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWS();\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseliteral();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseinput();\n                if (s5 === peg$FAILED) {\n                  s5 = peg$parsecolumn_name();\n                }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f36(s1, s5);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenull_condition() {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parsecolumn_name();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseWS();\n      if (s2 !== peg$FAILED) {\n        s3 = input.substr(peg$currPos, 2);\n        if (s3.toLowerCase() === peg$c36) {\n          peg$currPos += (2);\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e37); }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseWS();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$currPos;\n            s6 = input.substr(peg$currPos, 3);\n            if (s6.toLowerCase() === peg$c37) {\n              peg$currPos += (3);\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e38); }\n            }\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseWS();\n              if (s7 !== peg$FAILED) {\n                s6 = [s6, s7];\n                s5 = s6;\n              } else {\n                peg$currPos = s5;\n                s5 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            s6 = input.substr(peg$currPos, 4);\n            if (s6.toLowerCase() === peg$c38) {\n              peg$currPos += (4);\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e39); }\n            }\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s0 = peg$f37(s1, s5);\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseoffset() {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 6);\n      if (s2.toLowerCase() === peg$c39) {\n        peg$currPos += (6);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e40); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parseinput();\n          if (s4 === peg$FAILED) {\n            s4 = peg$parsenumber();\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseWS();\n            if (s5 !== peg$FAILED) {\n              s6 = input.substr(peg$currPos, 4);\n              if (s6.toLowerCase() === peg$c40) {\n                peg$currPos += (4);\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e41); }\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s0 = peg$f38(s4);\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parselimit() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n    s0 = peg$currPos;\n    s1 = peg$parseWS();\n    if (s1 !== peg$FAILED) {\n      s2 = input.substr(peg$currPos, 5);\n      if (s2.toLowerCase() === peg$c41) {\n        peg$currPos += (5);\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e42); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseWS();\n        if (s3 !== peg$FAILED) {\n          s4 = input.substr(peg$currPos, 4);\n          if (s4.toLowerCase() === peg$c42) {\n            peg$currPos += (4);\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e43); }\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseWS();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseinput();\n              if (s6 === peg$FAILED) {\n                s6 = peg$parsenumber();\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseWS();\n                if (s7 !== peg$FAILED) {\n                  s8 = input.substr(peg$currPos, 4);\n                  if (s8.toLowerCase() === peg$c40) {\n                    peg$currPos += (4);\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e41); }\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseWS();\n                    if (s9 !== peg$FAILED) {\n                      s10 = input.substr(peg$currPos, 4);\n                      if (s10.toLowerCase() === peg$c43) {\n                        peg$currPos += (4);\n                      } else {\n                        s10 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$e44); }\n                      }\n                      if (s10 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s0 = peg$f39(s6);\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseinput() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 64) {\n      s1 = peg$c44;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e45); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      s4 = input.charAt(peg$currPos);\n      if (peg$r0.test(s4)) {\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e46); }\n      }\n      if (s4 !== peg$FAILED) {\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = input.charAt(peg$currPos);\n          if (peg$r0.test(s4)) {\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e46); }\n          }\n        }\n      } else {\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s0 = peg$f40(s2);\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseliteral() {\n    let s0;\n\n    s0 = peg$parsenull();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parsenumber();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parsestring();\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parsenull() {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    s1 = input.substr(peg$currPos, 4);\n    if (s1.toLowerCase() === peg$c38) {\n      peg$currPos += (4);\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e39); }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f41();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsenumber() {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = [];\n    s3 = input.charAt(peg$currPos);\n    if (peg$r1.test(s3)) {\n      peg$currPos++;\n    } else {\n      s3 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e47); }\n    }\n    if (s3 !== peg$FAILED) {\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = input.charAt(peg$currPos);\n        if (peg$r1.test(s3)) {\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e47); }\n        }\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$f42(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parsestring() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 39) {\n      s1 = peg$c45;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e48); }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      s4 = input.charAt(peg$currPos);\n      if (peg$r2.test(s4)) {\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e49); }\n      }\n      if (s4 !== peg$FAILED) {\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = input.charAt(peg$currPos);\n          if (peg$r2.test(s4)) {\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e49); }\n          }\n        }\n      } else {\n        s3 = peg$FAILED;\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 39) {\n          s3 = peg$c45;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e48); }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s0 = peg$f43(s2);\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseidentifier() {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    s2 = peg$parsekeyword();\n    peg$silentFails--;\n    if (s2 === peg$FAILED) {\n      s1 = undefined;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = input.charAt(peg$currPos);\n      if (peg$r0.test(s2)) {\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e46); }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = input.charAt(peg$currPos);\n        if (peg$r3.test(s4)) {\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e50); }\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = input.charAt(peg$currPos);\n          if (peg$r3.test(s4)) {\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e50); }\n          }\n        }\n        peg$savedPos = s0;\n        s0 = peg$f44();\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parsekeyword() {\n    let s0;\n\n    s0 = input.substr(peg$currPos, 5);\n    if (s0.toLowerCase() === peg$c26) {\n      peg$currPos += (5);\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e27); }\n    }\n    if (s0 === peg$FAILED) {\n      s0 = input.substr(peg$currPos, 4);\n      if (s0.toLowerCase() === peg$c1) {\n        peg$currPos += (4);\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$e1); }\n      }\n      if (s0 === peg$FAILED) {\n        s0 = input.substr(peg$currPos, 4);\n        if (s0.toLowerCase() === peg$c24) {\n          peg$currPos += (4);\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e25); }\n        }\n        if (s0 === peg$FAILED) {\n          s0 = input.substr(peg$currPos, 5);\n          if (s0.toLowerCase() === peg$c27) {\n            peg$currPos += (5);\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$e28); }\n          }\n          if (s0 === peg$FAILED) {\n            s0 = input.substr(peg$currPos, 6);\n            if (s0.toLowerCase() === peg$c39) {\n              peg$currPos += (6);\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$e40); }\n            }\n            if (s0 === peg$FAILED) {\n              s0 = input.substr(peg$currPos, 5);\n              if (s0.toLowerCase() === peg$c41) {\n                peg$currPos += (5);\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$e42); }\n              }\n              if (s0 === peg$FAILED) {\n                s0 = input.substr(peg$currPos, 4);\n                if (s0.toLowerCase() === peg$c42) {\n                  peg$currPos += (4);\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$e43); }\n                }\n                if (s0 === peg$FAILED) {\n                  s0 = input.substr(peg$currPos, 5);\n                  if (s0.toLowerCase() === peg$c29) {\n                    peg$currPos += (5);\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$e30); }\n                  }\n                  if (s0 === peg$FAILED) {\n                    s0 = input.substr(peg$currPos, 6);\n                    if (s0.toLowerCase() === peg$c30) {\n                      peg$currPos += (6);\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$e31); }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseWS() {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = input.charAt(peg$currPos);\n    if (peg$r4.test(s1)) {\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e52); }\n    }\n    if (s1 !== peg$FAILED) {\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = input.charAt(peg$currPos);\n        if (peg$r4.test(s1)) {\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$e52); }\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$e51); }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length);\n  function peg$throw() {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n  if (options.peg$library) {\n    return /** @type {any} */ ({\n      peg$result,\n      peg$currPos,\n      peg$FAILED,\n      peg$maxFailExpected,\n      peg$maxFailPos,\n      peg$success,\n      peg$throw: peg$success ? undefined : peg$throw,\n    });\n  }\n  if (peg$success) {\n    return peg$result;\n  } else {\n    peg$throw();\n  }\n}\n\nmodule.exports = {\n  StartRules: [\"sql\"],\n  SyntaxError: peg$SyntaxError,\n  parse: peg$parse,\n};\n","import { parse } from \"./mssql-parser\";\nimport { StatementNode } from \"./types\";\n\nexport const parseMSSQLStatement = (query: string): StatementNode =>\n  parse(query);\n\nexport { traverse } from \"./traverse\";\nexport { prettyPrint } from \"./pretty-print\";\nexport * from \"./types\";\n","import { SyntaxNode } from \"./types\";\n\nexport type Visitor<T = void> = {\n  enter?: (node: SyntaxNode, parent: SyntaxNode | null) => T | void;\n  leave?: (node: SyntaxNode, parent: SyntaxNode | null) => void;\n};\n\nexport function traverse<T = void>(\n  node: SyntaxNode,\n  visitor: Visitor<T>,\n  parent: SyntaxNode | null = null,\n): void {\n  if (!node) return;\n  if (visitor.enter) visitor.enter(node, parent);\n\n  switch (node.kind) {\n    case \"select\": {\n      // SelectStatementNode\n      node.select.forEach((child) => traverse(child, visitor, node));\n      traverse(node.from, visitor, node);\n      if (node.joins) node.joins.forEach((j) => traverse(j, visitor, node));\n      if (node.where) traverse(node.where, visitor, node);\n      if (node.groupBy) node.groupBy.forEach((g) => traverse(g, visitor, node));\n      if (node.orderBy) node.orderBy.forEach((o) => traverse(o, visitor, node));\n      if (node.offset) traverse(node.offset, visitor, node);\n      if (node.limit) traverse(node.limit, visitor, node);\n      break;\n    }\n    case \"insert\": {\n      traverse(node.target, visitor, node);\n      node.columns.forEach((col) => traverse(col, visitor, node));\n      traverse(node.values, visitor, node);\n      if (node.output)\n        node.output.forEach((col) => traverse(col, visitor, node));\n      break;\n    }\n    case \"update\": {\n      traverse(node.target, visitor, node);\n      node.set.forEach((col) => traverse(col, visitor, node));\n      if (node.output)\n        node.output.forEach((col) => traverse(col, visitor, node));\n      break;\n    }\n    case \"assignment\": {\n      traverse(node.column, visitor, node);\n      traverse(node.value, visitor, node);\n      break;\n    }\n    case \"values\": {\n      node.values.forEach((val) => traverse(val, visitor, node));\n      break;\n    }\n    case \"select-source\": {\n      traverse(node.source, visitor, node);\n      if (node.alias) traverse(node.alias, visitor, node);\n      break;\n    }\n    case \"table\": {\n      traverse(node.db, visitor, node);\n      traverse(node.table, visitor, node);\n      if (node.alias) traverse(node.alias, visitor, node);\n      break;\n    }\n    case \"column\": {\n      traverse(node.name, visitor, node);\n      if (node.alias) traverse(node.alias, visitor, node);\n      break;\n    }\n    case \"order\": {\n      traverse(node.column, visitor, node);\n      break;\n    }\n    case \"function\": {\n      node.args.forEach((arg: any) => traverse(arg, visitor, node));\n      break;\n    }\n    case \"join\": {\n      traverse(node.source, visitor, node);\n      traverse(node.condition, visitor, node);\n      break;\n    }\n    case \"condition\": {\n      traverse(node.left, visitor, node);\n      traverse(node.right, visitor, node);\n      break;\n    }\n    case \"condition-group\": {\n      traverse(node.condition, visitor, node);\n      break;\n    }\n    case \"literal\": {\n      // WildcardNode | NullLiteralNode | StringLiteralNode | NumberLiteralNode\n      // leaf node\n      break;\n    }\n    case \"identifier\": {\n      // IdentifierNode\n      // leaf node\n      break;\n    }\n    case \"input\": {\n      // InputNode\n      // leaf node\n      break;\n    }\n    case \"offset\": {\n      // OffsetNode\n      traverse(node.rows, visitor, node);\n      break;\n    }\n    case \"limit\": {\n      // LimitNode\n      traverse(node.rows, visitor, node);\n      break;\n    }\n    default:\n      break;\n  }\n\n  if (visitor.leave) visitor.leave(node, parent);\n}\n","import { SyntaxNode } from \"./types\";\n\nexport const prettyPrint = (node: SyntaxNode): string => {\n  switch (node.kind) {\n    case \"select\": {\n      return `SELECT ${node.select.map(prettyPrint).join(\", \")} FROM ${prettyPrint(node.from)}${\n        node.joins ? ` ${node.joins.map(prettyPrint).join(\" \")}` : \"\"\n      }${node.where ? ` WHERE ${prettyPrint(node.where)}` : \"\"}${\n        node.groupBy\n          ? ` GROUP BY ${node.groupBy.map(prettyPrint).join(\", \")}`\n          : \"\"\n      }${node.orderBy ? ` ORDER BY ${node.orderBy.map(prettyPrint).join(\", \")}` : \"\"}${\n        node.offset ? ` ${prettyPrint(node.offset)}` : \"\"\n      }${node.limit ? ` ${prettyPrint(node.limit)}` : \"\"};`;\n    }\n    case \"insert\":\n      return `INSERT INTO ${prettyPrint(node.target)} (${node.columns.map(prettyPrint).join(\", \")})${\n        node.output ? ` OUTPUT ${node.output.map(prettyPrint).join(\", \")}` : \"\"\n      } ${prettyPrint(node.values)};`;\n    case \"update\":\n      return `UPDATE ${prettyPrint(node.target)} SET ${node.set.map(prettyPrint).join(\", \")}${\n        node.output ? ` OUTPUT ${node.output.map(prettyPrint).join(\", \")}` : \"\"\n      }${node.where ? ` WHERE ${prettyPrint(node.where)}` : \"\"};`;\n    case \"assignment\":\n      return `${prettyPrint(node.column)} = ${prettyPrint(node.value)}`;\n    case \"values\":\n      return `VALUES (${node.values.map(prettyPrint).join(\", \")})`;\n    case \"select-source\":\n      return `${prettyPrint(node.source)}${node.alias ? ` AS ${prettyPrint(node.alias)}` : \"\"}`;\n    case \"table\":\n      return `[${prettyPrint(node.db)}].[${prettyPrint(node.table)}]${node.alias ? ` ${prettyPrint(node.alias)}` : \"\"}`;\n    case \"column\":\n      return `${node.alias ? `${prettyPrint(node.alias)}.` : \"\"}${prettyPrint(node.name)}`;\n    case \"order\":\n      return `${prettyPrint(node.column)} ${node.direction.toUpperCase()}`;\n    case \"function\":\n      return `${node.name.toUpperCase()}(${node.args.map(prettyPrint).join(\", \")})`;\n    case \"join\":\n      return `${node.type.toUpperCase()} JOIN ${prettyPrint(node.source)} ON ${prettyPrint(node.condition)}`;\n    case \"condition\": {\n      if (node.right.kind === \"literal\" && node.right.type === \"null\") {\n        return `${prettyPrint(node.left)} IS ${node.type === \"equality\" ? \"NULL\" : \"NOT NULL\"}`;\n      }\n      if (node.type === \"equality\") {\n        return `${prettyPrint(node.left)} = ${prettyPrint(node.right)}`;\n      }\n      if (node.type === \"inequality\") {\n        return `${prettyPrint(node.left)} <> ${prettyPrint(node.right)}`;\n      }\n      if (node.type === \"and\") {\n        return `${prettyPrint(node.left)} AND ${prettyPrint(node.right)}`;\n      }\n      return `${prettyPrint(node.left)} OR ${prettyPrint(node.right)}`;\n    }\n    case \"condition-group\":\n      return `(${prettyPrint(node.condition)})`;\n    case \"literal\": {\n      if (node.type === \"wildcard\") {\n        return \"*\";\n      }\n      if (node.type === \"number\") {\n        return node.value.toString();\n      }\n      if (node.type === \"null\") {\n        return \"NULL\";\n      }\n      return `'${node.value}'`;\n    }\n    case \"identifier\":\n      return node.name;\n    case \"offset\":\n      return `OFFSET ${prettyPrint(node.rows)} ROWS`;\n    case \"limit\":\n      return `FETCH NEXT ${prettyPrint(node.rows)} ROWS ONLY`;\n    case \"input\":\n      return `@${node.identifier}`;\n  }\n};\n"],"mappings":"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","names":["s","expected","found","offset","input","location","text"]}