[
  {
    "path": ".clang-format",
    "content": "---\nLanguage:        Cpp\n# BasedOnStyle:  Google\nAccessModifierOffset: -1\nAlignAfterOpenBracket: Align\nAlignArrayOfStructures: None\nAlignConsecutiveMacros: None\nAlignConsecutiveAssignments: None\nAlignConsecutiveBitFields: None\nAlignConsecutiveDeclarations: None\nAlignEscapedNewlines: Left\nAlignOperands:   Align\nAlignTrailingComments: true\nAllowAllArgumentsOnNextLine: true\nAllowAllParametersOfDeclarationOnNextLine: true\nAllowShortEnumsOnASingleLine: true\nAllowShortBlocksOnASingleLine: Never\nAllowShortCaseLabelsOnASingleLine: false\nAllowShortFunctionsOnASingleLine: All\nAllowShortLambdasOnASingleLine: All\nAllowShortIfStatementsOnASingleLine: WithoutElse\nAllowShortLoopsOnASingleLine: true\nAlwaysBreakAfterDefinitionReturnType: None\nAlwaysBreakAfterReturnType: None\nAlwaysBreakBeforeMultilineStrings: true\nAlwaysBreakTemplateDeclarations: Yes\nAttributeMacros:\n  - __capability\nBinPackArguments: true\nBinPackParameters: true\nBraceWrapping:\n  AfterCaseLabel:  false\n  AfterClass:      false\n  AfterControlStatement: Never\n  AfterEnum:       false\n  AfterFunction:   false\n  AfterNamespace:  false\n  AfterObjCDeclaration: false\n  AfterStruct:     false\n  AfterUnion:      false\n  AfterExternBlock: false\n  BeforeCatch:     false\n  BeforeElse:      false\n  BeforeLambdaBody: false\n  BeforeWhile:     false\n  IndentBraces:    false\n  SplitEmptyFunction: true\n  SplitEmptyRecord: true\n  SplitEmptyNamespace: true\nBreakBeforeBinaryOperators: None\nBreakBeforeConceptDeclarations: true\nBreakBeforeBraces: Attach\nBreakBeforeInheritanceComma: false\nBreakInheritanceList: BeforeColon\nBreakBeforeTernaryOperators: true\nBreakConstructorInitializersBeforeComma: false\nBreakConstructorInitializers: BeforeColon\nBreakAfterJavaFieldAnnotations: false\nBreakStringLiterals: true\nColumnLimit:     80\nCommentPragmas:  '^ IWYU pragma:'\nQualifierAlignment: Leave\nCompactNamespaces: false\nConstructorInitializerIndentWidth: 4\nContinuationIndentWidth: 4\nCpp11BracedListStyle: true\nDeriveLineEnding: true\nDerivePointerAlignment: true\nDisableFormat:   false\nEmptyLineAfterAccessModifier: Never\nEmptyLineBeforeAccessModifier: LogicalBlock\nExperimentalAutoDetectBinPacking: false\nPackConstructorInitializers: NextLine\nBasedOnStyle:    ''\nConstructorInitializerAllOnOneLineOrOnePerLine: false\nAllowAllConstructorInitializersOnNextLine: true\nFixNamespaceComments: true\nForEachMacros:\n  - foreach\n  - Q_FOREACH\n  - BOOST_FOREACH\nIfMacros:\n  - KJ_IF_MAYBE\nIncludeBlocks:   Regroup\nIncludeCategories:\n  - Regex:           '^<ext/.*\\.h>'\n    Priority:        2\n    SortPriority:    0\n    CaseSensitive:   false\n  - Regex:           '^<.*\\.h>'\n    Priority:        1\n    SortPriority:    0\n    CaseSensitive:   false\n  - Regex:           '^<.*'\n    Priority:        2\n    SortPriority:    0\n    CaseSensitive:   false\n  - Regex:           '.*'\n    Priority:        3\n    SortPriority:    0\n    CaseSensitive:   false\nIncludeIsMainRegex: '([-_](test|unittest))?$'\nIncludeIsMainSourceRegex: ''\nIndentAccessModifiers: false\nIndentCaseLabels: true\nIndentCaseBlocks: false\nIndentGotoLabels: true\nIndentPPDirectives: None\nIndentExternBlock: AfterExternBlock\nIndentRequires:  false\nIndentWidth:     2\nIndentWrappedFunctionNames: false\nInsertTrailingCommas: None\nJavaScriptQuotes: Leave\nJavaScriptWrapImports: true\nKeepEmptyLinesAtTheStartOfBlocks: false\nLambdaBodyIndentation: Signature\nMacroBlockBegin: ''\nMacroBlockEnd:   ''\nMaxEmptyLinesToKeep: 1\nNamespaceIndentation: None\nObjCBinPackProtocolList: Never\nObjCBlockIndentWidth: 2\nObjCBreakBeforeNestedBlockParam: true\nObjCSpaceAfterProperty: false\nObjCSpaceBeforeProtocolList: true\nPenaltyBreakAssignment: 2\nPenaltyBreakBeforeFirstCallParameter: 1\nPenaltyBreakComment: 300\nPenaltyBreakFirstLessLess: 120\nPenaltyBreakOpenParenthesis: 0\nPenaltyBreakString: 1000\nPenaltyBreakTemplateDeclaration: 10\nPenaltyExcessCharacter: 1000000\nPenaltyReturnTypeOnItsOwnLine: 200\nPenaltyIndentedWhitespace: 0\nPointerAlignment: Left\nPPIndentWidth:   -1\nRawStringFormats:\n  - Language:        Cpp\n    Delimiters:\n      - cc\n      - CC\n      - cpp\n      - Cpp\n      - CPP\n      - 'c++'\n      - 'C++'\n    CanonicalDelimiter: ''\n    BasedOnStyle:    google\n  - Language:        TextProto\n    Delimiters:\n      - pb\n      - PB\n      - proto\n      - PROTO\n    EnclosingFunctions:\n      - EqualsProto\n      - EquivToProto\n      - PARSE_PARTIAL_TEXT_PROTO\n      - PARSE_TEST_PROTO\n      - PARSE_TEXT_PROTO\n      - ParseTextOrDie\n      - ParseTextProtoOrDie\n      - ParseTestProto\n      - ParsePartialTestProto\n    CanonicalDelimiter: pb\n    BasedOnStyle:    google\nReferenceAlignment: Pointer\nReflowComments:  true\nRemoveBracesLLVM: false\nSeparateDefinitionBlocks: Leave\nShortNamespaceLines: 1\n#SortIncludes:    CaseSensitive\nSortJavaStaticImport: Before\nSortUsingDeclarations: true\nSpaceAfterCStyleCast: false\nSpaceAfterLogicalNot: false\nSpaceAfterTemplateKeyword: true\nSpaceBeforeAssignmentOperators: true\nSpaceBeforeCaseColon: false\nSpaceBeforeCpp11BracedList: false\nSpaceBeforeCtorInitializerColon: true\nSpaceBeforeInheritanceColon: true\nSpaceBeforeParens: ControlStatements\nSpaceBeforeParensOptions:\n  AfterControlStatements: true\n  AfterForeachMacros: true\n  AfterFunctionDefinitionName: false\n  AfterFunctionDeclarationName: false\n  AfterIfMacros:   true\n  AfterOverloadedOperator: false\n  BeforeNonEmptyParentheses: false\nSpaceAroundPointerQualifiers: Default\nSpaceBeforeRangeBasedForLoopColon: true\nSpaceInEmptyBlock: false\nSpaceInEmptyParentheses: false\nSpacesBeforeTrailingComments: 2\nSpacesInAngles:  Never\nSpacesInConditionalStatement: false\nSpacesInContainerLiterals: true\nSpacesInCStyleCastParentheses: false\nSpacesInLineCommentPrefix:\n  Minimum:         1\n  Maximum:         -1\nSpacesInParentheses: false\nSpacesInSquareBrackets: false\nSpaceBeforeSquareBrackets: false\nBitFieldColonSpacing: Both\nStandard:        Auto\nStatementAttributeLikeMacros:\n  - Q_EMIT\nStatementMacros:\n  - Q_UNUSED\n  - QT_REQUIRE_VERSION\nTabWidth:        8\nUseCRLF:         false\nUseTab:          Never\nWhitespaceSensitiveMacros:\n  - STRINGIZE\n  - PP_STRINGIZE\n  - BOOST_PP_STRINGIZE\n  - NS_SWIFT_NAME\n  - CF_SWIFT_NAME\n...\n\n"
  },
  {
    "path": ".clang-tidy",
    "content": "---\nChecks:          'clang-diagnostic-*,clang-analyzer-*,performance-*,-performance-no-int-to-ptr'\nWarningsAsErrors: '*'\nHeaderFilterRegex: ''\nAnalyzeTemporaryDtors: false\nFormatStyle:     file\nCheckOptions:\n  - key:             llvm-else-after-return.WarnOnConditionVariables\n    value:           'false'\n  - key:             modernize-loop-convert.MinConfidence\n    value:           reasonable\n  - key:             modernize-replace-auto-ptr.IncludeStyle\n    value:           llvm\n  - key:             cert-str34-c.DiagnoseSignedUnsignedCharComparisons\n    value:           'false'\n  - key:             google-readability-namespace-comments.ShortNamespaceLines\n    value:           '10'\n  - key:             cert-err33-c.CheckedFunctions\n    value:           '::aligned_alloc;::asctime_s;::at_quick_exit;::atexit;::bsearch;::bsearch_s;::btowc;::c16rtomb;::c32rtomb;::calloc;::clock;::cnd_broadcast;::cnd_init;::cnd_signal;::cnd_timedwait;::cnd_wait;::ctime_s;::fclose;::fflush;::fgetc;::fgetpos;::fgets;::fgetwc;::fopen;::fopen_s;::fprintf;::fprintf_s;::fputc;::fputs;::fputwc;::fputws;::fread;::freopen;::freopen_s;::fscanf;::fscanf_s;::fseek;::fsetpos;::ftell;::fwprintf;::fwprintf_s;::fwrite;::fwscanf;::fwscanf_s;::getc;::getchar;::getenv;::getenv_s;::gets_s;::getwc;::getwchar;::gmtime;::gmtime_s;::localtime;::localtime_s;::malloc;::mbrtoc16;::mbrtoc32;::mbsrtowcs;::mbsrtowcs_s;::mbstowcs;::mbstowcs_s;::memchr;::mktime;::mtx_init;::mtx_lock;::mtx_timedlock;::mtx_trylock;::mtx_unlock;::printf_s;::putc;::putwc;::raise;::realloc;::remove;::rename;::scanf;::scanf_s;::setlocale;::setvbuf;::signal;::snprintf;::snprintf_s;::sprintf;::sprintf_s;::sscanf;::sscanf_s;::strchr;::strerror_s;::strftime;::strpbrk;::strrchr;::strstr;::strtod;::strtof;::strtoimax;::strtok;::strtok_s;::strtol;::strtold;::strtoll;::strtoul;::strtoull;::strtoumax;::strxfrm;::swprintf;::swprintf_s;::swscanf;::swscanf_s;::thrd_create;::thrd_detach;::thrd_join;::thrd_sleep;::time;::timespec_get;::tmpfile;::tmpfile_s;::tmpnam;::tmpnam_s;::tss_create;::tss_get;::tss_set;::ungetc;::ungetwc;::vfprintf;::vfprintf_s;::vfscanf;::vfscanf_s;::vfwprintf;::vfwprintf_s;::vfwscanf;::vfwscanf_s;::vprintf_s;::vscanf;::vscanf_s;::vsnprintf;::vsnprintf_s;::vsprintf;::vsprintf_s;::vsscanf;::vsscanf_s;::vswprintf;::vswprintf_s;::vswscanf;::vswscanf_s;::vwprintf_s;::vwscanf;::vwscanf_s;::wcrtomb;::wcschr;::wcsftime;::wcspbrk;::wcsrchr;::wcsrtombs;::wcsrtombs_s;::wcsstr;::wcstod;::wcstof;::wcstoimax;::wcstok;::wcstok_s;::wcstol;::wcstold;::wcstoll;::wcstombs;::wcstombs_s;::wcstoul;::wcstoull;::wcstoumax;::wcsxfrm;::wctob;::wctrans;::wctype;::wmemchr;::wprintf_s;::wscanf;::wscanf_s;'\n  - key:             cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField\n    value:           'false'\n  - key:             cert-dcl16-c.NewSuffixes\n    value:           'L;LL;LU;LLU'\n  - key:             google-readability-braces-around-statements.ShortStatementLines\n    value:           '1'\n  - key:             cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic\n    value:           'true'\n  - key:             google-readability-namespace-comments.SpacesBeforeComments\n    value:           '2'\n  - key:             modernize-loop-convert.MaxCopySize\n    value:           '16'\n  - key:             modernize-pass-by-value.IncludeStyle\n    value:           llvm\n  - key:             modernize-use-nullptr.NullMacros\n    value:           'NULL'\n  - key:             llvm-qualified-auto.AddConstToQualified\n    value:           'false'\n  - key:             modernize-loop-convert.NamingStyle\n    value:           CamelCase\n  - key:             llvm-else-after-return.WarnOnUnfixable\n    value:           'false'\n  - key:             google-readability-function-size.StatementThreshold\n    value:           '800'\n...\n\n"
  },
  {
    "path": ".devcontainer/Dockerfile",
    "content": "FROM mcr.microsoft.com/devcontainers/base:jammy\n\nARG REINSTALL_CMAKE_VERSION_FROM_SOURCE=\"none\"\n\n# Optionally install the cmake for vcpkg\nCOPY ./reinstall-cmake.sh /tmp/\n\nRUN if [ \"${REINSTALL_CMAKE_VERSION_FROM_SOURCE}\" != \"none\" ]; then \\\n        chmod +x /tmp/reinstall-cmake.sh && /tmp/reinstall-cmake.sh ${REINSTALL_CMAKE_VERSION_FROM_SOURCE}; \\\n    fi \\\n    && rm -f /tmp/reinstall-cmake.sh\n\n# [Optional] Uncomment this section to install additional vcpkg ports.\n# RUN su vscode -c \"${VCPKG_ROOT}/vcpkg install <your-port-name-here>\"\n\n# [Optional] Uncomment this section to install additional packages.\n RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \\\n     && apt-get -y install --no-install-recommends libmysqlclient-dev cmake ninja-build clang llvm llvm-dev clangd pkg-config clang-format libpq-dev\n"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the\n// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu\n{\n  \"name\": \"C++\",\n  \"build\": {\n    \"dockerfile\": \"Dockerfile\"\n  },\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"xaver.clang-format\",\n        \"llvm-vs-code-extensions.vscode-clangd\",\n        \"twxs.cmake\",\n        \"ms-vscode.cmake-tools\"\n      ]\n    }\n  },\n  // Features to add to the dev container. More info: https://containers.dev/features.\n  // \"features\": {},\n  // Use 'forwardPorts' to make a list of ports inside the container available locally.\n  // \"forwardPorts\": [],\n  // Use 'postCreateCommand' to run commands after the container is created.\n  \"postCreateCommand\": \"git submodule update --init; cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1\"\n  // Configure tool-specific properties.\n  // \"customizations\": {},\n  // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.\n  // \"remoteUser\": \"root\"\n}"
  },
  {
    "path": ".devcontainer/reinstall-cmake.sh",
    "content": "#!/usr/bin/env bash\n#-------------------------------------------------------------------------------------------------------------\n# Copyright (c) Microsoft Corporation. All rights reserved.\n# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.\n#-------------------------------------------------------------------------------------------------------------\n#\nset -e\n\nCMAKE_VERSION=${1:-\"none\"}\n\nif [ \"${CMAKE_VERSION}\" = \"none\" ]; then\n    echo \"No CMake version specified, skipping CMake reinstallation\"\n    exit 0\nfi\n\n# Cleanup temporary directory and associated files when exiting the script.\ncleanup() {\n    EXIT_CODE=$?\n    set +e\n    if [[ -n \"${TMP_DIR}\" ]]; then\n        echo \"Executing cleanup of tmp files\"\n        rm -Rf \"${TMP_DIR}\"\n    fi\n    exit $EXIT_CODE\n}\ntrap cleanup EXIT\n\n\necho \"Installing CMake...\"\napt-get -y purge --auto-remove cmake\nmkdir -p /opt/cmake\n\narchitecture=$(dpkg --print-architecture)\ncase \"${architecture}\" in\n    arm64)\n        ARCH=aarch64 ;;\n    amd64)\n        ARCH=x86_64 ;;\n    *)\n        echo \"Unsupported architecture ${architecture}.\"\n        exit 1\n        ;;\nesac\n\nCMAKE_BINARY_NAME=\"cmake-${CMAKE_VERSION}-linux-${ARCH}.sh\"\nCMAKE_CHECKSUM_NAME=\"cmake-${CMAKE_VERSION}-SHA-256.txt\"\nTMP_DIR=$(mktemp -d -t cmake-XXXXXXXXXX)\n\necho \"${TMP_DIR}\"\ncd \"${TMP_DIR}\"\n\ncurl -sSL \"https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_BINARY_NAME}\" -O\ncurl -sSL \"https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_CHECKSUM_NAME}\" -O\n\nsha256sum -c --ignore-missing \"${CMAKE_CHECKSUM_NAME}\"\nsh \"${TMP_DIR}/${CMAKE_BINARY_NAME}\" --prefix=/opt/cmake --skip-license\n\nln -s /opt/cmake/bin/cmake /usr/local/bin/cmake\n"
  },
  {
    "path": ".github/linters/.hadolint.yaml",
    "content": "ignored:\n    - DL3004\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: build\n\non:\n  push:\n    branches:\n      - master\n    paths:\n      - \"srcs/**\"\n\njobs:\n  linux:\n    runs-on: \"${{ matrix.os }}\"\n    strategy:\n      matrix:\n        os: [ubuntu-22.04]\n    steps:\n      - name: Setup cmake\n        uses: jwlawson/actions-setup-cmake@v1.13\n      - uses: actions/checkout@v3\n      - name: Checkout submodules\n        run: git submodule update --init\n      - name: update\n        run: sudo apt-get update && sudo apt-get upgrade -y\n      - name: install packages\n        run: sudo apt-get install -y -m -f --install-suggests build-essential git libtool libtool-bin automake bison libglib2.0-0 clang llvm-dev libc++-dev findutils libcmocka-dev python3-dev python3-setuptools ninja-build clang-tidy clang-format libyaml-cpp-dev\n      - name: Run cmake\n        run: cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n      - name: Build\n        run: cmake --build build -j\n      - name: Clang format\n        run: cmake --build build --target formatcheck\n      - name: Clang tidy\n        run: cmake --build build --target lint\n      - name: Tests\n        run: cd build/tests && ctest\n"
  },
  {
    "path": ".github/workflows/code-format.yml_bak",
    "content": "name: Formatting\n\non:\n  push:\n    branches:\n      - stable\n      - dev\n  pull_request:\n    branches:\n      - dev # No need for stable-pull-request, as that equals dev-push\n\njobs:\n  code-format-check:\n    name: Check code format\n    if: ${{ 'false' == 'true' }} # Disable the job\n    runs-on: ubuntu-22.04\n    container: docker.io/aflplusplus/aflplusplus:dev\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Format\n        run: |\n          git config --global --add safe.directory /__w/AFLplusplus/AFLplusplus\n          apt-get update\n          apt-get install -y clang-format-${LLVM_VERSION}\n          make code-format\n      - name: Check if code needed formatting\n        run: |\n          git --no-pager -c color.ui=always diff HEAD\n          if ! git diff HEAD --quiet; then\n            echo \"[!] Please run 'make code-format' and push its changes.\"\n            exit 1\n          fi\n"
  },
  {
    "path": ".github/workflows/docker-image.yml",
    "content": "name: Build docker\n\non:\n  push:\n    paths: \n      - \"scripts/dockers/**\"\n\njobs:\n\n  build:\n\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        database: [\"sqlite\", \"mariadb\", \"mysql\", \"postgresql\"]\n    steps:\n    - uses: actions/checkout@v3\n    - name: \"Check file existence\"\n      id: check_files\n      uses: andstor/file-existence-action@v2\n      with:\n        files: \"scripts/dockers/${{matrix.database}}/Dockerfile\"\n    - name: Get changed files in the docs folder\n      id: changed-files-specific\n      uses: tj-actions/changed-files@v34\n      with:\n        files: \"scripts/dockers/${{matrix.database}}/**\"\n    - name: Build the Docker image for each database\n      if: steps.check_files.outputs.files_exists == 'true' && steps.changed-files-specific.outputs.any_changed == 'true'\n      run: docker build . --file Dockerfile \n      working-directory: \"scripts/dockers/${{matrix.database}}\"\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "---\n#################################\n#################################\n## Super Linter GitHub Actions ##\n#################################\n#################################\nname: Lint Code Base\n\n#############################\n# Start the job on all push #\n#############################\non:\n  push:\n    branches-ignore: [master, main]\n    # Remove the line above to run when pushing to master\n    #pull_request:\n    #branches: [master, main]\n\n###############\n# Set the Job #\n###############\njobs:\n  lint:\n    # Name the Job\n    name: Lint Code Base\n    # Set the agent to run on\n    runs-on: ubuntu-latest\n\n    ##################\n    # Load all steps #\n    ##################\n    steps:\n      ##########################\n      # Checkout the code base #\n      ##########################\n      - name: Checkout Code\n        uses: actions/checkout@v3\n        with:\n          # Full git history is needed to get a proper\n          # list of changed files within `super-linter`\n          fetch-depth: 0\n\n      ################################\n      # Run Linter against code base #\n      ################################\n      - name: Lint Code Base\n        uses: github/super-linter@v4\n        env:\n          VALIDATE_ALL_CODEBASE: false\n          DEFAULT_BRANCH: master\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          FILTER_REGEX_EXCLUDE: .*data/fuzz_root.*\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "content": "name: 'Close stale issues and PRs'\non:\n  schedule:\n    - cron: '30 1 * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/stale@v7\n        with:\n          stale-issue-message: 'This issue/pr is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 3 days.'\n          days-before-stale: 14\n          days-before-close: 3\n"
  },
  {
    "path": ".gitignore",
    "content": "build\noutput\n.cache\nTesting\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"AFLplusplus\"]\n\tpath = AFLplusplus\n\turl = https://github.com/AFLplusplus/AFLplusplus.git\n[submodule \"third_party/abseil-cpp\"]\n\tpath = third_party/abseil-cpp\n\turl = https://github.com/abseil/abseil-cpp.git\n"
  },
  {
    "path": ".vscode/c_cpp_properties.json",
    "content": "{\n    \"configurations\": [\n        {\n            \"name\": \"Linux\",\n            \"includePath\": [\n                \"${workspaceFolder}/**\"\n            ],\n            \"defines\": [],\n            \"compilerPath\": \"/usr/bin/clang\",\n            \"cStandard\": \"c17\",\n            \"cppStandard\": \"c++14\",\n            \"intelliSenseMode\": \"linux-clang-x64\",\n            \"configurationProvider\": \"ms-vscode.cmake-tools\"\n        }\n    ],\n    \"version\": 4\n}"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"clang-format.fallbackStyle\": \"Google\",\n  \"editor.formatOnSave\": false,\n  \"editor.formatOnPaste\": false\n}"
  },
  {
    "path": "CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 3.14)\nproject(Squirrel)\n\nset(BUILD_SHARED_LIBS ON)\n\nset(CMAKE_CXX_STANDARD 17)\n\nset(CMAKE_CXX_FLAGS_DEBUG \"${CMAKE_CXX_FLAGS} -g -O2 -fsanitize=address\")\nset(CMAKE_CXX_FLAGS_RELEASE \"${CMAKE_CXX_FLAGS} -O3\")\nset(LINK_FLAGS \"${LINK_FLAGS} -fsanitize=address\")\nfind_package(PkgConfig)\n\noption(ALL \"Build all types of database\" ON)\noption(SQLITE \"Build sqlite\" OFF)\noption(MYSQL \"Build mysql\" OFF)\noption(POSTGRESQL \"Build postgresql\" OFF)\n\nif(SQLITE\n   OR MYSQL\n   OR POSTGRESQL)\n  set(ALL OFF)\nendif()\n\nif(ALL)\n  set(SQLITE ON)\n  set(MYSQL ON)\n  set(POSTGRESQL ON)\nendif()\n\nif(SQLITE)\n  list(APPEND DBMS sqlite)\nendif()\n\nif(MYSQL)\n  list(APPEND DBMS mysql)\n  pkg_check_modules(MySQL REQUIRED mysqlclient>=5.7)\n  add_library(mysql_client OBJECT srcs/internal/client/client_mysql.cc)\n  target_include_directories(mysql_client PUBLIC ${MySQL_INCLUDE_DIRS}\n                                                 srcs/internal/client)\n  target_link_libraries(mysql_client PUBLIC ${MySQL_LIBRARIES}\n                                            ${YAML_CPP_LIBRARIES})\n  target_compile_options(mysql_client PRIVATE -fPIC)\n  list(APPEND LINK_CLIENT mysql_client)\n  list(APPEND CLIENT_DEFINITION __SQUIRREL_MYSQL__)\nendif()\n\nif(POSTGRESQL)\n  list(APPEND DBMS postgresql)\n  find_package(PostgreSQL REQUIRED)\n  add_library(postgresql_client OBJECT\n              srcs/internal/client/client_postgresql.cc)\n  target_include_directories(postgresql_client PUBLIC ${PostgreSQL_INCLUDE_DIRS}\n                                                      srcs/internal/client)\n  target_link_libraries(\n    postgresql_client PUBLIC ${PostgreSQL_LIBRARIES} ${YAML_CPP_LIBRARIES}\n                             absl::strings absl::str_format)\n  target_compile_options(postgresql_client PRIVATE -fPIC)\n  list(APPEND LINK_CLIENT postgresql_client)\n  list(APPEND CLIENT_DEFINITION __SQUIRREL_POSTGRESQL__)\nendif()\n\ninclude(FetchContent)\nfind_package(yaml-cpp REQUIRED)\n# FetchContent_Declare( ${YAML_CPP_LIBRARIES} URL\n# https://github.com/jbeder/${YAML_CPP_LIBRARIES}/archive/refs/tags/${YAML_CPP_LIBRARIES}-0.7.0.zip)\n# FetchContent_MakeAvailable(${YAML_CPP_LIBRARIES})\ninclude_directories(${YAML_INCLUDE_DIRS})\n\n# set_target_properties(${YAML_CPP_LIBRARIES} PROPERTIES COMPILE_FLAGS \"-w\")\n\nset(ABSL_PROPAGATE_CXX_STD ON)\nset(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -w\")\nadd_subdirectory(third_party/abseil-cpp)\nstring(REPLACE \" -w\" \"\" CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\")\n\nset(AFLPP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/AFLplusplus/include)\n\ninclude_directories(${AFLPP_DIR})\n\nforeach(dbms IN LISTS DBMS)\n  add_library(\n    ${dbms}_impl OBJECT\n    srcs/internal/${dbms}/${dbms}.cc\n    srcs/internal/${dbms}/${dbms}.h\n    srcs/internal/${dbms}/srcs/ast.cpp\n    srcs/internal/${dbms}/srcs/mutator.cpp\n    srcs/internal/${dbms}/srcs/utils.cpp\n    srcs/internal/${dbms}/parser/bison_parser.cpp\n    srcs/internal/${dbms}/parser/flex_lexer.cpp)\n  target_include_directories(${dbms}_impl PRIVATE srcs/internal/${dbms}/include\n                                                  srcs)\n  target_compile_options(${dbms}_impl PRIVATE -fPIC)\n  target_link_libraries(${dbms}_impl ${YAML_CPP_LIBRARIES} absl::strings\n                        absl::str_format)\n\n  string(TOUPPER ${dbms} UPPER_CASE_DBMS)\n  add_library(${dbms}_mutator SHARED srcs/custom_mutator.cc srcs/db_factory.cc)\n  target_link_libraries(${dbms}_mutator ${dbms}_impl config_validator)\n  target_include_directories(${dbms}_mutator PRIVATE srcs/internal/${dbms} srcs)\n  # target_compile_options(${dbms}_mutator PRIVATE -fPIC)\n  target_compile_definitions(${dbms}_mutator\n                             PRIVATE __SQUIRREL_${UPPER_CASE_DBMS}__)\nendforeach()\n\nif(MYSQL OR POSTGRESQL)\n  add_executable(db_driver srcs/db_driver.cc)\n  target_link_libraries(db_driver ${YAML_CPP_LIBRARIES} all_client\n                        absl::strings absl::str_format)\n\n  add_executable(test_client srcs/internal/client/test_client.cc)\n  target_link_libraries(test_client all_client ${YAML_CPP_LIBRARIES})\n  target_include_directories(test_client PUBLIC srcs/internal/client)\n\n  add_library(all_client SHARED srcs/internal/client/client.cc)\n  target_include_directories(all_client PUBLIC srcs/internal/client)\n  target_link_libraries(all_client PUBLIC ${LINK_CLIENT})\n  target_compile_definitions(all_client PRIVATE ${CLIENT_DEFINITION})\nendif()\n\nadd_library(config_validator OBJECT srcs/utils/config_validate.cc)\ntarget_link_libraries(config_validator PRIVATE ${YAML_CPP_LIBRARIES}\n                                               absl::strings absl::str_format)\ntarget_include_directories(config_validator PUBLIC srcs/utils)\ntarget_compile_options(config_validator PRIVATE -fPIC)\n\ninclude(lint.cmake)\nadd_subdirectory(tests)\n"
  },
  {
    "path": "CODEOWNERS",
    "content": "* @Changochen @zr950624\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Squirrel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Squirrel, a coverage-guided DBMS fuzzer.\n[![build](https://github.com/s3team/Squirrel/actions/workflows/build.yml/badge.svg)](https://github.com/s3team/Squirrel/actions/workflows/build.yml)\n\n`Squirrel` is a fuzzer for database managment systems (DBMSs).\n\n`Squirrel` was first built on [AFL](https://github.com/google/AFL) and then migrated to [AFLplusplus](https://github.com/AFLplusplus/AFLplusplus) to enjoy the improvement of state-of-the-art fuzzing strategies.\n\n## Currently supported DBMSs\n1. SQLite\n2. PostgreSQL\n3. MySQL\n4. MariaDB\n\n## Build Instruction (Run in docker, recommended)\n\n1. Go to the directory of the dockerfile: `cd scripts/docker/xxx/`, where `xxx` is the database name.\n2. Build the docker: `docker build -t xxx .`.\n3. Run: `docker run -it xxx`.\n\n## Build Instruction (Run on localhost)\n\n### Prerequisite\n\nFor ubuntu 22.04:\n```\nsudo apt install libmysqlclient-dev cmake ninja-build clang pkg-config clang-format libpq-dev libyaml-cpp-dev\n```\n\n#### Build Squirrel\n1. Clone this repo and run `git submodule update --init`.\n2. `cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -Wno-dev`. If you want to compile only the mutator for the specific databases, add `-DXXXXX=ON`, `XXXXX` can be `SQLITE`, `MYSQL` and `POSTGRESQL`. `Mariadb` share the same interface with `MySQL`.\n3. `cmake --build build -j`, the binaries are in `build/`.\n\n\n#### Build AFLplusplus and DBMSs\n1. Build aflplusplus: `cd AFLplusplus && make -j && cd ..`.\n2. Use `afl-cc` and `afl-c++` to instrument your database.\n\n\n### Run\n\n#### Configuration\n\n1. Set up a configuration file in `yaml`. Examples can be found in `data/*.yml`.\n2. Set the enviroment variable \n```bash\nexport SQUIRREL_CONFIG=/path/to/config.yml\nexport AFL_CUSTOM_MUTATOR_ONLY=1\nexport AFL_CUSTOM_MUTATOR_LIBRARY= REPO_DIR/build/libxxxx_mutator.so\nexport AFL_DISABLE_TRIM=1\n```\n\n#### Normal Mode (SQLite)\n\nSame as AFLplusplus: `afl-fuzz -i input -o output -- sqlite_harness`.\n\n#### Client/Server Mode (MySQL/MariaDB/PostgreSQL)\n\n1. Dry run the database to get the `__afl_map_size` and set it to `AFL_MAP_SIZE`.\n2. Run `afl-fuzz -i input -o output -- ./build/db_driver`, it will print the share memory id and wait for 30 seconds.\n3. Start the databse server with `export __AFL_SHM_ID=xxxx`.\n\n## Publications\n<a href=\"https://arxiv.org/pdf/2006.02398.pdf\"><img src=\"https://huhong789.github.io/images/squirrel.png\" align=\"right\" width=\"250\"></a>\n\nMore details can be found in our [CCS 2020 paper](http://arxiv.org/abs/2006.02398). And the bugs found by `Squirrel` can be found in [here](https://github.com/s3team/Squirrel/wiki/Bug-List).\n\n```\nSQUIRREL: Testing Database Management Systems with Language Validity and Coverage Feedback\n\n@inproceedings{zhong:squirrel,\n  title        = {{SQUIRREL: Testing Database Management Systems with Language Validity and Coverage Feedback}},\n  author       = {Rui Zhong and Yongheng Chen and Hong Hu and Hangfan Zhang and Wenke Lee and Dinghao Wu},\n  booktitle    = {Proceedings of the 27th ACM Conference on Computer and Communications Security (CCS)},\n  month        = nov,\n  year         = 2020,\n  address      = {Orlando, USA},\n}\n```\n\n## Special Thanks\n1. Roel Van de Paar ([@mariadb-RoelVandePaar](https://github.com/mariadb-RoelVandePaar)): For his helpful feedback for improving Squirrel.\n\n"
  },
  {
    "path": "data/config_mariadb.yml",
    "content": "---\nrequired: [\"init_lib\", \"data_lib\", \"db\", \"passwd\", \"user_name\", \"host\", \"sock_path\", \"db_prefix\", \"startup_cmd\"]\nshould_exist: [\"init_lib\", \"data_lib\"]\ninit_lib: /home/Squirrel/data/fuzz_root/mysql_init_lib\ndata_lib: /home/Squirrel/data/fuzz_root/global_data_lib_mysql\ndb: mysql\npasswd: ''\nuser_name: dobigthing\nhost: localhost\nsock_path: /tmp/mysql.sock\ndb_prefix: test\n# It is important that the command should run on background\nstartup_cmd: \"/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --log-error=err_log.err --pid-file=server_pid.pid --max_statement_time=1 &\"\n"
  },
  {
    "path": "data/config_mysql.yml",
    "content": "---\nrequired: [\"init_lib\", \"data_lib\", \"db\", \"passwd\", \"user_name\", \"host\", \"sock_path\", \"db_prefix\", \"startup_cmd\"]\nshould_exist: [\"init_lib\", \"data_lib\"]\ninit_lib: /home/Squirrel/data/fuzz_root/mysql_init_lib\ndata_lib: /home/Squirrel/data/fuzz_root/global_data_lib_mysql\ndb: mysql\npasswd: ''\nuser_name: root\nhost: localhost\nsock_path: /tmp/mysql.sock\ndb_prefix: test\n# It is important that the command should run on background\nstartup_cmd: \"/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --log-error=err_log.err --pid-file=server_pid.pid --max-execution-time=1000 &\"\n"
  },
  {
    "path": "data/config_postgresql.yml",
    "content": "---\nrequired: [\"init_lib\", \"data_lib\", \"db\", \"passwd\", \"user_name\", \"host\", \"db_name\", \"startup_cmd\"]\nshould_exist: [\"init_lib\", \"data_lib\"]\ninit_lib: /home/Squirrel/data/fuzz_root/pqsql_init_lib\ndata_lib: /home/Squirrel/data/fuzz_root/pqsql_data_lib\ndb: postgresql\npasswd: ''\nuser_name: dobigthing\ndb_name: postgres\nhost: localhost\nport: 5432\nstartup_cmd: \"/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data &\"\n"
  },
  {
    "path": "data/config_sqlite.yml",
    "content": "---\nrequired: [\"init_lib\", \"pragma\"]\nshould_exist: [\"init_lib\", \"pragma\"]\ninit_lib: /home/Squirrel/data/fuzz_root/init_lib\npragma: /home/Squirrel/data/fuzz_root/pragma\ndb: sqlite\n"
  },
  {
    "path": "data/fuzz_root/global_data_lib_mysql",
    "content": "DataFunctionName CUME_DIST\nDataFunctionName DENSE_RANK\nDataFunctionName FIRST_VALUE\nDataFunctionName LAG\nDataFunctionName LAST_VALUE\nDataFunctionName LEAD\nDataFunctionName NTH_VALUE\nDataFunctionName NTILE\nDataFunctionName PERCENT_RANK\nDataFunctionName RANK\nDataFunctionName ROW_NUMBER\n \nDataFunctionName AVG\nDataFunctionName BIT_AND\nDataFunctionName BIT_OR\nDataFunctionName BIT_XOR\nDataFunctionName COUNT\nDataFunctionName JSON_ARRAYAGG\nDataFunctionName JSON_OBJECTAGG\nDataFunctionName MAX\nDataFunctionName MIN\nDataFunctionName STDDEV_POP\nDataFunctionName STDDEV\nDataFunctionName STD\nDataFunctionName STDDEV_SAMP\nDataFunctionName SUM\nDataFunctionName VAR_POP\nDataFunctionName VARIANCE\nDataFunctionName VAR_SAMP\n"
  },
  {
    "path": "data/fuzz_root/global_data_lib_pqsql",
    "content": "DataFunctionName array_agg\nDataFunctionName avg\nDataFunctionName bit_and\nDataFunctionName bit_or\nDataFunctionName bool_and\nDataFunctionName bool_or\nDataFunctionName count\nDataFunctionName every\nDataFunctionName json_agg\nDataFunctionName jsonb_agg\nDataFunctionName json_object_agg\nDataFunctionName jsonb_object_agg\nDataFunctionName max\nDataFunctionName min\nDataFunctionName string_agg\nDataFunctionName sum\nDataFunctionName xmlagg\nDataFunctionName corr\nDataFunctionName covar_pop\nDataFunctionName covar_samp\nDataFunctionName regr_avgx\nDataFunctionName regr_avgy\nDataFunctionName regr_count\nDataFunctionName regr_intercept\nDataFunctionName regr_r2\nDataFunctionName regr_slope\nDataFunctionName regr_sxx\nDataFunctionName regr_sxy\nDataFunctionName regr_syy\nDataFunctionName stddev\nDataFunctionName stddev_pop\nDataFunctionName stddev_samp\nDataFunctionName variance\nDataFunctionName var_pop\nDataFunctionName var_samp\nDataFunctionName mode\nDataFunctionName percentile_cont\nDataFunctionName percentile_disc\nDataFunctionName rank\nDataFunctionName dense_rank\nDataFunctionName percent_rank\nDataFunctionName cume_dist\nDataFunctionName GROUPING\nDataDatabase x\n"
  },
  {
    "path": "data/fuzz_root/init_lib/1.txt",
    "content": "CREATE TABLE t0(c0, c1 AS(c0 + c2), c2 AS(c1) CHECK(c2));\nUPDATE t0 SET c0 = NULL\n"
  },
  {
    "path": "data/fuzz_root/init_lib/10.txt",
    "content": "  CREATE TABLE t1(a, b);\n  CREATE TABLE t2(c, d);\n  CREATE TABLE t3(e, f);\n\n  INSERT INTO t1 VALUES(1, 1);\n  INSERT INTO t2 VALUES(1, 1);\n  INSERT INTO t3 VALUES(1, 1);\n\n  SELECT d IN (SELECT sum(c) OVER (ORDER BY e+c) FROM t3) FROM (\n    SELECT * FROM t2\n  );\n"
  },
  {
    "path": "data/fuzz_root/init_lib/11.txt",
    "content": "  ATTACH '' AS aux;\n  CREATE TABLE aux.t1(a, b, c);\n  CREATE TEMP TRIGGER tmp AFTER INSERT ON t1 BEGIN\n    SELECT 'abc';\n  END;\n\n  DETACH aux;\n  DROP TRIGGER tmp;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/12.txt",
    "content": "CREATE TABLE t1(a,b);\nINSERT INTO t1 VALUES(1,2);\nUPDATE t1 SET (a,a,a,b)=(SELECT 99,100);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/13.txt",
    "content": "CREATE TABLE t0(c0);\nINSERT INTO t0(c0) VALUES (0);\nSELECT * FROM t0 WHERE EXISTS (SELECT MIN(c0)  OVER (), CUME_DIST() OVER () FROM t0) BETWEEN 1 AND 1;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/14.txt",
    "content": "CREATE TABLE t1(a);\nCREATE TABLE t2(b);\nCREATE TRIGGER r1 AFTER INSERT ON t2 BEGIN\n  INSERT INTO t1(a) VALUES(99);\nEND;\nDROP TABLE t1;\nALTER TABLE t2 RENAME TO t3;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/15.txt",
    "content": "CREATE TABLE artists (\n  id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n  name varchar(255)\n);\nCREATE TABLE albums (\n  id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n  name varchar(255),\n  artist_id integer REFERENCES artists\n);\nINSERT INTO artists (name) VALUES ('Ar');\nINSERT INTO albums (name, artist_id) VALUES ('Al', 1);\nSELECT artists.*\nFROM artists\nINNER JOIN artists AS 'b' ON (b.id = artists.id)\nWHERE (artists.id IN (\n  SELECT albums.artist_id\n  FROM albums\n  WHERE ((name = 'Al')\n    AND (albums.artist_id IS NOT NULL)\n    AND (albums.id IN (\n      SELECT id\n      FROM (\n        SELECT albums.id,\n               row_number() OVER (\n                 PARTITION BY albums.artist_id\n                 ORDER BY name\n               ) AS 'x'\n        FROM albums\n        WHERE (name = 'Al')\n      ) AS 't1'\n      WHERE (x = 1)\n    ))\n    AND (albums.id IN (1, 2)))\n));\n"
  },
  {
    "path": "data/fuzz_root/init_lib/16.txt",
    "content": "CREATE TABLE \"sqlite1234\" (\"id\" integer);\nALTER TABLE \"sqlite1234\" RENAME TO \"User\";\nSELECT name, sql FROM sqlite_master WHERE sql IS NOT NULL;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/17.txt",
    "content": "CREATE TABLE IF NOT EXISTS t1(id INTEGER PRIMARY KEY);\nINSERT INTO t1 VALUES(1);\nSELECT a.id FROM t1 AS a JOIN t1 AS b ON a.id=b.id WHERE a.id IN (1,2,3);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/18.txt",
    "content": "CREATE TABLE t1(a INTEGER PRIMARY KEY);\nINSERT INTO t1(a) VALUES(1),(2),(3);\nCREATE TABLE t2(x INTEGER PRIMARY KEY, y INT);\nINSERT INTO t2(y) VALUES(2),(3);\nSELECT * FROM t1, t2 WHERE a=y AND y=3;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/19.txt",
    "content": "SELECT +sum(0)OVER() ORDER BY +sum(0)OVER();\n"
  },
  {
    "path": "data/fuzz_root/init_lib/2.txt",
    "content": "CREATE TABLE t0(c0 AS ((c4, 9, c4) < ('a', c1, 1)), c1 AS (1) NOT NULL, c2, c3 CHECK  ((x'56', 0) = (c1, 0)), c4 NOT NULL);\nPRAGMA integrity_check;\nINSERT INTO t0 VALUES (0, 0, 0), (0, 0, 0);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/20.txt",
    "content": "CREATE TABLE t1(aa, bb);\nCREATE INDEX t1x1 on t1(abs(aa), abs(bb));\nINSERT INTO t1 VALUES(-2,-3),(+2,-3),(-2,+3),(+2,+3);\nSELECT * FROM (t1)\n WHERE ((abs(aa)=1 AND 1=2) OR abs(aa)=2)\n   AND abs(bb)=3;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/21.txt",
    "content": "CREATE TABLE t1(x);\nINSERT INTO t1 VALUES('a'), ('b'), ('c');\n\nCREATE TABLE t2(a, b);\nINSERT INTO t2 VALUES('X', 1), ('X', 2), ('Y', 2), ('Y', 3);\n\nSELECT x, (SELECT sum(b)\n            OVER (PARTITION BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)\n            FROM t2 WHERE b<x ) FROM t1;\n\n"
  },
  {
    "path": "data/fuzz_root/init_lib/3.txt",
    "content": "CREATE TABLE t0(c0 NOT NULL AS(c1), c1);\nREPLACE INTO t0(c1) VALUES(NULL);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/4.txt",
    "content": "CREATE TABLE t0(c0, c1, c2 AS(1), PRIMARY KEY(c0) FOREIGN KEY(c2) REFERENCES t0);\nCREATE VIRTUAL TABLE vt0 USING fts4;\nCREATE INDEX i0 ON t0(c2, 0 BETWEEN '' AND c1 COLLATE BINARY, CASE '' WHEN c3 THEN 0 WHEN 0 THEN 0 WHEN '' THEN 0 WHEN 0 THEN c0 ELSE c1 END);\nINSERT INTO t0 VALUES (0, 0), ('', 0);\nPRAGMA foreign_keys = true;\nANALYZE;\nUPDATE t0 SET c1 = c0;\n"
  },
  {
    "path": "data/fuzz_root/init_lib/5.txt",
    "content": "CREATE TABLE t0 (c0, c1 a UNIQUE AS (1), c2, c3, FOREIGN KEY(c3) REFERENCES t0(c1));\nCREATE VIRTUAL TABLE vt0 USING fts4(c0);\nPRAGMA foreign_keys = true;\nCREATE INDEX i0 ON t0(0) WHERE 0;\nINSERT INTO vt0 VALUES (0);\nREPLACE INTO t0(c3, c2, c0) VALUES (0, 0, 0), (0, 0, 0);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/6.txt",
    "content": "PRAGMA temp_store = MEMORY;\nCREATE TEMP TABLE t0(c0, c1 AS(1) CHECK(NULL) UNIQUE NOT NULL, c2 CHECK(1.0) PRIMARY KEY) WITHOUT ROWID;\nCREATE UNIQUE INDEX e ON t0(CAST(0.0 AS INT)) WHERE 0;\nREINDEX;\nINSERT INTO t0(c2) VALUES (0), (1);\nREPLACE INTO t0(c2, c0) VALUES (0, 0), (x'9b', NULL);\nUPDATE t0 SET c2 = 0\n"
  },
  {
    "path": "data/fuzz_root/init_lib/7.txt",
    "content": "CREATE TABLE t0(c0 INTEGER PRIMARY KEY GENERATED ALWAYS AS(1), c1 UNIQUE GENERATED ALWAYS AS(1), c2 UNIQUE);\nINSERT INTO t0 VALUES(NULL);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/8.txt",
    "content": "PRAGMA recursive_triggers = true;\nCREATE TABLE t0(a, b, c UNIQUE);\nCREATE UNIQUE INDEX i0 ON t0(b) WHERE a;\nCREATE TRIGGER tr0 AFTER DELETE ON t0 BEGIN\n  DELETE FROM t0;\nEND;\nINSERT INTO t0(a,b,c) VALUES(0,0,9),(1,1,1);\nREPLACE INTO t0(a,b,c) VALUES(2,0,9);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/9.txt",
    "content": "CREATE TABLE item (id int, price int);\nINSERT INTO item (id, price) VALUES (1, 1);\nSELECT COUNT(id) FILTER (WHERE double_price > 42) FROM (\n  SELECT id, (price * 2) as double_price FROM item\n);\n"
  },
  {
    "path": "data/fuzz_root/init_lib/new_code",
    "content": "CREATE TABLE x ( x , x ) ; \nCREATE INDEX x ON x ( x ) ; \nCREATE INDEX x ON x ( x , x ) ; \nANALYZE ; \nSELECT * FROM x ORDER BY 10 , 10 ; \nINSERT INTO x ( x , x , x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x , x , x ) VALUES ( 10 , 'y' , 'y' , 'y' , 'y' , 'y' ) ; \nSELECT x , typeof ( x ) FROM x ORDER BY x ; \nINSERT INTO x VALUES ( 'y' , 'y' ) ; \nCREATE TABLE x ( x , x , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ; \nSELECT * FROM x WHERE x = 'y' ORDER BY x ; \nDROP TABLE IF EXISTS x ; \nCREATE TABLE x ( x TEXT UNIQUE , x ) ; \nINSERT INTO x ( x ) VALUES ( 10 ) ; \nSELECT quote ( - 'y' ) , quote ( x ) , quote ( - 'y' >= x ) FROM x ; \nSELECT * FROM x WHERE - 'y' >= x ; \nSELECT 10 < x FROM x ; \nSELECT 10 FROM x WHERE 10 < x ; \nCREATE TABLE x ( x INT PRIMARY KEY ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 0.1 ) ; \nPRAGMA x = x ; \nCREATE TABLE x ( x INT , x ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ; \nCREATE TABLE x ( x TEXT , x ) ; \nCREATE TABLE x AS SELECT * FROM x ; \nSELECT * FROM x JOIN x USING ( id ) ; \nCREATE TABLE x ( x ) ; \nINSERT INTO x VALUES ( 10 ) ; \nINSERT INTO x SELECT x + 10 FROM x ; \nINSERT INTO x SELECT x + 10 FROM x ORDER BY x LIMIT 10 ; \nSELECT x_count ( * ) FROM x ; \nSELECT x_count ( x ) FROM x ; \nCREATE TABLE x ( x INT ) ; INSERT INTO x ( x ) VALUES ( 10 ) ; \nSELECT ( SELECT sum ( x + ( SELECT x ) ) FROM x ) FROM x ; \nSELECT ( SELECT sum ( x + x ) FROM x ) FROM x ; \nCREATE TABLE x ( x INT ) ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT min ( ( SELECT count ( x ) FROM x ) ) FROM x ; \nSELECT max ( ( SELECT x FROM SELECT count ( * ) AS a FROM x AS s ) ) FROM x ; \nINSERT INTO x VALUES ( 10 , 10 ) ; \nSELECT 'y' , * FROM x ; \nINSERT INTO x SELECT x , x , x FROM x WHERE x != 'y' ; \nSELECT x , x , x FROM x ORDER BY x , x DESC , x ; \nALTER TABLE x RENAME TO x ; \nSELECT * FROM x ; \nDELETE FROM x ; \nINSERT INTO x SELECT x , x , x FROM x ; \nATTACH 'y' AS x ; \nCREATE TABLE x ( x PRIMARY KEY , x , x ) ; \nCREATE TABLE x . x ( x PRIMARY KEY , x , x ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' ) ; \nINSERT INTO x . x VALUES ( 'y' , 'y' , 'y' ) ; \nSELECT * FROM x WHERE x = 'y' ; \nALTER TABLE x . x RENAME TO x ; \nSELECT * FROM x . x WHERE x = 'y' ; \nCREATE TABLE x ( x , x , x ) ; \nDROP TABLE x ; \nEND ; \nDROP TRIGGER x ; \nUPDATE x SET x = 'y' WHERE x = 'y' ; \nINSERT INTO x VALUES ( NULL ) ; \nSELECT x FROM x ; \nSELECT x FROM x WHERE x = 10 ; \nSELECT * FROM x \nSELECT x , x \nSELECT typeof ( x ) , x , typeof ( x ) , x FROM x ; \nCREATE TABLE x ( x INTEGER ) ; \nSELECT sum ( x ) FROM x ; \nSELECT x , sum ( x ) FROM x GROUP BY x ; \nSELECT sqlite_rename_table ( 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nALTER TABLE x ADD COLUMN x ; \nCREATE VIEW x AS SELECT * FROM x ; \nSELECT x FROM x WHERE x GLOB 'y' ORDER BY 10 ; \nCREATE TABLE x ( x UNIQUE ) ; \nALTER TABLE x ADD COLUMN x UNIQUE ; \nALTER TABLE x ADD COLUMN x PRIMARY KEY ; \nINSERT INTO x VALUES ( 'y' , 0.1 , 10 ) ; \nINSERT INTO x VALUES ( 'y' , 0.1 , 10 , 'y' ) ; \nSELECT * FROM x ORDER BY x ; \nUPDATE x SET x = 10 WHERE x = 10 ; \nSELECT x FROM x ORDER BY x ; \nSELECT * FROM x WHERE x = 10 ; \nSELECT sum ( x ) , x FROM x GROUP BY x ; \nUPDATE x SET x = 10 WHERE x IS NULL AND x < 10 ; \nSELECT typeof ( x ) FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , NULL ) ; \nDROP VIEW x ; \nUPDATE x SET x = x * 10 WHERE x < 10 ; \nUPDATE x SET x = x * 10 ; \nCREATE TABLE x . x ( x , x ) ; \nSELECT * FROM x LIMIT 10 ; \nSELECT x , typeof ( x ) , x , typeof ( x ) , x , typeof ( x ) FROM x LIMIT 10 ; \nDELETE FROM x WHERE x = 10 ; \nINSERT INTO x VALUES ( 'y' ) ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) FROM x LIMIT 10 ; \nDELETE FROM x WHERE x = 'y' ; \nALTER TABLE x ADD x ; \nSELECT x FROM x WHERE x = 'y' ; \nALTER TABLE x ADD x CHECK( x > x ) ; \nSELECT x FROM x WHERE x = 'y' AND x = 'y' ; \nALTER TABLE x ADD x PRIMARY KEY ; \nPRAGMA x = 10 ; \nPRAGMA x ; \nCREATE TABLE x . x AS SELECT * FROM x ; \nPRAGMA x . x = 10 ; \nSELECT x FROM x . x ; \nALTER TABLE x . x ADD COLUMN x VARCHAR(128) ; \nSELECT * FROM x . x ; \nPRAGMA x . x ; \nDROP TABLE x . x ; \nVACUUM ; \nSELECT typeof ( x ) , x FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x ) ; \nALTER TABLE x RENAME x TO x ; \nALTER TABLE x RENAME COLUMN x TO x ; \nUPDATE x SET x = x + 10 , x = 10 WHERE x = 10 ; \nINSERT INTO x ( x , x , x ) SELECT 10 , 10 , 10 WHERE 10 ; \nSELECT x FROM x WHERE x IN ( 'y' , 'y' ) ; \nSELECT x FROM x WHERE x IN ( 'y' , 'y' , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nUPDATE x SET x = 10 ; \nCREATE VIEW x AS SELECT x , x , x FROM x ; \nCREATE VIEW x AS SELECT x , x + x , x , x + x FROM x , x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x ) ; \nCREATE VIEW x AS SELECT x + x CONCAT coalesce ( x , x ) FROM x , x WHERE x = x GROUP BY x HAVING x > 10 ; \nCREATE VIEW x AS SELECT x FROM x UNION ALL SELECT x FROM x ; \nCREATE VIEW x AS SELECT x , x FROM x ; \nCREATE VIRTUAL TABLE x USING echo ( x1 ) ; \nCREATE VIEW x AS SELECT x , x FROM x , x ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE VIEW x ( x , x ) AS SELECT * FROM x ; \nCREATE TABLE x ( x INTEGER , x TEXT UNIQUE ) ; \nCREATE TABLE x ( x UNIQUE , x , x ) ; \nDROP TRIGGER IF EXISTS x ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , 'y' , 'y' , 10 , 'y' , 10 ) ,( 'y' , 'y' , 'y' , 'y' , 'y' , 10 , 'y' , 10 ) ,( 'y' , 'y' , 'y' , 'y' , 'y' , 10 , 'y' , 10 ) ,( 'y' , 'y' , 'y' , 'y' , 'y' , 10 , 'y' , 10 ) ; \nSELECT sqlite_rename_column ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x AS d FROM x WHERE x = 10 ; \nCREATE VIEW x AS SELECT x AS d FROM x WHERE x = 10 ; \nCREATE UNIQUE INDEX x ON x ( x ) ; \nCREATE TABLE x . x ( x ) ; \nCREATE VIEW x ( x ) AS SELECT coalesce ( x , x ) FROM x , x WHERE x = x ; \nCREATE INDEX x ON x ( x ) WHERE x > 10 ; \nCREATE VIEW x AS SELECT x , x , x , x FROM x AS one , x ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , NULL , 10 ) ,( 'y' , 'y' , NULL , 'y' , 10 ) ,( 'y' , NULL , 'y' , 'y' , 10 ) ; \nCREATE TABLE x . x ( x INTEGER PRIMARY KEY , x ) ; \nINSERT INTO x . x VALUES ( 10 , 10 ) ; \nINSERT INTO x . x VALUES ( NULL , 10 ) ; \nSELECT x FROM x . x WHERE x = 'y' ; \nCREATE TRIGGER x AFTER INSERT ON x WHEN x IS NULL BEGIN SELECT 10 , 10 , 10 ; END ; \nCREATE TEMP TRIGGER x AFTER INSERT ON x . x BEGIN SELECT 10 , 10 , 10 ; END ; \nCREATE TABLE x . x ( x , x , x ) ; \nINSERT INTO x . x VALUES ( 10 , 10 , 10 ) ; \nSELECT x , x FROM x ; \nCREATE VIRTUAL TABLE x USING tcl ( tcl_command ) ; \nSELECT sqlite_rename_table ( x , 10 , 10 , x , x , x , x ) FROM x ; \nCREATE TABLE x ( x INTEGER NOT NULL PRIMARY KEY ) ; \nCREATE VIEW x AS SELECT x FROM x ; \nCREATE TABLE x ( x INTEGER NOT NULL ) ; \nCREATE VIEW x AS SELECT x AS f1 FROM x ; \nUPDATE x SET x = 'y' WHERE x = 10 ; \nSELECT x , x FROM x WHERE x IS NOT NULL ; \nCREATE TABLE x ( x PRIMARY KEY , x ) ; \nSELECT x FROM x WHERE x LIKE 'y' ; \nCREATE TABLE x ( x , x , x , x , x , x ) ; \nCREATE TABLE x ( x , x , x , x ) ; \nSELECT x , * FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x , x , x FROM x UNION SELECT x , x , x FROM x ORDER BY x , x ; \nSELECT x , x , x FROM x ; \nCREATE VIEW x AS SELECT * FROM x WHERE ( x = 10 AND 10 ) OR x = 10 ; \nSELECT x ; \nBEGIN ; \nCOMMIT ; \nSELECT x , x , x , x FROM x WHERE x = 'y' AND x != 'y' ; \nWITH t4 AS ( SELECT * FROM x ) SELECT 10 ; \nANALYZE x . x ; \nANALYZE x ; \nSELECT x , x FROM x ORDER BY x ; \nCREATE TABLE x AS SELECT x , x , x AS c , 'y' AS d FROM x ; \nCREATE INDEX x ON x ( x , x , x , x ) ; \nINSERT INTO x VALUES ( NULL , NULL , NULL ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 ) ; \nINSERT INTO x SELECT x + 10 , x + 10 , x + 10 , x + 10 FROM x ; \nSELECT DISTINCT x FROM x ORDER BY 10 ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nINSERT INTO x SELECT * FROM x ; \nINSERT INTO x ( x ) SELECT x FROM x ; \nCREATE VIRTUAL TABLE x USING wholenumber ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nSELECT * , 'y' FROM x WHERE x BETWEEN 10 AND 10 ORDER BY x ; \nSELECT count ( x ) FROM x ; \nCREATE TABLE x ( x PRIMARY KEY ) ; \nINSERT INTO x VALUES ( 'y' , NULL , 'y' ) ; \nSELECT 10 FROM x WHERE x IN ( 10 , 10 , 10 ) ; \nATTACH DATABASE 'y' AS x ; \nDETACH DATABASE x ; \nDETACH x ; \nUPDATE x SET x = x + 10 ; \nUPDATE x . x SET x = x + 10 ; \nSELECT x , x , x FROM x . x ; \nSELECT * FROM x WHERE x > 10 ; \nUPDATE x SET x = x + 10 WHERE x = 10 ; \nSELECT * FROM x . x UNION ALL SELECT * FROM x . x ; \nCREATE VIEW x AS SELECT x * 10 + x FROM x ; \nATTACH printf ( 'y' , 10 ) AS x ; \nINSERT INTO x . x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE TABLE x ( x TEXT NOT NULL PRIMARY KEY ) ; \nCREATE TABLE x . x ( x INTEGER , x INTEGER , x INTEGER , x ) ; \nUPDATE x . x SET x = 10 ; \nROLLBACK ; \nCREATE VIEW x . x AS SELECT * FROM x ; \nINSERT INTO x . x VALUES ( 'y' , 'y' ) ; \nDROP VIEW x . x ; \nDROP TRIGGER x . x ; \nSELECT count ( * ) FROM x ; \nINSERT INTO x . x VALUES ( 10 , 10 , 10 , 10 , 10 ) ; \nPRAGMA x . x = x ; \nCREATE VIEW x AS SELECT x + 10 , x + 10 FROM x ; \nDELETE FROM x WHERE x = 10 AND x = 10 AND x = 10 ; \nREINDEX x ; \nCREATE INDEX x ON x ( x , x , x ) ; \nSELECT x FROM x 'y' ORDER BY x ; \nCREATE VIEW x AS SELECT x + x AS x FROM x ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 10 ) ; \nUPDATE x SET x = 10 WHERE x = 'y' ; \nUPDATE x SET x = NULL WHERE x = 'y' ; \nDELETE FROM x WHERE x >= 10 ; \nINSERT INTO x SELECT NULL , x + 10 FROM x ; \nINSERT INTO x SELECT NULL , x FROM x ; \nSELECT 10 , x FROM x WHERE x = 'y' ; \nSELECT 10 , * FROM x . x ; \nSELECT * FROM x UNION ALL SELECT * FROM x ; \nINSERT INTO x SELECT x + 10 , x FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x + 10 ; \nCREATE VIEW x AS SELECT x , sum ( x ) AS m FROM x GROUP BY x ; \nCREATE INDEX x ON x ( x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ; \nSELECT * , 'y' FROM x , x WHERE x = 10 AND x = 10 ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = 10 AND x = 10 ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = 10 WHERE x = 10 ; \nSELECT * , 'y' FROM x LEFT JOIN x WHERE x = 10 AND x = 10 ; \nCREATE TABLE x ( x TEXT ) ; \nCREATE TABLE x ( x TEXT , x TEXT ) ; \nCREATE INDEX x ON x ( x , x ) WHERE x = 'y' ; \nINSERT INTO x VALUES ( 'y' , 0.1 ) ; \nSELECT ( SELECT sum ( x ) FROM x WHERE x = 'y' ) FROM x ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 10 ) ; \nCREATE TABLE x ( x ) ; INSERT INTO x ( x ) VALUES ( 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nSELECT * FROM x WHERE ( x = 10 OR x = 10 ) AND x IN ( SELECT x FROM SELECT DISTINCT x FROM x WHERE x = 10 ) ; \nSELECT * , 'y' FROM x WHERE ( x = 10 OR x = 10 ) AND x = ( SELECT x FROM SELECT DISTINCT x FROM x WHERE x = 10 ) ; \nINSERT INTO x SELECT 'y' CONCAT x FROM x ; \nSELECT * FROM x WHERE x = 'y' AND x = 'y' AND x = 'y' ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) , randstr ( 10 , 10 ) FROM x ; \nCREATE TABLE x ( x INT PRIMARY KEY , x TEXT ) ; \nUPDATE x SET x = 10 WHERE 10 ; \nBEGIN TRANSACTION ; \nEND TRANSACTION ; \nCREATE TABLE x ( x INT , x INT , x INT ) ; \nSELECT x FROM x WHERE x = 'y' OR x = 'y' ORDER BY x ; \nSELECT * FROM x WHERE x < 10 ; \nCREATE TABLE x ( x INT UNIQUE , x , x ) ; \nSELECT md5sum ( x , x , x ) FROM x ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) FROM x ; \nDELETE FROM x WHERE random () % 10 != 10 ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) CONCAT x FROM x ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) FROM x WHERE random () % 10 == 10 ; \nCREATE VIRTUAL TABLE x USING tcl ( vtab_command ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' ) ; \nSELECT * FROM x WHERE x = AND x BETWEEN AND AND x IN ( 10 , 10 , 10 , 10 ) ; \nCREATE VIRTUAL TABLE x USING tcl ( vtab_cmd t1 {a b} ) ; \nCREATE VIRTUAL TABLE x USING tcl ( vtab_cmd t2 {c d} ) ; \nCREATE VIRTUAL TABLE x USING tcl ( vtab_cmd t3 {e f} ) ; \nCREATE VIRTUAL TABLE x USING tcl ( vtab_cmd 0 ) ; \nSELECT * FROM x WHERE x LIKE 'y' ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' ) ; \nCREATE TABLE x ( x INTEGER , x TEXT ) ; \nCREATE TABLE x ( x INT , x TEXT ) ; \nCREATE TABLE x ( x INT , x INT , x TEXT ) ; \nSELECT * FROM x LEFT JOIN x ON x = x WHERE x IS NULL ; \nCREATE TABLE x ( x INT , x INT , x INT , x INT ) ; \nCREATE TABLE x ( x TEXT , x TEXT , x TEXT ) ; \nSELECT x FROM x WHERE x == 'y' ; \nINSERT INTO x ( x , x , x ) VALUES ( 'y' , 'y' , 'y' ) ; \nUPDATE x SET x = x CONCAT x ; \nSELECT x , length ( x ) , x FROM x ; \nUPDATE x SET x = zeroblob ( 10 ) ; \nUPDATE x SET x = zeroblob ( 10 ) WHERE x = 10 ; \nSELECT * FROM x UNION SELECT * FROM x ; \nUPDATE x SET x = 'y' ; \nROLLBACK TO x ; \nUPDATE x SET x = upper ( x ) ; \nINSERT INTO x SELECT x + 10 , x + 10 , x + 10 FROM x ; \nINSERT INTO x VALUES ( 'y' , 'y' , NULL ) ; \nINSERT INTO x VALUES ( 0.1 , 0.1 , 0.1 ) ; \nINSERT INTO x VALUES ( NULL , NULL , NULL , NULL , NULL ) ; \nINSERT INTO x VALUES ( 'y' , NULL , NULL , NULL , NULL ) ; \nINSERT INTO x VALUES ( 10 , NULL ) ; \nCREATE TABLE x ( x VARCHAR(10) , x INTEGER ) ; \nCREATE TABLE x ( x VARCHAR(15) , x FLOAT ) ; \nSELECT CAST ( 'y' AS INTEGER ) ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nSELECT 'y' - 10 ; \nSELECT 10 - 10 ; \nSELECT - 'y' ; \nSELECT 'y' + 10 ; \nDELETE FROM x WHERE x IS NULL OR x != 10 ; \nUPDATE x SET x = 10 WHERE x == 10 ; \nINSERT INTO x VALUES ( 10 , 0.1 , 'y' ) ; \nINSERT INTO x VALUES ( 0.1 , NULL , NULL ) ; \nINSERT INTO x VALUES ( NULL , 10 , NULL ) ; \nINSERT INTO x VALUES ( NULL , NULL , 0.1 ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 ) ; \nUPDATE x SET x = 10 , x = 10 ; \nINSERT OR IGNORE INTO x VALUES ( 10 , 0.1 ) ; \nINSERT INTO x VALUES ( 10 , 0.1 ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 , 0.1 ) ; \nINSERT OR IGNORE INTO x VALUES ( 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nUPDATE x SET x = x * 10 WHERE x = 10 ; \nCREATE VIEW x ( x ) AS SELECT x FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER ) ; \nSELECT count ( * ) , x FROM x WHERE x = 10 AND x <= 10 GROUP BY x ORDER BY 10 ; \nSELECT count ( * ) , x FROM x WHERE x = 10 AND x = 10 GROUP BY x ORDER BY 10 ; \nSELECT count ( * ) , x FROM x WHERE x = 10 AND x BETWEEN 10 AND 10 GROUP BY x ORDER BY 10 ; \nSELECT count ( * ) , min ( x ) , max ( x ) FROM x WHERE x = 10 ; \nSELECT x FROM x WHERE x IN ( 10 , 10 ) ORDER BY x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT NOT NULL , x INTEGER ) ; \nSELECT * FROM x , x WHERE x = x AND x = 10 AND x = 10 ; \nINSERT INTO x VALUES ( NULL , NULL ) ; \nSELECT x FROM x ORDER BY 10 ; \nINSERT INTO x VALUES ( 'y' , 10 ) ; \nSELECT * FROM x ORDER BY 10 ; \nSELECT x AS c1 , x AS c2 FROM x ORDER BY x ; \nSELECT x + 10 FROM x ORDER BY 10 ; \nSELECT x CONCAT 'y' FROM x ORDER BY 10 ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' ) ; \nSELECT x FROM x WHERE x = 'y' ORDER BY x ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x FROM x WHERE x > 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x > 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE x < 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x < 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE x >= 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x >= 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE x <= 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x <= 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE x BETWEEN 'y' AND 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x BETWEEN 'y' AND 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE x IN ( 'y' , 'y' ) ORDER BY 10 , x ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x WHERE x IN ( 'y' , 'y' ) ) ; \nSELECT x FROM x WHERE NOT x > 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE NOT x > 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE NOT x < 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE NOT x < 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE NOT x = 'y' ; \nSELECT x FROM x WHERE NOT x >= 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE NOT x >= 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE NOT x <= 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE NOT x <= 'y' ORDER BY 10 , x ; \nSELECT x FROM x WHERE NOT CASE x WHEN 'y' THEN 10 ELSE 10 END ; \nSELECT x FROM x WHERE NOT x IN ( 'y' , 'y' ) ; \nSELECT x FROM x WHERE NOT x IN ( SELECT x FROM x WHERE x IN ( 'y' , 'y' ) ) ; \nSELECT x > 'y' FROM x ; \nSELECT x < 'y' FROM x ; \nSELECT x = 'y' FROM x ; \nSELECT x <= 'y' FROM x ; \nSELECT x >= 'y' FROM x ; \nSELECT x BETWEEN 'y' AND 'y' FROM x ; \nSELECT CASE x WHEN 'y' THEN 10 ELSE 10 END FROM x ; \nSELECT x IN ( 'y' , 'y' ) FROM x ; \nSELECT x IN ( SELECT x FROM x WHERE x IN ( 'y' , 'y' ) ) FROM x ; \nSELECT x FROM x , x WHERE x = x ; \nSELECT x FROM x JOIN x USING ( b ) ; \nSELECT x FROM x NATURAL JOIN x ; \nSELECT x FROM x LEFT OUTER JOIN x USING ( b ) ORDER BY x ; \nSELECT x , x FROM x LEFT OUTER JOIN x USING ( b ) ; \nSELECT count ( * ) FROM x GROUP BY x ; \nSELECT * FROM x GROUP BY x ; \nSELECT DISTINCT x FROM x ; \nSELECT x FROM x UNION SELECT x FROM x ; \nSELECT x FROM x EXCEPT SELECT x FROM x ; \nSELECT x FROM x INTERSECT SELECT x FROM x ; \nSELECT x FROM x UNION ALL SELECT x FROM x ; \nSELECT x FROM x UNION ALL SELECT x FROM x ORDER BY 10 ; \nDELETE FROM x WHERE 10 ; \nINSERT INTO x VALUES ( 'y' , NULL ) ; \nSELECT * FROM x , x WHERE x = x ; \nSELECT x FROM x WHERE x IN ( 'y' , 'y' ) ORDER BY x ; \nSELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ; \nSELECT * FROM x NATURAL JOIN x ; \nINSERT INTO x SELECT upper ( x ) FROM x ; \nSELECT min ( x ) FROM x ; \nSELECT max ( x ) FROM x ; \nSELECT max ( x , x ) FROM x ; \nSELECT max ( x , 'y' ) FROM x ; \nSELECT max ( 'y' , x ) FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ) ; \nSELECT DISTINCT x , x FROM x ; \nSELECT x , x FROM x UNION SELECT x , x FROM x ; \nSELECT x FROM x EXCEPT SELECT x FROM x WHERE x != 'y' ; \nSELECT x , x FROM x EXCEPT SELECT x , x FROM x ; \nSELECT x , x FROM x EXCEPT SELECT x , x FROM x WHERE x != 'y' ; \nSELECT x FROM x INTERSECT SELECT x FROM x WHERE x != 'y' ; \nSELECT x , x FROM x INTERSECT SELECT x , x FROM x ; \nSELECT x FROM x INTERSECT SELECT x FROM x ORDER BY 10 ; \nSELECT x , count ( * ) FROM x GROUP BY x ; \nSELECT x , x , count ( * ) FROM x GROUP BY x , x ORDER BY x , x ; \nPRAGMA x = 'y' ; \nSELECT * FROM x WHERE x < 'y' ; \nSELECT x AS x FROM x WHERE x = 'y' ; \n; \nSELECT * FROM x , x , x WHERE x = x AND x = x AND x = 10 ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT * , 'y' FROM x , x , x WHERE x = x AND x = x AND x = 10 ; \nSELECT * , 'y' FROM x , x , x WHERE x = x AND x = x AND 10 = x ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ; \nCREATE TABLE x ( x NOT NULL , x INTEGER PRIMARY KEY , x ) ; \nSELECT x , x , x , x FROM x , x ; \nSELECT x , x , x , x , * FROM x , x , x ; \nSELECT x , x FROM x , x ; \nSELECT * FROM x , x , x ; \nSELECT x , * FROM x ORDER BY 10 ; \nCREATE TABLE x AS SELECT x FROM SELECT x AS Bbb FROM x ; \nSELECT x FROM x 'y' ; \nSELECT ( SELECT avg ( x ) UNION SELECT min ( x ) OVER( ) ) FROM x ; \nCREATE TABLE x AS SELECT x FROM x ; \nPRAGMA x ( x ) ; \nCREATE TABLE x AS SELECT x FROM x GROUP BY 10 ; \nINSERT OR IGNORE INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 , 10 ) ; \nREPLACE INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT OR FAIL INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT OR ABORT INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT OR IGNORE INTO x VALUES ( 10 , 10 , NULL ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 , NULL ) ; \nINSERT OR FAIL INTO x VALUES ( 10 , 10 , NULL ) ; \nINSERT OR ABORT INTO x VALUES ( 10 , 10 , NULL ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 , 10 , NULL ) ; \nCREATE TABLE x ( x UNIQUE , x ) ; \nSELECT count ( * ) , min ( x ) , max ( x ) FROM x ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 ) ; \nINSERT OR IGNORE INTO x SELECT * FROM x ; \nINSERT OR IGNORE INTO x SELECT x + 10 , x + 10 FROM x ; \nCREATE TABLE x ( x INTEGER UNIQUE ON CONFLICT IGNORE , x INTEGER UNIQUE ON CONFLICT FAIL , x INTEGER UNIQUE ON CONFLICT REPLACE , x INTEGER UNIQUE ON CONFLICT ABORT , x INTEGER UNIQUE ON CONFLICT ROLLBACK ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 , 10 ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 ) ; \nINSERT INTO x SELECT 10 , 10 , 10 FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE TABLE x ( x CHECK( x != 10 ) ) ; \nREPLACE INTO x VALUES ( 10 ) ; \nCREATE TABLE x ( x TEXT PRIMARY KEY NOT NULL , x TEXT NOT NULL , x INTEGER ) ; \nCREATE UNIQUE INDEX x ON x ( x , x ) ; \nREPLACE INTO x ( x , x , x ) VALUES ( 'y' , 'y' , 10 ) ; \nSELECT x , x FROM x INDEXED BY x ; \nSELECT x , x , x FROM x NOT INDEXED ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT REPLACE , x UNIQUE ON CONFLICT IGNORE , x UNIQUE ON CONFLICT FAIL ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nSELECT x , x , x FROM x ORDER BY x ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ; \nCREATE TABLE x ( x INT PRIMARY KEY ON CONFLICT REPLACE , x UNIQUE ON CONFLICT IGNORE , x UNIQUE ON CONFLICT FAIL ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT IGNORE , x INT PRIMARY KEY ON CONFLICT REPLACE , x UNIQUE ON CONFLICT FAIL ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT FAIL , x INT PRIMARY KEY ON CONFLICT REPLACE , x UNIQUE ON CONFLICT IGNORE ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT REPLACE , x INTEGER PRIMARY KEY ON CONFLICT IGNORE , x UNIQUE ON CONFLICT FAIL ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT REPLACE , x INT PRIMARY KEY ON CONFLICT IGNORE , x UNIQUE ON CONFLICT FAIL ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT REPLACE , x UNIQUE ON CONFLICT IGNORE , x INTEGER PRIMARY KEY ON CONFLICT FAIL ) ; \nREPLACE INTO x VALUES ( NULL , 'y' ) ,( 10 , 'y' ) ; \nCREATE TABLE x ( x UNIQUE , x UNIQUE ) ; \nUPDATE x SET x = 'y' , x = 'y' CONCAT substr ( x , 10 , 10 ) WHERE x = 'y' ; \nBEGIN EXCLUSIVE ; \nUPDATE x SET x = NULL , x = NULL WHERE x = 'y' ; \nINSERT INTO x ( x ) SELECT x + 10 FROM x ; \nINSERT INTO x SELECT x , x * x FROM x ; \nINSERT INTO x SELECT randomblob ( 10 ) FROM x ; \nINSERT OR IGNORE INTO x SELECT x * 10 , x FROM x ; \nCREATE TABLE x AS SELECT x , 10 AS y FROM x WHERE x % 10 != 10 ORDER BY x ; \nINSERT INTO x SELECT str ( x + 10 ) FROM x ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 'y' , 'y' , 'y' ) ; \nSELECT x FROM x WHERE x > 'y' ; \nDELETE FROM x WHERE x IN ( 10 , 10 ) ; \nSELECT sum ( x + length ( x ) ) FROM x WHERE x IN ( 10 , 10 , 10 ) AND x IS NULL ; \nCREATE TABLE x ( x , x , x , x INTEGER PRIMARY KEY ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nSELECT * FROM x WHERE x <= 'y' ORDER BY x DESC ; \nDELETE FROM x WHERE x IN ( SELECT x FROM x ) ; \nSELECT CAST ( ( SELECT x FROM x WHERE 10 = x ) AS INT ) FROM x WHERE 10 = x ; \nCREATE VIEW x AS SELECT 10 , 10 ; \nCREATE TRIGGER x AFTER INSERT ON x BEGIN SELECT 10 ; END ; \nSELECT x , x , x , 'y' FROM x ; \nUPDATE x SET x = 'y' , x = 'y' WHERE x = 'y' ; \nUPDATE x SET x = 'y' , x = 'y' , x = 'y' WHERE x = 'y' ; \nSELECT * FROM x , x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x NOT NULL ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x , x , x , x ) ; \nSELECT * FROM x WHERE likelihood ( x = , 0.1 ) AND x BETWEEN AND ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nCREATE INDEX x ON x ( x , x , x , x , x , x , x , x , x , x ) ; \nSELECT x FROM SELECT count ( * ) AS a FROM x WHERE x == 10 ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 'y' ) ; \nCREATE VIEW x ( x , x ) AS SELECT x , 10 FROM x UNION ALL SELECT x , 10 FROM x ; \nSELECT count ( * ) FROM x WHERE x != 10 ; \nCREATE INDEX x ON x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nSELECT * FROM x ORDER BY x , x ; \nUPDATE x SET x = randstr ( 10 , 10 ) ; \nINSERT INTO x . x SELECT * FROM x . x ; \nUPDATE x . x SET x = randstr ( 10 , 10 ) WHERE x >= 10 ; \nUPDATE x SET x = randstr ( 10 , 10 ) WHERE x >= 10 ; \nUPDATE x . x SET x = 'y' WHERE x = 10 ; \nSELECT x FROM x . x WHERE x = 10 ; \nUPDATE x SET x = randomblob ( 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT * , 'y' FROM x ; \nSELECT sqlite_compileoption_used ( 'y' ) ; \nSELECT sqlite_compileoption_used ( x ) ; \nSELECT sqlite_compileoption_used () ; \nSELECT sqlite_compileoption_used ( NULL ) ; \nSELECT sqlite_compileoption_used ( 'y' , 10 ) ; \nSELECT sqlite_compileoption_used ( 10 ) ; \nSELECT sqlite_compileoption_used ( 0.1 ) ; \nSELECT sqlite_compileoption_get () ; \nSELECT sqlite_compileoption_get ( 10 , 10 ) ; \nSELECT sqlite_compileoption_used ( sqlite_compileoption_get ( 10 ) ) ; \nSELECT sqlite_compileoption_get ( 10 ) ; \nINSERT INTO x VALUES ( 0.1 ) ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 'y' ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nCREATE INDEX x ON x ( x ) WHERE datetime ( x , x ) IS NOT NULL ; \nINSERT INTO x ( x ) VALUES ( 0.1 ) ; \nINSERT INTO x ( x , x ) VALUES ( 0.1 , 'y' ) ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 0.1 ) ; \nCREATE TABLE x ( x , x AS( x + julianday ( 'y' ) ) ) ; \nSELECT x , quote ( substr ( x , 10 , 10 ) ) FROM x 'y' ORDER BY x ; \nSELECT x , quote ( substr ( x , 10 , 10 ) ) FROM x WHERE x = 10 ; \nSELECT x , quote ( substr ( x , 10 , 10 ) ) FROM x 'y' ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 'y' , 10 ) ,( 10 , 'y' , 10 ) ; \nINSERT INTO x ( x ) SELECT x FROM x WHERE x = 10 ; \nUPDATE x SET x = ( SELECT x FROM x ) WHERE x = 10 ; \nDELETE FROM x WHERE x < 10 ; \nCREATE TABLE x ( x INT UNIQUE , x INT ) ; \nSELECT * FROM x WHERE x = 'y' AND x = 'y' ; \nDELETE FROM x WHERE x = 'y' AND x = 'y' ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT ) ; \nDELETE FROM x WHERE x = 'y' OR x = 'y' ; \nDELETE FROM x WHERE x = 10 OR x > 10 ; \nINSERT INTO x ( x , x , x ) SELECT x + 10 , 10 , x FROM x ; \nINSERT INTO x ( x , x , x ) SELECT x + 10 , 10 , x FROM x WHERE x = 10 ; \nDELETE FROM x WHERE EXISTS ( SELECT 10 FROM x AS v WHERE x = x + 10 ) ; \nDELETE FROM x WHERE x = 10 OR x = 10 ; \nUPDATE x SET x = ( SELECT x FROM x WHERE x = 'y' ) WHERE x = 'y' ; \nDELETE FROM x WHERE x IN ( 10 , 10 , 10 ) ; \nINSERT INTO x SELECT x + 10 , x + 10 FROM x ; \nSELECT x FROM x WHERE x > 10 AND x < 10 ; \nSELECT x FROM x WHERE x >= 10 AND x < 10 ; \nSELECT x FROM x WHERE x > 10 AND x <= 10 ; \nSELECT x FROM x WHERE x >= 10 AND x <= 10 ; \nINSERT INTO x VALUES ( 10 , NULL , NULL , 0.1 ) ; \nSELECT x FROM x WHERE x >= 10 ORDER BY x ; \nSELECT x FROM x WHERE x > 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x > 'y' ; \nSELECT x FROM x WHERE x = 10 AND x >= 'y' ; \nSELECT x FROM x WHERE x = 10 AND x < 'y' ; \nSELECT x FROM x WHERE x = 10 AND x <= 'y' ; \nSELECT x CONCAT x CONCAT x CONCAT x FROM x ORDER BY x , x , x , x ; \nSELECT x CONCAT x CONCAT x CONCAT x FROM x ORDER BY x DESC , x ASC , x DESC , x ASC ; \nSELECT x CONCAT x CONCAT x CONCAT x FROM x ORDER BY x ASC , x DESC , x ASC , x DESC ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , NULL , NULL , NULL , NULL ) ; \nINSERT INTO x VALUES ( 10 , 0.1 , 0.1 , 0.1 , 0.1 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' , 'y' ) ; \nSELECT x FROM x ORDER BY x DESC ; \nSELECT x FROM x WHERE x > 10 ; \nSELECT x FROM x WHERE x IN ( 10 , 10 ) AND x > 10 AND x < 'y' ; \nCREATE TABLE x AS SELECT x AS a , x AS b FROM x ; \nCREATE TABLE x ( x PRIMARY KEY NOT NULL , x NOT NULL ) ; \nCREATE TABLE x ( x , x NOT NULL , x NOT NULL , x NOT NULL ) ; \nSELECT ( SELECT DISTINCT x FROM x AS i ) FROM x AS o ORDER BY x ; \nSELECT quote ( x ) FROM x ORDER BY 10 ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT DISTINCT x FROM x ORDER BY x ASC ; \nSELECT DISTINCT x FROM x ORDER BY x DESC ; \nSELECT DISTINCT x FROM x ORDER BY x ; \nSELECT ( SELECT 'y' UNION SELECT DISTINCT max ( x ) ORDER BY 10 ) FROM x ; \nSELECT * , 'y' FROM x ORDER BY x , x ; \nCREATE TABLE x ( x TEXT UNIQUE NOT NULL ) ; \nSELECT * , 'y' FROM x ORDER BY 10 , 10 , 10 , 10 , 10 ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT DISTINCT x , x , x FROM x WHERE x = 10 AND x = 10 ; \nSELECT DISTINCT x , x , x , x FROM x WHERE x = 10 AND x = 10 ; \nSELECT DISTINCT x , x , x , x , x FROM x WHERE x = 10 AND x = 10 ; \nSELECT DISTINCT x , x , x , x , x , x FROM x WHERE x = 10 AND x = 10 ; \nCREATE TABLE x ( x INT , x INT ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT DISTINCT x , x FROM x , x ; \nSELECT DISTINCT x , x + 10 FROM x ; \nSELECT DISTINCT x , x , x FROM x ; \nSELECT DISTINCT x , x , x FROM x WHERE x = 10 ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nSELECT DISTINCT x FROM x , x WHERE x = x AND x != 10 ; \nSELECT DISTINCT x FROM x , x WHERE x = x AND x != 10 ORDER BY x DESC ; \nSELECT DISTINCT x FROM x , x WHERE x = x ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT DISTINCT x , x , x FROM x CROSS JOIN x ORDER BY x ; \nINSERT INTO x ( x ) VALUES ( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ,( NULL ) ; \nSELECT group_concat ( DISTINCT x , x ) FROM x ; \nSELECT * FROM x WHERE x IN ( 10 , 10 ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , 'y' , 'y' , 'y' ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x UNIQUE ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ; \nCREATE TABLE x ( x TEXT , x INTEGER PRIMARY KEY ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT ) ; \nINSERT INTO x VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 10 , 10 ) ; \nINSERT INTO x VALUES ( 'y' , 'y' ) ,( 'y' , 'y' ) ,( 'y' , 'y' ) ; \nDELETE FROM x WHERE x IN ( 'y' , 'y' ) ; \nSELECT my_changes ( 'y' ) ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ; \nUPDATE x SET x = my_changes ( 'y' ) ; \nUPDATE x SET x = changes () ; \nSELECT 'y' ; \nUPDATE x SET x = x + 10 WHERE x % 10 ; \nCREATE TABLE x ( x FLOAT , x INTEGER ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 'y' ) ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) FROM x ORDER BY x DESC LIMIT 10 ; \nSELECT quote ( x ) , quote ( x ) FROM x ORDER BY x DESC LIMIT 10 ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) FROM x ORDER BY x DESC LIMIT 10 ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) FROM x ; \nSELECT quote ( x ) , quote ( x ) FROM x ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) FROM x ; \nSELECT x , x , x FROM x ORDER BY x DESC LIMIT 10 ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , 'y' ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 0.1 , 'y' ) ; \nCREATE TABLE x ( x , x INTEGER PRIMARY KEY , x ) ; \nINSERT INTO x VALUES ( 10 , NULL , 10 ) ; \nUPDATE x SET x = NULL WHERE x = 10 ; \nCREATE TABLE x ( x , x INT PRIMARY KEY NOT NULL , x ) ; \nINSERT INTO x VALUES ( 0.1 , 0.1 ) ; \nCREATE TABLE x ( x TEXT , x INTEGER CHECK( x > 10 ) ) ; \nCREATE TABLE x ( x CHECK( x CONCAT x ) , x ) ; \nCREATE TABLE x ( x PRIMARY KEY ON CONFLICT ABORT , x ) ; \nCREATE TABLE x ( x PRIMARY KEY ON CONFLICT ROLLBACK , x ) ; \nCREATE TABLE x ( x PRIMARY KEY ON CONFLICT IGNORE , x ) ; \nCREATE TABLE x ( x PRIMARY KEY ON CONFLICT FAIL , x ) ; \nCREATE TABLE x ( x PRIMARY KEY ON CONFLICT REPLACE , x ) ; \nCREATE TABLE x ( x , x NOT NULL ON CONFLICT ABORT ) ; \nCREATE TABLE x ( x , x NOT NULL ON CONFLICT ROLLBACK ) ; \nCREATE TABLE x ( x , x NOT NULL ON CONFLICT IGNORE ) ; \nCREATE TABLE x ( x , x NOT NULL ON CONFLICT FAIL ) ; \nCREATE TABLE x ( x , x NOT NULL ON CONFLICT REPLACE ) ; \nCREATE TABLE x ( x , x NOT NULL ) ; \nINSERT INTO x SELECT ( ( x % 10 ) * x + 10 ) , 'y' FROM x ; \nCREATE TABLE x ( x , x INTEGER PRIMARY KEY ) ; \nCREATE TABLE x . x ( x , x ) ; INSERT INTO x . x VALUES ( 10 , 10 ) ; \nDELETE FROM x . x WHERE x > 10 ; \nSELECT count ( * ) FROM x . x UNION ALL SELECT count ( * ) FROM x . x ; \nSELECT count ( * ) FROM x . x ; \nCREATE VIEW x AS SELECT * FROM x AS x , x AS y ; \nSELECT CASE 10 WHEN 10 THEN 'y' WHEN 10 THEN 'y' ELSE 'y' END ; \nINSERT INTO x VALUES ( 'y' , 'y' , 10 , 0.1 ) ; \nSELECT CASE NULL WHEN 'y' THEN 'y' WHEN 'y' THEN 'y' ELSE 'y' END ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 10 , 'y' , 'y' ) ; \nSELECT typeof ( x ) , x , typeof ( x ) , x , typeof ( x ) , x FROM x ; \nSELECT CASE WHEN NULL THEN 'y' ELSE 'y' END ; \nSELECT CASE WHEN 0.1 THEN 'y' ELSE 'y' END ; \nSELECT CASE WHEN 10 THEN 'y' ELSE 'y' END ; \nSELECT CASE WHEN 'y' THEN 'y' ELSE 'y' END ; \nCREATE TABLE x ( x , x , x , x , x ) ; \nINSERT INTO x SELECT * FROM x WHERE x = 'y' ; \nINSERT INTO x SELECT x FROM x ; \nINSERT INTO x . x SELECT x FROM x . x ; \nINSERT INTO x VALUES ( NULL , 0.1 ) ; \nINSERT INTO x VALUES ( 10 , NULL , 0.1 ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 'y' , 'y' ) ; \nINSERT INTO x VALUES ( 'y' , 0.1 , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( 'y' , NULL , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 10 , NULL , 'y' , 'y' ) ; \nINSERT INTO x VALUES ( 10 , NULL , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 10 , 0.1 , 0.1 ) ; \nINSERT INTO x VALUES ( 0.1 , 0.1 , 'y' ) ; \nINSERT INTO x VALUES ( NULL , 10 , 'y' ) ; \nINSERT INTO x VALUES ( 0.1 , 10 ) ; \nCREATE TABLE x ( x PRIMARY KEY , x TEXT ) ; \nCREATE TABLE x ( x TEXT , x INTEGER , x ) ; \nINSERT INTO x VALUES ( 10 , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 0.1 ) ; \nINSERT INTO x VALUES ( 'y' , 10 , NULL ) ; \nCREATE TABLE x ( x , x TEXT ) ; \nINSERT INTO x SELECT * FROM x WHERE x < 10 ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ; \nINSERT OR REPLACE INTO x VALUES ( 'y' , 'y' ) ; \nCREATE TABLE x ( x , x UNIQUE ) ; \nINSERT INTO x . x VALUES ( 10 , 'y' ) ; \nDELETE FROM x . x ; \nINSERT INTO x . x VALUES ( NULL , 'y' ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ; \nSELECT 'y' , x FROM x . x WHERE x = 'y' ; \nSELECT 'y' , x FROM x WHERE x = 'y' ; \nCREATE TABLE x ( x PRIMARY KEY , x UNIQUE ) ; \nINSERT INTO x SELECT x + 10 , randomblob ( 10 ) FROM x ; \nDELETE FROM x WHERE x % 10 ; \nINSERT INTO x SELECT x , x FROM x WHERE x % 10 ; \nUPDATE x SET x = randomblob ( 10 ) WHERE ( x % 10 ) == 10 ; \nVACUUM INTO 'file_name' ; \nSELECT x , x FROM x . x ; \nUPDATE x SET x = x , x = random () ; \nSELECT count ( * ) FROM x , x , x , x , x , x , x ; \nSELECT count ( * ) FROM x , x LEFT JOIN x ; \nSELECT count ( * ) FROM x , x LEFT JOIN x , x ; \nSELECT * FROM x WHERE x IN ( 'y' , 'y' ) ; \nSELECT 10 FROM x . x LIMIT 10 ; \nCREATE TABLE x ( x INT , x INT , x CHAR(100) ) ; \nSELECT count ( * ) , max ( x ) FROM x ; \nINSERT INTO x SELECT x , x + 10 FROM x WHERE x < 10 ; \nSELECT x , test_eval ( 'y' CONCAT x ) , x FROM x ; \nUPDATE x SET x = 10 , x = 10 , x = 10 ; \nCREATE TABLE x ( x UNIQUE , x UNIQUE , x UNIQUE ) ; \nINSERT INTO x ( x , x ) SELECT randstr ( 10 , 10 ) , 10 FROM x ; \nUPDATE x SET x = x , x = 10 ; \nINSERT INTO x ( x ) SELECT randstr ( 10 , 10 ) FROM x ; \nSELECT 10 ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( NULL ) ,( 0.1 ) ,( 'y' ) ,( 'y' ) ; \nINSERT INTO x SELECT randomblob ( 10 ) , randomblob ( 10 ) FROM x ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) FROM x ; \nCREATE VIEW x AS SELECT sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) , sum ( x ) FILTER( WHEN x > 10 ) FROM x ; \nSELECT x , max ( x ) FILTER( WHEN x = 'y' ) FROM x ; \nSELECT x , x , max ( x ) FILTER( WHEN x = 'y' ) FROM x GROUP BY x ; \nSELECT avg ( x ) FILTER( WHEN x != 10 ) AS h FROM x GROUP BY x ORDER BY x ; \nSELECT avg ( x ) FILTER( WHEN x != 10 ) AS h FROM x GROUP BY x ORDER BY ( x + 0.1 ) ; \nSELECT x , avg ( x ) FILTER( WHEN x != 10 ) AS h FROM x GROUP BY x ORDER BY avg ( x ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , NULL ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , NULL ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , NULL ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT x / 10 , sum ( x ) FILTER( WHEN x % 10 = 10 ) , sum ( x ) FILTER( WHEN x % 10 = 10 ) , sum ( x ) FILTER( WHEN x % 10 = 10 ) , sum ( x ) FILTER( WHEN x % 10 = 10 ) , sum ( x ) FILTER( WHEN x % 10 = 10 ) FROM x GROUP BY ( x / 10 ) ORDER BY 10 ; \nCREATE TABLE x ( x TEXT PRIMARY KEY , x TEXT ) ; \nSELECT 10 , x FROM x ; \nINSERT INTO x VALUES ( 10 , NULL ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nINSERT OR REPLACE INTO x ( x , x , x ) VALUES ( 10 , NULL , 'y' ) ; \nINSERT OR REPLACE INTO x ( x , x , x ) VALUES ( 10 , 10 , 'y' ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x < 10 ; \nSELECT x , typeof ( x ) FROM x ; \nCREATE TABLE x ( x INT UNIQUE ) ; \nCREATE TABLE x ( x TEXT PRIMARY KEY ) ; \nCREATE VIEW x AS SELECT x AS y FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 'y' , 'y' ) ; \nCREATE TABLE x ( x , x PRIMARY KEY ) ; \nREPLACE INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ; \nCREATE TABLE x . x ( x PRIMARY KEY ) ; \nUPDATE x SET x = x + 10 , x = x + 10 ; \nCREATE TABLE x ( x , x PRIMARY KEY , x ) ; \nINSERT INTO x VALUES ( 10 , NULL , NULL ) ; \nINSERT INTO x VALUES ( NULL , 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 'y' , 10 , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , 'y' ) ; \nUPDATE x SET x = 10 , x = 'y' WHERE x = 10 ; \nINSERT INTO x VALUES ( 'y' , 10 , 'y' , NULL ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , NULL ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 'y' ) ; \nINSERT OR FAIL INTO x VALUES ( 10 ) ,( 10 ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' , NULL ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x ) ; \nSELECT sum ( x ) , count ( x ) , round ( avg ( x ) , 10 ) , min ( x ) , max ( x ) , count ( * ) FROM x ; \nSELECT max ( 'y' CONCAT x CONCAT 'y' ) FROM x ; \nSELECT min ( 'y' CONCAT x CONCAT 'y' ) FROM x ; \nSELECT typeof ( random () ) ; \nSELECT randomblob ( 10 ) IS NOT NULL ; \nSELECT typeof ( randomblob ( 10 ) ) ; \nSELECT testfunc ( NULL , NULL ) ; \nSELECT testfunc ( 'y' , 'y' , 'y' , 10 ) ; \nSELECT testfunc ( 'y' , 'y' , 'y' , NULL ) ; \nSELECT testfunc ( 'y' , 'y' , 'y' , 0.1 ) ; \nSELECT testfunc ( 'y' , 'y' , 'y' , 10 , 'y' , 'y' , 'y' , NULL , 'y' , 'y' , 'y' , 0.1 , 'y' , 'y' , 'y' , 10 , 'y' , 'y' , 'y' , NULL , 'y' , 'y' , 'y' , 0.1 ) ; \nSELECT sqlite_version ( * ) ; \nSELECT test_destructor ( 'y' ) , test_destructor_count () ; \nSELECT test_destructor_count () ; \nSELECT min ( test_destructor ( x ) ) , max ( test_destructor ( x ) ) FROM x ; \nSELECT test_auxdata ( 'y' ) ; \nSELECT test_auxdata ( 'y' ) FROM x ; \nSELECT test_auxdata ( 'y' , 10 ) FROM x ; \nSELECT test_auxdata ( 'y' , x ) FROM x ; \nSELECT test_auxdata ( 'y' CONCAT 'y' , x ) FROM x ; \nSELECT testfunc1 ( 10 , 10 , 10 ) ; \nSELECT sum ( x ) , total ( x ) FROM x ; \nSELECT sum ( x ) FROM SELECT 10 AS x UNION ALL SELECT 10 AS x ; \nSELECT abs ( 10 ) ; \nSELECT 'y' MATCH 'y' ; \nSELECT typeof ( group_concat ( x , 'y' ) ) FROM SELECT 'y' AS x UNION ALL SELECT 'y' ; \nSELECT nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789 ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789 ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_12345678a ( 10 ) ; \nSELECT nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789a ( 10 ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x ) ; \nSELECT typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) FROM x ; \nSELECT length ( x ) , length ( x ) , length ( x ) , length ( x ) FROM x ; \nSELECT quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) FROM x ; \nSELECT test_frombind ( 10 , 10 , , 10 ) ; \nSELECT test_frombind ( 10 , ( ) , 10 , + 10 ) ; \nCREATE VIEW x ( x ) AS SELECT testdirectonly ( 10 ) ; \nSELECT * FROM SELECT testdirectonly ( 10 ) AS v33 ; \nSELECT likelihood ( 10 , 0.1 ) ; \nSELECT likelihood ( 0.1 , 0.1 ) ; \nSELECT likelihood ( NULL , 0.1 ) ; \nSELECT likelihood ( 'y' , 0.1 ) ; \nSELECT likelihood ( 10 , 0.1 ) , likelihood ( 10 , 0.1 ) ; \nSELECT likelihood ( 10 , 0.1 + 0.1 ) ; \nSELECT unlikely ( 10 ) ; \nSELECT unlikely ( 0.1 ) ; \nSELECT unlikely ( NULL ) ; \nSELECT unlikely ( 'y' ) ; \nSELECT likely ( CAST ( 10 AS INT ) ) == 'y' ; \nSELECT unlikely ( CAST ( 10 AS INT ) ) == 'y' ; \nSELECT likelihood ( CAST ( 10 AS INT ) , 0.1 ) == 'y' ; \nSELECT likely ( 10 ) ; \nSELECT likely ( 0.1 ) ; \nSELECT likely ( NULL ) ; \nSELECT likely ( 'y' ) ; \nSELECT tointeger ( NULL ) ; \nSELECT tointeger ( 'y' ) ; \nSELECT tointeger ( 10 ) ; \nSELECT tointeger ( 10 - 10 ) ; \nSELECT tointeger ( 10 + 10 ) ; \nSELECT toreal ( NULL ) ; \nSELECT toreal ( 'y' ) ; \nSELECT toreal ( 10 ) ; \nSELECT toreal ( 10 - 10 ) ; \nSELECT toreal ( 10 + 10 ) ; \nSELECT toreal ( tointeger ( 10 ) - 10 ) ; \nSELECT toreal ( tointeger ( 10 ) ) ; \nSELECT toreal ( tointeger ( 10 ) + 10 ) ; \nCREATE TABLE x ( x INTEGER CHECK( tointeger ( x ) IS NOT NULL ) ) ; \nINSERT INTO x ( x ) VALUES ( NULL ) ; \nSELECT tointeger ( toreal ( 'y' ) ) ; \nSELECT tointeger ( toreal ( 10 ) ) ; \nSELECT tointeger ( toreal ( 10 - 10 ) ) ; \nSELECT tointeger ( toreal ( 10 + 10 ) ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE TABLE x ( x AS( TYPEOF ( x ) ) , x ) ; \nCREATE TABLE x ( x AS( typeof ( x ) ) , x ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 'y' , 0.1 ) ,( 10 , 'y' , NULL ) ; \nSELECT x , x , x , 'y' FROM x ORDER BY x ; \nSELECT x FROM x WHERE x LIKE 'y' OR x = 'y' ORDER BY x ; \nCREATE INDEX x ON x ( x ) WHERE x BETWEEN 10 AND 10 ; \nSELECT x FROM x WHERE x = 'y' AND x BETWEEN 10 AND 10 ; \nUPDATE x SET x = x + 10 WHERE x < 10 ; \nSELECT x , x , 'y' FROM x ORDER BY x ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' ) ,( 10 , 10 , 10 ) ; \nUPDATE x SET x = x , x = x ; \nUPDATE x SET x = x , x = x + 10 ; \nREPLACE INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nCREATE TABLE x ( x NOT NULL AS( x ) , x ) ; \nREPLACE INTO x ( x ) VALUES ( NULL ) ; \nCREATE TABLE x ( x GENERATED ALWAYS AS( 10 ) , x UNIQUE , x UNIQUE ) ; \nSELECT quote ( 10 = x OR x BETWEEN x AND 10 ) FROM x ; \nSELECT 10 FROM x WHERE 10 = x OR x BETWEEN x AND 10 ; \nCREATE TABLE x ( x , x AS( x + x ) , x AS( x ) CHECK( x ) ) ; \nUPDATE x SET x = NULL ; \nINSERT INTO x VALUES ( 'y' , 'y' ) ,( 'y' , 'y' ) ; \nSELECT typeof ( x ) , x , typeof ( x ) , x , 'y' FROM x ORDER BY x ; \nUPDATE x SET x = 'y' WHERE x = 10 OR x = 10 ; \nUPDATE x SET x = x CONCAT 'y' WHERE x = x ; \nDELETE FROM x WHERE x = x ; \nINSERT INTO x . x SELECT * FROM x ; \nDELETE FROM x WHERE x > 10 ; \nSELECT * FROM x INTERSECT SELECT * FROM x ; \nSELECT * FROM x EXCEPT SELECT * FROM x ; \nREPLACE INTO x VALUES ( 10 , 'y' ) ; \nSELECT ieee754 ( 10 , 10 ) IS NULL ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x NOT NULL ) ; \nSELECT x FROM x WHERE x IS NOT NULL ; \nSELECT x , x , x , x FROM x EXCEPT SELECT x , x , x , x FROM x ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 'y' , 10 , 10 , NULL ) ; \nUPDATE x SET x = 10 WHERE x IN ( 10 , 10 , 10 ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ) ; \nSELECT x FROM x WHERE x IN ( 10 ) ; \nSELECT * FROM x WHERE x IN ( 10 ) ; \nSELECT * FROM x WHERE x IN ( 'y' ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x UNION ALL SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x UNION SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x EXCEPT SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x INTERSECT SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x UNION ALL SELECT x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x UNION SELECT x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x EXCEPT SELECT x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x , x FROM x INTERSECT SELECT x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x UNION ALL SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x UNION SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x EXCEPT SELECT x , x FROM x ) ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x INTERSECT SELECT x , x FROM x ) ; \nINSERT INTO x VALUES ( NULL , 10 , 10 ) ; \nSELECT x IN ( SELECT x FROM x AS inside WHERE x BETWEEN x + 10 AND x + 10 ) FROM x AS outside ORDER BY x ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x ) ; \nSELECT 10 WHERE ( SELECT 10 , 10 ) OR ( 10 IN ( 10 , 10 ) ) ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT x FROM x AS a JOIN x AS b ON x = x WHERE x IN ( 10 , 10 , 10 ) ; \nSELECT x , x IN ( 10 , 10 , 10 ) FROM x ORDER BY x ; \nSELECT CASE WHEN x NOT IN ( 10 , 10 , 10 ) THEN 'y' ELSE 'y' END FROM x ; \nSELECT CASE WHEN x NOT IN ( NULL , 10 , 10 ) THEN 'y' ELSE 'y' END FROM x ; \nSELECT CASE WHEN x NOT IN ( 10 , 10 , 10 ) OR x = 10 THEN 'y' ELSE 'y' END FROM x ; \nSELECT CASE WHEN x NOT IN ( NULL , 10 , 10 ) OR x = 10 THEN 'y' ELSE 'y' END FROM x ; \nSELECT x FROM x WHERE x NOT IN ( 10 , NULL , 10 ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x INT ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 ) ,( 10 , 'y' , 10 ) ,( 10 , 'y' , 10 ) ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x WHERE ( x % 10 ) == 10 ) ORDER BY x DESC , x ; \nSELECT 10 IN ( 'y' ) ; \nSELECT 10 IN ( CAST ( 'y' AS TEXT ) ) ; \nSELECT * FROM x WHERE 'y' IN ( x ) ; \nSELECT 10 FROM x WHERE x IN ( 'y' ) ; \nSELECT x IN ( 'y' ) FROM x ; \nSELECT x IN ( 'y' , 10 , 10 ) FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , NULL ) ON CONFLICT ( x , x , x ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x WHERE x IN ( 10 , 10 ) ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x INTEGER , x VARCHAR(255) ) ; \nDELETE FROM x WHERE x IN ( SELECT x FROM x WHERE x LIKE 'y' CONCAT 'y' ) ; \nSELECT * FROM x WHERE x IN ( 'y' , 'y' , 'y' ) ; \nSELECT x FROM x WHERE x IN ( 10 , 10 ) ; \nSELECT x FROM x WHERE x IN ( 'y' ) ; \nSELECT * FROM x WHERE x = 10 AND x IN ( 10 ) ; \nSELECT * FROM x WHERE x IN ( 10 ) AND x = 10 ; \nSELECT * FROM x WHERE x IN ( 10 ) AND x IN ( 10 ) ; \nSELECT * FROM x WHERE x = 10 AND x NOT IN ( 10 ) ; \nSELECT * FROM x WHERE x NOT IN ( 10 ) AND x = 10 ; \nSELECT * FROM x WHERE x NOT IN ( 10 ) AND x NOT IN ( 10 ) ; \nSELECT * FROM x WHERE x NOT IN ( 10 , 10 , 10 ) ; \nSELECT * FROM x WHERE x NOT IN ( 10 ) ; \nSELECT x FROM x WHERE x = x ORDER BY x ; \nSELECT x FROM x WHERE ( x CONCAT 'y' ) = x ORDER BY x ; \nSELECT x FROM x WHERE ( x CONCAT 'y' ) = ( x CONCAT 'y' ) ORDER BY x ; \nSELECT x FROM x WHERE x IN ( x ) ORDER BY x ; \nSELECT x FROM x WHERE ( x CONCAT 'y' ) IN ( x ) ORDER BY x ; \nSELECT x FROM x WHERE x = x ; \nSELECT x FROM x WHERE x IN ( x ) ; \nSELECT 10 FROM x WHERE 'y' IN ( x ) ; \nSELECT * FROM x , x WHERE x = 10 AND x IN ( x ) ; \nCREATE TABLE x ( x INTEGER UNIQUE ) ; \nCREATE TABLE x ( x TEXT UNIQUE ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x TEXT , x TEXT ) ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 'y' ) ,( 10 , 10 , 'y' , 'y' ) ,( 10 , 10 , 'y' , 'y' ) ,( 10 , 10 , 'y' , 'y' ) ,( 10 , 10 , 'y' , 'y' ) ,( 10 , 10 , 'y' , 'y' ) ; \nSELECT count ( * ) FROM x WHERE x IN ( SELECT DISTINCT x FROM x LIMIT 10 ) ; \nSELECT count ( * ) FROM x WHERE x IN ( SELECT x FROM x LIMIT 10 ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x VARCHAR(500) ) ; \nCREATE VIEW x ( x ) AS SELECT LOWER ( CAST ( 'y' AS TEXT ) ) FROM x ; \nSELECT lower ( 'y' ) FROM x WHERE x NOT IN ( 10 , 10 , lower ( 'y' ) ) ; \nSELECT lower ( 'y' ) FROM x WHERE x != lower ( 'y' ) ; \nCREATE TABLE x ( x INT UNIQUE , x TEXT ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 0.1 , NULL ) ; \nPRAGMA x ( 10 ) ; \nCREATE TABLE x ( x INTEGER UNIQUE , x TEXT ) ; \nINSERT INTO x SELECT x , x FROM x ; \nUPDATE x SET x = ( SELECT x FROM x WHERE x = x ) ; \nINSERT INTO x SELECT x CONCAT x , x CONCAT x , x CONCAT x FROM x ; \nUPDATE x SET x = x , x = x , x = x ; \nPRAGMA x ( 'y' ) ; \nSELECT x FROM x WHERE x != 'y' ORDER BY x ; \nSELECT x FROM x WHERE x = 10 ORDER BY x ; \nSELECT x FROM x WHERE x = x AND x = x ; \nINSERT INTO x VALUES ( 'y' , NULL , 10 ) ; \nINSERT INTO x VALUES ( NULL , 'y' , 10 ) ; \nSELECT x FROM x ORDER BY x , x ; \nSELECT x FROM x WHERE x >= 'y' ; \nSELECT x FROM x WHERE x >= 10 ; \nSELECT x FROM x WHERE x < 'y' ; \nSELECT x FROM x WHERE x <= 'y' ; \nSELECT x FROM x WHERE typeof ( x ) IN ( 'y' , 'y' ) ORDER BY x ; \nCREATE TABLE x ( x UNIQUE PRIMARY KEY ) ; \nSELECT count ( * ) FROM x WHERE x = 'y' AND x = 'y' ; \nCREATE TRIGGER x BEFORE INSERT ON x BEGIN SELECT 10 ; END ; \nCREATE TABLE x ( x UNIQUE PRIMARY KEY ON CONFLICT ROLLBACK ) ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x , x , 'y' FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 'y' ) ,( 'y' , 'y' ) ; \nINSERT OR IGNORE INTO x ( x ) VALUES ( 0.1 ) ,( 10 ) ; \nCREATE INDEX x ON x ( x ) WHERE x IS NOT NULL ; \nSELECT count ( x ) , count ( x ) FROM x ; \nCREATE INDEX x ON x ( x , x ) WHERE x IS NOT NULL ; \nCREATE INDEX x ON x ( x , x ) WHERE EXISTS ( SELECT * FROM x ) ; \nCREATE INDEX x ON x ( x , x ) WHERE x != random () ; \nCREATE INDEX x ON x ( x , x ) WHERE x NOT LIKE 'y' ; \nUPDATE x SET x = x ; \nUPDATE x SET x = NULL WHERE x % 10 != 10 ; \nUPDATE x SET x = CASE WHEN x % 10 != 10 THEN x END ; \nDELETE FROM x WHERE x BETWEEN 10 AND 10 ; \nINSERT INTO x ( x , x ) SELECT x , x FROM x WHERE x < 10 ; \nUPDATE x SET x = NULL WHERE x % 10 == 10 ; \nSELECT count ( * ) FROM x WHERE x IS NOT NULL ; \nCREATE INDEX x ON x ( x ) WHERE x < 10 OR x > 10 ; \nSELECT x FROM x WHERE x = 10 AND x < 10 ; \nSELECT x FROM x WHERE x = 10 AND x > 10 ; \nINSERT INTO x SELECT x , x FROM x WHERE x < 10 ; \nUPDATE x SET x = 10 WHERE x % 10 != 10 ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x != 10 ; \nSELECT count ( * ) FROM x WHERE x = 10 ; \nSELECT count ( * ) FROM x WHERE x BETWEEN 10 AND 10 ; \nSELECT x + 10 FROM x WHERE x = 'y' ; \nCREATE INDEX x ON x ( x ) WHERE x = 10 ; \nSELECT * FROM x LEFT JOIN x ON ( x = 10 ) ORDER BY x ; \nSELECT * FROM x JOIN x ON ( x = 10 ) ORDER BY x ; \nCREATE INDEX x ON x ( x ) WHERE x = 'y' ; \nCREATE INDEX x ON x ( x , x ) WHERE x IN ( 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( NULL , 10 , 10 ) ; \nUPDATE x SET x = x WHERE x IN ( 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nCREATE TABLE x ( x , x , x , x , x INTEGER PRIMARY KEY ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 , 10 ) ; \nCREATE INDEX x ON x ( x ) WHERE x = 10 AND x = 10 AND x = 10 ; \nSELECT x FROM x WHERE x = 10 AND x = 10 AND x = 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND 10 = x AND x = 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x = 10 ORDER BY x DESC ; \nCREATE INDEX x ON x ( x ) WHERE x != 10 ; \nSELECT 'y' , * FROM x WHERE x IN ( SELECT x FROM x ) ; \nSELECT * FROM x WHERE x OR 10 ; \nINSERT INTO x ( x , x ) VALUES ( NULL , 'y' ) ; \nSELECT * FROM x WHERE CASE x WHEN 10 THEN 10 ELSE 10 END ; \nSELECT x <= x , x >= x FROM x ; \nSELECT 10 FROM x WHERE x >= x ; \nSELECT 10 FROM x WHERE x <= x ; \nSELECT COUNT ( * ) FROM x WHERE x GLOB x ; \nINSERT INTO x ( x , x , x ) VALUES ( 'y' , 10 , 10 ) ,( 'y' , 10 , 10 ) ,( 'y' , 10 , 10 ) ,( 'y' , 10 , 10 ) ; \nSELECT * FROM SELECT * FROM x WHERE x = 10 AND x = 'y' , x WHERE x = 'y' ; \nSELECT * FROM x WHERE x = 10 ORDER BY x , x LIMIT 10 ; \nSELECT x , x , x FROM x INDEXED BY x WHERE x = 10 AND x = 10 AND x = 10 ; \nSELECT x , x , x FROM x INDEXED BY x WHERE x = 10 AND x = 10 AND x = 'y' ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x TEXT ) ; \nSELECT * FROM x INDEXED BY x ORDER BY 10 ; \nSELECT x , x , 'y' FROM x WHERE substr ( x , 10 , 10 ) == 'y' ORDER BY x , x ; \nSELECT x , x , 'y' FROM x WHERE 'y' == substr ( x , 10 , 10 ) ORDER BY x , x ; \nSELECT x FROM x WHERE x = 10 AND substr ( x , 10 , 10 ) = 'y' ORDER BY x ; \nSELECT x , substr ( x , x , 10 ) , 'y' FROM x ORDER BY 10 ; \nUPDATE x SET x = length ( x ) ; \nSELECT length ( x ) FROM x ORDER BY length ( x ) ; \nSELECT length ( x ) FROM x ORDER BY length ( x ) DESC ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 'y' , 10 , 10 ) ,( 10 , 'y' , 10 , 10 ) ,( 10 , 'y' , 10 , 10 ) ,( 10 , 'y' , 10 , 10 ) ,( 10 , 'y' , 10 , 10 ) ,( 10 , 'y' , 10 , 10 ) ; \nCREATE TABLE x ( x , x , x ) ; INSERT INTO x VALUES ( 10 , 10 , 10 ) ; \nINSERT INTO x SELECT * FROM x WHERE x = 10 ; \nINSERT INTO x ( x ) SELECT printf ( 'y' , x ) FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 'y' , 'y' , 'y' ) ,( 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , NULL , NULL , NULL , NULL ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nUPDATE x SET x = 10 WHERE ( x IN ( 10 , 10 ) ) = 10 ; \nINSERT INTO x VALUES ( NULL ) ,( 10 ) ; \nSELECT 'y' , typeof ( x ) , x FROM x WHERE x < 10 ; \nSELECT 'y' , typeof ( x ) , x FROM x WHERE x + 10 < 10 ; \nSELECT x + x , x + x FROM x ORDER BY x + x , x + x ; \nSELECT 10 IN ( SELECT 10 ) FROM x ; \nSELECT 10 IN ( SELECT 10 UNION ALL SELECT 10 ) FROM x ; \nSELECT abs ( 10 + 10 ) IN ( SELECT 10 UNION ALL SELECT 10 ) FROM x ; \nCREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE ) ; \nREPLACE INTO x ( x , x ) VALUES ( 10 , 10 ) ; \nREPLACE INTO x VALUES ( 10 , 10 ) ; \nREPLACE INTO x SELECT 10 , 10 ; \nCREATE TABLE x ( x INTEGER , x ) ; \nINSERT INTO x VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x + 10 , quote ( x + 10 ) FROM x ORDER BY 10 ; \nUPDATE x SET x = printf ( 'y' , x , x ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER ) ; \nSELECT * FROM x WHERE abs ( x ) = 10 OR abs ( x ) = 10 ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 0.1 ) ,( 10 , 10 ) ; \nSELECT x , x FROM x WHERE x IS NULL ; \nINSERT INTO x SELECT x FROM x WHERE x = 10 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x UNIQUE ) ; \nINSERT INTO x SELECT max ( x ) FROM x ; \nINSERT INTO x ( x , x ) SELECT nullif ( x * 10 + 10 , 10 ) , x + 10 FROM x ; \nINSERT INTO x SELECT nullif ( x * 10 + 10 , 10 ) , x + 10 FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 , 10 ) ; \nCREATE TABLE x AS SELECT 'y' AS x ; \nCREATE TABLE x ( x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x , x , x , x ) SELECT * FROM x ; \nINSERT INTO x ( x , x , x ) SELECT 'y' , 10 , 'y' ; \nREPLACE INTO x SELECT x , 10 FROM x ; \nREPLACE INTO x SELECT x , x FROM x ; \nSELECT x , length ( x ) FROM x ; \nCREATE TABLE x ( x , x UNIQUE , x UNIQUE ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nSELECT * , 'y' FROM x ORDER BY x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x INT , x INT ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x <= x ; \nINSERT INTO x SELECT x , count ( * ) FROM x GROUP BY x ; \nINSERT INTO x SELECT x , count () FROM x GROUP BY x ; \nINSERT INTO x ( x , x ) SELECT * FROM x ; \nINSERT INTO x ( x , x , x ) SELECT x , 'y' , x FROM x ; \nINSERT INTO x SELECT x + ( SELECT max ( x ) FROM x ) , x FROM x ; \nUPDATE x SET x = 'y' CONCAT x CONCAT 'y' CONCAT x CONCAT 'y' ; \nINSERT INTO x SELECT x + ( SELECT max ( x ) + 10 FROM x ) , x FROM x ; \nDELETE FROM x WHERE x != 10 ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 'y' , 'y' ) ; \nINSERT INTO x SELECT DISTINCT NULL , x , x , x FROM x LEFT OUTER JOIN x ON x == x AND x == x AND x == x WHERE x IS NULL ; \nINSERT INTO x SELECT x , 10 FROM x WHERE x = 10 ; \nINSERT INTO x SELECT ( SELECT x FROM x ) , 10 ; \nINSERT INTO x ( x ) SELECT 10 UNION ALL SELECT 10 ORDER BY 10 ; \nINSERT INTO x SELECT x , x + 10 FROM x ; \nSELECT 'y' , x , x FROM x UNION ALL SELECT 'y' , x , x FROM x ORDER BY x ; \nSELECT 'y' , x , x FROM x UNION ALL SELECT 'y' , x , x FROM x ORDER BY x , x ; \nINSERT INTO x ( x ) SELECT 10 FROM x LIMIT 10 ; \nUPDATE x SET x = randstr ( 10 , 10 ) WHERE ( x % 10 ) == 10 ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) , randstr ( 10 , 10 ) , x FROM x ; \nINSERT INTO x SELECT 10 , 10 ; \nINSERT INTO x SELECT * FROM x LIMIT 10 ; \nINSERT INTO x SELECT DISTINCT * FROM x ; \nCREATE TABLE x ( x CHECK( x != 'y' ) ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ) ; INSERT INTO x VALUES ( 10 ) ; \nCREATE TABLE x ( x INT ) ; INSERT INTO x VALUES ( 10 ) ; \nDELETE FROM x ; DELETE FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT REPLACE , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT IGNORE , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT FAIL , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT ABORT , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT ROLLBACK , x ) ; \nINSERT INTO x SELECT * FROM x UNION ALL SELECT * FROM x WHERE EXISTS ( SELECT * FROM x WHERE x = x ) ; \nSELECT coalesce ( instr ( 'y' , NULL ) , 10 ) ; \nSELECT coalesce ( instr ( NULL , NULL ) , 10 ) ; \nSELECT instr ( x , x ) FROM x ; \nINSERT INTO x SELECT x + 10 , randstr ( 10 , 10 ) FROM x ; \nINSERT INTO x SELECT x + 10 , x CONCAT 'y' CONCAT x FROM x ; \nUPDATE x SET x = substr ( x , 10 , 10 ) ; \nSELECT md5sum ( x CONCAT x ) FROM x ; \nINSERT INTO x SELECT round ( x / 10 ) , randstr ( 10 , 10 ) , randstr ( 10 , 10 ) FROM x ; \nSELECT max ( min ( x , x ) ) , min ( max ( x , x ) ) , x FROM x GROUP BY x ORDER BY x ; \nSELECT * FROM x WHERE x == 10 ; \nINSERT INTO x VALUES ( 0.1 , 'y' , 'y' ) ; \nSELECT * FROM x WHERE x == 'y' ; \nSELECT * FROM x WHERE x > 'y' ; \nSELECT * FROM x WHERE x > 10 AND x < 10 ; \nSELECT * FROM x WHERE x >= 'y' AND x < 'y' ; \nSELECT * FROM x WHERE x == 'y' AND x > 10 ; \nSELECT * FROM x WHERE 10 < x ; \nSELECT * FROM x WHERE 10 < x AND 10 >= x ; \nSELECT * FROM x WHERE x < 10 AND x > 10 ; \nSELECT * FROM x WHERE x >= 10 ; \nSELECT x , x , x FROM x WHERE x == 'y' ; \nINSERT INTO x SELECT NULL , x , x FROM x ; \nSELECT x FROM x WHERE x = 0.1 + 0.1 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT ) ; \nSELECT * FROM x WHERE x < x ; \nSELECT * FROM x WHERE x = x ; \nSELECT x FROM x WHERE x < 10 ; \nDELETE FROM x WHERE x = 10 OR x < 10 ; \nDELETE FROM x WHERE abs ( x ) IS NULL OR abs ( x ) < 10 ; \nUPDATE x SET x = 'y' WHERE abs ( x ) = 10 ; \nSELECT intreal ( 10 ) ; \nSELECT intreal ( 10 ) = 10 , 10 = intreal ( 10 ) ; \nSELECT intreal ( 10 ) = 0.1 , 0.1 = intreal ( 10 ) ; \nSELECT typeof ( intreal ( 10 ) ) ; \nSELECT 'y' CONCAT intreal ( 10 ) CONCAT 'y' ; \nSELECT max ( 0.1 , intreal ( 10 ) , 0.1 ) , max ( 10 , intreal ( 10 ) , 10 ) ; \nSELECT max ( 0.1 , intreal ( 10 ) , intreal ( 10 ) , 0.1 ) , max ( 10 , intreal ( 10 ) , intreal ( 10 ) , 10 ) ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , NULL ) ; \nSELECT x FROM x WHERE x IS NULL ; \nSELECT x FROM x WHERE 10 ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , NULL , NULL ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , NULL ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , NULL , 10 ) ; \nSELECT x , x , 'y' FROM x , x ON x = x ; \nSELECT * FROM x AS x NATURAL JOIN x ; \nSELECT * FROM x NATURAL JOIN x AS y ; \nSELECT * FROM x AS x INNER JOIN x USING ( b , c ) ; \nSELECT * FROM x INNER JOIN x AS y USING ( b , c ) ; \nSELECT * FROM x AS x INNER JOIN x AS y USING ( b , c ) ; \nSELECT * FROM x INNER JOIN x USING ( b ) ; \nSELECT * FROM x INNER JOIN x USING ( c ) ; \nSELECT * FROM x INNER JOIN x USING ( c , b ) ; \nSELECT * FROM x CROSS JOIN x USING ( b , c ) ; \nSELECT * FROM x INNER JOIN x USING ( b , c ) ; \nSELECT * FROM x NATURAL JOIN x NATURAL JOIN x ; \nSELECT * FROM x NATURAL JOIN x USING ( b ) ; \nSELECT * FROM x JOIN x ON x = x USING ( b ) ; \nSELECT * FROM x JOIN x USING ( a ) ; \nSELECT * FROM x JOIN x USING ( d ) ; \nSELECT * FROM x JOIN x ON x = x ; \nSELECT * FROM x LEFT x JOIN x ; \nSELECT * FROM x NATURAL AWK SED JOIN x ; \nSELECT * FROM x , x WHERE x < x ; \nSELECT * FROM x , x WHERE x > x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , NULL ) ; \nSELECT coalesce ( x , 10 ) FROM x LEFT JOIN x ON x = x ; \nCREATE VIEW x AS SELECT x , x FROM x , x WHERE x = x ; \nSELECT * FROM x LEFT JOIN x ON ( x = x ) ; \nSELECT * FROM x LEFT JOIN SELECT x , x FROM x , x WHERE x = x ON ( x = x ) ; \nSELECT * FROM x LEFT JOIN SELECT 10 , x , x FROM x AS sub1 ON x = x ; \nCREATE VIEW x AS SELECT * FROM x WHERE x > 10 ; \nSELECT * FROM x LEFT JOIN x ; \nSELECT * FROM x LEFT JOIN SELECT * FROM x ; \nSELECT * FROM x LEFT JOIN x , x WHERE x = x ; \nSELECT * FROM SELECT 10 LEFT JOIN SELECT x + 10 FROM x GROUP BY 10 ; \nCREATE VIEW x AS SELECT x , 10 AS b FROM x ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = x WHERE x = 10 ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = x WHERE x + 10 = x ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = x ORDER BY x ; \nSELECT * , 'y' FROM x LEFT JOIN x WHERE NOT ( 'y' = 'y' AND x = 10 ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT * FROM x LEFT JOIN SELECT abs ( 10 ) AS y FROM x ON x WHERE NOT ( x = 'y' ) ; \nCREATE VIEW x AS SELECT x FROM x LEFT JOIN x ; \nCREATE VIEW x ( x ) AS SELECT x FROM x LEFT JOIN x ; \nSELECT * FROM x LEFT JOIN x WHERE NULL IN ( x ) ; \nSELECT * FROM x LEFT JOIN x ON ( x = x ) JOIN x ON ( x = coalesce ( x , 10 ) ) ; \nSELECT * FROM x JOIN x ON ( x = x ) JOIN x ON ( x = x ) ; \nSELECT x , x FROM x LEFT JOIN x ON ( x = x ) LEFT JOIN x ON ( x = x ) ; \nSELECT x , x FROM x LEFT JOIN x ON ( x = x ) LEFT JOIN x ON ( x = x + 10 ) ; \nSELECT DISTINCT x , x FROM x LEFT JOIN x LEFT JOIN x ON ( x = x + 10 ) ; \nSELECT x , x FROM x LEFT JOIN x LEFT JOIN x ON ( x = x + 10 ) ; \nSELECT x FROM x LEFT JOIN x USING ( a ) ; \nSELECT x FROM x LEFT JOIN x ON ( x = x AND x = x AND x = x ) ; \nCREATE TABLE x ( x , x ) ; INSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE TABLE x ( x , x ) ; INSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE TABLE x ( x ) ; INSERT INTO x VALUES ( 10 ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x INTEGER ) ; \nCREATE TABLE x ( x NOT NULL ) ; \nSELECT * FROM x LEFT JOIN x LEFT JOIN x ON x = x ; \nCREATE TABLE x ( x TEXT NOT NULL , x TEXT ) ; \nCREATE TABLE x ( x TEXT NOT NULL , x TEXT NOT NULL ) ; \nSELECT * FROM x LEFT JOIN x JOIN x WHERE x = x ; \nSELECT count ( x ) FROM x LEFT JOIN x ON x GROUP BY x ; \nSELECT count ( x ) FROM SELECT * FROM x LEFT JOIN x ON x GROUP BY x ; \nSELECT * FROM x LEFT JOIN x ON x = 10 OR x = 10 WHERE x IS NULL ; \nSELECT ifnull ( x , 'y' ) FROM x LEFT JOIN x ON ( x = x ) ; \nSELECT * FROM x , x WHERE ( x >= 10 OR x < 10 ) AND x IN ( 10 , x ) ORDER BY 10 ; \nSELECT * FROM x LEFT JOIN x USING ( a ) LEFT JOIN x USING ( a ) ; \nSELECT x , x FROM x LEFT JOIN x ON x = x LEFT JOIN x ON x = x ; \nSELECT * FROM x JOIN x USING ( y ) JOIN x USING ( x ) ; \nSELECT * FROM x JOIN x NATURAL JOIN x ; \nSELECT * FROM x JOIN x USING ( y ) NATURAL JOIN x ; \nSELECT * FROM x NATURAL JOIN x JOIN x USING ( x , z ) ; \nSELECT * FROM x NATURAL JOIN x JOIN x USING ( x ) ; \nSELECT * FROM x NATURAL JOIN x JOIN x USING ( z ) ; \nINSERT INTO x SELECT x + 10 , x CONCAT x FROM x ; \nINSERT INTO x SELECT a_string ( 10 ) , a_string ( 10 ) FROM x ; \nCREATE TABLE x . x ( x INTEGER ) ; \nINSERT INTO x . x VALUES ( 10 ) ; \nINSERT OR IGNORE INTO x . x SELECT * FROM x . x ; \nINSERT INTO x SELECT randomblob ( 10 ) , randomblob ( 10 ) , randomblob ( 10 ) FROM x ; \nSELECT last_insert_rowid () ; \nUPDATE x SET x = x + 10 , x = 10 + last_insert_rowid () ; \nUPDATE x SET x = 10 + last_insert_rowid () ; \nDROP TABLE x ; DROP TABLE x ; DROP TRIGGER x ; \nUPDATE x SET x = last_insert_rowid () WHERE x = 10 ; \nSELECT changes () , total_changes () ; \nUPDATE x SET x = x + changes () WHERE x = 10 ; \nSELECT count () FROM x WHERE x = 10 ; \nSELECT changes () ; \nDROP TABLE x ; DROP TABLE x ; DROP TABLE x ; \nDELETE FROM x WHERE x IS NOT NULL ; \nSELECT total_changes () ; \nSELECT x FROM x WHERE x LIKE 'y' ORDER BY 10 ; \nSELECT x FROM x WHERE x MATCH 'y' ORDER BY 10 ; \nINSERT INTO x SELECT * FROM x ORDER BY x ; \nSELECT x FROM x WHERE x LIKE 'y' ORDER BY x ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nSELECT quote ( x ) FROM x WHERE x LIKE 'y' ORDER BY x ; \nSELECT quote ( x ) FROM x WHERE x LIKE 'y' ORDER BY x DESC ; \nSELECT quote ( x ) FROM x WHERE x LIKE 'y' ORDER BY x ASC ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ,( 10 ) ,( 10 ) ; \nSELECT x FROM x WHERE x GLOB 'y' ; \nSELECT * FROM x WHERE ( x LIKE 'y' ) ; \nSELECT * FROM x WHERE x GLOB 'y' ; \nSELECT x GLOB 'y' FROM x ; \nCREATE TABLE x ( x TEXT , x , x , x ) ; \nCREATE VIEW x AS SELECT * FROM x LIMIT 10 ; \nSELECT count ( * ) FROM SELECT * FROM x ; \nCREATE TABLE x AS SELECT * FROM x LIMIT 10 ; \nSELECT x FROM SELECT x * 10 + x AS z FROM x ORDER BY x LIMIT 10 ORDER BY x LIMIT 10 ; \nINSERT INTO x SELECT x FROM x ORDER BY x LIMIT 10 OFFSET 10 ; \nINSERT INTO x SELECT x + ( SELECT max ( x ) FROM x ) FROM x ; \nSELECT x FROM x ORDER BY x DESC LIMIT 10 OFFSET 10 ; \nINSERT INTO x SELECT x - x , x + x FROM x WHERE x BETWEEN 10 AND 10 ORDER BY x LIMIT 10 ; \nINSERT INTO x SELECT x - x , x + x FROM x WHERE x BETWEEN 10 AND 10 ORDER BY x DESC LIMIT 10 ; \nINSERT INTO x SELECT x - x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 10 ; \nSELECT * FROM x ORDER BY x LIMIT 10 ; \nSELECT * FROM x ORDER BY x DESC , x DESC LIMIT 10 ; \nSELECT count ( * ) , sum ( x ) , sum ( x ) , min ( x ) , max ( x ) , min ( x ) , max ( x ) FROM x ; \nSELECT * FROM x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x UNION ALL SELECT x FROM x LIMIT 10 ; \nSELECT x FROM x UNION ALL SELECT x FROM x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x UNION ALL SELECT x FROM x ORDER BY 10 LIMIT 10 OFFSET 10 ; \nSELECT x FROM x UNION SELECT x + 10 FROM x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x UNION SELECT x + 10 FROM x ORDER BY 10 DESC LIMIT 10 OFFSET 10 ; \nSELECT x + 10 FROM x EXCEPT SELECT x FROM x LIMIT 10 ; \nSELECT x + 10 FROM x EXCEPT SELECT x FROM x ORDER BY 10 DESC LIMIT 10 ; \nSELECT x + 10 FROM x INTERSECT SELECT x FROM x LIMIT 10 ; \nSELECT x + 10 FROM x INTERSECT SELECT x FROM x LIMIT 10 OFFSET 10 ; \nSELECT x + 10 FROM x INTERSECT SELECT x FROM x ORDER BY 10 DESC LIMIT 10 OFFSET 10 ; \nSELECT DISTINCT CAST ( round ( x / 10 ) AS INTEGER ) FROM x LIMIT 10 ; \nSELECT DISTINCT CAST ( round ( x / 10 ) AS INTEGER ) FROM x LIMIT 10 OFFSET 10 ; \nSELECT * FROM SELECT * FROM x LIMIT 10 ; \nSELECT x , x , 'y' FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY x LIMIT 10 ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x , x , 'y' FROM x , x WHERE x = 'y' AND x = x ORDER BY x LIMIT 10 ; \nSELECT x , x , 'y' FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY x DESC LIMIT 10 ; \nSELECT * , 'y' FROM x , x WHERE x = x ORDER BY x LIMIT 10 ; \nSELECT * , 'y' FROM x LEFT JOIN x ON x = x ORDER BY x LIMIT 10 ; \nSELECT * , 'y' FROM x WHERE x = 10 AND ( x = 10 OR x = 10 ) ORDER BY x DESC ; \nSELECT * , 'y' FROM x WHERE x = 10 AND ( x = 10 OR x = 10 ) ORDER BY x DESC LIMIT 10 ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT * , 'y' FROM x WHERE x IN ( 10 , 10 , 10 ) ORDER BY x DESC LIMIT 10 ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY x DESC LIMIT 10 ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY x LIMIT 10 ; \nCREATE TABLE x ( x INT PRIMARY KEY , x ) ; \nCREATE TABLE x ( x , x ) ; INSERT INTO x VALUES ( 10 , 10 ) ; \nSELECT x FROM x , x WHERE x = x AND x <= x ORDER BY x DESC ; \nINSERT INTO x ( x , x , x ) VALUES ( 'y' , 10 , 'y' ) ,( 'y' , 10 , 'y' ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' ) ,( 'y' , 'y' , 'y' ) ,( 'y' , 'y' , 'y' ) ; \nCREATE TABLE x ( x , x , x , x VARCHAR(100) ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 'y' , 10 , 'y' ) ; \nINSERT INTO x SELECT tx_exec ( 'y' ) ; \nUPDATE x SET x = tx_exec ( 'y' ) ; \nSELECT x * 10 FROM x ORDER BY x * 10 ; \nSELECT x FROM x WHERE x = 'y' ORDER BY 10 ; \nSELECT x FROM x UNION SELECT x FROM x ORDER BY 10 ; \nSELECT * FROM x ORDER BY x DESC ; \nINSERT INTO x SELECT x FROM x WHERE x BETWEEN 10 AND 10 ; \nSELECT count ( * ) FROM SELECT DISTINCT x FROM x ; \nCREATE VIRTUAL TABLE x USING rtree ( id , a , b , c , d ) ; \nSELECT x , count ( x ) , count ( * ) FROM SELECT NULL AS x , x + 10 AS y FROM x UNION SELECT * FROM x GROUP BY x ORDER BY x ; \nCREATE TABLE x ( x INTEGER UNIQUE NOT NULL ) ; \nSELECT coalesce ( min ( x ) , 10 ) FROM x ; \nSELECT coalesce ( max ( x ) , 10 ) FROM x ; \nSELECT coalesce ( max ( x ) , 10 ) FROM x WHERE x < 10 ; \nSELECT * FROM SELECT max ( x ) FROM x ; \nSELECT * FROM SELECT min ( x ) FROM x ; \nSELECT min ( x ) , max ( x ) FROM x ; \nSELECT ( SELECT min ( x ) FROM x ) , ( SELECT max ( x ) FROM x ) ; \nSELECT min ( x ) FROM x WHERE x = 10 ; \nSELECT max ( x ) FROM x WHERE x = 10 ; \nSELECT min ( x ) FROM x WHERE x = 10 AND x >= 0.1 ; \nSELECT max ( x ) FROM x WHERE x = 10 AND x >= 0.1 ; \nINSERT INTO x SELECT x , x , x * x FROM x ; \nINSERT INTO x SELECT x , x , x * x + 10 FROM x ; \nSELECT min ( x ) FROM x WHERE x = 10 AND x = 10 ; \nSELECT max ( x ) FROM x WHERE x = 10 AND x = 10 ; \nSELECT min ( x ) FROM x WHERE x = 10 AND x = 10 AND x = 10 ; \nSELECT max ( x ) FROM x WHERE x = 10 AND x = 10 AND x = 10 ; \nSELECT * FROM x ORDER BY x , x , x ; \nSELECT min ( x ) , count ( x ) FROM x WHERE x = 'y' ; \nSELECT min ( x ) FROM x WHERE x = 'y' AND x > 'y' ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nSELECT max ( x + x ) FROM x ; \nSELECT x , max ( x + x ) FROM x ; \nSELECT x , min ( x + x ) FROM x ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , NULL , 10 ) ,( 10 , 10 , NULL ) ; \nSELECT min ( x ) , x FROM x ; \nSELECT min ( x ) , x FROM x WHERE x < 10 ; \nSELECT MIN ( x ) , x FROM x WHERE x ISNULL ; \nSELECT MIN ( x ) FROM x WHERE x = 10 ; \nSELECT min ( x ) , x , x FROM x WHERE x = 'y' ; \nSELECT x , MIN ( x ) FROM x ; \nCREATE TABLE x ( x TEXT , x TEXT , x TEXT , x TEXT ) ; \nUPDATE x SET x = x CONCAT x CONCAT x CONCAT x ; \nSELECT * ; \nCREATE TABLE x ( x UNIQUE NOT NULL , x UNIQUE NOT NULL ) ; \nCREATE TABLE x ( x INT UNIQUE , x TEXT UNIQUE ) ; \nINSERT OR IGNORE INTO x VALUES ( 0.1 , 'y' ) ; \nINSERT OR IGNORE INTO x VALUES ( 'y' , 10 ) ; \nCREATE TABLE x ( x INTEGER , x TEXT , x ) ; \nINSERT INTO x VALUES ( 0.1 , 10 , 10 ) ; \nINSERT INTO x VALUES ( 10 , 0.1 , 10 ) ; \nINSERT INTO x VALUES ( 0.1 , 0.1 , 10 ) ; \nSELECT DISTINCT x , x FROM x ORDER BY x ; \nSELECT min ( x ) , max ( x ) , count ( x ) FROM x GROUP BY x ORDER BY 10 ; \nCREATE TABLE x AS SELECT x ; \nCREATE TABLE x AS SELECT 10 ; \nUPDATE x SET x = x + 10 WHERE x = 10 OR x = 10 ; \nCREATE TABLE x AS SELECT * FROM x UNION ALL SELECT 10 ; \nREPLACE INTO x ( x ) VALUES ( 'y' ) ; \nSELECT x , quote ( x ) FROM x ; \nUPDATE x SET x = 10 , x = 10 , x = 10 , x = 10 , x = 10 , x = 10 ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x = 10 ; \nSELECT x , * FROM SELECT * FROM x , x ; \nCREATE VIEW x AS SELECT * FROM x , x ; \nSELECT x FROM x WHERE x <= 10 ; \nSELECT x FROM x WHERE x < 10 ORDER BY 10 ; \nCREATE VIEW x AS SELECT x AS p , x AS q FROM x AS x1 , x AS x2 WHERE x = x ; \nSELECT * FROM x WHERE x >= 10 ORDER BY x ; \nSELECT * FROM x WHERE x > 10 ORDER BY x ; \nSELECT * FROM x WHERE x >= 10 AND x < 10 ORDER BY x DESC ; \nSELECT * FROM x WHERE x >= 10 AND x <= 10 ORDER BY x DESC ; \nINSERT INTO x ( x ) SELECT x CONCAT 'y' FROM x ; \nSELECT count ( x ) FROM x WHERE x IN ( SELECT x FROM x ) ; \nSELECT count ( x ) FROM x WHERE x IN ( SELECT x FROM x ORDER BY x + 10 ) ; \nSELECT x AS c , x , x FROM x LEFT JOIN SELECT x , max ( x ) + 10 AS c FROM x GROUP BY x USING ( c ) ; \nSELECT * FROM SELECT x AS c , x , x FROM x LEFT JOIN SELECT x , max ( x ) + 10 AS c FROM x GROUP BY x USING ( c ) ; \nCREATE TABLE x ( x INTEGER NOT NULL , x TEXT ) ; \nSELECT x , max ( x ) FROM x GROUP BY 10 , 10 ORDER BY 10 , 10 ; \nSELECT * FROM x , SELECT x FROM x AS x WHERE x = x ; \nCREATE TABLE x AS SELECT * FROM x , x ; \nSELECT x FROM x LEFT JOIN x ON ( x = x ) ; \nUPDATE x SET x = 10 WHERE x AND ( SELECT x FROM x WHERE x ) ; \nINSERT OR IGNORE INTO x SELECT x * 10 FROM x ; \nINSERT OR IGNORE INTO x SELECT x + 10 FROM x ; \nINSERT OR IGNORE INTO x SELECT - x FROM x ; \nSELECT * FROM x WHERE x >= ( SELECT x FROM x ) UNION ALL SELECT * FROM x LIMIT ( SELECT x FROM x ) ; \nSELECT quote ( eval ( 'y' , 'y' ) ) ; \nSELECT quote ( eval ( 'y' ) ) ; \nSELECT eval ( 'y' , 'y' ) ; \nSELECT x , coalesce ( x , eval ( 'y' ) ) , x \nINSERT INTO x VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10 , NULL , 10 ) ; \nSELECT eval ( 'y' ) ; \nSELECT x , x , eval ( printf ( 'y' , x + x , x + x ) ) FROM x , x ; \nCREATE TABLE x ( x PRIMARY KEY , x UNIQUE , x ) ; \nINSERT OR IGNORE INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ; \nINSERT OR REPLACE INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ; \nINSERT OR ABORT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , NULL , 10 , 10 , 10 ) ; \nINSERT OR IGNORE INTO x ( x , x , x , x , x ) VALUES ( 10 , NULL , 10 , 10 , 10 ) ; \nINSERT OR REPLACE INTO x ( x , x , x , x , x ) VALUES ( 10 , NULL , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , NULL , 10 , 10 ) ; \nINSERT OR IGNORE INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , NULL , 10 , 10 ) ; \nINSERT OR REPLACE INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , NULL , 10 , 10 ) ; \nINSERT OR ABORT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , NULL , 10 , 10 ) ; \nINSERT OR ABORT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , 10 , NULL , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 , NULL ) ; \nINSERT OR REPLACE INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , 10 , NULL , 10 ) ; \nUPDATE x SET x = NULL , x = x , x = x ; \nCREATE TABLE x ( x NOT NULL UNIQUE ) ; \nCREATE TABLE x ( x UNIQUE NOT NULL ) ; \nCREATE TABLE x ( x PRIMARY KEY NOT NULL ) ; \nCREATE TABLE x ( x NOT NULL PRIMARY KEY ) ; \nCREATE TABLE x ( x PRIMARY KEY UNIQUE NOT NULL ) ; \nCREATE TABLE x ( x UNIQUE PRIMARY KEY NOT NULL ) ; \nSELECT ifnull ( x + x , 10 ) FROM x ; \nSELECT ifnull ( x * x , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN x != 10 THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN NOT x != 10 THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN x != 10 AND x != 10 THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN NOT ( x != 10 AND x != 10 ) THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN x != 10 OR x != 10 THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE WHEN NOT ( x != 10 OR x != 10 ) THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT ifnull ( CASE x WHEN x THEN 10 ELSE 10 END , 10 ) FROM x ; \nSELECT count ( * ) , count ( x ) , count ( x ) , sum ( x ) , sum ( x ) , avg ( x ) , avg ( x ) , min ( x ) , max ( x ) FROM x ; \nSELECT x FROM x WHERE x < 10 AND x = 10 ; \nSELECT x FROM x WHERE NOT ( x < 10 AND x = 10 ) ; \nSELECT x FROM x UNION SELECT x FROM x ORDER BY x ; \nCREATE TABLE x ( x , x UNIQUE ON CONFLICT IGNORE ) ; \nSELECT x FROM x WHERE x = NULL ; \nSELECT x FROM x WHERE x IN ( 10 , NULL ) ; \nSELECT x FROM x WHERE x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x != 10 ORDER BY x ; \nINSERT INTO x VALUES ( 10 , NULL , 'y' ) ; \nINSERT INTO x VALUES ( NULL , 'y' , 'y' ) ; \nSELECT * FROM x WHERE x = 10 AND x IS NULL ; \nSELECT * FROM x WHERE x IS NULL AND x = 'y' ; \nINSERT INTO x VALUES ( NULL ) ,( 10 ) ,( 10 ) ,( 10 ) ,( NULL ) ; \nCREATE VIRTUAL TABLE x USING echo ( tx ) ; \nSELECT * FROM x ORDER BY x NULLS FIRST ; \nSELECT * FROM x ORDER BY x NULLS LAST ; \nSELECT x , x FROM x WHERE x = 10 ORDER BY x NULLS LAST , x ; \nSELECT * FROM x WHERE x = 10 AND x = 10 ORDER BY x NULLS LAST ; \nSELECT * FROM x WHERE x = 10 AND x = 10 ORDER BY x DESC NULLS FIRST ; \nSELECT * FROM x ORDER BY x DESC NULLS FIRST ; \nDELETE FROM x WHERE x NOT IN ( 10 , 10 ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ; \nSELECT count ( * ) FROM x , x ; \nSELECT ( SELECT 'y' FROM SELECT 'y' ORDER BY 'y' ASC , 'y' DESC GROUP BY 10 HAVING length ( x ) ) FROM x ; \nSELECT ( SELECT x CONCAT x FROM x , x ORDER BY x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT x , x , 'y' FROM x ORDER BY x , x LIMIT 10 ; \nSELECT x , x FROM x , x ORDER BY 10 , 10 ; \nSELECT x , x FROM x CROSS JOIN x ORDER BY 10 , 10 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x , x , x ) ; \nSELECT x , x , x FROM x ORDER BY x , x , x ; \nSELECT x , x , x FROM x ORDER BY x DESC , x , x ; \nSELECT x FROM x ORDER BY x , x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x ORDER BY x DESC , x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x ORDER BY x , x DESC LIMIT 10 OFFSET 10 ; \nSELECT x FROM x ORDER BY x , x , x , x , x ; \nSELECT x FROM x ORDER BY x , x , x , x , x DESC ; \nSELECT x FROM x ORDER BY x , x , x , x DESC , x ; \nSELECT x FROM x ORDER BY x , x , x DESC , x , x ; \nSELECT x FROM x ORDER BY x , x DESC , x , x , x ; \nSELECT x FROM x ORDER BY x DESC , x , x , x , x ; \nSELECT x FROM x ORDER BY x DESC , x DESC , x , x , x LIMIT 10 ; \nSELECT x FROM x ORDER BY x , x , x , x , x DESC LIMIT 10 OFFSET 10 ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x , x ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x DESC , x DESC ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x , x DESC ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x DESC , x ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x , x DESC NULLS FIRST ; \nSELECT x , x , sum ( x ) FROM x GROUP BY x , x ORDER BY x DESC , x NULLS LAST ; \nSELECT sum ( length ( x ) ) FROM x ; \nCREATE TABLE x ( x CHECK( x < 10 ) , x CHECK( x < 10 ) ) ; \nINSERT INTO x SELECT NULL , a_string ( 10 ) FROM x ; \nUPDATE x SET x = NULL WHERE x > 10 ; \nSELECT count ( * ) FROM x WHERE x < 10 ; \nRELEASE x ; \nCREATE TABLE x . x ( x UNIQUE , x UNIQUE ) ; \nREPLACE INTO x SELECT * FROM x ; \nINSERT INTO x SELECT * FROM x WHERE x <= 10 ; \nUPDATE x SET x = a_string ( 10 ) ; \nINSERT INTO x SELECT a_string ( ( SELECT 10 + max ( x ) FROM x ) ) FROM x ; \nINSERT INTO x ( x , x , x ) SELECT x + 10 , x , x FROM x ; \nINSERT INTO x SELECT a_string ( 10 ) , a_string ( 10 ) , a_string ( 10 ) FROM x ; \nUPDATE x SET x = a_string ( 10 ) WHERE x > 10 ; \nSELECT COALESCE ( max ( x ) , 10 ) FROM x ; \nINSERT INTO x SELECT x CONCAT x FROM x ; \nDELETE FROM x WHERE x % 10 != 10 ; \nINSERT INTO x VALUES ( 'y' , NULL ) ,( 'y' , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( NULL , 10 ) ,( NULL , 10 ) ; \nPRAGMA x . x ( x ) ; \nINSERT INTO x ( x ) SELECT x CONCAT x CONCAT x CONCAT x FROM x ; \nINSERT INTO x SELECT x + 10 , randomblob ( 10 ) , x + 10 , randomblob ( 10 ) FROM x ; \nCREATE TABLE x . x ( x INTEGER PRIMARY KEY , x , x , x ) ; \nINSERT INTO x VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT printf ( 'y' ) ; \nSELECT printf ( 'y' , 10 , 10 , 10 ) ; \nSELECT printf ( 'y' , 10 , 'y' , 10 ) ; \nSELECT printf ( 'y' , 0.1 ) ; \nSELECT printf ( 'y' , 10 , 0.1 ) ; \nSELECT printf ( 'y' , 10 , 10 , 0.1 ) ; \nSELECT printf ( 'y' , 0.1 , 'y' ) ; \nSELECT printf ( 'y' , 10 ) ; \nSELECT printf ( 'y' , 10 , 'y' ) ; \nSELECT printf ( 'y' , 'y' ) ; \nSELECT printf ( 'y' , x , x , x ) FROM x ORDER BY x ; \nSELECT printf ( 'y' , x , x ) FROM x ORDER BY x ; \nSELECT printf ( 'y' , x ) FROM x ORDER BY x ; \nSELECT printf ( 'y' , 'y' , 'y' ) ; \nSELECT printf ( 'y' , 10 , 10 ) ; \nCREATE TABLE x ( x , x , x CHECK( x != x ) ) ; \nCREATE INDEX x ON x ( x ) WHERE x = x ; \nINSERT INTO x VALUES ( 10 , 'y' , 0.1 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 'y' , 0.1 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 'y' , 10 ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER , x INTEGER , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , NULL , 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nREINDEX x . x ; \nSELECT x FROM x WHERE x IS NULL ORDER BY 10 ; \nSELECT x FROM x WHERE x IS NULL AND x IN ( 10 , 10 , 10 , 10 , 10 ) ; \nSELECT sum ( x ) , sum ( length ( x ) ) FROM x ; \nUPDATE x SET x = randomblob ( 10 ) WHERE x = 10 ; \nSELECT 10 AS y FROM x , x ORDER BY x ; \nSELECT 10 AS yy FROM x , x ORDER BY x ; \nSELECT x AS y FROM x ORDER BY x ; \nSELECT x AS yy FROM x ORDER BY x ; \nSELECT x AS yy FROM x ORDER BY 10 ; \nSELECT 'y' , substr ( x , 10 ) AS m FROM x ORDER BY x ; \nSELECT 'y' , substr ( x , 10 ) AS m FROM x ORDER BY lower ( x ) ; \nCREATE TABLE x ( x CHAR(2) ) ; \nSELECT count ( * ) , substr ( x , 10 , 10 ) AS m FROM x GROUP BY x ORDER BY 10 , 10 ; \nSELECT count ( * ) , substr ( x , 10 , 10 ) AS mx FROM x GROUP BY x ORDER BY 10 , 10 ; \nSELECT min ( x ) FROM x GROUP BY lower ( x ) ; \nSELECT min ( x ) AS name FROM x GROUP BY lower ( x ) ; \nSELECT 10 AS x WHERE ( SELECT x AS y WHERE 10 > x ) ; \nCREATE TABLE x ( x UNIQUE ON CONFLICT ROLLBACK ) ; \nSELECT x FROM x WHERE ( x % 10 ) == 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE ( x % 10 ) == 10 ORDER BY x ASC ; \nSELECT x FROM x WHERE x = 'y' OR x = 'y' OR x = 'y' ; \nSELECT x , * FROM x WHERE x > 10 ; \nSELECT x FROM x WHERE x NOT IN ( 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x FROM x WHERE x NOT IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY x ; \nINSERT INTO x ( x , x ) SELECT - x , x FROM x ; \nSELECT count ( * ) FROM x WHERE x == 'y' ; \nSELECT x , x , addrow ( x + 10 ) , 'y' FROM x LIMIT 10 ; \nSELECT * FROM x WHERE x < 'y' ORDER BY x ASC ; \nSELECT * FROM x WHERE x < 'y' ORDER BY x DESC ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , NULL ) ; \nCREATE TABLE x ( x ) ; INSERT INTO x ( x ) VALUES ( 'y' ) ; \nCREATE TABLE x ( x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT ) ; \nCREATE INDEX x ON x ( x , x , x , x , x ) ; \nUPDATE x SET x = ( SELECT * FROM SELECT x , 10 ) < 10 ; \nUPDATE x SET x = NULL WHERE x < ( SELECT * FROM SELECT x , 10 ) ; \nDELETE FROM x WHERE x < ( SELECT * FROM SELECT x , 10 ) ; \nUPDATE x SET x = x WHERE x = 10 ; \nSELECT ( SELECT 10 , 10 UNION SELECT 10 , 10 ORDER BY 10 ) IN ( SELECT 10 , 10 ) ; \nSELECT ( SELECT 10 , 10 UNION SELECT 10 , 10 ORDER BY 10 DESC ) IN ( SELECT 10 , 10 ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER , x INTEGER ) ; \nINSERT INTO x VALUES ( NULL , NULL , 10 ) ; \nCREATE TABLE x ( x TEXT , x INTEGER ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , NULL , 10 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , NULL ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 'y' , 'y' , 10 , 10 ) ; \nCREATE TABLE x ( x TEXT PRIMARY KEY , x INT ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 10 , 'y' , 10 , 10 ) ; \nSELECT x FROM x WHERE x = ( SELECT x FROM x WHERE x = x ) ; \nSELECT x FROM x WHERE x IN ( SELECT 10 + x FROM x ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t1 ) ; \nROLLBACK TO SAVEPOINT x ; \nROLLBACK TRANSACTION TO x ; \nROLLBACK TRANSACTION TO SAVEPOINT x ; \nUPDATE x SET x = x CONCAT randstr ( 10 , 10 ) ; \nINSERT OR ROLLBACK INTO x VALUES ( 10 , 'y' ) ; \nUPDATE x SET x = randstr ( 10 , 10 ) WHERE random () % 10 ; \nINSERT INTO x SELECT x FROM x WHERE random () % 10 ; \nDELETE FROM x WHERE random () % 10 ; \nINSERT INTO x SELECT randstr ( 10 , 10 ) FROM x WHERE ( random () % 10 == 10 ) ; \nUPDATE x SET x = 'y' , x = 'y' ; \nSELECT * FROM x ORDER BY 10 , 10 DESC ; \nSELECT * FROM x ORDER BY 10 DESC , x ; \nSELECT * FROM x ORDER BY x DESC , 10 ; \nSELECT x , x FROM x AS x , x AS y ; \nSELECT x FROM x , x ; \nSELECT x FROM x AS x , x ; \nSELECT 10 , 10 UNION SELECT * FROM x ; \nSELECT * FROM x WHERE x = ( SELECT 10 ) ; \nSELECT x FROM SELECT x AS x , x AS y FROM x UNION SELECT x , x FROM x ORDER BY x , x ORDER BY x ; \nINSERT INTO x SELECT x + ( SELECT max ( x ) FROM x ) , x + ( SELECT max ( x ) FROM x ) , x + ( SELECT max ( x ) FROM x ) FROM x ; \nSELECT count ( ( SELECT x FROM x WHERE x = NULL AND x >= x ) ) FROM x AS upper ; \nSELECT * FROM x WHERE x <= 10 ; \nSELECT 10 IN ( SELECT x FROM x ) ; \nSELECT * FROM x , SELECT * FROM x WHERE x = 10 ORDER BY x , x ; \nSELECT * FROM x , SELECT * FROM x WHERE x = 10 ORDER BY x , x LIMIT 10 ; \nSELECT * FROM x , SELECT * FROM x WHERE x = 10 UNION ALL SELECT * FROM x WHERE x = 10 ORDER BY x , x LIMIT 10 ; \nSELECT * FROM x , x WHERE max ( x , x ) > 10 ; \nSELECT * FROM x CROSS JOIN x WHERE x ; \nSELECT * FROM x CROSS JOIN x WHERE NOT x ; \nSELECT * FROM x , x WHERE min ( x , x ) ; \nSELECT * FROM x , x WHERE NOT min ( x , x ) ; \nSELECT x , count ( * ) FROM x GROUP BY 10 ORDER BY x ; \nSELECT x , min ( x ) FROM x GROUP BY x ORDER BY x DESC ; \nSELECT x , min ( x ) FROM x GROUP BY x ORDER BY 10 ; \nSELECT x , min ( x ) FROM x GROUP BY x ORDER BY 10 DESC ; \nSELECT x , min ( x ) FROM x GROUP BY x ORDER BY x ; \nSELECT x , sum ( x ) FROM x WHERE x = 10 GROUP BY x ; \nSELECT x , sum ( x ) FROM x WHERE x = 10 ; \nSELECT typeof ( sum ( x ) ) FROM x ; \nSELECT typeof ( sum ( x ) ) FROM x GROUP BY x ; \nSELECT DISTINCT * FROM x WHERE ( x IS NULL ) ; \nSELECT 10 AS x ORDER BY ( SELECT x ORDER BY 10 ) ; \nSELECT * FROM SELECT NULL , 10 UNION ALL SELECT NULL , 10 ; \nSELECT DISTINCT * FROM SELECT NULL , 10 UNION ALL SELECT NULL , 10 ; \nSELECT DISTINCT * FROM SELECT 10 , 10 UNION ALL SELECT 10 , 10 ; \nCREATE TABLE x ( x TEXT , x FLOAT , x TEXT ) ; \nSELECT * FROM SELECT 10 , SELECT 10 ON likely ( 10 OR 10 ) OR 10 ; \nSELECT x FROM x GROUP BY x ; \nSELECT x FROM x WHERE x > 10 GROUP BY x ; \nSELECT x , x FROM x GROUP BY x , x ; \nSELECT x , x FROM x GROUP BY x ; \nSELECT x , count ( x ) FROM x , x WHERE x = x GROUP BY x ORDER BY x ; \nSELECT x , count ( x ) FROM x , x WHERE x < x GROUP BY x ORDER BY x ; \nSELECT x , count ( x ) FROM x , x WHERE x = x GROUP BY x ORDER BY 10 ; \nSELECT x , count ( x ) FROM x , x GROUP BY x ORDER BY 10 ; \nSELECT x , count ( * ) FROM x , x GROUP BY x ORDER BY 10 ; \nSELECT x FROM SELECT x FROM x LIMIT 10 OFFSET 10 ; \nSELECT x FROM SELECT x FROM x LIMIT 10 ; \nSELECT x FROM SELECT x FROM x LIMIT 10 LIMIT 10 ; \nSELECT * FROM SELECT * FROM x , x ; \nCREATE TABLE x ( x INT , x VARCHAR(8) ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ,( 10 , 'y' ) ; \nSELECT x , x , ( SELECT x FROM x WHERE x = x ) , 'y' FROM SELECT count ( * ) AS cnt , x AS xyz FROM x GROUP BY 10 ORDER BY x , x ; \nSELECT x , x , lower ( ( SELECT x FROM x WHERE x = x ) ) , 'y' FROM SELECT count ( * ) AS cnt , x AS xyz FROM x GROUP BY 10 ORDER BY x , x ; \nSELECT x , x , 'y' FROM SELECT count ( * ) AS cnt , x AS xyz FROM x GROUP BY 10 WHERE ( SELECT x FROM x WHERE x = x ) != 'y' ORDER BY x , x ; \nSELECT x , x , 'y' FROM SELECT count ( * ) AS cnt , x AS xyz FROM x GROUP BY 10 ORDER BY lower ( ( SELECT x FROM x WHERE x = x ) ) ; \nSELECT ( SELECT x FROM x WHERE x = x ) FROM SELECT count ( * ) AS cnt FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT NULL ) ; \nCREATE VIEW x AS SELECT * FROM x UNION SELECT * FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x ) ; \nSELECT 10 IN ( SELECT x , x FROM x ) ; \nSELECT 10 IN ( SELECT * FROM x ) ; \nSELECT 10 IN ( SELECT x , x FROM x UNION SELECT x , x FROM x ) ; \nSELECT 10 IN ( SELECT * FROM x UNION SELECT * FROM x ) ; \nSELECT ( CASE WHEN x = 10 THEN 'y' ELSE x / 10 END ) AS t FROM x GROUP BY x ; \nCREATE TABLE x ( x TEXT , x INT ) ; \nSELECT typeof ( x ) , x FROM x GROUP BY x HAVING x < x ; \nSELECT lower ( ( SELECT x FROM x UNION ALL SELECT x FROM x ORDER BY 10 ) ) ; \nSELECT lower ( ( SELECT x FROM x INTERSECT SELECT x FROM x ORDER BY 10 ) ) ; \nSELECT lower ( ( SELECT x FROM x EXCEPT SELECT x FROM x ORDER BY 10 ) ) ; \nSELECT * FROM SELECT x FROM x UNION SELECT x FROM x WHERE x = x ; \nSELECT DISTINCT * FROM SELECT x FROM x UNION ALL SELECT x FROM x ORDER BY 10 ; \nSELECT x , count ( * ) FROM SELECT x FROM x UNION ALL SELECT x FROM x GROUP BY x ORDER BY 10 ; \nSELECT x , count ( * ) FROM SELECT x FROM x UNION ALL SELECT x FROM x GROUP BY x HAVING count ( * ) > 10 ; \nSELECT x , count ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) FROM x WHERE ( CASE WHEN x != 'y' THEN 10 ELSE 10 END ) GROUP BY 10 ; \nSELECT x , max ( x CONCAT x ) FROM x WHERE ( x CONCAT x CONCAT x ) != 'y' GROUP BY x ; \nCREATE VIEW x AS SELECT x FROM x ORDER BY 10 ; \nCREATE TABLE x AS SELECT x FROM x UNION ALL SELECT x FROM x ; \nSELECT count ( * ) , max ( length ( x ) ) FROM x ; \nCREATE VIEW x AS SELECT * FROM x , x WHERE x = x GROUP BY x ORDER BY x ; \nINSERT INTO x ( x ) SELECT NULL FROM x ; \nUPDATE x SET x = x , x = 'y' ; \nCREATE VIEW x AS SELECT x , roman ( x ) FROM x ; \nSELECT count ( * ) , sum ( x ) FROM x ; \nCREATE TABLE x ( x TEXT , x INT , x INT , x INT ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 , 10 ) ; \nSELECT x , x , x , x , 'y' FROM x WHERE x = 10 ORDER BY x ; \nSELECT x , x , x , x , 'y' FROM x WHERE x != 10 AND x = 10 ORDER BY x DESC ; \nSELECT x , x , x , x , 'y' FROM x WHERE x = 10 ORDER BY x , x , x ; \nSELECT x , x , x , x , 'y' FROM x WHERE x IN ( 10 , 10 ) ORDER BY x , x , x ; \nSELECT x , x , x , x , 'y' FROM x WHERE x BETWEEN 10 AND 10 ORDER BY x , x , x ; \nSELECT x , x , x , x , 'y' FROM x WHERE x IN ( 10 , 10 ) AND x BETWEEN 10 AND 10 ORDER BY x , x ; \nSELECT x , x , x , x , 'y' FROM x WHERE x != 10 AND x = 10 ORDER BY x ; \nCREATE INDEX x ON x ( x , x , x , x , x , x , x , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x INTEGER , x INTEGER , x INTEGER , x INTEGER , x INTEGER ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x VARCHAR(300) ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , NULL ) ; \nSELECT DISTINCT quote ( x ) , quote ( x ) , quote ( x ) , quote ( x ) , 'y' FROM x WHERE x = 10 ; \nINSERT INTO x ( x , x , x ) SELECT x , x , x FROM x ; \nSELECT x FROM x WHERE x = 10 AND x = 10 ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , 'y' , 10 ) ; \nUPDATE x SET x = 'y' CONCAT - x ; \nUPDATE x SET x = 'y' WHERE x == 'y' ; \nSELECT x FROM x ORDER BY substr ( x , 10 , 10 ) ; \nSELECT x FROM x ORDER BY substr ( x , 10 , 10 ) + 0.1 ; \nSELECT x FROM x ORDER BY substr ( x , 10 , 10 ) DESC ; \nSELECT x FROM x ORDER BY substr ( x , 10 , 10 ) + 0.1 DESC ; \nSELECT x , x FROM x ORDER BY x DESC ; \nSELECT x CONCAT 'y' FROM x ORDER BY 10 DESC ; \nSELECT x + 10 FROM x ORDER BY 10 DESC ; \nSELECT x FROM x ORDER BY 10 DESC ; \nSELECT substr ( x , 10 , 10 ) FROM x ORDER BY 10 ; \nSELECT x FROM x ORDER BY x , x DESC ; \nSELECT x FROM x ORDER BY x DESC , x ; \nSELECT x FROM x ORDER BY x DESC , x DESC ; \nCREATE TABLE x ( x INTEGER , x VARCHAR(30) ) ; \nSELECT x FROM x WHERE x <= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x < 10 ORDER BY x DESC ; \nSELECT x FROM x , x WHERE x = 10 ORDER BY x , x ; \nCREATE UNIQUE INDEX x ON x ( x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 'y' ) ; \nSELECT * FROM x LEFT JOIN x ON ( x = x ) ORDER BY x ; \nSELECT next_char ( 'y' , 'y' , 'y' ) ; \nSELECT next_char ( 'y' , 'y' , 'y' , NULL , 'y' ) ; \nSELECT next_char ( 'y' , 'y' , 'y' , NULL , NULL ) ; \nSELECT x , x , x FROM x WHERE x MATCH 'y' ORDER BY x LIMIT 10 ; \nCREATE VIRTUAL TABLE x USING spellfix1 ; \nSELECT x , x FROM x WHERE x MATCH 'y' LIMIT 10 ; \nSELECT x , x FROM x WHERE x = 10 ; \nSELECT x , x FROM x WHERE x = 10 AND x MATCH 'y' ; \nINSERT OR REPLACE INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nINSERT OR ABORT INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nINSERT OR ROLLBACK INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nINSERT OR FAIL INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nINSERT OR IGNORE INTO x ( x , x ) VALUES ( 10 , 'y' ) ; \nSELECT count ( * ) FROM x WHERE x MATCH 'y' AND x <= 10 ; \nSELECT x , x , x FROM x WHERE x MATCH 'y' AND x <= 10 ORDER BY x , x ; \nSELECT spellfix1_scriptcode ( 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ; \nSELECT editdist3 ( 'y' ) ; \nSELECT editdist3 ( 'y' , 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ,( 10 , 'y' , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ; \nSELECT * FROM x WHERE x = 10 ORDER BY x ; \nUPDATE x SET x = x CONCAT hex ( randomblob ( 10 ) ) ; \nSELECT * , 'y' FROM x WHERE x = 10 ORDER BY x ; \nSELECT x , quote ( x ) , x , quote ( x ) , x , x , x , x , 'y' FROM x 'y' , 10 ; \nSELECT * FROM x 'y' ; \nSELECT * FROM x 10 ; \nSELECT x , x FROM x ORDER BY 10 ; \nSELECT x , x , x FROM x WHERE x LIKE 'y' AND NOT x ; \nSELECT count ( * ) FROM x WHERE NOT x ; \nSELECT count ( * ) FROM x WHERE x > 10 ; \nSELECT * FROM x WHERE NOT x ; \nSELECT x , x FROM x , x WHERE x = ( SELECT x ) ; \nSELECT count ( * ) FROM x WHERE x > ( SELECT count ( * ) FROM x ) ; \nSELECT ( x * 10 ) > x FROM x , x WHERE x = x ; \nSELECT x FROM x WHERE ( SELECT ( x * 10 ) > x FROM x WHERE x = x ) ; \nSELECT ( SELECT x ) , x FROM x ; \nSELECT * FROM SELECT ( SELECT x ) , x FROM x ; \nSELECT * FROM SELECT ( SELECT sum ( x ) FROM x ) ; \nCREATE TABLE x ( x INT , x TEXT PRIMARY KEY ) ; \nSELECT ( SELECT 10 ) ; \nSELECT x IN ( 0.1 , 10 ) FROM x ; \nCREATE VIEW x AS SELECT x FROM x WHERE x > 10 ; \nSELECT * FROM x WHERE EXISTS ( SELECT * FROM x WHERE x = x ) ; \nSELECT * FROM x WHERE EXISTS ( SELECT 10 ) ; \nSELECT ( SELECT x ) FROM x ; \nSELECT x , ( SELECT x ) FROM x GROUP BY x ; \nSELECT x , ( SELECT x FROM x WHERE x = x ) FROM x GROUP BY x ; \nSELECT max ( x ) , ( SELECT x FROM x WHERE x = x ) FROM x ; \nSELECT x , ( SELECT ( SELECT x FROM x WHERE x = x ) ) FROM x GROUP BY x ; \nSELECT x , ( SELECT count ( * ) FROM x WHERE x = x ) FROM x ; \nCREATE TABLE x ( x ) ; INSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ; \nCREATE TABLE x ( x ) ; INSERT INTO x VALUES ( 10 ) ,( 10 ) ; \nSELECT max ( ( SELECT avg ( x ) FROM x ) ) FROM x ; \nSELECT max ( ( SELECT count ( x ) FROM x ) ) FROM x ; \nSELECT max ( ( SELECT count () FROM x ) ) FROM x ; \nSELECT max ( ( SELECT x FROM SELECT count ( x ) AS a FROM x ) ) FROM x ; \nSELECT ( SELECT x FROM x ) ; \nSELECT ( SELECT 10 FROM SELECT * FROM x ) AS x WHERE x ; \nSELECT ( SELECT 10 FROM SELECT * FROM SELECT 10 ) AS x WHERE x ; \nSELECT x FROM SELECT x , x FROM SELECT * FROM x UNION ALL SELECT * FROM x WHERE x = 10 ORDER BY x ; \nSELECT x FROM SELECT 'y' , x FROM SELECT x FROM x UNION ALL SELECT x FROM x ORDER BY x ; \nSELECT x , x FROM SELECT x , x FROM SELECT * FROM x UNION ALL SELECT * FROM x ORDER BY x ; \nSELECT ( SELECT x FROM x WHERE x = x ORDER BY x , x ) FROM x ; \nSELECT 10 IN ( SELECT x FROM x ORDER BY x DESC ) ; \nINSERT INTO x SELECT x FROM x UNION ALL SELECT x FROM x ; \nSELECT sum ( x ) FROM SELECT x FROM x ORDER BY x LIMIT 10 ; \nSELECT sum ( x ) FROM SELECT x FROM x ORDER BY x DESC LIMIT 10 ; \nSELECT ( SELECT x FROM x ORDER BY x ) ; \nSELECT ( SELECT x FROM x ORDER BY x DESC ) ; \nSELECT ( SELECT x FROM x ORDER BY x LIMIT 10 ) ; \nSELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 10 ) ; \nSELECT ( SELECT x FROM x ORDER BY x LIMIT 10 OFFSET 10 ) ; \nSELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 10 OFFSET 10 ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x DESC LIMIT 10 OFFSET 10 ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x LIMIT 10 ) ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x DESC LIMIT 10 ) ; \nSELECT test_getsubtype ( test_setsubtype ( 'y' , 10 ) ) ; \nSELECT typeof ( test_setsubtype ( 'y' , 10 ) ) ; \nSELECT test_setsubtype ( 'y' , 10 ) ; \nCREATE TABLE x . x ( x INTEGER PRIMARY KEY , x TEXT ) ; \nINSERT INTO x . x SELECT * FROM x WHERE x BETWEEN 10 AND 10 ; \nINSERT INTO x VALUES ( 'y' , 'y' , 10 , 10 ) ; \nSELECT * FROM x WHERE x BETWEEN 10 AND 10 ; \nINSERT INTO x . x VALUES ( 10 , NULL ) ; \nSELECT x FROM x WHERE x BETWEEN 10 AND 10 ORDER BY x ; \nSELECT x FROM x WHERE ( x % 10 ) = 10 ; \nSELECT * , 'y' FROM x WHERE x = 10 AND x = 10 AND x = 10 ; \nSELECT * , 'y' FROM x LIMIT 10 ; \nCREATE VIRTUAL TABLE x USING generate_series ; \nSELECT * FROM x 10 , 10 , 10 ; \nSELECT * FROM x 10 , 10 ; \nSELECT * FROM x 10 , 10 WHERE x = 10 ; \nSELECT * FROM x 10 , 10 , 10 , 10 ; \nSELECT * FROM x 10 , 10 , 10 ORDER BY x DESC ; \nSELECT x , * FROM x 10 , 10 , 10 ORDER BY x DESC ; \nCREATE VIEW x ( x ) AS SELECT x FROM x 10 , 10 ; \nSELECT * FROM x 10 ORDER BY x ; \nSELECT DISTINCT x FROM x 10 , x , x ORDER BY 10 ; \nSELECT typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) FROM x LIMIT 10 ; \nSELECT typeof ( x + x ) , typeof ( x CONCAT x ) , typeof ( x + x ) , typeof ( x CONCAT x ) FROM x LIMIT 10 ; \nCREATE TABLE x AS SELECT x , x , x AS i , ( SELECT x FROM x ) AS j FROM x ; \nSELECT x , x , x FROM x WHERE x = 10 ; \nINSERT INTO x SELECT x * 10 , x * 10 FROM x ; \nINSERT INTO x SELECT x * 10 + 10 , x * 10 + 10 FROM x ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , NULL ) ,( 10 , 'y' ) ; \nSELECT quote ( add_i ( 10 , 10 ) ) ; \nSELECT quote ( add_r ( 10 , 10 ) ) ; \nSELECT quote ( add_t ( 10 , 10 ) ) ; \nSELECT quote ( add_b ( 10 , 10 ) ) ; \nSELECT quote ( add_a ( 10 , 10 ) ) ; \nSELECT quote ( add_i ( 0.1 , 0.1 ) ) ; \nSELECT quote ( add_r ( 0.1 , 0.1 ) ) ; \nSELECT quote ( add_t ( 0.1 , 0.1 ) ) ; \nSELECT quote ( add_b ( 0.1 , 0.1 ) ) ; \nSELECT quote ( add_a ( 0.1 , 0.1 ) ) ; \nSELECT quote ( ret_i ( 0.1 ) ) ; \nSELECT quote ( ret_r ( 0.1 ) ) ; \nSELECT quote ( ret_t ( 0.1 ) ) ; \nSELECT quote ( ret_b ( 0.1 ) ) ; \nSELECT quote ( ret_a ( 0.1 ) ) ; \nSELECT quote ( ret_i ( 'y' ) ) ; \nSELECT quote ( ret_r ( 'y' ) ) ; \nSELECT quote ( ret_t ( 'y' ) ) ; \nSELECT quote ( ret_b ( 'y' ) ) ; \nSELECT quote ( ret_a ( 'y' ) ) ; \nUPDATE x SET x = int2str ( 10 ) ; \nSELECT x = int2str ( 10 ) FROM x ; \nUPDATE x SET x = int2str ( x + 10 ) ; \nDELETE FROM x WHERE ( random () % 10 ) == 10 ; \nCREATE TEMP TRIGGER x BEFORE INSERT ON x BEGIN SELECT 10 , 10 , 10 ; END ; \nSELECT x , x , x , x FROM x . x ; \nSELECT * FROM SELECT x FROM x LIMIT 10 UNION ALL SELECT 10 ; \nCREATE VIEW x ( x , x ) AS SELECT DISTINCT x , 'y' FROM x ; \nSELECT count ( * ) FROM x WHERE x >= x ; \nSELECT count ( * ) FROM x WHERE NOT NOT ( x >= x ) ; \nSELECT count ( * ) FROM x WHERE ( ( x >= x ) OR 10 + 10 ) ; \nINSERT INTO x SELECT NULL , x CONCAT x FROM x ; \nCREATE TABLE x ( x INT PRIMARY KEY , x , x ) ; \nSELECT ( SELECT 10 FROM SELECT 10 FROM x WHERE x = 10 OR x = 'y' WHERE x = 'y' OR x IN ( SELECT x = ( 'y' IN ( SELECT 'y' ) ) ) ) FROM x ; \nCREATE TABLE x ( x TEXT UNIQUE , x TEXT UNIQUE , x ) ; \nSELECT * FROM x WHERE ( x = 'y' OR x = 'y' ) AND x IS NOT NULL ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 ) ORDER BY x ASC ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 ) ORDER BY x DESC ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x ASC , x ASC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x ASC , x DESC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x DESC , x ASC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x DESC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x , x ASC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x ASC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x , x ASC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x ASC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x , x DESC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x DESC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x , x DESC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( 10 , 10 , 10 ) ORDER BY x DESC , x DESC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x ASC , x ASC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x ASC , x DESC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x DESC , x ASC ; \nSELECT x , x FROM x WHERE x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x DESC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x , x ASC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x ASC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x , x ASC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x ASC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x , x DESC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x DESC , x ASC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x , x DESC , x DESC ; \nSELECT x , x , x FROM x , x WHERE x = 10 AND x = 10 AND x IN ( SELECT x FROM x ) ORDER BY x DESC , x DESC ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ) ORDER BY x ASC ; \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ) ORDER BY x DESC ; \nSELECT 'y' , x , ( SELECT count ( * ) FROM x JOIN SELECT DISTINCT x AS p FROM x AS x ON x = x ) FROM x ; \nSELECT ( SELECT x FROM SELECT * FROM x WHERE x = x ORDER BY x LIMIT 10 OFFSET 10 WHERE x = x ) FROM x AS out ; \nCREATE TABLE x ( x VARCHAR(1) PRIMARY KEY , x INTEGER NOT NULL ) ; \nSELECT DISTINCT x FROM SELECT x , x FROM x ORDER BY x , x LIMIT 10 AS test ; \nSELECT x FROM x JOIN x ON x = x AS x JOIN x ON x = x AS y ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 'y' ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x VARCHAR(36) , x INTEGER ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x VARCHAR(36) ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x / 10 , x / 10 FROM x ; \nSELECT x / 10 , x / 10 FROM SELECT * FROM x ; \nSELECT x / 10 , x / 10 FROM SELECT * FROM x LIMIT 10 OFFSET 10 ; \nSELECT x / 10 , x / 10 FROM SELECT * FROM x LIMIT 10 OFFSET 10 LIMIT 10 OFFSET 10 ; \nSELECT x / 10 , x / 10 FROM x AS a , x AS b WHERE x = x LIMIT 10 OFFSET 10 ; \nSELECT x FROM x WHERE x IN ( 0.1 ) ; \nSELECT x FROM x WHERE 10 IN ( x ) ; \nSELECT x FROM x WHERE 0.1 IN ( x ) ; \nSELECT x FROM x WHERE 'y' IN ( x ) ; \nSELECT x , x FROM x WHERE x IN ( 10 ) ; \nSELECT x , x FROM x WHERE x IN ( 0.1 ) ; \nSELECT x , x FROM x WHERE x IN ( 'y' ) ; \nSELECT x , x FROM x WHERE 10 IN ( x ) ; \nSELECT x , x FROM x WHERE 0.1 IN ( x ) ; \nSELECT x , x FROM x WHERE 'y' IN ( x ) ; \nSELECT * FROM x WHERE x = AND x = AND x = AND x = AND x = ; \nDELETE FROM x WHERE x = 10 AND x = 10 AND x = 10 AND x = 10 AND x = 10 AND x = 10 ; \nSELECT x == x FROM SELECT x , 'y' AS xyz FROM x , x ; \nSELECT 'y' == x FROM SELECT x , 'y' AS xyz FROM x , x ; \nSELECT SUM ( x ) FROM SELECT x BETWEEN x AND x AS count FROM x ; \nSELECT x BETWEEN x AND x AS count FROM x ; \nSELECT typeof ( x ) , typeof ( x ) FROM x WHERE 10 = x + 10 AND x == 'y' ; \nSELECT typeof ( x ) , typeof ( x ) FROM x WHERE 10 = x * 10 AND x == 'y' ; \nSELECT typeof ( x ) , typeof ( x ) FROM x WHERE 10 = x / 10 AND x == 'y' ; \nSELECT typeof ( x ) , typeof ( x ) FROM x WHERE 10 = x % 10 AND x == 'y' ; \nSELECT 10 + 0.1 ; \nSELECT 'y' / 'y' ; \nSELECT 'y' + 'y' ; \nSELECT 'y' - 'y' ; \nSELECT 'y' / 'y' , 'y' / 'y' , 'y' / 'y' ; \nINSERT INTO x SELECT x , CASE x WHEN 'y' THEN NULL ELSE x END FROM x ; \nINSERT INTO x SELECT x , coalesce ( x , x ) FROM x ; \nSELECT x , x BETWEEN 'y' AND 'y' FROM x ORDER BY x ; \nSELECT * FROM x GROUP BY x ORDER BY x ; \nSELECT * FROM x GROUP BY x ORDER BY x ASC ; \nSELECT * FROM x GROUP BY x ORDER BY x DESC ; \nSELECT DISTINCT x AS x , x AS y FROM x , x ; \nSELECT count ( * ) FROM x , x GROUP BY x , x ; \nSELECT x , force_rollback () , EXISTS ( SELECT 10 FROM x WHERE x = x ) FROM x ; \nSELECT ins () AS x FROM x UNION ALL SELECT ins () AS x FROM x ; \nSELECT count ( CASE WHEN x = 'y' THEN 10 END ) , count ( CASE WHEN x = 'y' THEN 10 END ) FROM x ; \nINSERT INTO x SELECT randomblob ( 10 ) , randomblob ( 10 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 10 , 10 , 0.1 , 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 'y' , 'y' , 'y' ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER NOT NULL , x INTEGER NOT NULL , x INTEGER , x INTEGER , x INTEGER ) ; \nCREATE VIEW x AS SELECT * FROM x ORDER BY x ; \nSELECT * FROM x UNION ALL SELECT * FROM x ORDER BY 10 ; \nSELECT count ( * ) , sum ( x ) , sum ( x ) FROM x ; \nSELECT x FROM x WHERE max ( x ) < 10 GROUP BY x ; \nSELECT typeof ( x ) , typeof ( x ) FROM x ; \nSELECT * FROM x LEFT JOIN x ON x = x OR x = x ; \nSELECT * FROM x LEFT JOIN x ON x IN ( x , x ) ; \nSELECT * FROM x LEFT JOIN x ON x BETWEEN x AND x ; \nSELECT * FROM x LEFT JOIN x ON x GLOB 'y' WHERE x = 10 ; \nUPDATE x SET x = x CONCAT 'y' WHERE x % 10 == 10 ; \nUPDATE x SET x = CASE WHEN x < 10 THEN substr ( x , 10 , 10 ) ELSE 'y' END ; \nSELECT tkt2213func ( tkt2213func ( 'y' ) ) ; \nSELECT avg ( x ) , typeof ( avg ( x ) ) FROM x ; \nSELECT sum ( x ) , typeof ( sum ( x ) ) FROM x ; \nSELECT x , sum ( x ) , typeof ( sum ( x ) ) FROM x GROUP BY x ORDER BY x ; \nSELECT x , typeof ( x ) FROM x WHERE x = 10 ; \nSELECT count ( * ) FROM x WHERE x < 'y' ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x UNIQUE , x ) ; \nSELECT count ( * ) FROM x WHERE x IS NOT NULL \nSELECT x , x , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY 10 ; \nSELECT x , CAST ( x AS TEXT ) , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY 10 ; \nSELECT x , x , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY x ; \nSELECT x , CAST ( x AS TEXT ) AS x , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY x ; \nSELECT x , CAST ( x AS TEXT ) AS x , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY CAST ( x AS TEXT ) ; \nSELECT x , x , x FROM x UNION ALL SELECT x AS x , x , x FROM x ORDER BY x ; \nSELECT x AS b , CAST ( x AS TEXT ) AS a , x FROM x UNION ALL SELECT x , x , x FROM x ORDER BY x ; \nSELECT x , x , x FROM x UNION ALL SELECT x AS b , CAST ( x AS TEXT ) AS a , x FROM x ORDER BY x ; \nSELECT x AS b FROM x ORDER BY x ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ; \nSELECT * FROM x ORDER BY 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ; \nSELECT group_concat ( x ) FROM SELECT x FROM x ORDER BY x DESC ; \nSELECT group_concat ( x ) FROM SELECT x FROM x ORDER BY x ; \nSELECT group_concat ( x ) FROM SELECT x FROM x ; \nSELECT execsql ( x ) FROM x WHERE x = 10 ; \nCREATE VIRTUAL TABLE x USING echo ( t2 ) ; \nCREATE VIRTUAL TABLE x USING echo ( r1 ) ; \nCREATE VIRTUAL TABLE x USING echo ( r2 ) ; \nSELECT x , x FROM x AS l , x AS r WHERE x < x ; \nCREATE VIEW x AS SELECT x AS x , x + 10 AS y FROM x ; \nSELECT * , ( SELECT x FROM SELECT x AS z FROM x WHERE x = x + 10 ) FROM x ; \nSELECT x FROM SELECT x FROM x ORDER BY x LIMIT 10 WHERE x = 10 ; \nSELECT count ( * ) FROM SELECT x FROM x ORDER BY x LIMIT 10 WHERE x = 10 ; \nSELECT x FROM SELECT x FROM x ORDER BY x WHERE x = 10 ; \nSELECT count ( * ) FROM SELECT x FROM x ORDER BY x WHERE x = 10 ; \nSELECT x FROM SELECT x FROM x WHERE x = 10 ; \nSELECT count ( * ) FROM SELECT x FROM x WHERE x = 10 ; \nSELECT * FROM SELECT * FROM x WHERE 10 = x AS x ; \nSELECT * FROM x , x , x WHERE x = 10 AND x = x AND x = x ; \nCREATE TABLE x ( x INTEGER , x TEXT , x TEXT ) ; \nSELECT x FROM x WHERE x = 'y' LIMIT 10 ; \nSELECT x FROM x WHERE x = x LIMIT 10 ; \nSELECT x FROM x WHERE x = 10 LIMIT 10 ; \nCREATE TABLE x ( x INTEGER NOT NULL , x INTEGER ) ; \nSELECT x , CASE WHEN x = 10 THEN 'y' ELSE x END AS col1 FROM x ; \nSELECT DISTINCT x , CASE WHEN x = 10 THEN 'y' ELSE x END AS col1 FROM x ; \nSELECT DISTINCT x , CASE WHEN x = 'y' THEN 'y' ELSE x END AS col1 FROM x ; \nCREATE TABLE x ( x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) , x INTEGER , x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) , x VARCHAR(80) ) ; \nUPDATE x SET x = x WHERE x = x AND x > x AND x <= x ; \nINSERT INTO x ( x , x ) SELECT x , x FROM x ; \nINSERT INTO x SELECT x + 10 , f1 ( x ) FROM x ; \nINSERT INTO x SELECT x + 10 , sql ( x == 10 , 'y' ) FROM x ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 10 ) ; \nSELECT * FROM x JOIN x USING ( b ) ; \nCREATE TABLE x ( x INTEGER NOT NULL , x CHAR(25) NOT NULL , x INTEGER NOT NULL , x VARCHAR(152) ) ; \nCREATE TABLE x ( x INTEGER NOT NULL , x CHAR(25) NOT NULL , x VARCHAR(152) ) ; \nSELECT 10 , 10 , 10 ; \nSELECT sql ( 'y' ) ; \nSELECT * FROM x WHERE x = x AND x = x AND x = 'y' ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x TEXT ) ; \nSELECT * FROM x WHERE x = x AND x = x AND x = 10 ; \nCREATE TABLE x ( x INTEGER UNIQUE , x ) ; \nSELECT 'y' FROM x LEFT JOIN x ON x = x JOIN x ON x = x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x DOUBLE , x DOUBLE , x TEXT , x TEXT , x TEXT , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' , 'y' , 10 , 10 , 'y' , 10 , 10 , NULL ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' , 'y' , NULL , NULL , NULL , NULL , NULL , 'y' ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT , x INTEGER , x TEXT , x TEXT ) ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , NULL , NULL , 'y' ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , NULL , NULL , NULL , NULL , NULL , NULL ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x VARCHAR(24) , x VARCHAR(24) , x TEXT , x TEXT , x TEXT , x VARCHAR(24) , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , NULL , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , NULL , NULL , NULL , 10 ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT , x TEXT , x TEXT ) ; \nSELECT * FROM x WHERE x >= 'y' AND x < 'y' AND x = x ; \nSELECT * FROM x WHERE x = x AND x = 'y' ; \nCREATE TABLE x ( x TEXT , x INTEGER , x TEXT ) ; \nSELECT count ( * ) FROM x WHERE x = 'y' ; \nUPDATE x SET x = 'y' CONCAT x WHERE x = 10 OR x = 10 ; \nCREATE TABLE x . x ( x , x , x , x ) ; \nCREATE TRIGGER x BEFORE UPDATE ON x BEGIN SELECT 10 ; END ; \nCREATE TABLE x ( x TEXT PRIMARY KEY , x ) ; \nUPDATE x SET x = x , x = x + 10 WHERE x = 10 ; \nCREATE TRIGGER x BEFORE UPDATE ON x BEGIN SELECT x ; END ; \nUPDATE x SET x = CASE WHEN x = 10 THEN x ELSE x + 10 END WHERE x = 10 ; \nCREATE TEMP TRIGGER x AFTER INSERT ON x BEGIN UPDATE x SET x = x + 10 ; END ; \nCREATE TABLE x ( x , x , x UNIQUE ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x ; \nREPLACE INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ; \nDELETE FROM x ; END ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x , x , x , x , x , x , x ) ; \nCREATE VIEW x AS SELECT x , x , x , x FROM x , x ; \nUPDATE x SET x = 10 , x = 10 * 10 WHERE x = 10 ; \nUPDATE x SET x = x + 10 , x = x + 10 , x = x + 10 ; \nCREATE VIEW x ( x , x , x , x ) AS SELECT * FROM x ; \nUPDATE x SET x = x WHERE x = x ; \nUPDATE x SET x = counter ( 10 ) ; \nCREATE TRIGGER x AFTER UPDATE ON x BEGIN SELECT 10 ; END ; \nCREATE TRIGGER x AFTER DELETE ON x BEGIN SELECT 10 ; END ; \nCREATE TRIGGER x BEFORE DELETE ON x BEGIN SELECT 10 ; END ; \nCREATE VIEW x AS SELECT x , x AS c FROM x WHERE x > 'y' ; \nCREATE VIEW x AS SELECT DISTINCT x , x FROM x ; \nCREATE VIEW x AS SELECT x , x FROM x EXCEPT SELECT 10 , 'y' ; \nCREATE VIEW x AS SELECT sum ( x ) AS a , max ( x ) AS b FROM x GROUP BY x HAVING x > 'y' ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT NOT NULL ) ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' , 'y' ) ; \nSELECT * FROM x ORDER BY x DESC LIMIT 10 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x UNIQUE , x , x , x ) ; \nCREATE TRIGGER x AFTER UPDATE ON x BEGIN UPDATE x SET x = x + 10 ; END ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 0.1 , 0.1 , 0.1 , 0.1 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( NULL , 0.1 , 0.1 , 0.1 ) ; \nUPDATE x SET x = 'y' , x = 'y' , x = 'y' ; \nUPDATE x SET x = 'y' , x = 10 ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x , x , x IS NULL , x IS NULL FROM x ; \nEND \nINSERT INTO x SELECT x * 10 + x FROM x WHERE x IN ( 10 , 10 , 10 , 10 ) ; \nSELECT typeof ( x ) , typeof ( x ) , typeof ( x ) , typeof ( x ) FROM x ; \nCREATE TABLE x ( x FLOAT ) ; \nSELECT x ISNULL FROM x ; \nINSERT INTO x VALUES ( NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ) ; \nSELECT * FROM x WHERE x IN ( 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 'y' , 10 , 10 ) ; \nCREATE VIRTUAL TABLE x USING unionvtab ( VALUES(NULL, 't1', 1, 100) ) ; \nCREATE VIRTUAL TABLE x . x USING unionvtab ( VALUES('', 't1', 1, 100) ) ; \nCREATE TABLE x . x ( x , x , x INTEGER PRIMARY KEY ) ; \nCREATE TABLE x ( x , x , x INTEGER PRIMARY KEY ) ; \nCREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE , x TEXT ) ; \nSELECT * FROM x ORDER BY x , x , x , x ; \nDELETE FROM x WHERE x <= 10 ; \nUPDATE x SET x = 10 , x = 10 WHERE x = 10 ; \nUPDATE x SET x = 10 , x = 10 , x = 10 WHERE x = 10 ; \nUPDATE x SET x = x + 10 WHERE x IN ( SELECT x FROM x ) ; \nSELECT count ( * ) FROM x WHERE x = x ; \nSELECT count ( * ) FROM x WHERE x = x + 10 ; \nUPDATE x SET x = printf ( x , x ) WHERE x IS NULL ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY ON CONFLICT REPLACE , x UNIQUE ) ; \nUPDATE x SET x = x + 10 WHERE x > 10 ; \nUPDATE x SET x = x + 10 WHERE x = 'y' ; \nUPDATE x SET x = x + 10 WHERE x > 10 OR x > 10 ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x IS NOT NULL ; \nINSERT INTO x ( x ) VALUES ( NULL ) ,( NULL ) ; \nSELECT quote ( x ) , quote ( x ) , 'y' FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT DO NOTHING ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT DO NOTHING ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT ( x ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT ( x COLLATE x ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT ( x + x ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x + x ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x > 10 ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x ) WHERE x != 10 ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x ) WHERE x > 10 ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ; \nINSERT INTO x ( x ) VALUES ( 'y' ) ,( 'y' ) ,( 'y' ) ,( 'y' ) ON CONFLICT ( x ) DO UPDATE SET = x x + 10 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT UNIQUE ) ; \nINSERT OR IGNORE INTO x ( x ) VALUES ( 'y' ) ON CONFLICT ( x ) ; \nINSERT OR IGNORE INTO x ( x ) VALUES ( 'y' ) ,( 10 ) ON CONFLICT ( x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x INT , x INT , x INT ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 10 , 10 , 10 , 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x ; \nCREATE TABLE x ( x INT , x INT , x INT , x INT , x INT ) ; \nINSERT INTO x ( x ) VALUES ( 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x , = x x + 10 WHERE x < x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x + 10 ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x + 10 WHERE x < 10 ; \nINSERT INTO x VALUES ( 10 , 'y' ) ON CONFLICT ( x ) ; \nINSERT INTO x VALUES ( 10 , 'y' ) ON CONFLICT ( x , x ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ON CONFLICT ( x , x ) DO UPDATE SET = x x + 10 ; \nINSERT INTO x VALUES ( 10 , NULL , 'y' ) ON CONFLICT DO NOTHING ; \nINSERT INTO x VALUES ( 10 , NULL , 'y' ) ON CONFLICT ( x ) DO UPDATE SET = x 10 ; \nINSERT INTO x VALUES ( 10 , NULL , 'y' ) ON CONFLICT ( x ) DO UPDATE SET = x 'y' ; \nCREATE TABLE x ( x INT PRIMARY KEY , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ON CONFLICT DO NOTHING ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ON CONFLICT ( 'y' CONCAT x ) ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ON CONFLICT ( ( 'y' CONCAT x ) COLLATE x ) ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ON CONFLICT ( x CONCAT 'y' ) ; \nINSERT INTO x VALUES ( 10 , 'y' , NULL ) ON CONFLICT ( ( ( 'y' CONCAT x ) ) ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 , 'y' ) ON CONFLICT ( x ) ; \nCREATE TABLE x ( x INT PRIMARY KEY , x UNIQUE , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x UNIQUE , x UNIQUE ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 , 10 ) ON CONFLICT ( x ) ; \nINSERT OR REPLACE INTO x VALUES ( 10 , 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x CONCAT 'y' ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 , 10 ) ON CONFLICT ( x ) DO UPDATE SET = x x ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 , 10 ) ON CONFLICT ( x , x ) DO UPDATE SET = x x CONCAT x ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 , NULL ) ON CONFLICT ( x , x ) DO UPDATE SET = x x ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nUPDATE x SET x = x CONCAT 'y' CONCAT x ; \nINSERT INTO x ( x , x ) SELECT x CONCAT x , x CONCAT x FROM x ; \nSELECT count ( * ) , sum ( x ) , sum ( length ( x ) ) FROM x ; \nVACUUM x INTO 'file_name' ; \nINSERT INTO x SELECT NULL , x CONCAT 'y' CONCAT x , x CONCAT 'y' CONCAT x FROM x ; \nCREATE TABLE x ( x INT PRIMARY KEY , x INT NULL ) ; \nINSERT INTO x SELECT x , 10 FROM x ; \nDELETE FROM x WHERE ( x % 10 ) != 10 ; \nVACUUM x ; \nDROP VIEW IF EXISTS x ; \nCREATE VIEW x ( x ) AS SELECT * FROM x ; \nCREATE VIEW x ( x , x ) AS SELECT x , x + x , x - x FROM x ; \nCREATE VIEW x ( x , x , x , x ) AS SELECT x , x + x , x - x FROM x ; \nCREATE VIEW x AS SELECT x FROM x UNION SELECT x FROM x ORDER BY x ; \nSELECT x FROM x ORDER BY x LIMIT 10 ; \nSELECT 10 FROM x LIMIT 10 ; \nSELECT * FROM x AS a , x AS b WHERE x = x ; \nSELECT * FROM x AS b , x AS a WHERE x = x ; \nSELECT * FROM x AS a , x AS b , x AS c WHERE x = x AND x = x ; \nSELECT min ( x ) , min ( x ) , min ( x ) , min ( x ) , min ( x + x + x ) FROM x ; \nSELECT max ( x ) , max ( x ) , max ( x ) , max ( x ) , max ( x + x + x ) FROM x ; \nCREATE VIEW x ( x ) AS SELECT x + x FROM x ; \nCREATE VIEW x AS SELECT max ( x ) AS mx FROM SELECT x % 10 AS eo , count ( * ) AS cnt FROM x GROUP BY x ; \nSELECT x + 10 , x * 10 FROM x ; \nSELECT x + 10 , x FROM x , x WHERE x = 10 ; \nSELECT x + 10 , x FROM x , x WHERE x > 10 ; \nSELECT DISTINCT count ( * ) FROM x GROUP BY x ORDER BY 10 ; \nSELECT DISTINCT count ( * ) FROM x GROUP BY x ORDER BY 10 LIMIT 10 ; \nCREATE VIEW x AS SELECT DISTINCT count ( * ) FROM x GROUP BY x ORDER BY 10 LIMIT 10 ; \nSELECT * FROM x ORDER BY 10 DESC ; \nCREATE VIEW x AS SELECT DISTINCT x , count ( * ) FROM x GROUP BY x ORDER BY 10 LIMIT 10 ; \nSELECT * FROM SELECT * FROM x WHERE x = 'y' ; \nCREATE VIEW x AS SELECT x FROM x . x ; \nCREATE VIEW x AS SELECT x AS x , x AS y FROM x ; \nCREATE VIEW x AS SELECT x , * FROM x ; \nCREATE VIEW x AS SELECT x FROM SELECT x FROM x ; \nCREATE VIEW x AS SELECT x * 10 FROM x ; \nCREATE VIEW x AS SELECT max ( x ) AS mx , min ( x ) AS mn FROM x GROUP BY x ; \nSELECT * FROM x AS one , x AS two WHERE x = 10 ; \nCREATE VIEW x ( x , x ) AS SELECT x , AVG ( x ) FROM x ; \nSELECT x , typeof ( x ) , x , typeof ( x ) FROM x ; \nSELECT 10 IN ( x ) FROM x ; \nSELECT 10 IN ( x ) FROM SELECT x FROM x ; \nCREATE VIRTUAL TABLE x USING echo ; \nCREATE VIRTUAL TABLE x USING echo ( no_such_table ) ; \nCREATE VIRTUAL TABLE x USING echo ( treal ) ; \nCREATE VIRTUAL TABLE x USING echo ( treal , logmsg ) ; \nCREATE VIRTUAL TABLE x USING echo ( template ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x ) ; \nSELECT x AS d , x AS e , x AS f FROM x ; \nSELECT * FROM x WHERE x >= 10 AND x <= 10 ; \nSELECT * FROM x WHERE x MATCH 'y' ; \nSELECT x FROM x ORDER BY x CONCAT 'y' ; \nSELECT * FROM x , x WHERE x = 10 ; \nUPDATE x SET x = 10 WHERE x < 10 ; \nUPDATE x SET x = x CONCAT x CONCAT x ; \nCREATE VIRTUAL TABLE x USING echo ( real_abc ) ; \nINSERT INTO x SELECT x CONCAT 'y' , x , x FROM x ; \nCREATE VIRTUAL TABLE x . x USING echo ( real_abc ) ; \nCREATE VIRTUAL TABLE x USING echo ( r , e_log ) ; \nCREATE VIRTUAL TABLE x USING echo ( del ) ; \nSELECT * FROM x WHERE x CONCAT 'y' MATCH 'y' ; \nCREATE VIRTUAL TABLE x USING echo ( c ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 'y' , 10 , 'y' ) ; \nCREATE VIRTUAL TABLE x USING echo_v2 ( t5 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t6 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t7 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t8 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t9 ) ; \nCREATE VIRTUAL TABLE x USING tclvar ; \nSELECT x , x , x FROM x WHERE x = 'y' ; \nUPDATE x SET x = ( SELECT x FROM x WHERE x = 'y' AND x ) ; \nCREATE VIRTUAL TABLE x USING echo ( elephant ) ; \nCREATE VIRTUAL TABLE x USING echo ( sreal ) ; \nCREATE TABLE x ( x VARCHAR(16) , x INTEGER , x FLOAT ) ; \nDELETE FROM x WHERE x > 'y' ; \nCREATE VIRTUAL TABLE x USING echo ( strings ) ; \nCREATE VIRTUAL TABLE x USING echo ( ab_r ) ; \nCREATE VIRTUAL TABLE x USING echo ( bc_r ) ; \nSELECT x , x , x FROM x NATURAL JOIN x ; \nCREATE VIRTUAL TABLE x USING echo ( abc ) ; \nCREATE VIRTUAL TABLE x USING echo ( def ) ; \nCREATE VIRTUAL TABLE x USING echo ( t2244 ) ; \nUPDATE x SET x = 'y' WHERE 10 ; \nCREATE VIRTUAL TABLE x USING echo ( t2250 ) ; \nCREATE VIRTUAL TABLE x USING echo ( t2260a_real ) ; \nCREATE VIRTUAL TABLE x USING echo ( t2260b_real ) ; \nSELECT * FROM x , x WHERE x = x AND x > 10 ; \nCREATE VIRTUAL TABLE x USING echo ( t0 ) ; \nINSERT INTO x SELECT 'y' ; \nINSERT INTO x VALUES ( NULL , 'y' , 0.1 ) ; \nINSERT INTO x ( x , x , x ) SELECT * FROM x ; \nINSERT INTO x SELECT 'y' , 'y' ; \nSELECT x , x , x , 'y' FROM x ORDER BY 10 ; \nSELECT * FROM x WHERE x = 10 AND NOT ( x < 10 ) ; \nSELECT x , x FROM x WHERE x = 'y' ORDER BY x ; \nSELECT x , x FROM x WHERE x = 'y' ; \nUPDATE x SET x = x CONCAT 'y' WHERE x = 'y' OR x = 'y' CONCAT 'y' ; \nUPDATE x SET x = x CONCAT 'y' WHERE x = 'y' OR x BETWEEN 'y' AND 'y' ; \nDELETE FROM x WHERE x BETWEEN 'y' AND 'y' OR x = 'y' ; \nINSERT INTO x SELECT blob ( 10 ) FROM x ; \nSELECT count ( x ) , sum ( x ) FROM x ; \nSELECT x >= 10 FROM x WHERE x = 'y' ; \nINSERT INTO x SELECT 10 - x , x , ( SELECT max ( x ) FROM x ) + 10 - x , x FROM x ; \nSELECT * FROM x WHERE x + 10 IN ( 10 , 10 , 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 , 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 , 10 , 10 ) ORDER BY 10 DESC ; \nSELECT * FROM x WHERE x IN ( SELECT x FROM x WHERE x IN ( 10 , 10 , 10 ) ) ORDER BY 10 ; \nSELECT * FROM x WHERE x + 10 IN ( SELECT x FROM x WHERE x IN ( 10 , 10 , 10 ) ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x + 10 IN ( 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x = 10 AND x IN ( 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 ) AND x NOT IN ( 10 , 10 ) ORDER BY 10 ; \nSELECT * FROM x WHERE x IN ( 10 , 10 ) AND x IN ( 10 , 10 ) ORDER BY 10 ; \nINSERT INTO x SELECT x , 10 - x , x FROM x ; \nSELECT count ( * ) , sum ( x ) , sum ( x ) , sum ( x ) FROM x ; \nSELECT x FROM x ORDER BY x , x LIMIT 10 ; \nSELECT x FROM x ORDER BY x , x DESC LIMIT 10 ; \nSELECT x FROM x WHERE x > 10 ORDER BY x , x , x LIMIT 10 ; \nSELECT x FROM x WHERE x >= 10 ORDER BY x , x DESC , x LIMIT 10 ; \nSELECT x FROM x WHERE x > 10 AND x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x >= 10 AND x <= 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x > 10 ORDER BY x LIMIT 10 ; \nSELECT x FROM x WHERE x = 10 AND x > 10 ORDER BY x DESC LIMIT 10 ; \nSELECT x FROM x WHERE x = 10 AND x > 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 AND x < 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 AND x <= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x > 10 AND x <= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x > 10 AND x < 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 AND x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 AND x <= 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x > 10 AND x <= 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x > 10 AND x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x <= 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x > 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x >= 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 AND x < 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x <= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x = 10 AND x < 10 ORDER BY x DESC LIMIT 10 ; \nSELECT * FROM x WHERE x < 10 ORDER BY x DESC ; \nSELECT count ( * ) FROM x WHERE tclvar ( 'y' ) ; \nDELETE FROM x WHERE ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x BETWEEN 10 AND 10 ) OR ( x = 10 ) OR ( x = 10 ) ; \nSELECT * FROM x ORDER BY x DESC , x DESC ; \nSELECT * FROM x ORDER BY x DESC , x ASC ; \nSELECT * FROM x ORDER BY x ASC , x DESC ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT UNIQUE , x CHAR(100) ) ; \nSELECT x AS alias FROM x , x WHERE x = 10 ; \nSELECT * FROM x CROSS JOIN x WHERE x = 10 AND x = 'y' ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER NOT NULL ) ; \nSELECT x , x FROM x , x WHERE x > x ; \nSELECT DISTINCT x FROM x LEFT JOIN x ON x = x ORDER BY x IS NULL ; \nSELECT DISTINCT x FROM x LEFT JOIN x ON x = x ORDER BY x ; \nCREATE TABLE x ( x INT UNIQUE NOT NULL , x INT UNIQUE NOT NULL , x , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x INT ) ; \nSELECT count ( * ) FROM x LEFT JOIN x ON ( x = x ) WHERE ifnull ( x , 10 ) >= 10 ; \nSELECT * FROM x WHERE x = ( SELECT * FROM SELECT count ( * ) FROM x LIMIT 10 ORDER BY 10 LIMIT 10 ) AND ( x = 10 OR x = 10 ) ; \nINSERT INTO x ( x ) VALUES ( NULL ) ,( NULL ) ,( 10 ) ,( NULL ) ,( NULL ) ; \nSELECT count ( * ) FROM x LEFT JOIN x ON x IS NOT NULL ; \nSELECT * FROM x , x WHERE x = x AND x = 10 ; \nSELECT x FROM x WHERE x > 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x > 10 AND x < 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x > AND x < 10 ; \nSELECT x FROM x WHERE x > AND x < 10 ORDER BY x ; \nSELECT x FROM x WHERE x > AND x < 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x > 10 AND x < ; \nSELECT x FROM x WHERE x > 10 AND x < ORDER BY x ; \nSELECT x FROM x WHERE x > 10 AND x < ORDER BY x DESC ; \nSELECT x FROM x WHERE x > AND x < ; \nSELECT x FROM x WHERE x > AND x < ORDER BY x ; \nSELECT x FROM x WHERE x > AND x < ORDER BY x DESC ; \nSELECT x FROM x WHERE x >= AND x <= 10 ; \nSELECT x FROM x WHERE x >= AND x <= 10 ORDER BY x ; \nSELECT x FROM x WHERE x >= AND x <= 10 ORDER BY x DESC ; \nSELECT x FROM x WHERE x >= 10 AND x <= ; \nSELECT x FROM x WHERE x >= 10 AND x <= ORDER BY x ; \nSELECT x FROM x WHERE x >= 10 AND x <= ORDER BY x DESC ; \nSELECT x FROM x WHERE x >= AND x <= ; \nSELECT x FROM x WHERE x >= AND x <= ORDER BY x ; \nSELECT x FROM x WHERE x >= AND x <= ORDER BY x DESC ; \nSELECT * FROM x WHERE 'y' BETWEEN 10 AND x ; \nSELECT * FROM x WHERE 'y' >= 10 AND 'y' <= x ; \nSELECT 'y' BETWEEN 10 AND x FROM x ; \nSELECT 'y' >= 10 AND 'y' <= x FROM x ; \nSELECT * FROM x WHERE x = 10 ORDER BY random () ; \nSELECT * FROM x WHERE x = 10 AND x = 10 ORDER BY random () ; \nSELECT * FROM x WHERE x = 10 AND x = 10 AND x = 10 ORDER BY random () ; \nSELECT x , x FROM x CROSS JOIN x WHERE x = x OR x = 'y' ; \nSELECT x , x FROM x CROSS JOIN x WHERE 'y' = x OR x = x ; \nSELECT x , x FROM x CROSS JOIN x WHERE x = 'y' OR x = x ; \nSELECT x FROM x WHERE x = 10 AND x = 10 ORDER BY x ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 , 10 , 10 ) ; \nSELECT x FROM x WHERE x = 10 OR ( x = 10 AND x = 10 ) ORDER BY x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x CHAR(100) ) ; \nSELECT * FROM x WHERE ( 10 = 10 AND x = 10 ) OR x = 10 ; \nINSERT INTO x ( x ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT * FROM x , x LEFT JOIN x ON x = x WHERE x = 10 AND x = x ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 'y' , 'y' ) ; \nSELECT * FROM x WHERE x = 10 AND x IS NOT NULL ; \nSELECT x FROM x LEFT JOIN x ON x = x ; \nSELECT x FROM x LEFT JOIN x ON x = x WHERE x IS NULL ; \nSELECT x FROM x LEFT JOIN x ON x = x WHERE x IS NOT NULL ; \nSELECT x FROM x LEFT JOIN x ON x = x AND x IS NULL ; \nSELECT x FROM x LEFT JOIN x ON x = x AND x IS NOT NULL ; \nSELECT DISTINCT x FROM x LEFT JOIN x ON x = x ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , 10 , 10 ) AND x IN ( 10 , 10 , NULL , 10 ) AND x != 10 ; \nSELECT x FROM x WHERE x IN ( 10 , 10 , NULL , 10 ) AND x IN ( 10 , 10 , 10 ) AND x != 10 ; \nSELECT * FROM x WHERE x = NULL AND x IN ( 'y' ) ; \nINSERT INTO x SELECT x * 10 FROM x ; \nSELECT sum ( ( SELECT x FROM x WHERE x = x AND x = x AND x < NULL ) ) FROM x ; \nSELECT * FROM x LEFT JOIN x ON x = x AND x = 10 ; \nSELECT * FROM x LEFT JOIN x ON x = x AND 10 = x ; \nSELECT * FROM x LEFT JOIN x ON x = x WHERE x = 10 ; \nSELECT * FROM x LEFT JOIN x ON x = x WHERE 10 = x ; \nSELECT * FROM x WHERE x < 10 OR x < 10 ORDER BY x ; \nDELETE FROM x WHERE x < 10 OR x < 10 ; \nCREATE TABLE x ( x , x TEXT , x ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( NULL , 0.1 , 'y' ) ; \nINSERT INTO x VALUES ( 0.1 , 10 , NULL ) ; \nINSERT INTO x VALUES ( 'y' , 0.1 , 'y' ) ; \nINSERT INTO x VALUES ( 0.1 , 10 , 0.1 ) ; \nINSERT INTO x VALUES ( 0.1 , NULL , 'y' ) ; \nINSERT INTO x VALUES ( 'y' , 0.1 , NULL ) ; \nINSERT INTO x VALUES ( 0.1 , 10 , 'y' ) ; \nINSERT INTO x VALUES ( 0.1 , 'y' , 10 ) ; \nINSERT INTO x VALUES ( 'y' , NULL , 0.1 ) ; \nINSERT INTO x VALUES ( 0.1 , 'y' , NULL ) ; \nSELECT x FROM x WHERE x = 'y' AND ( x = 10 OR x = 10 ) ORDER BY x ; \nSELECT x FROM x WHERE ( x = 'y' OR x = 'y' ) AND x = 10 ORDER BY x ; \nSELECT x FROM x WHERE x = 10 OR x > 10 ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 10 , 'y' , 10 , 'y' ) ; \nSELECT x FROM x WHERE ( x = 10 AND x = 10 ) OR ( x = 10 AND x = 10 ) ; \nSELECT x , x FROM x WHERE ( x = 10 AND x = 10 ) OR ( x = 10 AND x = 10 ) ; \nSELECT x FROM x WHERE ( x = 10 AND x = 10 ) OR ( x = 10 AND x = 10 ) OR ( x = 10 AND x = 10 ) ; \nSELECT x FROM x WHERE ( x = 10 AND ( x = 10 OR x = 10 ) ) OR ( x = 10 AND x = 10 ) ; \nSELECT x , x FROM x JOIN x ON x = x OR x = 10 ORDER BY x , x ; \nCREATE TABLE x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) ; \nUPDATE x SET x = x * x + 10 ; \nINSERT INTO x SELECT x + 10 , ( x + 10 ) * 10 FROM x ; \nCREATE UNIQUE INDEX x ON x ( x , x , x , x ) ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY NOT NULL , x INTEGER ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , NULL ) ,( 10 , NULL ) ,( 10 , NULL ) ,( 10 , NULL ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , NULL ) ,( 10 , NULL ) ; \nSELECT * FROM x , x WHERE x = 10 AND x = x ; \nCREATE TABLE x ( x INT , x , x , x ) ; \nINSERT INTO x VALUES ( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ,( 10 , 10 , 10 , 10 ) ; \nSELECT count ( * ) FROM x LEFT JOIN x ON x = x AND x = 'y' ; \nSELECT count ( * ) FROM x LEFT JOIN x ON likely ( x = x ) AND x = 'y' ; \nSELECT likely ( x ) , x FROM x , x ORDER BY 10 , 10 ; \nSELECT unlikely ( x ) , x FROM x , x ORDER BY 10 , 10 ; \nSELECT likelihood ( x , 0.1 ) , x FROM x , x ORDER BY 10 , 10 ; \nSELECT coalesce ( x , x ) , x FROM x , x ORDER BY 10 , 10 ; \nSELECT LIKELY ( x ) <= 'y' FROM x ; \nSELECT * FROM x WHERE LIKELY ( x ) <= 'y' ; \nSELECT ( x ) <= 'y' FROM x ; \nSELECT * FROM x WHERE ( x ) <= 'y' ; \nSELECT unlikely ( x ) <= 'y' , likelihood ( x , 0.1 ) <= 'y' FROM x ; \nSELECT * FROM x WHERE unlikely ( x ) <= 'y' ; \nSELECT * FROM x WHERE likelihood ( x , 0.1 ) <= 'y' ; \nSELECT unlikely ( x <= 'y' ) , likely ( x <= 'y' ) , likelihood ( x <= 'y' , 0.1 ) FROM x ; \nSELECT * FROM x WHERE unlikely ( x <= 'y' ) ; \nSELECT * FROM x WHERE likelihood ( x <= 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( 'y' , 10 , 10 , 'y' ) ; \nCREATE TABLE x ( x INT PRIMARY KEY , x , x , x , x ) ; \nCREATE VIEW x AS SELECT * FROM x UNION ALL SELECT * FROM x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER NOT NULL , x INTEGER , x INTEGER ) ; \nSELECT x FROM x JOIN x ON x = x WHERE x = 10 AND x = 10 ; \nSELECT x , sum ( x ) OVER( PARTITION BY x ) FROM x ; \nSELECT x , sum ( x ) OVER( PARTITION BY x ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( ORDER BY x ) FROM x ; \nSELECT ntile ( 10 ) OVER( ORDER BY x ) FROM x ; \nSELECT ntile ( 'y' ) OVER( ORDER BY x ) FROM x ; \nINSERT INTO x VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nSELECT x , count ( * ) OVER( ORDER BY x ) FROM x ; \nSELECT * FROM x , SELECT x , count ( * ) OVER( ORDER BY x ) FROM x ; \nSELECT nth_value ( x , 10 ) FROM x ; \nSELECT * FROM x WHERE nth_value ( x , 10 ) OVER( ORDER BY x ) ; \nSELECT count ( * ) FROM x GROUP BY x HAVING nth_value ( x , 10 ) OVER( ORDER BY x ) ; \nSELECT count ( * ) FROM x GROUP BY nth_value ( x , 10 ) OVER( ORDER BY x ) ; \nSELECT count ( * ) FROM x LIMIT nth_value ( x , 10 ) OVER( ) ; \nSELECT trim ( x ) OVER( ORDER BY x ) FROM x ; \nSELECT max ( x ) OVER x FROM x ; \nCREATE TABLE x ( x TEXT PRIMARY KEY , x , x ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ; \nCREATE INDEX x ON x ( x ) WHERE sum ( x ) OVER( ) ; \nCREATE INDEX x ON x ( x ) WHERE lead ( x ) OVER( ) ; \nSELECT x , x , lead ( x , 10 ) OVER( ORDER BY x ) AS x FROM x WHERE x > 10 ORDER BY x LIMIT 10 ; \nSELECT x , rank () OVER( ORDER BY x ) FROM x ; \nSELECT x , rank () OVER( ORDER BY x DESC ) FROM x ; \nSELECT x , x + 10 , x + 10 FROM SELECT x IN ( SELECT ( row_number () OVER( ) ) FROM x ) AS y FROM x ; \nINSERT INTO x VALUES ( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x , sum ( x ) OVER( PARTITION BY x IN ( SELECT x FROM x ) ) FROM x ; \nSELECT x , sum ( x ) OVER x FROM x ; \nSELECT 10 + sum ( x ) OVER( ORDER BY x ) FROM x ORDER BY 10 + sum ( x ) OVER( ORDER BY x ) DESC ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT , x INTEGER ) ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ; \nSELECT x , sum ( x ) OVER( ORDER BY x DESC RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY x ASC ; \nINSERT INTO x VALUES ( NULL , 10 ) ,( NULL , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ,( 'y' , 10 ) ; \nINSERT INTO x VALUES ( NULL ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ,( 10 ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , NULL ) ,( 10 , 'y' , 'y' , 'y' ) ,( 10 , 'y' , 'y' , NULL ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , 0.1 ) ,( 10 , 'y' , 'y' , NULL ) ,( 10 , 'y' , 'y' , 'y' ) ,( 10 , 'y' , 'y' , 'y' ) ,( 10 , 'y' , 'y' , NULL ) ; \nSELECT x IN ( SELECT sum ( x ) OVER( ORDER BY x + x ) FROM x ) FROM SELECT * FROM x ; \nSELECT x IN ( SELECT sum ( x ) OVER( PARTITION BY x ORDER BY x + x ) FROM x ) FROM SELECT * FROM x ; \nSELECT x IN ( SELECT sum ( x ) OVER( ROWS BEWTEEN x FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ) FROM SELECT * FROM x ; \nSELECT x IN ( SELECT sum ( x ) OVER( ROWS BEWTEEN CURRENT ROW AND x FOLLOWING ) FROM x ) FROM SELECT * FROM x ; \nCREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY s () OVER x ; \nSELECT x , sum ( x ) OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT sum ( x ) OVER( ) FROM x ; \nSELECT sum ( x ) OVER( PARTITION BY x ) FROM x ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT x , sum ( x ) OVER( PARTITION BY ( x % 10 ) ORDER BY x ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( RANGE BEWTEEN CURRENT ROW AND CURRENT ROW ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( RANGE BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( RANGE BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY x ; \nSELECT x , sum ( x ) OVER( ROWS BEWTEEN CURRENT ROW AND CURRENT ROW ) FROM x ORDER BY 10 , 10 ; \nSELECT x , sum ( x ) OVER( ROWS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 ; \nSELECT x , sum ( x ) OVER( ROWS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 ; \nSELECT x , sum ( x ) OVER( ROWS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT max ( x ) , max ( x ) OVER( ORDER BY x ) FROM x GROUP BY x ; \nSELECT max ( x ) OVER( ORDER BY max ( x ) ) FROM x GROUP BY x ; \nSELECT abs ( max ( x ) OVER( ORDER BY x ) ) FROM x GROUP BY x ; \nSELECT sum ( x ) OVER( ORDER BY x RANGE BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 10 ) ,( 10 , 10 , NULL ) ,( 10 , 10 , 10 ) ,( 10 , 10 , NULL ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 10 ) ; \nSELECT x , min ( x ) OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT x , lead ( x , 10 ) OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT x , lag ( x , 10 ) OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT NTILE ( 10 ) OVER( ORDER BY x ) - 10 AS nt FROM x ; \nCREATE VIEW x AS SELECT NTILE ( 10 ) OVER( ORDER BY x ) - 10 AS nt FROM x ; \nSELECT win ( x ) OVER( ORDER BY x ) , median ( x ) OVER( ORDER BY x ) FROM x ; \nSELECT sumint ( x ) OVER( ORDER BY x ) FROM x ORDER BY x ; \nSELECT sumint ( x ) OVER( ORDER BY x ROWS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY x ; \nSELECT sum ( x ) OVER( ORDER BY x ROWS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ; \nCREATE TABLE x ( x , x INTEGER ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 0.1 ) ,( 10 , 0.1 ) ,( 10 , 0.1 ) ,( 10 , 0.1 ) ,( 10 , 0.1 ) ; \nINSERT INTO x ( x , x ) VALUES ( 10 , 'y' ) ,( 'y' , 'y' ) ,( 10 , 'y' ) ; \nSELECT x , ( SELECT x FROM x WHERE x = x ) FROM x ORDER BY x ; \nSELECT x , ( SELECT x FROM x WHERE x = x ) , sum ( x ) OVER( ORDER BY x ) FROM x ORDER BY x ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT x , sum ( x ) FROM x GROUP BY x ORDER BY 10 ; \nSELECT x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND CURRENT ROW ) FROM x ORDER BY 10 ; \nSELECT x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 ; \nSELECT x , sum ( x ) OVER( ORDER BY x DESC RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 ; \nCREATE TABLE x ( x TEXT , x TEXT , x INTEGER ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ,( 'y' , 'y' , 10 ) ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 PRECEDING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , rank () OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , max ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , min ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) FROM x ORDER BY 10 , 10 , 10 ; \nSELECT x , x , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING EXCLUDE CURRENT ROW ) , sum ( x ) OVER( ORDER BY x , x GROUPS BEWTEEN 10 FOLLOWING AND UNBOUNDED FOLLOWING ) FROM x ORDER BY 10 , 10 , 10 ; \nINSERT INTO x VALUES ( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nINSERT INTO x VALUES ( NULL , 10 ) ,( NULL , 10 ) ,( NULL , 10 ) ,( 10 , 10 ) ,( 10 , 10 ) ; \nSELECT sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 ; \nSELECT sum ( x ) OVER( ORDER BY x DESC RANGE BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 ; \nSELECT sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS FIRST ; \nSELECT sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x DESC RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS FIRST ; \nSELECT sum ( x ) OVER( ORDER BY x DESC RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x NULLS FIRST RANGE BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS FIRST ; \nSELECT sum ( x ) OVER( ORDER BY x NULLS LAST RANGE BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x NULLS FIRST ROWS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS FIRST ; \nSELECT sum ( x ) OVER( ORDER BY x NULLS LAST ROWS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x DESC NULLS LAST ROWS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS FIRST ; \nSELECT sum ( x ) OVER( ORDER BY x DESC NULLS LAST ROWS BEWTEEN 10 PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x ASC NULLS LAST RANGE BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nSELECT sum ( x ) OVER( ORDER BY x DESC NULLS FIRST RANGE BEWTEEN UNBOUNDED PRECEDING AND 10 FOLLOWING ) FROM x ORDER BY 10 NULLS LAST ; \nINSERT INTO x VALUES ( NULL , 'y' , 10 ) ,( NULL , 'y' , 10 ) ,( NULL , 'y' , 10 ) ,( 'y' , NULL , 10 ) ,( 'y' , NULL , 10 ) ,( 'y' , NULL , 10 ) ,( NULL , 'y' , 10 ) ,( NULL , NULL , 10 ) ,( NULL , NULL , 10 ) ; \nSELECT x , x , dense_rank () OVER( ORDER BY x ) FROM x ; \nSELECT x , x , dense_rank () OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT x , x , dense_rank () OVER( ORDER BY x ) , dense_rank () OVER( PARTITION BY x ORDER BY x ) FROM x ; \nSELECT x , x , dense_rank () OVER( ORDER BY x ) , dense_rank () OVER( PARTITION BY x ORDER BY x ) FROM x ORDER BY x ; \nSELECT EXISTS ( SELECT 10 FROM x ORDER BY sum ( x ) OVER( ) ) FROM x ; \nSELECT x , x + 10 , x + 10 FROM SELECT x IN ( SELECT min ( x ) OVER( ) , ( abs ( row_number () OVER( ) ) + 10 ) / 10 , max ( x ) OVER( ) FROM x ) AS y FROM x ; \nSELECT x , x = count ( * ) , 'y' FROM x GROUP BY x ; \nSELECT x , x = count ( * ) , group_concat ( x ) OVER( ) FROM x GROUP BY x ; \nSELECT sum ( x ) OVER( ) , sum ( x ) OVER( ORDER BY x ) , sum ( x ) OVER( PARTITION BY x ORDER BY x ) , sum ( x ) OVER( PARTITION BY x , x ORDER BY x ) , sum ( x ) OVER( PARTITION BY x , x , x ORDER BY x ) FROM x ; \nSELECT sum ( x ) OVER( PARTITION BY x ORDER BY x ) FROM x ORDER BY x ; \nCREATE TABLE x ( x INTEGER PRIMARY KEY , x CHAR(1) , x FLOAT ) ; \nINSERT INTO x VALUES ( 10 , 'y' , 0.1 ) ,( 10 , 'y' , 0.1 ) ,( 10 , 'y' , 0.1 ) ,( 10 , 'y' , 0.1 ) ,( 10 , 'y' , 0.1 ) ,( 10 , 'y' , NULL ) ,( 10 , 'y' , NULL ) ; \nWITH y AS ( SELECT Row_Number () OVER( x ) FROM x ) SELECT * FROM x ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 PRECEDING EXCLUDE NO OTHERS ) FROM x ; \nSELECT x , sum ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING EXCLUDE NO OTHERS ) FROM x ; \nSELECT x , max ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ; \nSELECT x , min ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 FOLLOWING AND 10 FOLLOWING ) FROM x ; \nSELECT x , max ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ; \nSELECT x , min ( x ) OVER( ORDER BY x RANGE BEWTEEN 10 PRECEDING AND 10 PRECEDING ) FROM x ; \nSELECT sum ( x ) OVER( ) AS xyz FROM x ORDER BY sum ( x ) ; \nWITH tmp AS ( SELECT * FROM x ) SELECT x FROM x ; \nCREATE TABLE x ( x INTEGER NULL PRIMARY KEY , x TEXT ) ; \nCREATE VIEW x AS SELECT max ( x ) , min ( x ) FROM x GROUP BY x ; \nSELECT * FROM x . x AS a , x . x AS b , x . x AS c , x . x AS d ; \nWITH x1 AS ( SELECT * FROM x ) SELECT sum ( x ) FROM x ; \nWITH x1 AS ( SELECT * FROM x ) SELECT ( SELECT sum ( x ) FROM x ) ; \nCREATE TABLE x AS SELECT 10 AS x ; \nWITH x1 AS ( SELECT * FROM x ) SELECT ( SELECT sum ( x ) FROM x ) , ( SELECT max ( x ) FROM x ) ; \nWITH x1 AS ( SELECT * FROM x ) SELECT ( SELECT sum ( x ) FROM x ) , ( SELECT max ( x ) FROM x ) , x FROM x ; \nCREATE VIEW x AS SELECT * FROM x , x . x ; \nWITH tmp AS ( SELECT * FROM x ) SELECT * FROM x ; \nSELECT * , 'y' FROM x ORDER BY x DESC , x DESC ; \nREPLACE INTO x VALUES ( 'y' , 'y' , 'y' , 'y' ) ; \nUPDATE x SET x = 0.1 WHERE x = 'y' ; \nINSERT OR REPLACE INTO x SELECT * FROM x ; \nCREATE TABLE x ( x INT CHECK( x != 10 ) , x TEXT PRIMARY KEY ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 10 , 10 , 'y' ) ; \nINSERT INTO x VALUES ( 'y' , 'y' , 0.1 , 'y' , 'y' , 0.1 ) ; \nINSERT INTO x VALUES ( NULL , 10 , 10 , 10 , 10 ) ; \nINSERT INTO x VALUES ( 10 , 10 , NULL , 10 , 10 ) ; \nSELECT x FROM x ORDER BY x DESC LIMIT 10 ; \nSELECT * , 'y' FROM x 'y' ; \nSELECT x FROM x WHERE x = zeroblob ( 10 ) ; \nSELECT CAST ( zeroblob ( 10 ) AS INTEGER ) ; \nSELECT CAST ( zeroblob ( 10 ) AS TEXT ) ; \nSELECT 'y' AS a , zeroblob ( 10 ) AS b FROM x ORDER BY x , x ; \nSELECT length ( zeroblob ( 10 ) ) ; \nSELECT zeroblob ( 10 * 10 * 10 ) ; \nSELECT quote ( zeroblob ( 10 * 10 * 10 ) ) ; \nSELECT quote ( zeroblob ( 10 ) ) ; \nSELECT quote ( test_zeroblob ( 10 ) ) ; \nSELECT x , quote ( x ) , length ( x ) , x FROM x ; \nINSERT INTO x ( x , x , x , x , x , x ) VALUES ( 'y' , 'y' , 10 , 10 , 'y' , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 'y' , 10 , 10 , 'y' , 10 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 'y' , 10 , 'y' , 10 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 'y' , 'y' , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 'y' , 'y' , 10 , 'y' , 10 ) ; \nINSERT INTO x ( x , x , x , x , x ) VALUES ( 'y' , NULL , 10 , 'y' , 10 ) ; \nSELECT x , x , x , x FROM x 'y' ; \nSELECT zipfile_cds ( x ) FROM x 'y' ; \nSELECT x , x , x , x , x FROM x 'y' ; \nINSERT INTO x ( x , x ) VALUES ( 'y' , NULL ) ; \nREPLACE INTO x ( x , x ) VALUES ( 'y' , 'y' ) ,( 'y' , 'y' ) ; \nINSERT OR IGNORE INTO x ( x , x ) VALUES ( 'y' , 'y' ) ,( 'y' , 'y' ) ; \nUPDATE x SET x = x CONCAT 'y' ; \nSELECT x FROM x 'y' ORDER BY 10 ; \nSELECT x FROM x JOIN x JOIN x x ORDER BY 10 ; \nSELECT x FROM x JOIN x JOIN x 'y' , x ORDER BY 10 ; \nCREATE VIRTUAL TABLE x USING zipfile ( testzip ) ; \n"
  },
  {
    "path": "data/fuzz_root/init_lib/sqltest",
    "content": "SELECT * FROM fdt WHERE c1 IN (1, 2, 3)\nSELECT * FROM fdt WHERE c1 IN (SELECT c1 FROM t2)\nSELECT * FROM fdt WHERE c1 IN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10)\nSELECT * FROM fdt WHERE c1 BETWEEN (SELECT c3 FROM t2 WHERE c2 = fdt.c1 + 10) AND 100\nSELECT * FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1)\nSELECT * FROM test1\nSELECT x FROM test1 GROUP BY x\nSELECT x, sum(y) FROM test1 GROUP BY x\nSELECT product_id, p.name, (sum(s.units) * p.price) AS sales FROM products p LEFT JOIN sales s USING (product_id) GROUP BY product_id, p.name, p.price\nSELECT x, sum(y) FROM test1 GROUP BY x HAVING sum(y) > 3\nSELECT x, sum(y) FROM test1 GROUP BY x HAVING x < 'c'\nSELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit FROM products p LEFT JOIN sales s USING (product_id) WHERE s.datex > CURRENT_DATE - INTERVAL '4 weeks' GROUP BY product_id, p.name, p.price, p.cost HAVING sum(p.price * s.units) > 5000\nSELECT a, b, c FROM t\nSELECT tbl1.a, tbl2.a, tbl1.b FROM t\nSELECT tbl1.*, tbl2.a FROM t\nSELECT a AS value, b + c AS sum FROM t\nSELECT a \"value\", b + c AS sum FROM t\nSELECT DISTINCT select_list t\nVALUES (1, 'one'), (2, 'two'), (3, 'three')\nSELECT 1 AS column1, 'one' AS column2 UNION ALL SELECT 2, 'two' UNION ALL SELECT 3, 'three'\nSELECT CNTRYCODE, COUNT(*) AS NUMCUST, SUM(C_ACCTBAL) AS TOTACCTBAL FROM (SELECT SUBSTRING(C_PHONE,1,2) AS CNTRYCODE, C_ACCTBAL  FROM CUSTOMER WHERE SUBSTRING(C_PHONE,1,2) IN ('13', '31', '23', '29', '30', '18', '17') AND  C_ACCTBAL > (SELECT AVG(C_ACCTBAL) FROM CUSTOMER WHERE C_ACCTBAL > 0.00 AND   SUBSTRING(C_PHONE,1,2) IN ('13', '31', '23', '29', '30', '18', '17')) AND  NOT EXISTS ( SELECT * FROM ORDERS WHERE O_CUSTKEY = C_CUSTKEY)) AS CUSTSALE GROUP BY CNTRYCODE ORDER BY CNTRYCODE;\nSELECT * FROM orders;\nSELECT a FROM foo WHERE a > 12 OR b > 3 AND NOT c LIMIT 10\nSELECT a FROM some_schema.foo WHERE a > 12 OR b > 3 AND NOT c LIMIT 10\nSELECT col1 AS myname, col2, 'test' FROM \"table\", foo AS t WHERE age > 12 AND zipcode = 12345 GROUP BY col1;\nSELECT * from \"table\" JOIN table2 ON a = b WHERE (b OR NOT a) AND a = 12.5\n(SELECT a FROM foo WHERE a > 12 OR b > 3 AND c NOT LIKE 's%' LIMIT 10);\nSELECT * FROM \"table\" LIMIT 10 OFFSET 10; SELECT * FROM another;\nSELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY col1;\nSELECT * FROM (SELECT * FROM t1);\nSELECT * FROM t1 UNION (SELECT * FROM t2 UNION SELECT * FROM t3) ORDER BY col1;\nSELECT * FROM t1 ORDER BY col1, col2;\nSELECT a, MAX(b), MAX(c, d), CUSTOM(q, UP(r)) AS f FROM t1;\nSELECT * FROM t WHERE a BETWEEN 1 and c;\nSELECT * FROM t WHERE a = 1 AND b = 1.2;\nSELECT City.name, Product.category, SUM(price) FROM fact INNER JOIN City ON fact.city_id = City.id INNER JOIN Product ON fact.product_id = Product.id GROUP BY City.name, Product.category;\nSELECT SUBSTR(a, 3, 5) FROM t;\nSELECT t1.a, t1.b, t2.c FROM \"table\" AS t1 JOIN (SELECT * FROM foo JOIN bar ON foo.id = bar.id) t2 ON t1.a = t2.b WHERE (t1.b OR NOT t1.a) AND t2.c = 12.5\nSELECT * FROM t1 JOIN t2 ON c1 = c2;\nSELECT a, SUM(b) FROM t2 GROUP BY a HAVING SUM(b) > 100;\nCREATE TABLE \"table\" FROM TBL FILE 'students.tbl'\nCREATE TABLE IF NOT EXISTS \"table\" FROM TBL FILE 'students.tbl'\nCREATE TABLE students (name TEXT, student_number INTEGER, city TEXT, grade DOUBLE)\nCREATE TABLE teachers (name VARCHAR(30), student_number LONG, city CHAR(10), grade FLOAT)\nCREATE TABLE students_2 AS SELECT * FROM students\nCREATE TABLE students_3 AS SELECT city, grade FROM students WHERE grade > 3.0\nCREATE TABLE \"table\" FROM TBL FILE 'students.tbl'; SELECT * FROM \"table\";\nTRUNCATE students\nUPDATE students SET grade = 1.3 WHERE name = 'Max Mustermann';\nUPDATE students SET grade = 1.3, name='Felix Fürstenberg' WHERE name = 'Max Mustermann';\nUPDATE students SET grade = 1.0;\nUPDATE some_schema.students SET grade = 1.0;\nDROP TABLE students;\nDROP TABLE IF EXISTS students;\nDROP VIEW IF EXISTS students;\nPREPARE prep_inst FROM '!INSERT INTO test VALUES (1, 'a', 1.2)';\nPREPARE prep2 FROM '!INSERT INTO test VALUES (1, 0, 0); !INSERT INTO test VALUES (0, 1, 0); !INSERT INTO test VALUES (0, 0, null);';\nEXECUTE prep_inst(1, 2, 3);\nEXECUTE prep;\nDEALLOCATE PREPARE prep;\nSELECT * FROM test WITH HINT(NO_CACHE);\nSELECT * FROM test WITH HINT(NO_CACHE, NO_SAMPLING);\nSELECT * FROM test WITH HINT(NO_CACHE, SAMPLE_RATE(0.1), OMW(1.0, 'test'));\nSHOW TABLES;\nSHOW COLUMNS students;\nDESCRIBE students;\nSELECT L_RETURNFLAG, L_LINESTATUS, SUM(L_QUANTITY) AS SUM_QTY,  SUM(L_EXTENDEDPRICE) AS SUM_BASE_PRICE, SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS SUM_DISC_PRICE,  SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)) AS SUM_CHARGE, AVG(L_QUANTITY) AS AVG_QTY,  AVG(L_EXTENDEDPRICE) AS AVG_PRICE, AVG(L_DISCOUNT) AS AVG_DISC, COUNT(*) AS COUNT_ORDER FROM LINEITEM WHERE L_SHIPDATE <= dateadd(dd, -90, cast('1998-12-01' as datetime)) GROUP BY L_RETURNFLAG, L_LINESTATUS ORDER BY L_RETURNFLAG,L_LINESTATUS\nSELECT S_ACCTBAL, S_NAME, N_NAME, P_PARTKEY, P_MFGR, S_ADDRESS, S_PHONE, S_COMMENT FROM PART, SUPPLIER, PARTSUPP, NATION, REGION WHERE P_PARTKEY = PS_PARTKEY AND S_SUPPKEY = PS_SUPPKEY AND P_SIZE = 15 AND P_TYPE LIKE '%%BRASS' AND S_NATIONKEY = N_NATIONKEY AND N_REGIONKEY = R_REGIONKEY AND R_NAME = 'EUROPE' AND PS_SUPPLYCOST = (SELECT MIN(PS_SUPPLYCOST) FROM PARTSUPP, SUPPLIER, NATION, REGION  WHERE P_PARTKEY = PS_PARTKEY AND S_SUPPKEY = PS_SUPPKEY  AND S_NATIONKEY = N_NATIONKEY AND N_REGIONKEY = R_REGIONKEY AND R_NAME = 'EUROPE') ORDER BY S_ACCTBAL DESC, N_NAME, S_NAME, P_PARTKEY\nSELECT L_ORDERKEY, SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS REVENUE, O_ORDERDATE, O_SHIPPRIORITY FROM CUSTOMER, ORDERS, LINEITEM WHERE C_MKTSEGMENT = 'BUILDING' AND C_CUSTKEY = O_CUSTKEY AND L_ORDERKEY = O_ORDERKEY AND O_ORDERDATE < '1995-03-15' AND L_SHIPDATE > '1995-03-15' GROUP BY L_ORDERKEY, O_ORDERDATE, O_SHIPPRIORITY ORDER BY REVENUE DESC, O_ORDERDATE;\nSELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM ORDERS WHERE O_ORDERDATE >= '1993-07-01' AND O_ORDERDATE < dateadd(mm,3, cast('1993-07-01' as datetime)) AND EXISTS (SELECT * FROM LINEITEM WHERE L_ORDERKEY = O_ORDERKEY AND L_COMMITDATE < L_RECEIPTDATE) GROUP BY O_ORDERPRIORITY ORDER BY O_ORDERPRIORITY\nSELECT N_NAME, SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS REVENUE FROM CUSTOMER, ORDERS, LINEITEM, SUPPLIER, NATION, REGION WHERE C_CUSTKEY = O_CUSTKEY AND L_ORDERKEY = O_ORDERKEY AND L_SUPPKEY = S_SUPPKEY AND C_NATIONKEY = S_NATIONKEY AND S_NATIONKEY = N_NATIONKEY AND N_REGIONKEY = R_REGIONKEY AND R_NAME = 'ASIA' AND O_ORDERDATE >= '1994-01-01' AND O_ORDERDATE < DATEADD(YY, 1, cast('1994-01-01' as datetime)) GROUP BY N_NAME ORDER BY REVENUE DESC\nSELECT SUM(L_EXTENDEDPRICE*L_DISCOUNT) AS REVENUE FROM LINEITEM WHERE L_SHIPDATE >= '1994-01-01' AND L_SHIPDATE < dateadd(yy, 1, cast('1994-01-01' as datetime)) AND L_DISCOUNT BETWEEN .06 - 0.01 AND .06 + 0.01 AND L_QUANTITY < 24\nSELECT SUPP_NATION, CUST_NATION, L_YEAR, SUM(VOLUME) AS REVENUE FROM ( SELECT N1.N_NAME AS SUPP_NATION, N2.N_NAME AS CUST_NATION, datepart(yy, L_SHIPDATE) AS L_YEAR,  L_EXTENDEDPRICE*(1-L_DISCOUNT) AS VOLUME  FROM SUPPLIER, LINEITEM, ORDERS, CUSTOMER, NATION N1, NATION N2  WHERE S_SUPPKEY = L_SUPPKEY AND O_ORDERKEY = L_ORDERKEY AND C_CUSTKEY = O_CUSTKEY  AND S_NATIONKEY = N1.N_NATIONKEY AND C_NATIONKEY = N2.N_NATIONKEY AND  ((N1.N_NAME = 'FRANCE' AND N2.N_NAME = 'GERMANY') OR  (N1.N_NAME = 'GERMANY' AND N2.N_NAME = 'FRANCE')) AND  L_SHIPDATE BETWEEN '1995-01-01' AND '1996-12-31' ) AS SHIPPING GROUP BY SUPP_NATION, CUST_NATION, L_YEAR ORDER BY SUPP_NATION, CUST_NATION, L_YEAR\nSELECT O_YEAR, SUM(CASE WHEN NATION = 'BRAZIL' THEN VOLUME ELSE 0 END)/SUM(VOLUME) AS MKT_SHARE FROM (SELECT datepart(yy,O_ORDERDATE) AS O_YEAR, L_EXTENDEDPRICE*(1-L_DISCOUNT) AS VOLUME, N2.N_NAME AS NATION  FROM \"PART\", SUPPLIER, LINEITEM, ORDERS, CUSTOMER, NATION N1, NATION N2, REGION  WHERE P_PARTKEY = L_PARTKEY AND S_SUPPKEY = L_SUPPKEY AND L_ORDERKEY = O_ORDERKEY  AND O_CUSTKEY = C_CUSTKEY AND C_NATIONKEY = N1.N_NATIONKEY AND  N1.N_REGIONKEY = R_REGIONKEY AND R_NAME = 'AMERICA' AND S_NATIONKEY = N2.N_NATIONKEY  AND O_ORDERDATE BETWEEN '1995-01-01' AND '1996-12-31' AND P_TYPE= 'ECONOMY ANODIZED STEEL') AS ALL_NATIONS GROUP BY O_YEAR ORDER BY O_YEAR\nSELECT NATION, O_YEAR, SUM(AMOUNT) AS SUM_PROFIT FROM (SELECT N_NAME AS NATION, datepart(yy, O_ORDERDATE) AS O_YEAR,  L_EXTENDEDPRICE*(1-L_DISCOUNT)-PS_SUPPLYCOST*L_QUANTITY AS AMOUNT  FROM \"PART\", SUPPLIER, LINEITEM, PARTSUPP, ORDERS, NATION  WHERE S_SUPPKEY = L_SUPPKEY AND PS_SUPPKEY= L_SUPPKEY AND PS_PARTKEY = L_PARTKEY AND  P_PARTKEY= L_PARTKEY AND O_ORDERKEY = L_ORDERKEY AND S_NATIONKEY = N_NATIONKEY AND  P_NAME LIKE '%%green%%') AS PROFIT GROUP BY NATION, O_YEAR ORDER BY NATION, O_YEAR DESC\nSELECT C_CUSTKEY, C_NAME, SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS REVENUE, C_ACCTBAL, N_NAME, C_ADDRESS, C_PHONE, C_COMMENT FROM CUSTOMER, ORDERS, LINEITEM, NATION WHERE C_CUSTKEY = O_CUSTKEY AND L_ORDERKEY = O_ORDERKEY AND O_ORDERDATE>= '1993-10-01' AND O_ORDERDATE < dateadd(mm, 3, cast('1993-10-01' as datetime)) AND L_RETURNFLAG = 'R' AND C_NATIONKEY = N_NATIONKEY GROUP BY C_CUSTKEY, C_NAME, C_ACCTBAL, C_PHONE, N_NAME, C_ADDRESS, C_COMMENT ORDER BY REVENUE DESC\nSELECT PS_PARTKEY, SUM(PS_SUPPLYCOST*PS_AVAILQTY) AS VALUE FROM PARTSUPP, SUPPLIER, NATION WHERE PS_SUPPKEY = S_SUPPKEY AND S_NATIONKEY = N_NATIONKEY AND N_NAME = 'GERMANY' GROUP BY PS_PARTKEY HAVING SUM(PS_SUPPLYCOST*PS_AVAILQTY) > (SELECT SUM(PS_SUPPLYCOST*PS_AVAILQTY) * 0.0001000000  FROM PARTSUPP, SUPPLIER, NATION  WHERE PS_SUPPKEY = S_SUPPKEY AND S_NATIONKEY = N_NATIONKEY AND N_NAME = 'GERMANY') ORDER BY VALUE DESC;\nSELECT L_SHIPMODE, SUM(CASE WHEN O_ORDERPRIORITY = '1-URGENT' OR O_ORDERPRIORITY = '2-HIGH' THEN 1 ELSE 0 END) AS HIGH_LINE_COUNT, SUM(CASE WHEN O_ORDERPRIORITY <> '1-URGENT' AND O_ORDERPRIORITY <> '2-HIGH' THEN 1 ELSE 0 END ) AS LOW_LINE_COUNT FROM ORDERS, LINEITEM WHERE O_ORDERKEY = L_ORDERKEY AND L_SHIPMODE IN ('MAIL','SHIP') AND L_COMMITDATE < L_RECEIPTDATE AND L_SHIPDATE < L_COMMITDATE AND L_RECEIPTDATE >= '1994-01-01' AND L_RECEIPTDATE < dateadd(mm, 1, cast('1995-09-01' as datetime)) GROUP BY L_SHIPMODE ORDER BY L_SHIPMODE;\nSELECT C_COUNT, COUNT(*) AS CUSTDIST FROM (SELECT C_CUSTKEY, COUNT(O_ORDERKEY)  FROM CUSTOMER left outer join ORDERS on C_CUSTKEY = O_CUSTKEY  AND O_COMMENT not like '%%special%%requests%%'  GROUP BY C_CUSTKEY) AS C_ORDERS (C_CUSTKEY, C_COUNT) GROUP BY C_COUNT ORDER BY CUSTDIST DESC, C_COUNT DESC;\nSELECT 100.00* SUM(CASE WHEN P_TYPE LIKE 'PROMO%%' THEN L_EXTENDEDPRICE*(1-L_DISCOUNT) ELSE 0 END) / SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS PROMO_REVENUE FROM LINEITEM, PART WHERE L_PARTKEY = P_PARTKEY AND L_SHIPDATE >= '1995-09-01' AND L_SHIPDATE < dateadd(mm, 1, '1995-09-01');\nCREATE VIEW REVENUE0 (SUPPLIER_NO, TOTAL_REVENUE) AS SELECT L_SUPPKEY, SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) FROM LINEITEM WHERE L_SHIPDATE >= '1996-01-01' AND L_SHIPDATE < dateadd(mm, 3, cast('1996-01-01' as datetime)) GROUP BY L_SUPPKEY;\nSELECT S_SUPPKEY, S_NAME, S_ADDRESS, S_PHONE, TOTAL_REVENUE FROM SUPPLIER, REVENUE0 WHERE S_SUPPKEY = SUPPLIER_NO AND TOTAL_REVENUE = (SELECT MAX(TOTAL_REVENUE) FROM REVENUE0) ORDER BY S_SUPPKEY;\nDROP VIEW REVENUE0;\nSELECT SUM(L_EXTENDEDPRICE)/7.0 AS AVG_YEARLY FROM LINEITEM, \"PART\" WHERE P_PARTKEY = L_PARTKEY AND P_BRAND = 'Brand#23' AND P_CONTAINER = 'MED BOX' AND L_QUANTITY < (SELECT 0.2*AVG(L_QUANTITY) FROM LINEITEM WHERE L_PARTKEY = P_PARTKEY);\nSELECT C_NAME, C_CUSTKEY, O_ORDERKEY, O_ORDERDATE, O_TOTALPRICE, SUM(L_QUANTITY) FROM CUSTOMER, ORDERS, LINEITEM WHERE O_ORDERKEY IN (SELECT L_ORDERKEY FROM LINEITEM GROUP BY L_ORDERKEY HAVING  SUM(L_QUANTITY) > 300) AND C_CUSTKEY = O_CUSTKEY AND O_ORDERKEY = L_ORDERKEY GROUP BY C_NAME, C_CUSTKEY, O_ORDERKEY, O_ORDERDATE, O_TOTALPRICE ORDER BY O_TOTALPRICE DESC, O_ORDERDATE;\nSELECT SUM(L_EXTENDEDPRICE* (1 - L_DISCOUNT)) AS REVENUE FROM LINEITEM, \"PART\" WHERE (P_PARTKEY = L_PARTKEY AND P_BRAND = 'Brand#12' AND P_CONTAINER IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') AND L_QUANTITY >= 1 AND L_QUANTITY <= 1 + 10 AND P_SIZE BETWEEN 1 AND 5 AND L_SHIPMODE IN ('AIR', 'AIR REG') AND L_SHIPINSTRUCT = 'DELIVER IN PERSON') OR (P_PARTKEY = L_PARTKEY AND P_BRAND ='Brand#23' AND P_CONTAINER IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') AND L_QUANTITY >=10 AND L_QUANTITY <=10 + 10 AND P_SIZE BETWEEN 1 AND 10 AND L_SHIPMODE IN ('AIR', 'AIR REG') AND L_SHIPINSTRUCT = 'DELIVER IN PERSON') OR (P_PARTKEY = L_PARTKEY AND P_BRAND = 'Brand#34' AND P_CONTAINER IN ( 'LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') AND L_QUANTITY >=20 AND L_QUANTITY <= 20 + 10 AND P_SIZE BETWEEN 1 AND 15 AND L_SHIPMODE IN ('AIR', 'AIR REG') AND L_SHIPINSTRUCT = 'DELIVER IN PERSON');\nSELECT S_NAME, S_ADDRESS FROM SUPPLIER, NATION WHERE S_SUPPKEY IN (SELECT PS_SUPPKEY FROM PARTSUPP  WHERE PS_PARTKEY in (SELECT P_PARTKEY FROM \"PART\" WHERE P_NAME like 'forest%%') AND  PS_AVAILQTY > (SELECT 0.5*sum(L_QUANTITY) FROM LINEITEM WHERE L_PARTKEY = PS_PARTKEY AND   L_SUPPKEY = PS_SUPPKEY AND L_SHIPDATE >= '1994-01-01' AND   L_SHIPDATE < dateadd(yy,1,'1994-01-01'))) AND S_NATIONKEY = N_NATIONKEY AND N_NAME = 'CANADA' ORDER BY S_NAME;\nSELECT S_NAME, COUNT(*) AS NUMWAIT FROM SUPPLIER, LINEITEM L1, ORDERS, NATION WHERE S_SUPPKEY = L1.L_SUPPKEY AND O_ORDERKEY = L1.L_ORDERKEY AND O_ORDERSTATUS = 'F' AND L1.L_RECEIPTDATE> L1.L_COMMITDATE AND EXISTS (SELECT * FROM LINEITEM L2 WHERE L2.L_ORDERKEY = L1.L_ORDERKEY  AND L2.L_SUPPKEY <> L1.L_SUPPKEY) AND NOT EXISTS (SELECT * FROM LINEITEM L3 WHERE L3.L_ORDERKEY = L1.L_ORDERKEY AND  L3.L_SUPPKEY <> L1.L_SUPPKEY AND L3.L_RECEIPTDATE > L3.L_COMMITDATE) AND S_NATIONKEY = N_NATIONKEY AND N_NAME = 'SAUDI ARABIA' GROUP BY S_NAME ORDER BY NUMWAIT DESC, S_NAME;\nSELECT CNTRYCODE, COUNT(*) AS NUMCUST, SUM(C_ACCTBAL) AS TOTACCTBAL FROM (SELECT SUBSTRING(C_PHONE,1,2) AS CNTRYCODE, C_ACCTBAL  FROM CUSTOMER WHERE SUBSTRING(C_PHONE,1,2) IN ('13', '31', '23', '29', '30', '18', '17') AND  C_ACCTBAL > (SELECT AVG(C_ACCTBAL) FROM CUSTOMER WHERE C_ACCTBAL > 0.00 AND   SUBSTRING(C_PHONE,1,2) IN ('13', '31', '23', '29', '30', '18', '17')) AND  NOT EXISTS ( SELECT * FROM ORDERS WHERE O_CUSTKEY = C_CUSTKEY)) AS CUSTSALE GROUP BY CNTRYCODE ORDER BY CNTRYCODE;\nCREATE TABLE x ( x CHAR(0) ) \nCREATE TABLE x ( x CHAR(1) ) \nCREATE TABLE x ( x CHAR(1) , x CHAR(1) , x INT ) \nCREATE TABLE x ( x CHAR(10) ) \nCREATE TABLE x ( x CHAR(100) ) \nCREATE TABLE x ( x CHAR(100) , x CHAR(100) ) \nCREATE TABLE x ( x CHAR(15) ) \nCREATE TABLE x ( x CHAR(200) ) \nCREATE TABLE x ( x CHAR(30) ) \nCREATE TABLE x ( x CHAR(30) , x CHAR(20) ) \nCREATE TABLE x ( x CHAR(30) , x CHAR(20) , x CHAR(10) ) \nCREATE TABLE x ( x CHAR(30) , x CHAR(20) , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x CHAR(30) , x CHAR(30) ) \nCREATE TABLE x ( x CHAR(30) , x VARCHAR(20) , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x CHAR(50) ) \nCREATE TABLE x ( x DOUBLE ) \nCREATE TABLE x ( x DOUBLE , x DOUBLE ) \nCREATE TABLE x ( x DOUBLE , x DOUBLE , x DOUBLE ) \nCREATE TABLE x ( x DOUBLE , x DOUBLE , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x DOUBLE , x FLOAT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x DOUBLE , x INT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x DOUBLE , x INTEGER , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x FLOAT ) \nCREATE TABLE x ( x FLOAT , x DOUBLE , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x FLOAT , x FLOAT ) \nCREATE TABLE x ( x FLOAT , x FLOAT , x FLOAT ) \nCREATE TABLE x ( x FLOAT , x FLOAT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x FLOAT , x INT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x FLOAT , x INTEGER , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INT ) \nCREATE TABLE x ( x INT , x CHAR(100) ) \nCREATE TABLE x ( x INT , x CHAR(100) , x FLOAT ) \nCREATE TABLE x ( x INT , x DOUBLE , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INT , x FLOAT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INT , x INT ) \nCREATE TABLE x ( x INT , x INT , x INT ) \nCREATE TABLE x ( x INT , x INT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INT , x INTEGER , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INT , x VARCHAR(100) ) \nCREATE TABLE x ( x INT , x VARCHAR(100) , x FLOAT ) \nCREATE TABLE x ( x INTEGER ) \nCREATE TABLE x ( x INTEGER , x DOUBLE , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INTEGER , x FLOAT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INTEGER , x INT , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INTEGER , x INTEGER ) \nCREATE TABLE x ( x INTEGER , x INTEGER , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER ) \nCREATE TABLE x ( x TEXT ) \nCREATE TABLE x ( x VARCHAR(0) ) \nCREATE TABLE x ( x VARCHAR(1) ) \nCREATE TABLE x ( x VARCHAR(1) , x VARCHAR(1) , x INT ) \nCREATE TABLE x ( x VARCHAR(10) ) \nCREATE TABLE x ( x VARCHAR(10) , x VARCHAR(10) , x INT ) \nCREATE TABLE x ( x VARCHAR(10) , x VARCHAR(10) , x INTEGER ) \nCREATE TABLE x ( x VARCHAR(100) ) \nCREATE TABLE x ( x VARCHAR(100) , x VARCHAR(100) ) \nCREATE TABLE x ( x VARCHAR(15) ) \nCREATE TABLE x ( x VARCHAR(200) ) \nCREATE TABLE x ( x VARCHAR(30) ) \nCREATE TABLE x ( x VARCHAR(30) , x CHAR(20) , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x VARCHAR(30) , x VARCHAR(20) ) \nCREATE TABLE x ( x VARCHAR(30) , x VARCHAR(20) , x INT , x VARCHAR(10) ) \nCREATE TABLE x ( x VARCHAR(30) , x VARCHAR(20) , x VARCHAR(10) ) \nCREATE TABLE x ( x VARCHAR(30) , x VARCHAR(30) ) \nCREATE TABLE x ( x VARCHAR(50) ) \nCREATE TABLE x . x ( x INTEGER ) \nDEALLOCATE PREPARE x \nSHOW TABLES ; \nPREPARE x FROM 'y' \nSELECT ( SELECT x ( x ) FROM x ) \nSELECT ( SELECT x ( x ) FROM x ) FROM x \nSELECT ( SELECT x , x FROM x ) FROM x \nSELECT * FROM x . x ORDER BY x \nSELECT * FROM x LIMIT 10 \nSELECT * FROM x ORDER BY x \nSELECT * FROM x WHERE x ( 10 , 10 ) = ( SELECT x , x FROM x WHERE x = 10 ) \nSELECT * FROM x WHERE x = 'y' AND x = 'y' LIMIT 10 \nSELECT * FROM x WHERE x = 'y' LIMIT 10 \nSELECT * FROM x WHERE x = 'y' ORDER BY x , x , x \nSELECT * FROM x WHERE x = 'y' ORDER BY x , x , x DESC \nSELECT * FROM x WHERE x = ( SELECT x FROM x ) \nSELECT * FROM x WHERE x IN ( SELECT x FROM x ORDER BY x LIMIT 10 ) \nSELECT * FROM x WHERE x IS NULL \nSELECT DISTINCT x , x , x FROM x \nSELECT DISTINCT x , x , x FROM x WHERE x . x = 'y' \nSELECT DISTINCT x , x , x FROM x WHERE x . x = 'y' AND x . x = 'y' \nSELECT DISTINCT x , x FROM x \nSELECT DISTINCT x , x FROM x WHERE x . x = 'y' \nSELECT DISTINCT x , x FROM x WHERE x . x = 'y' AND x . x = 'y' \nSELECT DISTINCT x FROM x \nSELECT DISTINCT x FROM x WHERE x . x = 'y' \nSELECT DISTINCT x FROM x WHERE x . x = 'y' AND x . x = 'y' \nSELECT x ( ( SELECT x FROM x WHERE x = 10 ) ) FROM x \nSELECT x ( * ) FROM x \nSELECT x ( * ) FROM x , x AS x \nSELECT x ( * ) FROM x , x AS x WHERE x . x = 'y' \nSELECT x ( * ) FROM x , x AS x WHERE x . x = 'y' AND x . x = x . x \nSELECT x ( * ) FROM x , x AS x WHERE x . x = 'y' AND x . x = x . x AND x . x = x . x \nSELECT x ( * ) FROM x WHERE x = 'y' \nSELECT x ( * ) FROM x WHERE x = 'y' AND x = 'y' \nSELECT x ( * ) FROM x WHERE x = 'y' OR x = 'y' \nSELECT x ( x ) , x ( x ) , x ( x ) FROM x \nSELECT x ( x ) , x ( x ) FROM x \nSELECT x ( x ) , x ( x ) FROM x WHERE x != 10 \nSELECT x ( x ) , x ( x ) FROM x WHERE x < 10 \nSELECT x ( x ) , x ( x ) FROM x WHERE x <= 10 \nSELECT x ( x ) , x ( x ) FROM x WHERE x = 10 \nSELECT x ( x ) , x ( x ) FROM x WHERE x >= 10 \nSELECT x ( x ) , x , x FROM x \nSELECT x ( x ) AS x FROM x \nSELECT x ( x ) AS x FROM x WHERE x != 10 \nSELECT x ( x ) AS x FROM x WHERE x < 0.1 \nSELECT x ( x ) AS x FROM x WHERE x < 10 \nSELECT x ( x ) AS x FROM x WHERE x <= 10 \nSELECT x ( x ) AS x FROM x WHERE x = 0.1 \nSELECT x ( x ) AS x FROM x WHERE x = 10 \nSELECT x ( x ) AS x FROM x WHERE x > 0.1 \nSELECT x ( x ) AS x FROM x WHERE x > 10 \nSELECT x ( x ) AS x FROM x WHERE x >= 10 \nSELECT x ( x ) AS x FROM x WHERE x IS NOT NULL \nSELECT x ( x ) AS x FROM x WHERE x IS NULL \nSELECT x ( x ) FROM x \nSELECT x ( x ) FROM x WHERE x = 'y' \nSELECT x , x ( * ) , x ( x ) FROM x WHERE x = 'y' GROUP BY x \nSELECT x , x ( * ) , x ( x ) FROM x WHERE x = 'y' GROUP BY x HAVING x ( * ) = 10 \nSELECT x , x ( * ) , x ( x ) FROM x WHERE x = 'y' OR x = 'y' GROUP BY x \nSELECT x , x ( * ) , x ( x ) FROM x WHERE x = 'y' OR x = 'y' GROUP BY x HAVING x ( * ) = 10 \nSELECT x , x ( * ) FROM x GROUP BY x \nSELECT x , x ( * ) FROM x GROUP BY x HAVING x ( * ) = 10 \nSELECT x , x ( x ) FROM x GROUP BY x \nSELECT x , x , x ( * ) , x ( x ) FROM x WHERE x = 'y' GROUP BY x , x \nSELECT x , x , x ( * ) , x ( x ) FROM x WHERE x = 'y' GROUP BY x , x HAVING x ( * ) = 10 \nSELECT x , x , x ( * ) , x ( x ) FROM x WHERE x = 'y' OR x = 'y' GROUP BY x , x \nSELECT x , x , x ( * ) , x ( x ) FROM x WHERE x = 'y' OR x = 'y' GROUP BY x , x HAVING x ( * ) = 10 \nSELECT x , x , x ( * ) FROM x GROUP BY x , x \nSELECT x , x , x ( * ) FROM x GROUP BY x , x HAVING x ( * ) = 10 \nSELECT x , x , x ( x ) FROM x . x WHERE x = 'y' ORDER BY x , x \nSELECT x , x , x FROM x ORDER BY x DESC LIMIT 10 \nSELECT x , x , x FROM x WHERE x = ( SELECT x ( x ) FROM x ) \nSELECT x , x , x FROM x WHERE x = ( SELECT x ( x . x ) FROM x AS x WHERE x . x = x . x ) \nSELECT x , x FROM x GROUP BY x , x \nSELECT x , x FROM x GROUP BY x , x HAVING x ( * ) = 10 \nSELECT x . x , x . x FROM x , x WHERE x . x != x . x \nSELECT x . x , x . x FROM x , x WHERE x . x < x . x \nSELECT x . x , x . x FROM x , x WHERE x . x <= x . x \nSELECT x . x , x . x FROM x , x WHERE x . x = x . x \nSELECT x . x , x . x FROM x , x WHERE x . x >= x . x \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x WHERE x . x != 10 \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x WHERE x . x < 10 \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x WHERE x . x <= 10 \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x WHERE x . x = 10 \nSELECT x . x , x . x FROM x CROSS JOIN x ON x . x = x . x WHERE x . x >= 10 \nSELECT x . x , x . x FROM x CROSS JOIN x USING ( x ) \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x WHERE x . x != 10 \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x WHERE x . x < 10 \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x WHERE x . x <= 10 \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x WHERE x . x = 10 \nSELECT x . x , x . x FROM x INNER JOIN x ON x . x = x . x WHERE x . x >= 10 \nSELECT x . x , x . x FROM x INNER JOIN x USING ( x ) \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x WHERE x . x != 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x WHERE x . x < 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x WHERE x . x <= 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x WHERE x . x = 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x ON x . x = x . x WHERE x . x >= 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT JOIN x USING ( x ) ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x WHERE x . x != 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x WHERE x . x < 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x WHERE x . x <= 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x WHERE x . x = 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x LEFT OUTER JOIN x ON x . x = x . x WHERE x . x >= 10 ORDER BY x . x , x . x \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x WHERE x . x != 10 \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x WHERE x . x < 10 \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x WHERE x . x <= 10 \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x WHERE x . x = 10 \nSELECT x . x , x . x FROM x RIGHT JOIN x ON x . x = x . x WHERE x . x >= 10 \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x WHERE x . x != 10 \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x WHERE x . x < 10 \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x WHERE x . x <= 10 \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x WHERE x . x = 10 \nSELECT x . x , x . x FROM x RIGHT OUTER JOIN x ON x . x = x . x WHERE x . x >= 10 \nSELECT x FROM x . x WHERE x = 'y' \nSELECT x FROM x GROUP BY x \nSELECT x FROM x GROUP BY x HAVING x ( * ) = 10 \nSELECT x FROM x UNION SELECT x FROM x \nSELECT x FROM x WHERE EXISTS ( SELECT * FROM x WHERE x . x = x . x ) \nSELECT x FROM x WHERE EXISTS ( SELECT 10 ) \nSELECT x FROM x WHERE x = 'y' UNION SELECT x FROM x WHERE x != 'y' \nSELECT x FROM x WHERE x = 'y' UNION SELECT x FROM x WHERE x = 'y' \nSELECT x FROM x WHERE x = ( SELECT x ( x ) FROM x ) \nSELECT x FROM x WHERE x IN ( SELECT x FROM x ) \nUPDATE x SET x = 'y' WHERE x = 'y' \nUPDATE x SET x = ( SELECT x ( x ) FROM x ) \nUPDATE x SET x = 10 \nUPDATE x SET x = 10 WHERE x = 10 \nUPDATE x SET x = 10 WHERE x = 10 OR x = 10 \nUPDATE x SET x = 10 WHERE x = NULL \nUPDATE x SET x = 10 WHERE x >= 10 \nUPDATE x SET x = x ( 10 ) WHERE x = 10 \nUPDATE x SET x = x () + 10 WHERE x = x () \nUPDATE x SET x = x () WHERE x >= x ( x () , 'y' ) \nUPDATE x SET x = x + 10 WHERE x != 10 \nUPDATE x SET x = x + 10 WHERE x < 10 \nUPDATE x SET x = x + 10 WHERE x <= 10 \nUPDATE x SET x = x + 10 WHERE x = 10 \nUPDATE x SET x = x + 10 WHERE x >= 10 \nUPDATE x SET x = x + x . x WHERE x = 10 \nWITH RECURSIVE cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<1000000) SELECT x FROM cnt;\n"
  },
  {
    "path": "data/fuzz_root/input/1.txt",
    "content": "CREATE TABLE t0(c0, c1 AS(c0 + c2), c2 AS(c1) CHECK(c2));\nUPDATE t0 SET c0 = NULL\n"
  },
  {
    "path": "data/fuzz_root/input/10.txt",
    "content": "  CREATE TABLE t1(a, b);\n  CREATE TABLE t2(c, d);\n  CREATE TABLE t3(e, f);\n\n  INSERT INTO t1 VALUES(1, 1);\n  INSERT INTO t2 VALUES(1, 1);\n  INSERT INTO t3 VALUES(1, 1);\n\n  SELECT d IN (SELECT sum(c) OVER (ORDER BY e+c) FROM t3) FROM (\n    SELECT * FROM t2\n  );\n"
  },
  {
    "path": "data/fuzz_root/input/11.txt",
    "content": "  ATTACH '' AS aux;\n  CREATE TABLE aux.t1(a, b, c);\n  CREATE TEMP TRIGGER tmp AFTER INSERT ON t1 BEGIN\n    SELECT 'abc';\n  END;\n\n  DETACH aux;\n  DROP TRIGGER tmp;\n"
  },
  {
    "path": "data/fuzz_root/input/12.txt",
    "content": "CREATE TABLE t1(a,b);\nINSERT INTO t1 VALUES(1,2);\nUPDATE t1 SET (a,a,a,b)=(SELECT 99,100);\n"
  },
  {
    "path": "data/fuzz_root/input/13.txt",
    "content": "CREATE TABLE t0(c0);\nINSERT INTO t0(c0) VALUES (0);\nSELECT * FROM t0 WHERE EXISTS (SELECT MIN(c0)  OVER (), CUME_DIST() OVER () FROM t0) BETWEEN 1 AND 1;\n"
  },
  {
    "path": "data/fuzz_root/input/14.txt",
    "content": "CREATE TABLE t1(a);\nCREATE TABLE t2(b);\nCREATE TRIGGER r1 AFTER INSERT ON t2 BEGIN\n  INSERT INTO t1(a) VALUES(99);\nEND;\nDROP TABLE t1;\nALTER TABLE t2 RENAME TO t3;\n"
  },
  {
    "path": "data/fuzz_root/input/15.txt",
    "content": "CREATE TABLE artists (\n  id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n  name varchar(255)\n);\nCREATE TABLE albums (\n  id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n  name varchar(255),\n  artist_id integer REFERENCES artists\n);\nINSERT INTO artists (name) VALUES ('Ar');\nINSERT INTO albums (name, artist_id) VALUES ('Al', 1);\nSELECT artists.*\nFROM artists\nINNER JOIN artists AS 'b' ON (b.id = artists.id)\nWHERE (artists.id IN (\n  SELECT albums.artist_id\n  FROM albums\n  WHERE ((name = 'Al')\n    AND (albums.artist_id IS NOT NULL)\n    AND (albums.id IN (\n      SELECT id\n      FROM (\n        SELECT albums.id,\n               row_number() OVER (\n                 PARTITION BY albums.artist_id\n                 ORDER BY name\n               ) AS 'x'\n        FROM albums\n        WHERE (name = 'Al')\n      ) AS 't1'\n      WHERE (x = 1)\n    ))\n    AND (albums.id IN (1, 2)))\n));\n"
  },
  {
    "path": "data/fuzz_root/input/16.txt",
    "content": "CREATE TABLE \"sqlite1234\" (\"id\" integer);\nALTER TABLE \"sqlite1234\" RENAME TO \"User\";\nSELECT name, sql FROM sqlite_master WHERE sql IS NOT NULL;\n"
  },
  {
    "path": "data/fuzz_root/input/17.txt",
    "content": "CREATE TABLE IF NOT EXISTS t1(id INTEGER PRIMARY KEY);\nINSERT INTO t1 VALUES(1);\nSELECT a.id FROM t1 AS a JOIN t1 AS b ON a.id=b.id WHERE a.id IN (1,2,3);\n"
  },
  {
    "path": "data/fuzz_root/input/18.txt",
    "content": "CREATE TABLE t1(a INTEGER PRIMARY KEY);\nINSERT INTO t1(a) VALUES(1),(2),(3);\nCREATE TABLE t2(x INTEGER PRIMARY KEY, y INT);\nINSERT INTO t2(y) VALUES(2),(3);\nSELECT * FROM t1, t2 WHERE a=y AND y=3;\n"
  },
  {
    "path": "data/fuzz_root/input/19.txt",
    "content": "SELECT +sum(0)OVER() ORDER BY +sum(0)OVER();\n"
  },
  {
    "path": "data/fuzz_root/input/2.txt",
    "content": "CREATE TABLE t0(c0 AS ((c4, 9, c4) < ('a', c1, 1)), c1 AS (1) NOT NULL, c2, c3 CHECK  ((x'56', 0) = (c1, 0)), c4 NOT NULL);\nPRAGMA integrity_check;\nINSERT INTO t0 VALUES (0, 0, 0), (0, 0, 0);\n"
  },
  {
    "path": "data/fuzz_root/input/20.txt",
    "content": "CREATE TABLE t1(aa, bb);\nCREATE INDEX t1x1 on t1(abs(aa), abs(bb));\nINSERT INTO t1 VALUES(-2,-3),(+2,-3),(-2,+3),(+2,+3);\nSELECT * FROM (t1)\n WHERE ((abs(aa)=1 AND 1=2) OR abs(aa)=2)\n   AND abs(bb)=3;\n"
  },
  {
    "path": "data/fuzz_root/input/21.txt",
    "content": "CREATE TABLE t1(x);\nINSERT INTO t1 VALUES('a'), ('b'), ('c');\n\nCREATE TABLE t2(a, b);\nINSERT INTO t2 VALUES('X', 1), ('X', 2), ('Y', 2), ('Y', 3);\n\nSELECT x, (SELECT sum(b)\n            OVER (PARTITION BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)\n            FROM t2 WHERE b<x ) FROM t1;\n\n"
  },
  {
    "path": "data/fuzz_root/input/22.txt",
    "content": "CREATE VIRTUAL TABLE vt0 USING fts4(c0, languageid=\"lid\");\nINSERT INTO vt0 VALUES (0), (1);\nBEGIN;\nUPDATE vt0 SET lid = 1;\nINSERT INTO vt0(vt0) VALUES('integrity-check');\n"
  },
  {
    "path": "data/fuzz_root/input/23.txt",
    "content": "CREATE VIRTUAL TABLE t0 USING rtree(c0, c1, c2);\nINSERT INTO t0(c1) VALUES(0), (0);\nUPDATE t0 SET c0 = (SELECT 1 FROM t0); \n"
  },
  {
    "path": "data/fuzz_root/input/24.txt",
    "content": "CREATE TABLE t0(c0 REAL AS(1) UNIQUE, c1 INT);\nINSERT INTO t0 VALUES('');\nSELECT * FROM t0 WHERE (1 BETWEEN CAST(t0.c0 AS TEXT) AND t0.c0);\n"
  },
  {
    "path": "data/fuzz_root/input/25.txt",
    "content": "PRAGMA encoding = 'UTF-16';\nCREATE VIRTUAL TABLE vt0 USING fts5(c0);\nINSERT INTO vt0 VALUES (x'3078');\nINSERT INTO vt0(vt0) VALUES('integrity-check');\n"
  },
  {
    "path": "data/fuzz_root/input/26.txt",
    "content": "CREATE TABLE t0(c0);\nCREATE TABLE t1(c0, c1 AS(1));\nINSERT INTO t0 VALUES(0);\nSELECT t1.c1 IS TRUE FROM t0 LEFT JOIN t1;\n"
  },
  {
    "path": "data/fuzz_root/input/3.txt",
    "content": "CREATE TABLE t0(c0 NOT NULL AS(c1), c1);\nREPLACE INTO t0(c1) VALUES(NULL);\n"
  },
  {
    "path": "data/fuzz_root/input/4.txt",
    "content": "CREATE TABLE t0(c0, c1, c2 AS(1), PRIMARY KEY(c0) FOREIGN KEY(c2) REFERENCES t0);\nCREATE VIRTUAL TABLE vt0 USING fts4;\nCREATE INDEX i0 ON t0(c2, 0 BETWEEN '' AND c1 COLLATE BINARY, CASE '' WHEN c3 THEN 0 WHEN 0 THEN 0 WHEN '' THEN 0 WHEN 0 THEN c0 ELSE c1 END);\nINSERT INTO t0 VALUES (0, 0), ('', 0);\nPRAGMA foreign_keys = true;\nANALYZE;\nUPDATE t0 SET c1 = c0;\n"
  },
  {
    "path": "data/fuzz_root/input/5.txt",
    "content": "CREATE TABLE t0 (c0, c1 a UNIQUE AS (1), c2, c3, FOREIGN KEY(c3) REFERENCES t0(c1));\nCREATE VIRTUAL TABLE vt0 USING fts4(c0);\nPRAGMA foreign_keys = true;\nCREATE INDEX i0 ON t0(0) WHERE 0;\nINSERT INTO vt0 VALUES (0);\nREPLACE INTO t0(c3, c2, c0) VALUES (0, 0, 0), (0, 0, 0);\n"
  },
  {
    "path": "data/fuzz_root/input/6.txt",
    "content": "PRAGMA temp_store = MEMORY;\nCREATE TEMP TABLE t0(c0, c1 AS(1) CHECK(NULL) UNIQUE NOT NULL, c2 CHECK(1.0) PRIMARY KEY) WITHOUT ROWID;\nCREATE UNIQUE INDEX e ON t0(CAST(0.0 AS INT)) WHERE 0;\nREINDEX;\nINSERT INTO t0(c2) VALUES (0), (1);\nREPLACE INTO t0(c2, c0) VALUES (0, 0), (x'9b', NULL);\nUPDATE t0 SET c2 = 0\n"
  },
  {
    "path": "data/fuzz_root/input/7.txt",
    "content": "CREATE TABLE t0(c0 INTEGER PRIMARY KEY GENERATED ALWAYS AS(1), c1 UNIQUE GENERATED ALWAYS AS(1), c2 UNIQUE);\nINSERT INTO t0 VALUES(NULL);\n"
  },
  {
    "path": "data/fuzz_root/input/8.txt",
    "content": "PRAGMA recursive_triggers = true;\nCREATE TABLE t0(a, b, c UNIQUE);\nCREATE UNIQUE INDEX i0 ON t0(b) WHERE a;\nCREATE TRIGGER tr0 AFTER DELETE ON t0 BEGIN\n  DELETE FROM t0;\nEND;\nINSERT INTO t0(a,b,c) VALUES(0,0,9),(1,1,1);\nREPLACE INTO t0(a,b,c) VALUES(2,0,9);\n"
  },
  {
    "path": "data/fuzz_root/input/9.txt",
    "content": "CREATE TABLE item (id int, price int);\nINSERT INTO item (id, price) VALUES (1, 1);\nSELECT COUNT(id) FILTER (WHERE double_price > 42) FROM (\n  SELECT id, (price * 2) as double_price FROM item\n);\n"
  },
  {
    "path": "data/fuzz_root/input/new1.txt",
    "content": "CREATE TABLE v1040911821 ( v1040911822 , v1040911823 ) ; CREATE TABLE v1040911827 ( v1040911829 TEXT , v1040911828 ) ; CREATE TABLE v1040911824 ( v1040911825 FLOAT , v1040911826 FLOAT ) ; INSERT INTO v1040911824 VALUES ( 10 , 9223372036854775807 ) ; INSERT INTO v1040911821 VALUES ( 10 , 9223372036854775807 ) ; UPDATE v1040911821 SET v1040911822 = 'testtest' ; SELECT DISTINCT 'bbbbbbbbaaaaaaaaaaaaaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaaaaaa' IN ( SELECT DISTINCT sum ( v1040911821 . v1040911822 ) OVER( ) FROM v1040911821 ORDER BY 1 ) GROUP BY 1 ; "
  },
  {
    "path": "data/fuzz_root/input/new2.txt",
    "content": "CREATE TABLE v1019944032 ( v1019944040 FLOAT UNIQUE , v1019944035 UNIQUE GENERATED ALWAYS AS( v1019944037 ) , v1019944034 INT , v1019944033 INT UNIQUE GENERATED ALWAYS AS( NULL ) , v1019944039 INTEGER UNIQUE , v1019944038 DOUBLE PRIMARY KEY CHECK( v1019944035 ) , v1019944037 VARCHAR(20) UNIQUE , v1019944036 UNIQUE ) ; INSERT INTO v1019944032 ( v1019944037 ) VALUES ( 0.100000 ) ,( 9223372036854775807 ) ,( 1 ) ; DELETE FROM v1019944032 WHERE NULL BETWEEN ( SELECT v1019944035 FROM v1019944032 AS x GROUP BY v1019944035 ) AND 0 ; INSERT INTO v1019944032 ( v1019944037 ) VALUES ( 10 ) ,( 9223372036854775808.000000 ) ; SELECT DISTINCT 9223372036854775807 , v1019944036 + 127 , 10 FROM v1019944032 UNION SELECT DISTINCT * FROM v1019944032 ORDER BY v1019944034 ; "
  },
  {
    "path": "data/fuzz_root/input/new3.txt",
    "content": "CREATE TABLE v190436516 ( v190436517 DOUBLE PRIMARY KEY , v190436518 UNIQUE AS( v190436517 ) ) ; INSERT INTO v190436516 VALUES ( 9223372036854775807 ) ,( 3 ) ,( 10 ) ; DELETE FROM v190436516 WHERE v190436517 < ( SELECT v190436518 FROM v190436516 WHERE v190436516 . v190436518 = v190436516 . v190436518 GROUP BY v190436516 . v190436518 , v190436518 ) IN ( 12.100000 , 10 , 10 ) ; INSERT INTO v190436516 ( v190436517 ) VALUES ( 1 ) ,( 1 ) ; SELECT DISTINCT ( SELECT DISTINCT 'MED P' , 1 , 8 , 1.100000 ) LIMIT 10 OFFSET 10 ; "
  },
  {
    "path": "data/fuzz_root/input/new4.txt",
    "content": "CREATE TABLE v191110750 ( v191110752 , v191110751 INTEGER AS( '199419' ) CHECK( 10 ) CHECK( v191110752 NOT LIKE 'LG CASEaaaaaaaaaaaa' ) NOT NULL UNIQUE ) ; INSERT INTO v191110750 VALUES ( 1 ) ; SELECT v191110750 . v191110752 FROM v191110750 AS a JOIN v191110750 ON NULL = v191110750 . v191110751 WHERE v191110750 . v191110751 IN ( v191110750 . v191110751 , 0 , v191110750 . v191110752 ) ; "
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 3 , 0 ) ; SELECT * , '1995-03-15' FROM v0 WHERE v1 NOT IN ( 10 ) AND v2 NOT IN ( 3 ) ORDER BY v2 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/10",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 FROM v0 UNION SELECT 2.100000 * AVG ( v1 ) FROM v0 LIMIT 4294967295 OFFSET 2 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/100",
    "content": "CREATE TABLE v0 ( v1 INTEGER UNIQUE PRIMARY KEY , v2 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 0 , 1 ) ; UPDATE v0 SET v1 = ( SELECT 1 FROM v0 WHERE unlikely ( v1 <= '29' ) ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1000",
    "content": "CREATE TABLE v0 ( v1 INTEGER UNIQUE ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 FROM v0 WHERE v1 > 9223372036854775807 OR v1 > 10 AND v1 NOT LIKE 'Max Mustermann' ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1001",
    "content": "CREATE TABLE v0 ( v1 VARCHAR(1) , v2 INT ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 10 , 4294967295 ) ; SELECT COALESCE ( datetime ( v1 , v1 ) , 1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1002",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 100 , 10 ) ,( 0 , 1 , NULL ) ,( 10.100000 , '17' , 1 ) ,( 10 , 10 , NULL ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1003",
    "content": "INSERT INTO v0 ( v1 , v2 ) VALUES ( 'PROMO%%' , 1 ) ,( 'PROMO%%' , 42 ) ,( '13' , 3 ) ,( 'AIR REG' , 0 ) ,( 'EUROPE' , 9223372036854775807 ) ,( 'LG PACK' , 10 ) ,( 'X' , 9 ) ,( '1994-01-01' , 9 ) ,( 'Brand#12' , 3 ) ,( 'abc' , 9223372036854775807 ) ,( 'y' , 10 ) ; INSERT INTO v3 VALUES ( 1 ) ; SELECT count ( CASE WHEN v9 != random () THEN 10 END ) , count ( CASE WHEN v10 = 's%' THEN 10 END ) FROM v8 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1004",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY CHECK( v1 ) ) ; INSERT INTO v0 VALUES ( 3 ) ; SELECT count ( * ) OVER( ORDER BY v1 ) , max ( v1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1005",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 0 ) ; SELECT v1 , min ( v1 ) OVER( ORDER BY v1 ) FROM v0 GROUP BY v1 ORDER BY v1 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1006",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT v1 FROM v0 ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v4 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v2 , v3 WHERE v5 = v5 AND v4 = 10 GROUP BY v5 , v5 , v4 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1007",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT v1 , v1 FROM v0 WHERE ( v1 = 'LG CASEaaaaaaaaaaaa' AND 9223372036854775808.000000 BETWEEN 10 AND 10 ) OR ( v1 = v1 AND v1 = v1 ) ; SELECT julianday ( 10.100000 ) , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1008",
    "content": "CREATE TABLE v0 ( v1 FLOAT PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 FROM v0 WHERE v1 IN ( 10.100000 ) ORDER BY random () ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1009",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT instr ( v1 , v1 ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE - 'MED BOX' >= v1 + v1 LIKE abs ( v1 ) IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/101",
    "content": "SELECT v3 FROM v2 WHERE v5 IN ( 0 , v4 NOT LIKE 'AIR REG' , 10 , 9223372036854775807 , 10 ) ORDER BY v6 DESC LIMIT 3 ; SELECT v10 FROM v9 WHERE v11 >= 1 AND v12 <= 3 ; DROP TRIGGER tmp ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1010",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 VALUES ( 10 ) ,( 2147483647 ) ,( 99 ) ,( 1 ) ,( 1 ) ,( 3 ) ; SELECT instr ( v1 , v1 ) FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1011",
    "content": "SELECT CAST ( zeroblob ( 1 ) AS TEXT ) ; SELECT DISTINCT count () LIMIT 10 OFFSET 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1012",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 1 ) ; SELECT quote ( quote ( substr ( v1 , 2 , 1 ) ) ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1013",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 3 ) ; SELECT DISTINCT CAST ( round ( v1 / 10 ) AS INTEGER ) FROM v0 LIMIT 99 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1014",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT ( SELECT DISTINCT * , 1 , 2 , 1.100000 ) LIMIT 1 OFFSET 1 ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v4 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v2 , v0 WHERE v1 = v1 AND v1 = 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1015",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT instr ( 3.100000 * AVG ( v1 ) , 10 ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1016",
    "content": "CREATE TABLE v0 ( v1 FLOAT PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 99 ) ; SELECT * FROM v0 AS myname , v0 NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY v1 ASC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1017",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 1 , 10 ) ,( 10 , 0 , 3 ) ; SELECT SUM ( v1 * ( 3 - v1 ) ) FROM v0 ; SELECT DISTINCT v1 , v1 FROM v0 WHERE v1 = 'MED P' ORDER BY v1 ASC , v1 DESC , v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1018",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT instr ( v1 , v1 ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE - '' >= v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1019",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 'LG PACK' , '18' ) ; SELECT quote ( zeroblob ( 127 ) ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/102",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE VIEW v2 ( v3 , v4 , v5 , v6 ) AS WITH y AS ( SELECT Row_Number () OVER( x ) FROM v0 ) SELECT * FROM v0 ; SELECT v6 , rank () OVER( ORDER BY v4 DESC ) FROM v2 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1020",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 99 , 1 , 1 ) ,( 10 , 1 , 0 ) ; SELECT instr ( v1 , v1 ) FROM v0 GROUP BY '!INSERT INTO test VALUES (1, 0, 0); !INSERT INTO test VALUES (0, 1, 0); !INSERT INTO test VALUES (0, 0, null);' , 'testtest' , v1 + v1 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1021",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 1 , 3 ) ; UPDATE v0 SET v2 = ( SELECT min ( v2 ) FROM v0 WHERE min ( v1 , v1 ) ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1022",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v2 , v2 ) VALUES ( 2 , 10 ) ; SELECT * , 'MED PKG' FROM v0 WHERE v1 NOT IN ( 1 , NULL , 0 , 2 , lower ( 's%' ) ) ORDER BY v1 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1023",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY UNIQUE ) ; INSERT INTO v0 VALUES ( 9223372036854775807 ) ; SELECT v1 FROM v0 WHERE v1 IN ( '' , 'testtest' , v1 + v1 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1024",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v2 , v2 ) VALUES ( 1 , 10 ) ; SELECT abs ( 10 + 10 ) IN ( SELECT 10 UNION SELECT 1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/1025",
    "content": "SELECT CAST ( zeroblob ( 10 ) AS DOUBLE ) WHERE last_insert_rowid () ; SELECT DISTINCT ( SELECT total_changes () ) LIMIT 10 OFFSET 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/103",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT v4 FROM v2 AS a , v0 AS b , v2 AS c ; CREATE TABLE v5 ( v6 INTEGER PRIMARY KEY , v7 INT ) ; INSERT INTO v5 ( v7 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v5 , v5 WHERE v7 = v7 AND v6 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/104",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT printf ( count ( ( NOT ( v1 IS NULL ) ) AND ( NOT ( NOT ( '%%green%%' = '23' AND v1 = 1 ) ) ) ) , 10.100000 , 'GERMANY' ) ; SELECT v1 , sum ( v1 ) OVER( PARTITION BY v1 ) FROM v0 AS REVENUE ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/105",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 VALUES ( 10 ) ,( 9223372036854775807 ) ,( 10 ) ,( 1 ) ,( 9 ) ,( 10 ) ,( 1 ) ; SELECT SUM ( v1 * ( 1 - v1 ) ) FROM v0 ; SELECT printf ( count ( lower ( '23' ) ) OVER( ) , 0.100000 , 'c' ) FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/106",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 ) VALUES ( 2 ) ,( 10 ) ,( 1 ) ; CREATE TABLE v2 ( v3 INTEGER PRIMARY KEY , echo_v2 INT ) ; INSERT INTO v2 ( v3 ) VALUES ( 10 ) ,( 3 ) ; SELECT * FROM v0 , v2 WHERE v3 = v3 AND v3 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/107",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; SELECT sqlite_compileoption_used ( 'bbbbbbbbaaaaaaaaaaaaaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaaaaaa' ) ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY UNIQUE NOT NULL , v3 INT ) ; INSERT INTO v2 ( v3 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v0 , v2 WHERE LIKELY ( v3 ) <= '199419' = v4 AND v4 = 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/108",
    "content": "CREATE TABLE v0 ( v1 FLOAT ) ; INSERT INTO v0 VALUES ( 0 ) ; SELECT v1 FROM v0 WHERE v1 IN ( 9223372036854775808.000000 ) ORDER BY random () ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/109",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 0 ) ; SELECT count ( * ) , substr ( v1 , count ( v1 ) , NULL ) AS mx FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/11",
    "content": "SELECT - '199419' ; INSERT INTO v0 ( v2 , v3 , v1 ) VALUES ( 10 , 1 , 10 ) ,( 3 , 0 , NULL ) ,( 3.100000 , '%%green%%' , 1 ) ,( 9223372036854775807 , 1 , NULL ) ,( 0 , 10 , 1 ) ,( 1 , 10 , 3 ) ,( 1 , 10 , 1 ) ,( 1 , 1 , 2 ) ; SELECT * FROM v4 AS one , v5 AS two NATURAL JOIN v6 NATURAL JOIN v7 ORDER BY random () ; SELECT min ( v11 ) FROM v10 ORDER BY v12 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/110",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 3 , 10 , 1 ) ,( 1 , 12 , 10 ) ; SELECT instr ( v1 , julianday ( 10.100000 ) ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/111",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 ) VALUES ( 2 ) ,( 0 ) ,( 3 ) ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY , v3 INT ) ; INSERT INTO v2 ( v3 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v2 , v0 WHERE LIKELY ( v1 ) <= 'Brand#23' = v1 AND v1 = 9223372036854775807 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/112",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT v1 AS VALUE , v1 FROM v0 WHERE ( v1 = 'Brand#23' AND v1 BETWEEN 10 AND 10 ) OR ( v1 = 10 AND v1 = 10 ) ; SELECT julianday ( 1.100000 ) , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/113",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 9 , 2 , 1 ) ,( 1 , 10 , NULL ) ,( 9223372036854775808.000000 , '23' , 3 ) ,( 1 , 0 , NULL ) ,( 3 , 3 , 9223372036854775807 ) ,( 10 , 3 , 3 ) ,( 10 , 3 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT lead ( 2 , 10 ) OVER( ORDER BY v1 ) AS x FROM v0 ORDER BY v1 * 4294967295 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/114",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 2 , 10 ) ; SELECT COALESCE ( v1 , datetime ( v2 , v2 ) IS NOT NULL , v2 , 10 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/115",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 ) VALUES ( 9223372036854775807 ) ,( 10 ) ,( 1 ) ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY , v3 INT ) ; SELECT v3 FROM v2 , v0 , v0 , v2 AS myname WHERE v3 IN ( 2.100000 ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 0 ) ; SELECT * FROM v2 , v0 WHERE v1 = v1 AND v1 = 10 ORDER BY v1 DESC , v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/116",
    "content": "CREATE TABLE v0 ( v1 VARCHAR(0) ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 10 , 1 ) ,( 10 , 0 , NULL ) ,( 10.100000 , 'LG PKG' , 0 ) ,( 3 , 1 , NULL ) ,( 10 , 10 , 10 ) ,( 1 , 1 , 1 ) ,( 10 , 1 , 9223372036854775807 ) ,( 10 , 1 , 10 ) ; SELECT * FROM v0 , v0 AS alias ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/117",
    "content": "CREATE TABLE v0 ( v1 VARCHAR(0) ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 2 , 100 ) ,( 10 , 10 , NULL ) ,( 1.100000 , 'MED PACK' , 0 ) ,( 10 , 9223372036854775807 , NULL ) ,( 10 , 1 , 10 ) ,( 0 , 10 , 2 ) ,( 10 , 10 , 1 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY v1 ASC ; SELECT max ( ( v1 NOT IN ( v1 ) AND v1 IS NOT NULL NOT IN ( 10 ) ) , v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/118",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT * FROM v0 NATURAL JOIN v0 USING ( b ) ; SELECT julianday ( 10.100000 ) , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/119",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT NULL FROM v0 GROUP BY v1 , v1 , v1 ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v5 ) VALUES ( 10 ) ,( 9223372036854775807 ) ; DROP TABLE v3 ; SELECT DISTINCT * FROM v3 AS b , v3 AS a , v3 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/12",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 4294967295 , 10 , 10 ) ,( 10 , 1 , NULL ) ,( 1.100000 , '' , 1 ) ,( 10 , 10 , NULL ) ,( 1 , 10 , 10 ) ,( 2 , 10 , 0 ) ,( 3 , 10 , 10 ) ; SELECT * FROM v0 NOT INDEXED NATURAL JOIN v0 UNION SELECT DISTINCT * FROM v0 ORDER BY v1 DESC ; SELECT min ( random () ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/120",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY , v2 TEXT , v3 INT ) ; INSERT INTO v0 ( v1 ) VALUES ( 16 ) ,( 18446744073709551615 ) ,( 2 ) ; CREATE TABLE v4 ( v6 INTEGER PRIMARY KEY , v5 INT ) ; INSERT INTO v4 ( v6 ) VALUES ( 10 ) ,( 99 ) ; SELECT * FROM v4 , v4 WHERE v5 = v6 AND v6 = 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/121",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 1 , 1 ) ,( 1 , 10 , NULL ) ,( 2.100000 , 'b' , 10 ) ,( 10 , 1 , NULL ) ,( 2147483647 , 2 , 0 ) ,( 0 , 9 , 10 ) ,( 10.100000 , '29' , 3 ) ,( 10 , 3 , NULL ) ,( 0 , 10 , 10 ) ,( 12 , 10 , 10 ) ,( 1 , 10 , 0 ) ; SELECT DISTINCT zeroblob ( ( SELECT CAST ( zeroblob ( DISTINCT v1 ) AS DOUBLE ) ) ) FROM v0 ORDER BY random () ; SELECT min ( random () ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/122",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 1 , 1 ) ,( 10.100000 , 10 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT DISTINCT * FROM v0 , v0 AS t ORDER BY v1 ; SELECT * FROM v0 NATURAL JOIN v0 UNION SELECT DISTINCT * FROM v0 ORDER BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/123",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 ) VALUES ( 255 ) ,( 10 ) ,( 2 ) ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY , v3 INT ) ; INSERT INTO v2 ( v4 ) VALUES ( 2 ) ,( 2 ) ; SELECT * FROM v0 , v2 WHERE v3 = v4 AND ( SELECT 3 ) = 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/124",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT v3 , v4 , x ( * ) , x ( v5 ) FROM v2 ; CREATE TABLE v6 ( v8 INTEGER PRIMARY KEY , v7 INT ) ; INSERT INTO v6 ( v7 ) VALUES ( 10 ) ,( 3 ) ; SELECT * FROM v0 , v2 WHERE v10 = v9 AND v11 = 4294967295 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/125",
    "content": "SELECT CAST ( zeroblob ( 9223372036854775807 ) AS TEXT ) FROM v0 AS a , v1 AS b , v2 AS c ; SELECT DISTINCT ( SELECT DISTINCT 'Al' , 1 , 1 , 2.100000 ) LIMIT 10 OFFSET 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/126",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT v1 FROM v0 ORDER BY 1 , 9 , 1 , 10 ; CREATE TABLE v4 ( v6 INTEGER PRIMARY KEY , v5 INT ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 9223372036854775808 ) ; SELECT * FROM v0 , v4 WHERE v5 = v5 AND v5 = 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/127",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT min ( v1 ) FROM v0 ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v4 ) VALUES ( 1 ) ,( 10 ) ; SELECT * FROM v3 AS a JOIN v0 ON NULL = 1.100000 WHERE v1 = v1 AND v1 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/128",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 3 , 9223372036854775808 , 3 ) ,( 3 , 0 , NULL ) ,( 0.100000 , 'Al' , 1 ) ,( 0 , 10 , NULL ) ,( 1 , 1 , 2 ) ,( 9223372036854775807 , 10 , 1 ) ,( 10 , 3 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY v1 ASC ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/129",
    "content": "CREATE TABLE v0 ( v1 INTEGER UNIQUE UNIQUE UNIQUE PRIMARY KEY UNIQUE NOT NULL ) ; SELECT v1 , v1 FROM v0 WHERE ( v1 = 'AIR REG' AND v1 BETWEEN 10 AND 10 ) OR ( v1 = 10 AND v1 = 10 ) ORDER BY 10.100000 DESC ; SELECT julianday ( 1.100000 ) , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/13",
    "content": "CREATE TABLE v0 ( v1 FLOAT ) ; INSERT INTO v0 VALUES ( 10 ) ,( 1 ) ,( 1 ) ,( 0 ) ,( 10 ) ,( 10 ) ; SELECT substr ( TYPEOF ( DISTINCT v1 ) , 9223372036854775807 , ( v1 NOT IN ( 0 ) AND v1 NOT IN ( 0 ) ) ) FROM v0 ; SELECT printf ( v1 , v1 ) FROM v0 ORDER BY PROMO_REVENUE * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/130",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 9223372036854775807 ) ; SELECT v1 , min ( v1 ) FROM v0 GROUP BY v1 HAVING v1 < '30' ORDER BY v1 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/131",
    "content": "CREATE TABLE v0 ( v1 VARCHAR(0) ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 10 , 1 ) ,( 3 , 10 , NULL ) ,( 10.100000 , 'Brand#23' , 1 ) ,( 42 , 127 , NULL ) ,( 3 , 1 , 2 ) ,( 0 , 9223372036854775807 , 1 ) ,( 10 , 10 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/132",
    "content": "CREATE TABLE v0 ( v1 VARCHAR(0) ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 4294967295 , 10 ) ,( 9 , 10 , NULL ) ,( 10.100000 , '%%green%%' , 0 ) ,( 1 , 2 , NULL ) ,( 10 , 1 , 1 ) ,( 1 , 1 , 1 ) ,( 2 , 10 , 3 ) ; SELECT 9223372036854775807 AS d FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/133",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT NULL FROM v0 GROUP BY v1 , ( 0 = 10 AND ( random () % 10 AND 127 ) ) , v1 >= v1 ; CREATE TABLE v3 ( v4 INTEGER PRIMARY KEY , v5 INT ) ; INSERT INTO v3 ( v4 ) VALUES ( 10 ) ,( 10 ) ; SELECT * FROM v2 , v3 WHERE v4 = v5 AND v4 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/134",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT * FROM v0 NOT INDEXED NATURAL JOIN v0 NOT INDEXED WHERE ( v1 >= v1 OR v1 < 1 ) AND v1 IN ( 10 , v1 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/135",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ; INSERT INTO v0 ( v2 , v2 ) VALUES ( 10 , 10 ) ; SELECT * , '1995-09-01' FROM v0 WHERE v1 = 10 AND ( ( v1 = 1 AND v2 = 10 ) OR v2 = 10 ) ORDER BY v1 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/136",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; SELECT sqlite_compileoption_used ( 'LG PACK' ) ; CREATE TABLE v2 ( v3 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 9223372036854775807 ) ; SELECT v1 , v1 , sum ( v1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/137",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 0 , 1 , 0 ) ,( 0 , 1 , 10 ) ; SELECT instr ( v1 , v1 ) FROM v0 GROUP BY v1 , v1 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/138",
    "content": "SELECT count ( * ) OVER( ORDER BY 3 NULLS LAST ) ; SELECT DISTINCT count () OVER( ) ORDER BY count ( * ) OVER( ORDER BY 1 NULLS LAST ) LIMIT 10 OFFSET 9223372036854775807 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/139",
    "content": "SELECT CASE 10 WHEN 0 THEN 'SM CASE' WHEN 10 THEN 'b' ELSE '1995-09-01' END ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/14",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 3 , 1 ) ; SELECT * , '**%s**' FROM v0 WHERE v1 NOT IN ( v2 , v1 , lower ( 'PROMO%%' ) ) ORDER BY v2 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/140",
    "content": "SELECT CAST ( zeroblob ( 'Al' ) AS TEXT ) ; SELECT DISTINCT count () LIMIT 1 OFFSET 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/141",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 10 , 0 ) ,( 10 , 99 , NULL ) ,( 10.100000 , 'Brand#34' , 10 ) ,( 0 , 0 , NULL ) ,( 10 , 1 , 10 ) ,( 10 , 10 , 10 ) ,( 0 , 10 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY v1 NULLS LAST , v1 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 9223372036854775807 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/142",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT count ( * ) , substr ( lower ( '**%s**' ) , 2 ) AS mx FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/143",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; UPDATE v0 SET v1 = v1 , v1 = 'abc' ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY , v3 INT ) ; INSERT INTO v2 ( v4 ) VALUES ( 18446744073709551488 ) ,( 1 ) ; SELECT * FROM v0 , v0 WHERE v1 = v1 AND v1 = 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/144",
    "content": "CREATE TABLE v0 ( v1 INT UNIQUE NOT NULL ) ; SELECT v1 , v1 FROM v0 WHERE ( v1 = 10 AND v1 = 9223372036854775807 ) OR ( v1 = 1 AND v1 = 3 ) ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/145",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 3 ) ; SELECT v1 , nth_value ( v1 , 10 ) OVER( ) , lead ( v1 ) OVER( ) FROM v0 GROUP BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/146",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY CHECK( v1 ) ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 + 1 FROM v0 INTERSECT SELECT v1 FROM v0 LIMIT 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/147",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT v1 , v1 FROM v0 WHERE ( v1 = v1 AND v1 = 1 ) OR ( v1 = 10 AND v1 = 9223372036854775807 ) ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/148",
    "content": "CREATE TABLE v0 ( v1 INTEGER , v2 DOUBLE , v3 INTEGER ) ; INSERT INTO v0 ( v2 ) VALUES ( 10.100000 ) ,( 3 ) ,( 10 ) ; SELECT coalesce ( min ( v3 ) , 10 ) FROM v0 ; INSERT INTO v0 ( v2 ) VALUES ( 3 ) ,( 1.100000 ) ; SELECT * FROM v0 NOT INDEXED NATURAL JOIN v0 UNION SELECT DISTINCT * FROM v0 ORDER BY v3 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/149",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT v1 , v1 AS c FROM v0 ; CREATE TABLE v4 ( v6 INTEGER PRIMARY KEY , v5 INT ) ; INSERT INTO v2 ( v7 ) VALUES ( 3 ) ,( 10 ) ; SELECT * FROM v4 , v0 WHERE v1 = v1 AND v1 = 2 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/15",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 10 , 0 ) ,( 10 , 1 , NULL ) ,( 1.100000 , 'LG CASEaaaaaaaaaaaa' , 1 ) ,( 0 , 10 , NULL ) ,( 10 , 10 , 10 ) ,( 10 , 10 , 1 ) ,( 0 , 9 , 1 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT v1 , AVG ( v1 ) OVER( PARTITION BY v1 ) FROM v0 ORDER BY v1 * 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/150",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 3 ) ; SELECT count ( CASE WHEN v1 != random () THEN 1 END ) , count ( CASE WHEN v1 = 'DELIVER IN PERSON' THEN 10 END ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/151",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 1 ) ; SELECT v1 FROM v0 INTERSECT SELECT v1 + 10 FROM v0 LIMIT 10 OFFSET 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/152",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 10 , 10 ) ,( 10 , 12 , NULL ) ,( 0 , 10 , 1 ) ,( 9223372036854775807 , 1 , NULL ) ,( 99 , 0 , 10 ) ,( 1 , 9223372036854775807 , 10 ) ON CONFLICT DO NOTHING ; SELECT v1 , ifnull ( v1 , 1 ) AS p FROM v0 GROUP BY v1 HAVING v1 < '%%BRASS' ORDER BY v1 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/153",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT count ( * ) , substr ( v1 , 10 , 1 ) AS mx FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/154",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; SELECT v1 FROM v0 WHERE v1 < 2 ORDER BY v1 DESC ; SELECT v1 FROM v0 WHERE 10 > v1 OR v1 > 0 AND NOT v1 LIMIT 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/155",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 0 , 1 ) ,( 10 , 3 , NULL ) ,( 10.100000 , 'SM PKG' , 2 ) ,( 10 , 10 , NULL ) ,( 1 , 10 , 2 ) ,( 1 , 1 , 0 ) ,( 9223372036854775807 , 9223372036854775807 , NULL ) ,( 10 , 10 , 10 ) ,( 10 , 1 , 10 ) ; SELECT instr ( typeof ( v1 ) , v1 ) FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 9223372036854775807 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/156",
    "content": "CREATE TABLE v0 AS SELECT v1 FROM v0 ( v1 , v3 , v2 ) ; SELECT * FROM v0 WHERE v1 = 'EUROPE' AND v1 = 'Al' LIMIT 10 ; UPDATE v0 SET v3 = ( SELECT 10 WHERE ( SELECT coalesce ( v2 , v2 ) FROM v0 AS x GROUP BY v3 ) != 'abc' ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/157",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 1 ) ; SELECT v1 FROM v0 , v0 , v0 , v0 AS myname WHERE v1 IN ( 10.100000 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/158",
    "content": "CREATE TABLE v0 ( v1 FLOAT ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 10 ) ,( 10 ) ; INSERT INTO v0 VALUES ( 10 ) ,( 10 ) ,( 10 ) ,( 9 ) ,( 10 ) ,( 0 ) ; SELECT instr ( 'LG PACK' , typeof ( v1 ) ) FROM v0 ; SELECT printf ( v1 , v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/159",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; SELECT sqlite_compileoption_used ( 'b' ) ; CREATE TABLE v2 ( v4 INTEGER PRIMARY KEY , v3 INT ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 1 ) ; SELECT * FROM v2 , v0 WHERE ( v1 ) <= 'MED PKG' = v1 AND v1 = 9223372036854775808 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/16",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 1 ) ; SELECT min ( v1 ) OVER( ORDER BY v1 , v1 , v1 DESC , 9 DESC , v1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/160",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 2 ) ; SELECT nth_value ( v1 , 2 ) OVER( ) , count ( CASE WHEN v1 = 'LG CASE' THEN 1 END ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/161",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT count ( * ) OVER( ORDER BY v1 DESC , v1 ASC ) FROM v0 GROUP BY v1 , v1 , v1 ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v5 ) VALUES ( 0 ) ,( 0 ) ; SELECT * FROM v0 , v3 WHERE v5 = v5 AND v4 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/162",
    "content": "SELECT CAST ( zeroblob ( 10 ) AS DOUBLE ) ; SELECT DISTINCT ( SELECT DISTINCT '%%green%%' , 0 , 1 , 10.100000 ) GROUP BY printf ( 'Ar' , 9 ) <= 'BUILDING' LIMIT 1 OFFSET 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/163",
    "content": "CREATE TABLE v0 ( v1 INTEGER , v3 DOUBLE , v2 INTEGER ) ; INSERT INTO v0 ( v2 ) VALUES ( 10.100000 ) ,( 10 ) ,( 10 ) ; SELECT instr ( v2 , quote ( substr ( v3 , 1 , 10 ) ) ) FROM v0 ; INSERT INTO v0 ( v2 ) VALUES ( 10 ) ,( 10.100000 ) ; SELECT * FROM v0 NOT INDEXED NATURAL JOIN v0 UNION SELECT DISTINCT * FROM v0 ORDER BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/164",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 10 , 10 ) ; SELECT nth_value ( v2 , 0 ) OVER( ORDER BY v1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/165",
    "content": "CREATE TABLE v0 ( v1 FLOAT ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 8 , 1 , 10 ) ,( 1 , 10 , NULL ) ,( 1.100000 , '' , 0 ) ,( 3 , 1 , NULL ) ,( 1 , 2 , 2 ) ,( 10 , 0 , 10 ) ,( 10 , 10 , NULL ) ,( 10 , 12 , 0 ) ,( 0 , 99 , 10 ) ; SELECT instr ( typeof ( v1 ) , v1 ) FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/166",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 3 , 2 , 1 ) ,( 10 , 10 , 10 ) ; SELECT v1 , v1 , dense_rank () OVER( ORDER BY v1 ) , changes () FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/167",
    "content": "CREATE TABLE v0 ( v1 TEXT ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 FROM v0 WHERE v1 IN ( 1.100000 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/168",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY CHECK( v1 ) ) ; INSERT INTO v0 VALUES ( 127 ) ; SELECT min ( v1 NOT LIKE abs ( v1 ) ) , max ( typeof ( v1 ) ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/169",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY CHECK( v1 ) ) ; INSERT INTO v0 VALUES ( 1 ) ; SELECT printf ( 's%' , 10 , 10 , 10 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/17",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT count ( * ) , substr ( v1 , 3 , NULL ) AS mx FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/170",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 4294967295 , 10 ) ; SELECT COALESCE ( DISTINCT max ( v1 ) OVER( ORDER BY v1 ) , 10 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/171",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 9 , 1 , 10 ) ,( 10 , 3 , NULL ) ,( 10.100000 , '31' , 3 ) ,( 2 , 1 , NULL ) ,( 127 , 10 , 1 ) ,( 3 , 10 , 0 ) ,( 10 , 10 , 10 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () NULLS LAST ; SELECT likelihood ( v1 <= 'MED PKG' , 9223372036854775808.000000 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/172",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT CASE 10 WHEN 8 THEN 'MED PKG' WHEN 2 THEN '29' ELSE 'MED P' END GROUP BY printf ( 'AIR' , 10 ) <= 'BUILDING' ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v3 ( v5 ) VALUES ( 10 ) ,( 0 ) ; SELECT * FROM v3 , v2 WHERE v6 = v7 AND v8 = 99 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/173",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 3 , 3 ) ,( 0 , 10 , NULL ) ,( 3.100000 , 'Brand#34' , 3 ) ,( 10 , 0 , NULL ) ,( 10 , 10 , NULL ) ,( 9 , 3 , 10 ) ,( 2 , 10 , 2 ) ,( 99 , 0 , 9223372036854775807 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/174",
    "content": "CREATE TABLE v0 ( v1 FLOAT ) ; INSERT INTO v0 VALUES ( 1 ) ,( 2 ) ,( 2 ) ,( 10 ) ,( 3 ) ,( 0 ) ; SELECT instr ( v1 , typeof ( v1 ) ) FROM v0 AS PROMO_REVENUE ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/175",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 9 , 127 ) ,( 10 , 0 , 1 ) ; SELECT v1 , v1 , dense_rank () OVER( ORDER BY v1 ) , dense_rank () OVER( PARTITION BY v1 ORDER BY v1 ) FROM v0 ; SELECT min ( v1 ) OVER( ORDER BY count ( * ) OVER( ) ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/176",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT instr ( v1 , v1 ) FROM v0 GROUP BY v1 HAVING ( 9223372036854775807 = 3 AND ( random () % 10 AND 10 ) ) ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/177",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ; CREATE TABLE v3 ( v5 INTEGER PRIMARY KEY , v4 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 10 , 10 ) ; SELECT * , 'MED PKG' FROM v3 WHERE v5 NOT IN ( v5 , 2 , lower ( 'PROMO%%' ) ) ORDER BY v4 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/178",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 3 , 10 ) ,( 3 , 1 , NULL ) ,( 10.100000 , 'Max Mustermann' , 2 ) ,( 9223372036854775808 , 8 , NULL ) ,( 9223372036854775808 , 0 , 8 ) ,( 9223372036854775807 , 10 , NULL ) ,( 10.100000 , 'BUILDING' , 10 ) ,( 10 , 2 , NULL ) ,( 0 , 10 , 0 ) ,( 1 , 3 , 1 ) ,( 0 , 9223372036854775807 , NULL ) ; SELECT instr ( zeroblob ( 9 ) , v1 ) FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/179",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 VALUES ( 10 ) ,( 10 ) ,( 9223372036854775807 ) ,( 9223372036854775807 ) ,( 10 ) ,( 3 ) ,( 3 ) ; SELECT SUM ( v1 * ( 10 - v1 ) ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/18",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 VALUES ( 10 ) ,( 10 ) ,( 0 ) ,( 8 ) ,( 127 ) ,( 10 ) ; SELECT instr ( v1 , zeroblob ( v1 ) ) FROM v0 ; SELECT min ( 10 AS PROMO_REVENUE , v1 ) FROM v0 ORDER BY v1 * 1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/180",
    "content": "CREATE VIEW v0 AS SELECT COUNT ( * ) OVER( ORDER BY ( SELECT CAST ( zeroblob ( 3 ) AS DOUBLE ) ) ) , 2 ; SELECT * FROM v0 AS a JOIN tclvar ON NULL = 10.100000 NOT LIKE '31' ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/181",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 , v1 = count ( * ) , group_concat ( v1 ) OVER( ) FROM v0 GROUP BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/182",
    "content": "SELECT CAST ( zeroblob ( 10 ) AS DOUBLE ) ; SELECT DISTINCT ( SELECT DISTINCT '**%s**' , 10 , 0 , 10.100000 ) ORDER BY 'test' , 'testtest' LIMIT 9223372036854775807 OFFSET 9 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/183",
    "content": "SELECT 1 IN ( CAST ( 'SM PKG' AS TEXT ) ) ; SELECT v8 , v7 FROM v4 WHERE ( v6 = 1 AND v5 = 10 ) OR ( v10 = 2 AND v9 = 10 ) ; SELECT v17 , v18 FROM v15 WHERE v16 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/184",
    "content": "CREATE TABLE v0 ( v1 CHAR(25) PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 0 ) ; SELECT count ( * ) , substr ( lower ( '%%BRASS' ) , 9223372036854775807 ) AS mx FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/185",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT min ( v1 ) OVER( ORDER BY v1 , v1 , v1 DESC , v1 , v1 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/186",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 1 , 10 , 10 ) ,( 10 , 10 , 10 ) ,( 10.100000 , 'MED BOX' , 1 ) ,( 0 , 1 , NULL ) ,( 10 , 10 , 2 ) ,( 3 , 10 , 1 ) ,( 0 , 10 , 0 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/187",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 9223372036854775807 , 12 , 0 ) ,( 0 , 10 , 0 ) ; SELECT instr ( v1 , v1 ) FROM v0 ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/188",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 10 , 0 , 10 ) ,( 3 , 2 , NULL ) ,( 1.100000 , '23' , 0 ) ,( 10 , 10 , NULL ) ,( 12 , 10 , 1 ) ,( 9223372036854775807 , 12 , 99 ) ; SELECT v1 , v1 , dense_rank () OVER( ORDER BY v1 ) , dense_rank () OVER( PARTITION BY v1 ORDER BY v1 ) FROM v0 ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/189",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ; INSERT INTO v0 ( v1 , v1 ) VALUES ( 1 , 10 ) ; SELECT min ( v1 , v1 ) FROM v0 WHERE v2 IS NULL AND v2 IN ( 10 , 12 , 10 , 10 , 10 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/19",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT v1 FROM v0 WHERE v1 IN ( 10 , 10 , NULL , 3 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/190",
    "content": "CREATE TABLE v0 ( v1 TEXT PRIMARY KEY ) ; INSERT INTO v0 VALUES ( 8 ) ; SELECT v1 , v1 = count ( * ) , group_concat ( v1 ) OVER( ) FROM v0 GROUP BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/191",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 VALUES ( 9223372036854775807 ) ,( 10 ) ,( 10 ) ,( 9 ) ,( 10 ) ,( 10 ) ,( 10 ) ; SELECT SUM ( v1 * ( ( random () % 9223372036854775807 ) + v1 ) ) FROM v0 ORDER BY length ( v1 ) DESC ; SELECT v1 , v1 FROM v0 WHERE v1 IS NOT NULL ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/192",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY CHECK( v1 ) ) ; INSERT INTO v0 VALUES ( 10 ) ; SELECT printf ( 'SM BOX' , 9223372036854775807 , 9223372036854775808 , 4294967295 ) GROUP BY v1 HAVING ( 9 = 9223372036854775808 AND v1 = 8 ) ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/193",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; SELECT * FROM v0 GROUP BY v2 ORDER BY v2 , v2 DESC NULLS FIRST LIMIT 10 ; SELECT COALESCE ( max ( v1 ) , 0 ) FROM v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/194",
    "content": "CREATE VIEW v0 ( v12 , v11 , v1 , v13 , v14 , v15 , v6 , v3 , v4 , v5 , v19 , v16 , v17 , v18 , v10 , v7 , v8 , v9 , v2 ) AS SELECT COUNT ( * ) OVER( ) , 3 ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY '1995-03-15' ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/195",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; INSERT INTO v0 ( v1 , v1 , v1 ) VALUES ( 8 , 10 , 2 ) ,( 10 , 9 , 1 ) ; SELECT * FROM v0 AS one , v0 AS two NATURAL JOIN v0 NATURAL JOIN v0 ORDER BY random () ; SELECT min ( v1 ) FROM v0 ORDER BY v1 * 10 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/196",
    "content": "CREATE TABLE v0 ( v1 TEXT , v2 INT , v3 INT , v4 INT ) ; CREATE INDEX v5 ON v0 ( v3 , v2 , v2 , v1 , v4 , v1 , v3 , v1 , v3 , v2 , v1 , v4 , v3 , v1 ) ; SELECT * FROM v0 WHERE v1 = ( SELECT 10 ) ; SELECT * , 'DELIVER IN PERSON' FROM v0 WHERE v2 = 2 AND ( v2 = 10 OR v3 = 0 ) ORDER BY v2 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/197",
    "content": "CREATE TABLE v0 ( v1 INTEGER ) ; SELECT lead ( v1 , 10 ) OVER( ORDER BY v1 ) AS x FROM v0 ; SELECT v1 , sum ( v1 ) OVER( PARTITION BY 10 , 10 , 10 , 99 ) FROM v0 AS REVENUE ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/198",
    "content": "CREATE TABLE v0 ( v3 INTEGER , v2 DOUBLE , v1 INTEGER ) ; INSERT INTO v0 ( v3 ) VALUES ( 9.100000 ) ,( 10 ) ,( 0 ) ; SELECT nth_value ( v2 , zeroblob ( 1 ) ) OVER( ORDER BY v2 ) FROM v0 ; INSERT INTO v0 ( v2 ) VALUES ( 9 ) ,( 3.100000 ) ; SELECT DISTINCT 9223372036854775807 , v3 + 99 , 10 FROM v0 UNION SELECT DISTINCT * FROM v0 ORDER BY v1 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/199",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 2 , 3 ) ; SELECT ( SELECT v1 AS y WHERE 1 > v2 ) FROM v0 NOT INDEXED NATURAL JOIN v0 ; \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/strip_mysql",
    "content": "CREATE VIEW x AS SELECT 1 ;\n \nSELECT x , x FROM x WHERE x = 'x' ;\n \nDROP TABLE x ;\n \nCREATE TABLE x ( x INT ) ;\n \nDROP VIEW x ;\n \nSELECT 'x' AS x , x ( x ) AS x FROM x ;\n \nSELECT x , x ( x ) FROM x ;\n \nSELECT 'x' AS x , x ( x ) AS x , x AS x FROM x ;\n \nSELECT 'x' AS x , x ( x ) FROM x ;\n \nSELECT 'x' AS x , x ( x ) FROM x WHERE x ( x ) ;\n \nSELECT 'x' AS x , x AS x , x ( x ( x ) ) AS x FROM x WHERE x ( x ) ;\n \nSELECT 'x' AS x , x ( x , 1.000000 ) FROM x ;\n \nSELECT x , x ( 1 , x ) FROM x WHERE x >= 'x' ;\n \nSELECT x , x ( 1 , x ) FROM x WHERE x < 'x' ;\n \nINSERT INTO x ( x , x ) SELECT x , x ( x * 1 , x * 1 ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x ( x , x ) SELECT x + 1 , x ( x * 1 + 1 , x * 1 + 1 ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x ( x ) SELECT x ( x ( x , x ) , x ( x + x , x + x ) ) FROM x ( 1 , 1 , 1 ) x , x ( 1 , 1 , 1 ) x , x ( 1 , 1 ) x ;\n \nSELECT x , x , x ( 'x' ) FROM x ORDER BY x LIMIT 1 ;\n \nSELECT x ( 'x' ) ;\n \nSELECT x , x , x ( 1 , 1 ) FROM x ORDER BY x LIMIT 1 ;\n \nSELECT x ( x ) AS x , x ( x ) + x ( ) * 1 AS x FROM x GROUP BY x ORDER BY x LIMIT 1 ;\n \nSELECT x ( 'x' , 'x' , 'x' ) ;\n \nSELECT * FROM x ( 'x' , 'x' , 'x' ) ;\n \nDROP TABLE IF EXISTS x ;\n \nCREATE TABLE x ( x INT , x TEXT ) ;\n \nDROP VIEW IF EXISTS x ;\n \nCREATE VIEW x AS SELECT * FROM x ;\n \nDROP INDEX x ;\n \nCREATE INDEX x ON x ( x ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' ) ;\n \nINSERT INTO x ( x ) VALUES ( 'x' ) ;\n \nSELECT * FROM x ;\n \nSELECT * FROM x WHERE x = 1 ;\n \nSELECT * FROM x WHERE x < 1 ;\n \nSELECT * FROM x WHERE x > 1 ;\n \nSELECT * FROM x WHERE x <= 1 ;\n \nSELECT * FROM x WHERE x >= 1 ;\n \nSELECT * FROM x WHERE 1 = x ;\n \nSELECT * FROM x WHERE 1 < x ;\n \nSELECT * FROM x WHERE 1 > x ;\n \nSELECT * FROM x WHERE 1 <= x ;\n \nSELECT * FROM x WHERE 1 >= x ;\n \nSELECT 'x' AS x , x AS x , - x AS x FROM x ;\n \nSELECT 'x' AS x , x , x , x + x AS x FROM x ;\n \nSELECT 'x' AS x , x , x , x - x AS x FROM x ;\n \nSELECT 'x' AS x , x , x , x * x AS x FROM x ;\n \nSELECT 'x' AS x , x , x , x * x AS x FROM x WHERE x < 1 OR ( x > 1 AND x < 1 ) ;\n \nSELECT 'x' AS x , x , x , x / x AS x , x % x AS x FROM x ;\n \nSELECT 'x' AS x , x , x ( x ) FROM x ;\n \nSELECT 1 + x AS x FROM x ;\n \nSELECT 1 - x AS x FROM x ;\n \nSELECT x ( x ) , x ( x ) FROM x ;\n \nSELECT 'x' AS x , x ( x , 'x' ) , x ( x , 'x' ) FROM x ;\n \nSELECT 'x' AS x , x ( ( x * 1 ) , 'x' ) , x ( ( x * 1 ) , 'x' ) FROM x ;\n \nSELECT 'x' AS x , x ( x , 'x' ) FROM x ;\n \nSELECT x , EXTRACT ( YEAR FROM x ) , x ( * ) FROM x GROUP BY 1 , 1 ORDER BY 1 , 1 ;\n \nCREATE TABLE x ( x INT , x INT , x TEXT ) ;\n \nINSERT INTO x VALUES ( 1 , ( ( 1.000000 , 1.000000 ) , ( 1.000000 , 1.000000 ) ) ) ;\n \nINSERT INTO x VALUES ( 1 , ( ( NULL , 1.000000 ) , ( 1.000000 , 1.000000 ) ) ) ;\n \nINSERT INTO x VALUES ( x ( 'x' , 1 ) ) ;\n \nINSERT INTO x SELECT 'x' , NULL FROM x ( 1 , 1 ) ;\n \nSELECT x , x FROM x WHERE ( x , x ) > ( 'x' , 'x' ) ORDER BY x , x ;\n \nINSERT INTO x VALUES ( 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , FALSE , 1 ) , ( 1 , FALSE , 1 ) , ( 1 , TRUE , 1.000000 ) ;\n \nSELECT CAST ( x AS TEXT ) FROM x ;\n \nSELECT x ( x ) FROM x x ;\n \nALTER TABLE x ADD COLUMN x TEXT ;\n \nSELECT x ( x ) FROM ( SELECT x , x FROM x ) AS x ;\n \nSELECT x ( x ) FROM ( SELECT x AS x , x AS x FROM x ) AS x ;\n \nINSERT INTO x VALUES ( 1 , 1 ) ;\n \nCREATE TABLE x ( x TEXT , x TEXT ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 'x' , 'x' ) ;\n \nSELECT x ( * ) AS x FROM x ;\n \nSELECT x ( ) ;\n \nSELECT x , x , x , x , x x WHERE x = 'x' ;\n \nSELECT x ( x ( ) ) ;\n \nCREATE TABLE x ( x INTEGER PRIMARY KEY ) ;\n \nINSERT INTO x VALUES ( 1 ) ;\n \nSELECT x ( 'x' , 'x' ) ;\n \nSELECT * FROM x ( 'x' , 'x' ) ;\n \nCREATE TABLE x ( x TEXT ) ;\n \nSELECT 'x' AS x , * FROM x ;\n \nSELECT x ( 1 ) ;\n \nSELECT x ( 1 , 1 , 1 , 'x' , TRUE , FALSE , x ( 'x' , 'x' ) ) ;\n \nSELECT x ( 'x' , 1 , 1 , 1 , 'x' , TRUE , FALSE , x ( 'x' , 'x' ) ) ;\n \nSELECT x ( 'x' , 1 , 1 , NULL , 1 ) ;\n \nSELECT x ( NULL , 1 , 1 , NULL , 1 ) IS NULL ;\n \nSELECT x ( 'x' , 1 ) ;\n \nSELECT x ( 'x' , 'x' , 1 , 'x' ) ;\n \nSELECT x ( 'x' , 'x' , NULL , 'x' ) ;\n \nSELECT x ( 'x' , 'x' , 1 , NULL ) ;\n \nSELECT x ( 'x' , NULL , 1 , 'x' ) ;\n \nSELECT x ( 'x' , 1 , 1 , 1 ) ;\n \nSELECT x ( 'x' , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ) ;\n \nSELECT x ( 'x' , NULL ) ;\n \nSELECT x ( 'x' , 1 , 'x' ) ;\n \nSELECT x ( 'x' , 1 , NULL ) ;\n \nSELECT x ( 'x' , NULL , 'x' ) ;\n \nINSERT INTO x DEFAULT VALUES ;\n \nINSERT INTO x VALUES ( 'x' ) , ( 'x' ) ;\n \nINSERT INTO x VALUES ( NULL , 'x' ) ;\n \nSELECT * FROM x WHERE x IS NULL ;\n \nINSERT INTO x VALUES ( ARRAY [ 1 ] ) ;\n \nSELECT x ( x ) FROM x ;\n \nSELECT x ( x [ 1 ] ) FROM x ;\n \nSELECT x ( x [ 1 ] [ 1 ] ) FROM x ;\n \nSELECT x ( ( x [ 1 ] ) [ 1 ] ) FROM x ;\n \nSELECT x , x [ 1 ] , ( x [ 1 ] ) [ 1 ] FROM x ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( NULL , 'x' , 'x' , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , NULL , 'x' , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , NULL , 'x' , 'x' ) ;\n \nDROP TABLE x CASCADE ;\n \nUPDATE x SET x = NULL ;\n \nINSERT INTO x ( x ) VALUES ( 1 ) ;\n \nUPDATE x SET x = 1 ;\n \nCREATE TABLE x ( x INTEGER ) ;\n \nINSERT INTO x ( x ) VALUES ( NULL ) ;\n \nCREATE TABLE x ( x INT , x INT ) ;\n \nSELECT x ( 1.000000 ) ;\n \nINSERT INTO x VALUES ( NULL ) ;\n \nINSERT INTO x VALUES ( x ) ;\n \nSELECT x ( * ) > 1 FROM x ;\n \nSELECT x ( x ) AS x FROM x x ;\n \nSELECT 1 ^ 1 + 1 ^ 1 + 1 ^ 1.000000 + 1 ^ 1.000000 ;\n \nCREATE TABLE x ( x INT NOT NULL PRIMARY KEY , x TEXT NOT NULL , x NUMERIC NOT NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) ;\n \nCREATE VIEW x AS SELECT x , x ( x ) AS x FROM x GROUP BY x ;\n \nSELECT * FROM x ORDER BY x ;\n \nCREATE UNIQUE INDEX x ON x ( x ) ;\n \nCREATE UNIQUE INDEX x ON x ( ( x > 1 ) ) ;\n \nCREATE VIEW x AS SELECT x ( x ) AS x FROM x ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) ;\n \nCREATE VIEW x AS SELECT 1 x ;\n \nDROP VIEW x CASCADE ;\n \nINSERT INTO x SELECT * FROM x ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 ) ;\n \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) ;\n \nUPDATE x SET x = 'x' WHERE x = 1 ;\n \nUPDATE x SET x = 1 WHERE x = 1 ;\n \nCREATE TABLE x AS SELECT x ( 1 , 1 ) AS x ;\n \nSELECT x ( * ) FROM x ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' ) ;\n \nUPDATE x SET x = 'x' ;\n \nINSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) ;\n \nINSERT INTO x ( x ) SELECT x FROM x WHERE x BETWEEN 'x' AND 'x' OR x BETWEEN 'x' AND 'x' ;\n \nSELECT x ( * ) AS x FROM x WHERE x = 'x' ;\n \nINSERT INTO x VALUES ( 1.000000 ) ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) ;\n \nSELECT x FROM x ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x TEXT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 'x' ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , 1 ) ;\n \nINSERT INTO x SELECT x , x + 1 , x FROM x ;\n \nUPDATE x SET ( x , x ) = ( 'x' , x + x ) , x = x + 1 WHERE x = 1 ;\n \nUPDATE x SET ( x , x ) = ( SELECT x , x FROM x WHERE x = 1 AND x = 'x' ) WHERE x = 1 AND x = 1 ;\n \nUPDATE x SET ( x , x ) = ( SELECT x + 1 , x FROM x ) ;\n \nUPDATE x SET ( x , x ) = ( SELECT x + 1 , x FROM x WHERE x = 1 ) WHERE x = 1 ;\n \nUPDATE x SET x = x ( 'x' , 1 ) WHERE x = 'x' ;\n \nSELECT x , x , x ( x ) FROM x ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) ;\n \nCREATE TABLE x ( x VARCHAR , x NUMERIC , x TEXT , x BIGINT , x INT ) ;\n \nUPDATE x SET x = x - 1 ;\n \nALTER TABLE x DROP COLUMN x ;\n \nALTER TABLE x ADD COLUMN x BIGINT ;\n \nCREATE TABLE x ( x VARCHAR , x INT , x NUMERIC , x BIGINT , x TEXT ) ;\n \nUPDATE x SET x = x - 1 , x = x WHERE x = 1 ;\n \nUPDATE x SET x = x - 1 WHERE x > 1 ;\n \nUPDATE x SET x = x ;\n \nUPDATE x SET x = x + 1 WHERE x = 1 ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE ( SELECT x > x FROM x ) WITH CHECK OPTION ;\n \nUPDATE x SET x = 'x' , x = 1 , x = 1 WHERE x = 1 ;\n \nUPDATE x SET x = 'x' , x = 1 WHERE x = 1 ;\n \nUPDATE x SET x = ( CASE WHEN x = 1 THEN 1 ELSE x + 1 END ) WHERE x = 'x' AND x > 1 AND x >= 1 ;\n \nUPDATE x SET x = x + 1 WHERE x = 'x' AND x > 1 AND x >= 1 ;\n \nUPDATE x SET x = 'x' , x = 1 WHERE x = 'x' AND x = 1 ;\n \nINSERT INTO x VALUES ( 'x' , 1 ) ;\n \nUPDATE x SET x = 'x' WHERE x = 'x' ;\n \nUPDATE x SET x = x + x WHERE x = 1 ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\n \nUPDATE x SET x = 1 , x = 1 WHERE x = 1 ;\n \nUPDATE x SET x = x - 1 WHERE x = 1 ;\n \nCREATE UNIQUE INDEX x ON x ( x ( x ) ) ;\n \nCREATE TABLE x ( x BIGINT , x BIGINT ) ;\n \nCREATE UNIQUE INDEX x ON x ( x ( x , 1 ) ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) ON CONFLICT ( x ) WHERE x ( x , 1 ) > 1 DO NOTHING ;\n \nCREATE VIEW x AS SELECT * FROM x WITH CASCADED CHECK OPTION ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 1 ) ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT DO NOTHING ;\n \nCREATE TABLE x ( x CHAR , x INT UNIQUE ) ;\n \nCREATE TABLE x ( x TEXT , x INT , x INT , x TEXT ) ;\n \nSELECT FALSE <= 1 BETWEEN 1 AND 1 ;\n \nSELECT FALSE >= 1 BETWEEN 1 AND 1 ;\n \nSELECT x ( * ) FROM x WHERE x = ( SELECT x FROM x WHERE x = 'x' ) ;\n \nALTER TABLE x ADD COLUMN x CHAR ;\n \nALTER TABLE x ADD COLUMN x BOOLEAN ;\n \nINSERT INTO x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) VALUES ( 1 , 'x' , 'x' , 1.000000 , 1.000000 , 1 , 'x' , 'x' , 1 , 'x' , 'x' , 'x' , TRUE , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' ) ;\n \nCREATE INDEX x ON x ( x , ( x + x ) , x ) ;\n \nALTER TABLE x RENAME TO x ;\n \nCREATE VIEW x ( x ) AS SELECT x FROM x ;\n \nSELECT x FROM x WHERE x < 1 ;\n \nCREATE TABLE x ( x INT PRIMARY KEY ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ;\n \nCREATE TABLE x ( x INT , x INT , x INT ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 , 1 ) ;\n \nALTER TABLE x RENAME x TO x ;\n \nALTER TABLE x DROP x ;\n \nALTER TABLE x ADD x INT ;\n \nUPDATE x SET x = 1 WHERE x IS NULL ;\n \nALTER TABLE x ADD COLUMN x INT PRIMARY KEY ;\n \nINSERT INTO x ( x , x ) VALUES ( NULL , 1 ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , NULL ) ;\n \nINSERT INTO x ( x , x ) VALUES ( NULL , NULL ) ;\n \nCREATE TABLE x ( x INT NOT NULL ) ;\n \nINSERT INTO x VALUES ( NULL , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , NULL ) ;\n \nINSERT INTO x ( x , x ) VALUES ( NULL , 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 1 ) ;\n \nSELECT * FROM x ORDER BY 'x' ;\n \nSELECT * FROM x GROUP BY x ;\n \nSELECT * FROM x GROUP BY 'x' ;\n \nSELECT x , x , x FROM x ;\n \nSELECT x , x , x , x FROM x ;\n \nSELECT 'x' FROM x ;\n \nSELECT 'x' , x , x , x FROM x ;\n \nSELECT * FROM x WHERE 'x' = 1 ;\n \nUPDATE x SET x = 1 WHERE 'x' = 1 ;\n \nINSERT INTO x ( x , x , x , x ) VALUES ( 1 , 1 , 1 , 1 ) ;\n \nCREATE TABLE x AS SELECT * FROM x ;\n \nALTER TABLE x RENAME COLUMN x TO x ;\n \nALTER TABLE x ADD COLUMN x INT ;\n \nCREATE TABLE x ( x INT , x TEXT , x INT ) ;\n \nALTER TABLE x ADD x TEXT ;\n \nUPDATE x SET x = x + 1 , x = x ( x ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' ) ;\n \nSELECT x , x ( x ) FROM x GROUP BY x ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE , x INT , x INT , x INT ) ;\n \nCREATE TABLE x ( x TEXT , x INT ) ;\n \nCREATE VIEW x AS SELECT * FROM x x ;\n \nCREATE VIEW x AS SELECT * , x ( x ) AS x FROM x x ;\n \nCREATE OR REPLACE VIEW x AS SELECT * , 1 + 1 AS x FROM x x ;\n \nSELECT * FROM x ORDER BY 1 ;\n \nSELECT x ( NULL ) ;\n \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) ;\n \nUPDATE x SET x = - x ;\n \nALTER TABLE x ADD COLUMN x INTEGER ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x INT NOT NULL ) ;\n \nCREATE TABLE x ( x INT NOT NULL CHECK ( x = 1 ) , x INT NOT NULL CHECK ( x >= 1 AND x <= 1 ) ) ;\n \nCREATE TABLE x ( x INT NOT NULL CHECK ( x = 1 ) , x INT NOT NULL CHECK ( x >= 1 AND x < 1 ) ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) ;\n \nALTER TABLE x ADD x INT NOT NULL ;\n \nSELECT x ( x ( x ) , FALSE ) FROM ( SELECT x AS x , x * 1 AS x FROM x ( 1 , 1 ) x ) x ;\n \nSELECT x ( x ( x ) , TRUE ) FROM ( SELECT x AS x , x * 1 AS x FROM x ( 1 , 1 ) x ) x ;\n \nSELECT x ( x ( x ) , FALSE ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 'x' , 'x' ) , ( 'x' , 'x' ) , ( 'x' , 'x' ) ;\n \nSELECT * FROM x ( 'x' ) x ;\n \nSELECT x ( 'x' , 'x' , 'x' ) IS NULL AS x ;\n \nSELECT x ( 1 , 1 ) ;\n \nSELECT x ( NULL , 1 ) ;\n \nSELECT x ( x , 1 ) FROM ( SELECT 1 AS x , 1 AS x ) x ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) ;\n \nSELECT x ( 'x' , x ( x , x ( 'x' , x , 'x' , x ) ) ) FROM x ;\n \nSELECT x ( x , x ) FROM x ;\n \nINSERT INTO x VALUES ( 1 , NULL , 'x' ) ;\n \nSELECT x , x , x ( x ) FROM x ORDER BY 1 , 1 ;\n \nSELECT * FROM x ( 1 ) ;\n \nSELECT x ( x ) AS x FROM x ;\n \nSELECT x ( x ) AS x FROM x WHERE x < 1 ;\n \nSELECT x ( 1.000000 ) , x ( 1.000000 ) ;\n \nSELECT x ( x , x ) , x ( x , x ) FROM x ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\n \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 , 1 , 1 ) ;\n \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x ;\n \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 , 1 ) ;\n \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 ) ;\n \nSELECT x ( DISTINCT x ) AS x FROM x ;\n \nSELECT x ( x ) FROM x WHERE x < 1 ;\n \nSELECT x ( x ) FROM x WHERE x > 1 ;\n \nSELECT x ( x ) FROM x WHERE x = 1 ;\n \nSELECT x , ( SELECT x ( x ) FROM x WHERE x > x ) AS x FROM x ;\n \nSELECT DISTINCT x ( x ) FROM x ;\n \nSELECT x ( x ) FROM x ORDER BY 1 ;\n \nSELECT x ( x ) FROM x ORDER BY x ( x ) ;\n \nSELECT x ( x ) FROM x ORDER BY x ( x ) + 1 ;\n \nSELECT x ( x ) , x ( 1 , 1 ) AS x FROM x ORDER BY x DESC ;\n \nSELECT x ( 1 ) FROM x ;\n \nCREATE INDEX x ON x ( x DESC ) ;\n \nSELECT DISTINCT x ( x ) , x ( x ) FROM x ;\n \nSELECT x ( x ( x ) ) FROM x ;\n \nSELECT ( SELECT x ( x ( x ) ) FROM x ) FROM x ;\n \nSELECT x ( x , 'x' ) FROM x ;\n \nINSERT INTO x VALUES ( x ( 'x' , 'x' ) ) ;\n \nSELECT x ( x , NULL ) FROM x ;\n \nSELECT x ( x , x ( 'x' , 'x' ) ) FROM x ;\n \nSELECT x ( x ) FILTER ( WHERE x > 1 ) FROM x ;\n \nSELECT x ( 1 / x ) FILTER ( WHERE x > 1 ) FROM x ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , x ( 'x' , 1 ) ) ;\n \nSELECT x ( 1 , 1 , 1 ) ;\n \nSELECT x ( 1 , 1 , 1.000000 ) ;\n \nCREATE TABLE x ( x INT , x INT , x CHAR ( 1 ) , x CHAR ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 'x' , 'x' ) ;\n \nSELECT x ( * ) FROM x GROUP BY x ORDER BY x ;\n \nSELECT x FROM x ORDER BY x ;\n \nSELECT x ( * ) FROM x GROUP BY x ORDER BY x DESC ;\n \nSELECT x ( * ) FROM x ORDER BY 1 DESC ;\n \nSELECT x , x ( * ) FROM x GROUP BY 1 ORDER BY 1 ;\n \nSELECT x , x ( * ) FROM x GROUP BY 1 ;\n \nSELECT x , x FROM x ORDER BY x ;\n \nSELECT x / 1 , x / 1 FROM x ORDER BY x / 1 ;\n \nSELECT x / 1 , x / 1 FROM x GROUP BY x / 1 ORDER BY x / 1 ;\n \nSELECT x ( x ) FROM x GROUP BY x ORDER BY x ;\n \nSELECT x ( x ) FROM x GROUP BY x / 1 ORDER BY x / 1 ;\n \nSELECT x FROM x ORDER BY x ( x ) ;\n \nSELECT x ( x ) FROM x GROUP BY ( x + 1 ) / 1 ORDER BY ( x + 1 ) / 1 DESC ;\n \nCREATE TABLE x ( x INTEGER , x INTEGER , x TEXT ) ;\n \nCREATE TABLE x ( x INTEGER , x INTEGER ) ;\n \nINSERT INTO x VALUES ( NULL , NULL , 'x' ) ;\n \nINSERT INTO x VALUES ( NULL , 1 , 'x' ) ;\n \nINSERT INTO x VALUES ( NULL , NULL ) ;\n \nCREATE TABLE x ( x TEXT , x INTEGER ) ;\n \nSELECT x , x , x , x FROM x x JOIN x ON x = x WHERE x < x AND x IS NULL ;\n \nINSERT INTO x SELECT x , x ( 'x' , 1 ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 'x' , NULL ) ;\n \nINSERT INTO x VALUES ( 1 , TRUE , TRUE ) ;\n \nINSERT INTO x VALUES ( 1 , TRUE , FALSE ) ;\n \nINSERT INTO x VALUES ( 1 , FALSE , FALSE ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , TRUE , TRUE ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , TRUE , FALSE ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , FALSE , FALSE ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , TRUE ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , FALSE ) ;\n \nSELECT * FROM x ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\n \nSELECT * , ( SELECT x FROM ( SELECT x AS x ) x , ( SELECT x AS x ) x ) FROM x ;\n \nSELECT x , x FROM x x , ( SELECT x AS x ) x ;\n \nINSERT INTO x VALUES ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ;\n \nCREATE TABLE x ( x INT , x INT , x VARCHAR ) ;\n \nINSERT INTO x SELECT x / 1 , x % 1 , x FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT x / 1 , x % 1 FROM x ( 1 , 1 ) x ;\n \nCREATE TABLE x AS SELECT x , x FROM x ;\n \nSELECT * FROM x ( NULL ) ;\n \nSELECT x , x , x , x FROM x ( 'x' ) ;\n \nSELECT * FROM x ( 'x' ) ;\n \nCREATE VIEW x AS SELECT x , x , x , 1 * x AS x FROM x ;\n \nCREATE OR REPLACE VIEW x AS SELECT * FROM x WHERE x > 1 ;\n \nCREATE OR REPLACE VIEW x AS SELECT x , x FROM x WHERE x > 1 ORDER BY x DESC ;\n \nCREATE OR REPLACE VIEW x AS SELECT 1 , * FROM x ;\n \nCREATE OR REPLACE VIEW x AS SELECT x , x , 1 AS x FROM x ;\n \nCREATE TEMPORARY TABLE x ( x INT , x INT ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x IN ( SELECT x FROM x ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE EXISTS ( SELECT 1 FROM x ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE NOT EXISTS ( SELECT 1 FROM x ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE EXISTS ( SELECT 1 ) ;\n \nCREATE VIEW x AS SELECT TRUE FROM x ;\n \nSELECT x FROM x WHERE x LIKE 'x' AND x = ( SELECT x FROM x WHERE x = 'x' ) ORDER BY x ;\n \nSELECT x FROM x WHERE x LIKE 'x' AND x IN ( SELECT x FROM x WHERE x LIKE 'x' ) ORDER BY x ;\n \nSELECT x ( * ) FROM x WHERE x = 'x' AND x IN ( SELECT x FROM x WHERE x = 'x' ) ;\n \nSELECT x ( * ) FROM x WHERE x LIKE 'x' AND x IN ( SELECT x FROM x WHERE x LIKE 'x' ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x = 1 ;\n \nCREATE OR REPLACE VIEW x AS SELECT * FROM x WHERE x = 1 ;\n \nCREATE VIEW x AS SELECT * FROM x NATURAL JOIN x ;\n \nCREATE VIEW x AS SELECT * FROM ( x NATURAL JOIN x ) x ;\n \nCREATE VIEW x AS SELECT * FROM x JOIN x USING ( x , x ) JOIN x USING ( x ) ;\n \nCREATE VIEW x AS SELECT * FROM ( x JOIN x USING ( x , x ) JOIN x USING ( x ) ) x ;\n \nSELECT x ( 'x' , TRUE ) ;\n \nCREATE VIEW x AS SELECT x , x , x FROM x JOIN x USING ( x ) ;\n \nCREATE VIEW x AS SELECT x , x , x , x FROM ( x JOIN x USING ( x ) ) JOIN x USING ( x ) ;\n \nCREATE TABLE x ( x TEXT , x TEXT , x TEXT , x TEXT ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' , 'x' ) ;\n \nSELECT x , x FROM x ;\n \nSELECT x ( x ( 'x' ) , x ( x x , 'x' ) , x ( 'x' ) ) ;\n \nSELECT x ( NULL , NULL ) ;\n \nSELECT x ( x x , x ( 1 AS x , 'x' AS x ) , 'x' ) ;\n \nSELECT x ( x x , x ( 'x' ) ) ;\n \nSELECT x ( x x , x ( x x , 'x' ) ) ;\n \nSELECT x ( x x , x ( x , x , x AS x ) ) FROM x ;\n \nSELECT x ( x x , x ( 1 AS x , 1 AS x , 1 AS x ) ) ;\n \nSELECT x ( x x , 1 ) ;\n \nSELECT x ( x x , ARRAY [ 1 , 1 , 1 ] ) ;\n \nSELECT x ( x x , x ( TRUE AS x ) ) ;\n \nSELECT x ( x x ) ;\n \nSELECT x ( x x , 'x' ) ;\n \nSELECT x ( x x , NULL ) ;\n \nSELECT x ( x x , x ( x ( x x , x ) ) ) FROM x ;\n \nCREATE VIEW x AS SELECT x ( 'x' ) ;\n \nCREATE VIEW x AS SELECT x ( 'x' , 'x' ) ;\n \nCREATE VIEW x AS SELECT x ( x x , x ( x , x , x AS x ) ) FROM x ;\n \nCREATE VIEW x AS SELECT x ( x x , 'x' ) ;\n \nSELECT x ( 'x' , x ) FROM x ;\n \nSELECT x ( NULL , NULL ) IS NULL FROM x ;\n \nSELECT x ( 'x' , 'x' , ARRAY [ ARRAY [ 'x' , 'x' ] ] ) ;\n \nSELECT x ( x ) FROM x WHERE x ( 'x' , x ) ;\n \nSELECT x ( x ) FROM x WHERE x ( 'x' , x , ARRAY [ ARRAY [ 'x' , 'x' ] ] ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1 , 1 ) ;\n \nUPDATE x SET x = x + 1 WHERE x = 'x' ;\n \nUPDATE x SET x = NULL WHERE x > 1 ;\n \nCREATE TEMPORARY TABLE x ( x INTEGER ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , 1 , 1 ) ;\n \nSELECT x ( * ) >= 1 AS x FROM x ;\n \nSELECT x ( * ) > 1 AS x FROM x ;\n \nSELECT x ( * ) = 1 AS x FROM x ;\n \nSELECT x , x FROM x WHERE x LIKE 'x' ;\n \nSELECT x ( DISTINCT x ) >= 1 AS x FROM x ;\n \nSELECT x ( 'x' , ( SELECT x FROM x WHERE x = 'x' ) , 'x' ) ;\n \nSELECT x ( ( SELECT x FROM x WHERE x = 'x' ) , ( SELECT x FROM x WHERE x = 'x' ) , 'x' ) ;\n \nSELECT x ( ( SELECT x FROM x WHERE x = 'x' ) , 'x' ) ;\n \nSELECT x ( ( SELECT x FROM x WHERE x = 'x' ) , 'x' , 'x' ) ;\n \nALTER TABLE x ADD COLUMN x INTEGER NOT NULL ;\n \nALTER TABLE x ADD x CHAR ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) , ( NULL ) , ( 1 ) ;\n \nSELECT * FROM x ORDER BY x DESC ;\n \nSELECT * FROM x ORDER BY x DESC NULLS LAST ;\n \nSELECT * FROM x ORDER BY x NULLS FIRST ;\n \nSELECT * FROM x WHERE x = 1 AND x = 'x' ;\n \nSELECT x FROM x WHERE x = 1 AND x = 'x' ;\n \nSELECT * FROM x WHERE x = 1 AND x < 'x' ;\n \nSELECT x FROM x WHERE x = 1 AND x < 'x' ;\n \nSELECT x , x FROM x WHERE ( x = 1 OR x = 1 ) AND x < 'x' ;\n \nSELECT x , x FROM x WHERE ( x = 1 AND x < 'x' ) OR x = 1 ;\n \nSELECT 1 AS x ORDER BY x ;\n \nSELECT x ( 1 ) ORDER BY 1 ;\n \nSELECT x , x , x , x , x FROM x ORDER BY 1 ;\n \nSELECT x , x , x , x , x FROM x ;\n \nSELECT x FROM x ORDER BY 1 ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nSELECT x FROM x WHERE x = 'x' ;\n \nINSERT INTO x SELECT x , x % 1 , x ( x , 'x' ) FROM x ( 1 , 1 ) x WHERE x % 1 = 1 ;\n \nINSERT INTO x SELECT x % 1 , x , x ( x , 'x' ) FROM x ( 1 , 1 ) x WHERE x % 1 = 1 ;\n \nINSERT INTO x SELECT x , x , x % 1 FROM x ( 1 , 1 , 1 ) x ;\n \nCREATE INDEX x ON x ( ( ( x + x ) / 1 ) ) ;\n \nINSERT INTO x SELECT x , x , x ( x / 1 , 'x' ) FROM x ( 1 , 1 , 1 ) x ;\n \nINSERT INTO x SELECT x , x % 1 , x ( x % 1 , 'x' ) FROM x ( 1 , 1 , 1 ) x ;\n \nINSERT INTO x SELECT x % 1 , x , x ( x % 1 , 'x' ) FROM x ( 1 , 1 , 1 ) x ;\n \nINSERT INTO x SELECT x , x , x ( x , 'x' ) FROM x ( 1 , 1 , 1 ) x ;\n \nUPDATE x SET x = x + 1 ;\n \nUPDATE x SET x = x ( x ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x > 1 ;\n \nCREATE VIEW x AS SELECT x AS x , x AS x FROM x WHERE x > 1 ;\n \nCREATE VIEW x AS SELECT x AS x , x AS x FROM x WHERE x < 1 ;\n \nCREATE VIEW x AS SELECT x AS x , x AS x FROM x ;\n \nCREATE TABLE x ( x INT , x TEXT , x FLOAT ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1.000000 ) ;\n \nCREATE VIEW x AS SELECT x AS x , x AS x , x AS x FROM x ;\n \nINSERT INTO x VALUES ( 'x' , 1.000000 , 1 ) ;\n \nCREATE VIEW x AS SELECT * FROM x ORDER BY x + x ;\n \nINSERT INTO x VALUES ( 1 , ARRAY [ 1 ] ) , ( 1 , ARRAY [ 1 ] ) ;\n \nCREATE TABLE x ( x FLOAT ) ;\n \nCREATE VIEW x AS SELECT x , x ( x ) x , x , x ( x ) x FROM x WHERE x != 1 ORDER BY x ( x ) ;\n \nINSERT INTO x SELECT * FROM x ( 1 , 1 ) ;\n \nSELECT * FROM x x ORDER BY x ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x < x WITH LOCAL CHECK OPTION ;\n \nCREATE VIEW x AS SELECT * FROM x WITH CHECK OPTION ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x = x ( x ) WITH CHECK OPTION ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x < x WITH CHECK OPTION ;\n \nCREATE VIEW x AS SELECT x FROM x WHERE x < x ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x > 1 WITH LOCAL CHECK OPTION ;\n \nCREATE VIEW x AS SELECT x , 1 AS x FROM x ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x > x WITH LOCAL CHECK OPTION ;\n \nCREATE VIEW x AS SELECT x FROM x WHERE x = 'x' ;\n \nSELECT * FROM x WHERE x ( x ) ;\n \nUPDATE x SET x = x WHERE x ( x ) ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x TEXT , x BOOLEAN ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , FALSE ) , ( 1 , 'x' , TRUE ) ;\n \nCREATE TABLE x ( x INT , x FLOAT , x TEXT ) ;\n \nUPDATE x SET x = 1 WHERE x ( x ) AND x ( x ) AND x < 1 AND x != 1 ;\n \nUPDATE x SET x = x + 1 WHERE x ( x ) AND x ( x ) AND x = 1 ;\n \nCREATE VIEW x AS SELECT x FROM x WHERE EXISTS ( SELECT 1 FROM x JOIN x ON x = x ) ;\n \nCREATE OR REPLACE VIEW x AS SELECT * FROM x WHERE x > 1 WITH CHECK OPTION ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x = 1 WITH CHECK OPTION ;\n \nCREATE TABLE x ( x TEXT , x INT , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nCREATE TABLE x ( x TEXT UNIQUE , x FLOAT ) ;\n \nCREATE TABLE x ( x INT UNIQUE , x TEXT ) ;\n \nCREATE TABLE x ( x INT UNIQUE , x TEXT , x FLOAT ) ;\n \nCREATE VIEW x AS SELECT x , x , x FROM x ;\n \nSELECT * FROM x ORDER BY x , x NULLS LAST ;\n \nINSERT INTO x ( x , x ) VALUES ( x ( 'x' ) , 'x' ) ;\n \nSELECT 'x' AS x , x AS x , x AS x FROM x ;\n \nSELECT 'x' AS x , x AS x , x ( x ) , x AS x , x ( x ) FROM x ;\n \nSELECT 'x' AS x , x AS x , x AS x FROM x WHERE x = x ;\n \nSELECT x ( x ) AS x , x ( x ) AS x FROM x ;\n \nSELECT x ( x , x ) FROM x WHERE x ( x , x ) ;\n \nSELECT x FROM x ORDER BY x ASC ;\n \nSELECT x FROM x ORDER BY x DESC ;\n \nSELECT x ( * ) FROM x WHERE x = 'x' ;\n \nSELECT x ( * ) FROM x WHERE x < 'x' ;\n \nSELECT x ( * ) FROM x WHERE x <= 'x' ;\n \nSELECT x ( * ) FROM x WHERE x > 'x' ;\n \nSELECT x ( * ) FROM x WHERE x >= 'x' ;\n \nSELECT x ( * ) FROM x WHERE x = 'x' AND x LIKE 'x' ;\n \nINSERT INTO x ( x ) VALUES ( x ( ) ) ;\n \nSELECT x ( DISTINCT x ) FROM x ;\n \nSELECT x , x , x ( x , x ) , x ( x ) , x ( * ) , x ( x ) FROM x GROUP BY x ( x , x ) ORDER BY x , x ;\n \nSELECT x , x , x ( x , x ) , x ( x ) , x ( * ) , x ( x ) FROM x GROUP BY x ( x , x ) ORDER BY x DESC , x ;\n \nSELECT x , x , x ( x , x ) , x ( x ) , x ( * ) , x ( x ) FROM x GROUP BY x ( x , x ) ORDER BY x ( x , 1 ) + x ( x , 1 ) ;\n \nSELECT x , x , x ( x ) , x ( x ( x ) ) OVER ( ORDER BY x , x ) AS x FROM x GROUP BY x ( x , x ) ORDER BY x , x , x ;\n \nSELECT x AS x , x AS x FROM x ( 1 , 1 ) x GROUP BY x , x ( x ) ;\n \nCREATE VIEW x AS SELECT x , x , x ( x , x ) , x ( x ) , x ( * ) , x ( x ) FROM x GROUP BY x ( ( x , x , x ) , ( x , x ) ) ;\n \nSELECT ( SELECT x ( x , x ) FROM x ) FROM x GROUP BY x , x ;\n \nSELECT x , x ( * ) FROM x GROUP BY x ( x ) ORDER BY x ;\n \nSELECT x ( * ) FROM x GROUP BY x ( x , x ) ;\n \nSELECT x , x , x ( x , x ) , x ( x ) , x ( * ) , x ( x ) FROM x GROUP BY x ( x , x ) ORDER BY 1 , 1 , 1 ;\n \nINSERT INTO x SELECT x % 1 , x % 1 , x ( x % 1 , 'x' ) , x % 1 FROM x ( 1 , 1 ) x ;\n \nSELECT x , x ( x ) , x ( x ) , x ( * ) , x ( x ) , x ( x ) FROM x GROUP BY x HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x , x ( x ) FROM x WHERE 1 = 1 GROUP BY x ;\n \nSELECT x , x ( x ) FROM x WHERE x = 'x' GROUP BY x ;\n \nSELECT x , x ( x ) , x ( x ) , x ( * ) FROM x GROUP BY 1 HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x FROM x GROUP BY x ORDER BY 1 ;\n \nSELECT x FROM x WHERE x < 1 GROUP BY x ORDER BY 1 ;\n \nINSERT INTO x SELECT x % 1 , x % 1 FROM x ( 1 , 1 , 1 ) x ;\n \nINSERT INTO x SELECT x % 1 , x % 1 , x % 1 FROM x ( 1 , 1 ) x ;\n \nSELECT x , x ( x ) , x ( x ) , x ( * ) FROM x GROUP BY x HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x , x ( x ) , x ( x ) , x ( * ) FROM x GROUP BY x , ( x + x ) / 1 HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x , x , x ( x ) , x ( x ) , x ( * ) FROM x GROUP BY ( x + x ) / 1 , 1 , 1 HAVING x ( x ) = 1 AND x ( x ) > 1 ORDER BY 1 , 1 , 1 ;\n \nINSERT INTO x SELECT x % 1 , x % 1 , x ( x % 1 , 'x' ) FROM x ( 1 , 1 ) x ;\n \nSELECT x , x ( x ) , x ( DISTINCT x ) , x ( * ) FROM x GROUP BY x HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x , x ( x ) , x ( * ) FROM x GROUP BY x HAVING x ( x ) < 1 ORDER BY 1 , 1 , 1 ;\n \nSELECT x , x ( x ) , x ( * ) FROM x GROUP BY x , x , x HAVING x ( x ) > 1 ORDER BY 1 , 1 , 1 ;\n \nINSERT INTO x SELECT x % 1 , x % 1 FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT x , 1 * x , 1 * x , x ( 'x' ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x SELECT 1 , 1 , 1 * x , x ( 'x' ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x SELECT 1 , 1 * x , 1 * x , x ( 'x' ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x SELECT 1 , NULL , 1 * x , x ( 'x' ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x SELECT x , 1 * x , NULL , NULL FROM x ( 1 , 1 ) AS x ;\n \nSELECT * FROM x WHERE ( x , x , x ) < ( 1 , 1 , 1 ) ;\n \nSELECT * FROM x WHERE ( x , x , x ) < ( 1 , 1 , 1 ) LIMIT 1 ;\n \nSELECT x FROM x WHERE x = 'x' ORDER BY x ;\n \nCREATE INDEX x ON x ( x , x ) ;\n \nSELECT x ( * ) FROM x WHERE x IS NULL ;\n \nSELECT * FROM x WHERE x = 'x' ORDER BY x ;\n \nINSERT INTO x SELECT ARRAY [ 1 , x % 1 , x ] FROM x ( 1 , 1 ) x ;\n \nCREATE UNIQUE INDEX x ON x ( x ( x , x ) ) ;\n \nCREATE UNIQUE INDEX x ON x ( ( x + 1 ) , x ) ;\n \nCREATE TABLE x ( x INT , x VARCHAR ( 1 ) , x CHAR ) ;\n \nCREATE UNIQUE INDEX x ON x ( x , x ) ;\n \nINSERT INTO x ( x , x ) VALUES ( NULL , 1 ) , ( NULL , NULL ) ;\n \nSELECT x ( * ) FROM x WHERE x IS NULL AND x IS NULL ;\n \nSELECT x ( * ) FROM x WHERE x IS NOT NULL ;\n \nSELECT x ( * ) FROM x WHERE x IS NULL AND x IS NOT NULL ;\n \nSELECT x ( * ) FROM x WHERE x IS NOT NULL AND x > 1 ;\n \nSELECT x ( * ) FROM x WHERE x IS NULL AND x > 1 ;\n \nCREATE UNIQUE INDEX x ON x ( x DESC , x ) ;\n \nSELECT x , x FROM x ORDER BY x LIMIT 1 ;\n \nSELECT x , x FROM x WHERE x >= 1 ORDER BY x LIMIT 1 ;\n \nSELECT x , x FROM x ORDER BY x DESC LIMIT 1 ;\n \nSELECT x , x FROM x WHERE x >= 1 ORDER BY x DESC LIMIT 1 ;\n \nSELECT x , x FROM x WHERE x < 1 ORDER BY x DESC LIMIT 1 ;\n \nSELECT * FROM x WHERE x = 1 AND ( x = 1 OR x = 1 OR x = 1 ) ;\n \nSELECT x ( * ) FROM x WHERE x = 1 AND ( x = 1 OR x = 1 ) ;\n \nCREATE INDEX x ON x ( x , x , x ) ;\n \nSELECT x , x , x FROM x ( 'x' ) ORDER BY x , x ;\n \nCREATE TABLE x ( x INT , x BOOLEAN ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , FALSE ) , ( 1 , TRUE ) , ( 1 , FALSE ) ;\n \nINSERT INTO x SELECT x ( 1 , 1 ) ;\n \nINSERT INTO x SELECT x ( 1 , 1 ) , 'x' ;\n \nCREATE TABLE x AS SELECT x , x , x , x FROM x WHERE x = ( SELECT x FROM x WHERE x = 'x' ) ;\n \nSELECT x , x , x FROM x WHERE x = 'x' ORDER BY 1 , 1 ;\n \nINSERT INTO x VALUES ( 'x' , NULL ) ;\n \nSELECT x , x FROM x WHERE x = 1 ;\n \nINSERT INTO x VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) , ( 'x' ) ;\n \nSELECT * FROM x WHERE x LIKE 'x' ;\n \nCREATE TABLE x ( x BIGINT , x BIGINT , x BIGINT , x BIGINT ) ;\n \nINSERT INTO x SELECT x , 1 , 1 , 1 FROM x ( 1 , 1 ) x ;\n \nSELECT * FROM x WHERE x = 'x' ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x TEXT NOT NULL , x TEXT , x TEXT ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x = x ;\n \nCREATE VIEW x AS SELECT * FROM x x NATURAL JOIN x x ;\n \nSELECT * FROM x x WHERE x ( 'x' ) AND x ( x ) ;\n \nSELECT * FROM x WHERE x ( x ) AND x >= 'x' AND x < 'x' ;\n \nSELECT x ( 1 ) , x ( 1 ) , x ( 1 , 1 ) , x ( 1 , 1 ) ;\n \nSELECT x , x , x , x , x , x FROM x WHERE x = 'x' ORDER BY x , x , x ;\n \nSELECT x ( 1 ) , x ( 1 ) , x ( 1 ) , x ( 1 ) , x ( 1 , 1 ) , x ( 1 , 1 ) , x ( 1 , 1 ) , x ( 1 , 1 ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 ) ;\n \nINSERT INTO x ( x ) VALUES ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , x ( 'x' , 1 ) ) ;\n \nCREATE TABLE x ( x BIGINT , x TEXT ) ;\n \nINSERT INTO x VALUES ( x ( 1 , 1 ) ) ;\n \nCREATE TABLE x ( x INT NOT NULL , x INT NOT NULL ) ;\n \nCREATE TABLE x ( x INT NOT NULL , x TEXT , x INT NOT NULL ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 , 'x' ) ;\n \nCREATE TABLE x ( x INT , x INT , x TEXT , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 'x' , 1 ) ;\n \nINSERT INTO x VALUES ( NULL , NULL , NULL ) ;\n \nCREATE TABLE x ( x TEXT , x TEXT , x INT ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\n \nCREATE TABLE x AS SELECT x ( x , x ) AS x FROM x ;\n \nINSERT INTO x VALUES ( NULL ) , ( NULL ) , ( NULL ) ;\n \nINSERT INTO x SELECT 'x' FROM x ( 1 , 1 ) ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , 1.000000 ) ;\n \nINSERT INTO x VALUES ( 1 , NULL , 1.000000 ) ;\n \nSELECT 'x' AS x , x ( 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , FALSE , 1 ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , TRUE , 1 ) ;\n \nINSERT INTO x ( x , x , x , x ) VALUES ( 1 , 'x' , 1 , 1 ) ;\n \nINSERT INTO x VALUES ( NULL , 'x' , NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , NULL ) ;\n \nINSERT INTO x ( x ) SELECT x FROM x ;\n \nINSERT INTO x SELECT * FROM x WHERE x = 'x' ;\n \nINSERT INTO x ( x , x ) SELECT x , 1 FROM x WHERE x = 'x' ;\n \nUPDATE x SET x = NULL WHERE x = 1 ;\n \nUPDATE x SET x = - x , x = - x ;\n \nUPDATE x SET x = x , x = x ;\n \nUPDATE x SET x = 1 WHERE x = 1 AND x = 'x' ;\n \nCREATE TABLE x ( x INT CONSTRAINT the_constraint CHECK ( x > 1 ) ) ;\n \nINSERT INTO x ( x ) SELECT x ( 1 ) ;\n \nSELECT x ( x , 1 , 1 ) FROM x ;\n \nSELECT x ( x , 1 ) FROM x ;\n \nINSERT INTO x ( x ) SELECT x ( 'x' ) ;\n \nINSERT INTO x SELECT ( x % 1 ) , ( x % 1 ) , 'x' FROM x ( 1 , 1 ) x ;\n \nSELECT x ( * ) FROM x WHERE x = 1 AND x = 1 ;\n \nSELECT x ( * ) FROM x WHERE x = 1 OR x = 1 ;\n \nINSERT INTO x VALUES ( 'x' , 'x' ) , ( 'x' , 'x' ) ;\n \nCREATE TABLE x ( x TEXT , x TEXT , x TEXT ) ;\n \nCREATE TABLE x ( x INTEGER , x TEXT ) ;\n \nSELECT 'x' AS x , x FROM x WHERE x ( x ) < 1 ;\n \nSELECT 'x' AS x , x FROM x WHERE x ( x ) >= 1 ;\n \nINSERT INTO x SELECT x , 1 * x , 1 * x , x ( x ( x , x + 1 ) , x ( 1 * x , 1 * x + 1 ) ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x SELECT x , 1 * x , 1 * x , x ( x ( 1 * x , 1 * x ) , x ( 1 * x + 1 , 1 * x + 1 ) ) FROM x ( 1 , 1 ) AS x ;\n \nSELECT 1 AS x ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , TRUE , 1 ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , FALSE , 1 ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , NULL , 1 ) ;\n \nINSERT INTO x VALUES ( FALSE , TRUE , NULL ) ;\n \nSELECT x AND x AND x FROM x ;\n \nSELECT x OR x OR x FROM x ;\n \nSELECT 'x' AS x , x ( x ) , x ( x ) FROM x ;\n \nINSERT INTO x SELECT x ( x ( x , x ) , x ( x * 1 , x * 1 ) ) FROM x ( 1 , 1 ) AS x ;\n \nINSERT INTO x VALUES ( NULL ) , ( 'x' ) , ( 'x' ) , ( 'x' ) , ( 'x' ) , ( 'x' ) ;\n \nINSERT INTO x SELECT ( x - 1 ) * 1 + x , x ( x ( x * 1 , x * 1 ) , x ( x * 1 + 1 , x * 1 + 1 ) ) FROM x ( 1 , 1 ) x , x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT x , 'x' FROM x ( 1 , 1 ) AS x ;\n \nSELECT x ( 'x' , 'x' ) IS NULL ;\n \nSELECT x , x FROM x WHERE NOT x ( x ) ;\n \nSELECT x , * FROM x ;\n \nSELECT x , * FROM x WHERE x = 'x' ;\n \nSELECT x , * FROM x WHERE 'x' = x ;\n \nSELECT x , * FROM x WHERE x = 'x' OR 'x' = x ;\n \nSELECT x FROM x WHERE x < 1 ORDER BY x ;\n \nSELECT 1 ;\n \nSELECT 1 / 1 ;\n \nSELECT 1 + 1 AS x ;\n \nSELECT 1 - 1 AS x ;\n \nSELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS x ;\n \nSELECT 1 + 1 / 1 AS x ;\n \nSELECT ( 1 + 1 ) / 1 AS x ;\n \nSELECT x FROM x WHERE x LIKE 'x' ;\n \nINSERT INTO x SELECT x , 1 , x ( x ( x ) ) FROM x ;\n \nINSERT INTO x SELECT x , 1 , x ( x ( x ) ) FROM x WHERE x != 'x' ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x TEXT ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x CHAR ( 1 ) , x CHAR ( 1 ) , x CHAR ( 1 ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x TEXT , x CHAR ( 1 ) , x CHAR ( 1 ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x CHAR ( 1 ) , x TEXT , x CHAR ( 1 ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x TEXT , x INTEGER ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x CHAR ( 1 ) , x INTEGER , x CHAR ( 1 ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x TEXT , x TEXT , x CHAR ( 1 ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x TEXT , x CHAR ( 1 ) ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 1 ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 1 , 'x' ) ;\n \nINSERT INTO x ( x ) VALUES ( x ) ;\n \nSELECT x ( 1 , 'x' ) ;\n \nCREATE TABLE x ( x INT , x INT , x INT , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 1 ) , ( 1 , 1 , 1 , 1 ) ;\n \nSELECT x ( 1 , 1 , 1 , 1 , 1 ) ;\n \nSELECT x ( 1.000000 , 1.000000 , 1.000000 ) ;\n \nSELECT x ( 1.000000 , 1 , 1 ) ;\n \nSELECT * FROM x ( FALSE ) ;\n \nSELECT * FROM x ( TRUE ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 ] ) ;\n \nSELECT x ( x ( 1 ) ) ;\n \nSELECT x ( x ) , x FROM x ( 1 ) x ;\n \nINSERT INTO x ( x ) SELECT x ( 1 , 1 ) ;\n \nINSERT INTO x ( x , x ) SELECT x , x / 1 + 1 AS x FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x ( x , x , x ) SELECT 1 , x , 1 FROM x ;\n \nSELECT * FROM x ( 1 ) AS x ;\n \nSELECT x ( 1 , 1 , 1 , NULL ) ;\n \nCREATE TABLE x ( x INT UNIQUE ) ;\n \nUPDATE x x SET x = 'x' WHERE x = 'x' ;\n \nUPDATE x SET x = 'x' WHERE x LIKE 'x' ;\n \nUPDATE x SET x = x + 1 WHERE FALSE ;\n \nUPDATE x SET x = x + 1 WHERE x IN ( SELECT x FROM x ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nSELECT * FROM x ORDER BY 1 , 1 ;\n \nINSERT INTO x SELECT x , x FROM x ( 1 , 1 ) x ;\n \nSELECT * FROM x JOIN ( SELECT x FROM x LIMIT 1 ) x ON x = x ;\n \nCREATE INDEX x ON x ( ( 1 - x ) ) ;\n \nSELECT * FROM x ORDER BY 1 - x ;\n \nSELECT x ( 1 - x ) FROM x ;\n \nSELECT x ( x ) , x ( x ) FROM x WHERE x = 'x' ;\n \nCREATE INDEX x ON x ( x , x ( x ) , x ) ;\n \nSELECT x ( 'x' , 'x' , 'x' , 'x' ) ;\n \nSELECT x , x ( x ) FROM x ( 'x' , 'x' ) AS x ;\n \nSELECT x , x ( x ) FROM x ( 'x' , 'x' , 'x' ) AS x ;\n \nSELECT 'x' LIKE 'x' AS x , 'x' LIKE 'x' AS x , 'x' LIKE 'x' AS x ;\n \nSELECT 'x' LIKE 'x' AS x ;\n \nCREATE TABLE x ( x TEXT PRIMARY KEY , x INT ) ;\n \nSELECT x ( x ) = 1 AS x FROM x WHERE x = 'x' ;\n \nINSERT INTO x VALUES ( x ( x ( 'x' , 1 ) , 'x' ) ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) ) ;\n \nSELECT 'x' AS x , 'x' AS x , 'x' AS x , 'x' AS x , 'x' AS x , 'x' AS x ;\n \nSELECT 1 AS x WHERE 1 IN ( SELECT 1 ) ;\n \nSELECT 1 AS x WHERE 1 NOT IN ( SELECT 1 ) ;\n \nSELECT * FROM ( SELECT 1 AS x ) x ;\n \nSELECT * FROM ( ( SELECT 1 AS x ) ) x ;\n \nSELECT ( SELECT ARRAY [ 1 , 1 , 1 ] ) [ 1 ] ;\n \nSELECT ( ( SELECT ARRAY [ 1 , 1 , 1 ] ) ) [ 1 ] ;\n \nSELECT ( ( ( SELECT ARRAY [ 1 , 1 , 1 ] ) ) ) [ 1 ] ;\n \nCREATE TABLE x ( x INTEGER , x INTEGER , x FLOAT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , NULL ) ;\n \nSELECT x , x ( x ( * ) ) / ( SELECT x ( * ) FROM x ) FROM x GROUP BY x ORDER BY x ;\n \nSELECT * , x ( x ) FROM ( SELECT 'x' AS x FROM x ( 1 , 1 ) ) x ORDER BY 1 ;\n \nSELECT x ( * ) FROM ( SELECT 1 FROM x x WHERE x IN ( SELECT x FROM x x ) ) x ;\n \nSELECT x ( * ) FROM ( SELECT 1 FROM x x WHERE x IN ( SELECT DISTINCT x FROM x x ) ) x ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM ( SELECT DISTINCT x , x FROM x ) AS x ) ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM ( SELECT x , x FROM x GROUP BY x , x ) AS x ) ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM ( SELECT x , x FROM x UNION SELECT x , x FROM x ) AS x ) ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM ( SELECT x FROM x GROUP BY x ) AS x ) ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM ( SELECT x FROM x UNION SELECT x FROM x ) AS x ) ;\n \nCREATE TABLE x ( x INTEGER , x INTEGER , x BOOLEAN ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 , ( SELECT x FROM x WHERE x = 'x' ) ) ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1.000000 ) , ( 1 ) , ( 1 ) ;\n \nSELECT * FROM x WHERE x IN ( SELECT x FROM x ) ;\n \nSELECT ( SELECT x ) FROM x ;\n \nSELECT ( SELECT ( SELECT x ) ) FROM x ;\n \nSELECT x FROM ( SELECT x ( x ) FROM x GROUP BY x ORDER BY x ) x ;\n \nWITH x AS ( SELECT x ( x ) FROM x GROUP BY x ORDER BY x ) SELECT x FROM x ;\n \nSELECT * FROM x WHERE ( x , x ) NOT IN ( SELECT * FROM x ) ;\n \nINSERT INTO x VALUES ( NULL ) , ( 1 ) ;\n \nSELECT * FROM x WHERE x NOT IN ( SELECT x FROM x ) ;\n \nSELECT EXISTS ( SELECT * FROM x ) ;\n \nSELECT * FROM x WHERE ( CASE WHEN x IN ( SELECT x FROM x x ) THEN x ELSE NULL END ) IN ( SELECT x FROM x x ) ;\n \nSELECT * FROM x x WHERE ( x , x ) IN ( SELECT x , x ( 1 , 1 ) / 1 x FROM x x GROUP BY x ) ;\n \nSELECT * FROM ( SELECT DISTINCT x FROM x ) x WHERE x < 1 + x ( 'x' ) ORDER BY 1 ;\n \nSELECT * FROM ( SELECT 1 AS x , x ( ARRAY [ 1 , 1 , 1 , 1 , 1 , 1 ] ) AS x ) x WHERE x ( x , 1 ) ;\n \nSELECT * FROM ( SELECT 1 AS x , x ( ARRAY [ 1 , 1 , 1 , 1 , 1 , 1 ] ) AS x ) x WHERE x ( x , x ) ;\n \nCREATE TABLE x ( x INT PRIMARY KEY , x INT , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) ;\n \nSELECT * FROM ( SELECT x , x FROM x ORDER BY x , x ) AS x LIMIT 1 ;\n \nINSERT INTO x ( x , x , x , x , x , x ) VALUES ( 'x' , 1 , 1 , 1 , 1 , 1 ) , ( 'x' , 1 , 1 , 1 , 1 , 1 ) ;\n \nSELECT * FROM x ORDER BY x ASC ;\n \nSELECT x , x IN ( 1 , 1 ) AS x , x FROM x ;\n \nINSERT INTO x VALUES ( 1 , NULL ) , ( NULL , NULL ) ;\n \nSELECT x ( 'x' ) > 1 ;\n \nSELECT x ( 'x' ) = 1 ;\n \nINSERT INTO x SELECT 1 LIMIT 1 ;\n \nSELECT x , x , * FROM x ;\n \nCREATE TABLE IF NOT EXISTS x ( x INT PRIMARY KEY , x NUMERIC ) ;\n \nUPDATE x SET x = x + 1 WHERE x IN ( 1 , 1 ) ;\n \nSELECT x ( * ) FROM x WHERE x = 1 ;\n \nSELECT x , x , x , x , x , x FROM x WHERE x LIKE 'x' ORDER BY x ;\n \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) , ( 'x' ) , ( 'x' ) ;\n \nSELECT x FROM x x ORDER BY x ;\n \nINSERT INTO x VALUES ( NULL , NULL , 1 ) ;\n \nINSERT INTO x VALUES ( NULL , 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , NULL , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 'x' ) ;\n \nINSERT INTO x VALUES ( NULL , 1 , 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , NULL , 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , NULL , 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , NULL , 1 , 'x' ) ;\n \nUPDATE x SET x = 1 WHERE x = 1 AND x = 1 ;\n \nUPDATE x SET x = 1 , x = 1 , x = 1 WHERE x = 1 ;\n \nCREATE TABLE x ( x NUMERIC PRIMARY KEY ) ;\n \nUPDATE x SET x = x * 1 ;\n \nUPDATE x SET x = x * 1 WHERE x < 1 ;\n \nCREATE TABLE x ( x INT NOT NULL , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , NULL , NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , NULL ) ;\n \nUPDATE x SET x = x WHERE x = 1 ;\n \nINSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 1 , 1 ) ;\n \nCREATE TABLE x ( x INT , x INT , x INT , x INT , x INT ) ;\n \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\n \nINSERT INTO x SELECT 1 , x FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x ( x , x ) SELECT 1 , x FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\n \nCREATE TABLE x ( x INT , x INT NOT NULL ) ;\n \nCREATE TABLE IF NOT EXISTS x ( x TEXT ) ;\n \nCREATE TABLE x AS SELECT * FROM x WHERE x = 'x' ;\n \nCREATE TABLE IF NOT EXISTS x AS SELECT * FROM x WHERE x = 'x' ;\n \nCREATE INDEX x ON x ( ( x = 1 ) ) ;\n \nSELECT x , x , x FROM x WHERE x NOT IN ( 'x' , 'x' ) ;\n \nSELECT x , x , x * 1 AS x FROM x ORDER BY x ;\n \nSELECT x , x FROM x WHERE x = 1 ORDER BY x ;\n \nWITH x AS ( SELECT * FROM x ) SELECT * FROM x ;\n \nINSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) ;\n \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) , ( NULL ) ;\n \nINSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) ;\n \nCREATE INDEX x ON x ( ( x * 1 ) ) ;\n \nSELECT * FROM x WHERE x * 1 = 1 ;\n \nSELECT * FROM x WHERE x = 1 AND x > 1 ;\n \nINSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) ;\n \nCREATE TABLE x ( x BIGINT ) ;\n \nCREATE VIEW x ( x , x ) AS SELECT * FROM x , x ;\n \nCREATE VIEW x AS SELECT ( SELECT x FROM x LIMIT 1 ) FROM x ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x IN ( SELECT * FROM x ) ;\n \nCREATE VIEW x AS SELECT * FROM ( SELECT * FROM x ) x ;\n \nCREATE OR REPLACE VIEW x AS SELECT * FROM x ;\n \nSELECT x = x ( ) ;\n \nSELECT x ;\n \nSELECT x ( * ) FROM x WHERE x BETWEEN 'x' AND 'x' ;\n \nSELECT x ( * ) FROM x WHERE x NOT BETWEEN 'x' AND 'x' ;\n \nSELECT 'x' ;\n \nSELECT x ( 'x' , 'x' , 1 ) ;\n \nSELECT x ( x ( 'x' , 'x' ) , 'x' ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' ] ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , NULL ] ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' ] ) ;\n \nCREATE TABLE x AS SELECT x ( x ) FROM x GROUP BY x ( x ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) , ( 'x' , 1 , 1 , 'x' ) ;\n \nSELECT x , x , x , x ( x ) OVER ( PARTITION BY x ) FROM x ORDER BY x , x ;\n \nSELECT x , x , x , x ( ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\n \nSELECT x , x , x , x ( x ) OVER w FROM x WINDOW x AS ( PARTITION BY x ) ;\n \nSELECT x , x , x , x ( ) OVER w FROM x WINDOW x AS ( PARTITION BY x ORDER BY x ) ORDER BY x ( ) OVER w ;\n \nSELECT x ( * ) OVER ( ) FROM x WHERE x < 1 ;\n \nSELECT x ( * ) OVER w FROM x WHERE x < 1 WINDOW x AS ( ) ;\n \nSELECT x FROM x WHERE FALSE WINDOW x AS ( PARTITION BY x ) ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ORDER BY x ) AS x , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( ) OVER ( ORDER BY x ) FROM x WHERE x < 1 ;\n \nSELECT x ( ) OVER ( PARTITION BY x ORDER BY x ) AS x , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( 1 ) OVER ( ORDER BY x , x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( NULL ) OVER ( ORDER BY x , x ) , x , x FROM x LIMIT 1 ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x , x ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x , x , 1 ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x * 1 , 1 ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x * 1 , 1 , 1 ) OVER ( PARTITION BY x ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x ) , x , x FROM x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ) , x , x FROM ( SELECT * FROM x WHERE x < 1 ORDER BY x , x ) x ORDER BY x , x ;\n \nSELECT x ( x , x + 1 ) OVER ( PARTITION BY x ) , x , x FROM ( SELECT * FROM x WHERE x < 1 ORDER BY x , x ) x ;\n \nSELECT x ( * ) OVER ( PARTITION BY x ) , x FROM ( SELECT * FROM x WHERE x = 1 ) x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ORDER BY x / 1 ) FROM x WHERE x < 1 ;\n \nSELECT x ( x ) , x ( ) OVER ( ORDER BY x ) , x ( x ( x ) ) OVER ( ORDER BY x DESC ) FROM x GROUP BY x ;\n \nSELECT x ( x ) OVER w1 , x ( * ) OVER w2FROM x WINDOW x AS ( ORDER BY x ) , x AS ( ORDER BY x ) ;\n \nSELECT x ( * ) OVER ( PARTITION BY x ) FROM ( SELECT * FROM x WHERE FALSE ) x ;\n \nSELECT x ( x ) OVER w , x ( ) OVER w FROM x WINDOW x AS ( PARTITION BY x ORDER BY x DESC ) ;\n \nSELECT x , x , x , x , x , x ( x ) OVER ( ORDER BY x ) , x ( x ) OVER ( ) FROM ( SELECT * , CASE WHEN x < 'x' THEN 1 - EXTRACT ( YEAR FROM x ) END * 1 AS x , CASE WHEN x ( x ) OVER ( PARTITION BY x ) < x THEN 1 END AS x FROM x ) x ;\n \nSELECT x ( x ( x ) ) OVER ( ) FROM x WHERE x = 1 ;\n \nSELECT x , x , x ( x ) OVER ( PARTITION BY x ORDER BY x ) , x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM ( SELECT DISTINCT x , x FROM x ) x ;\n \nSELECT x , x , x ( x ) OVER ( PARTITION BY x ORDER BY x RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) , x ( x ) OVER ( PARTITION BY x ORDER BY x RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM ( SELECT DISTINCT x , x FROM x ) x ;\n \nSELECT x , x , x ( x ) OVER ( PARTITION BY x ORDER BY x RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) , x ( x ) OVER ( PARTITION BY x ORDER BY x RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM ( SELECT DISTINCT x , x FROM x ) x ;\n \nSELECT x , x / 1 AS x , x ( x / 1 ) OVER ( PARTITION BY x ORDER BY x / 1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) , x ( x / 1 ) OVER ( PARTITION BY x ORDER BY x / 1 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM ( SELECT DISTINCT x , x FROM x ) x ;\n \nSELECT x , x / 1 AS x , x ( x / 1 ) OVER ( PARTITION BY x ORDER BY x / 1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) , x ( x / 1 ) OVER ( PARTITION BY x ORDER BY x / 1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM ( SELECT DISTINCT x , x FROM x ) x ;\n \nSELECT x ( x ) OVER ( ORDER BY x RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( x RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 WINDOW x AS ( ORDER BY x ) ;\n \nSELECT x ( x ) OVER w , x ( x , 1 ) OVER w AS x , x ( x ) OVER w , x , x x WHERE x < 1 WINDOW x AS ( ORDER BY x RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) ;\n \nSELECT x ( x ) OVER ( ORDER BY x ROWS ( SELECT x FROM x ORDER BY x LIMIT 1 ) + 1 PRECEDING ) , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x ) OVER ( ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x , 1 ) OVER ( ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x FROM x ;\n \nSELECT x ( x ) OVER ( ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x ) OVER ( ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x FROM x ;\n \nSELECT x , x ( x ) OVER ( ORDER BY x RANGE BETWEEN CURRENT ROW AND 1 FOLLOWING ) FROM x ( 1 , 1 ) x ;\n \nSELECT x , x ( x ) OVER ( ORDER BY x DESC RANGE BETWEEN CURRENT ROW AND 1 FOLLOWING ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 1 , 'x' , 'x' , 'x' , 'x' , 'x' ) ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 PRECEDING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x , x , x x WHERE x < 1 ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x , 1 ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x , x FROM x ;\n \nSELECT x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x ( x ) OVER ( ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) , x , x FROM x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) FROM x WHERE x = x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x , x ORDER BY x RANGE BETWEEN 1 PRECEDING AND 1 PRECEDING ) FROM x WHERE x = x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x , x ORDER BY x RANGE BETWEEN 1 FOLLOWING AND 1 FOLLOWING ) FROM x WHERE x = x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) FROM x WHERE x = x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x , x ORDER BY x GROUPS BETWEEN 1 PRECEDING AND 1 PRECEDING ) FROM x WHERE x = x ;\n \nSELECT x , x ( x ) OVER ( PARTITION BY x , x ORDER BY x GROUPS BETWEEN 1 FOLLOWING AND 1 FOLLOWING ) FROM x WHERE x = x ;\n \nSELECT x ( ) OVER ( ORDER BY x ( 'x' ) ) ;\n \nSELECT x ( ) OVER ( ORDER BY x ( ) OVER ( ORDER BY x ( ) ) ) ;\n \nSELECT * FROM x WHERE x ( ) OVER ( ORDER BY x ) < 1 ;\n \nSELECT x ( ) OVER ( ORDER BY 1 ) , x ( * ) FROM x GROUP BY 1 ;\n \nSELECT x ( * ) OVER w FROM x WINDOW x AS ( ORDER BY x ) , x AS ( ORDER BY x ) ;\n \nSELECT x ( ) OVER ( ) FROM x ;\n \nSELECT x ( 1 , 1 ) OVER ( ) FROM x ;\n \nSELECT x ( 1 ) OVER ( ORDER BY x ) , x , x FROM x ;\n \nSELECT x ( x , 1 ) OVER ( ORDER BY x ) , x , x FROM x ;\n \nSELECT x ( x ) OVER ( PARTITION BY x ) , x , x FROM ( SELECT * FROM x WHERE x < 1 ORDER BY x , x ) x ;\n \nSELECT 1 AS x UNION SELECT 1 ORDER BY 1 ;\n \nSELECT 1 AS x UNION SELECT 1 UNION SELECT 1 ORDER BY 1 ;\n \nSELECT 1.000000 AS x UNION SELECT 1.000000 ORDER BY 1 ;\n \nSELECT 1.000000 AS x UNION SELECT 1 ORDER BY 1 ;\n \nSELECT 1 AS x UNION SELECT 1.000000 ORDER BY 1 ;\n \nSELECT 1.000000 AS x UNION SELECT 1 UNION SELECT 1 ORDER BY 1 ;\n \nSELECT x FROM x INTERSECT SELECT x FROM x ORDER BY 1 ;\n \nSELECT x FROM x EXCEPT SELECT x FROM x ORDER BY 1 ;\n \nSELECT x ( * ) FROM ( SELECT x FROM x INTERSECT SELECT x FROM x ) x ;\n \nSELECT x FROM x EXCEPT SELECT x FROM x WHERE x != 1 ;\n \nSELECT x FROM x EXCEPT SELECT x FROM x ORDER BY x LIMIT 1 ;\n \n( ( ( ( ( SELECT * FROM x ) ) ) ) ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' ) , ( 'x' , 'x' ) , ( 'x' , 'x' ) , ( 'x' , 'x' ) ;\n \nCREATE INDEX x ON x ( x ( x ) ) ;\n \nSELECT 'x' AS x , x AS x FROM x WHERE x ( x ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , x ( 'x' , 1 ) , x ( 'x' , 1 ) ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , NULL , x ( 'x' , 1 ) ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , x ( 'x' , 1 ) , NULL ) ;\n \nSELECT * FROM x WHERE x > 'x' ORDER BY x ;\n \nSELECT * FROM x WHERE x >= 'x' ORDER BY x ;\n \nSELECT * FROM x WHERE x < 'x' ORDER BY x ;\n \nSELECT * FROM x WHERE x <= 'x' ORDER BY x ;\n \nSELECT x ( x ) FROM x WHERE x < 'x' ;\n \nSELECT x ( x ) FROM x WHERE x >= 1 AND x < 1 ORDER BY x ;\n \nSELECT x , x ;\n \nUPDATE x SET x = 1 WHERE x = 'x' ;\n \nCREATE TABLE x ( x VARCHAR ( 1 ) , x BOOLEAN ) ;\n \nSELECT * FROM x WHERE ( x IN ( SELECT x FROM x ) ) ;\n \nCREATE TABLE x AS SELECT x AS x , 1 - x AS x FROM x ( 1 , 1 ) x ;\n \nCREATE TABLE x ( x INT , x INT UNIQUE , x INT , x INT UNIQUE ) ;\n \nSELECT x ( 1 , 'x' , 'x' ) ;\n \nSELECT x ( x , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) , ( 1 , 1 , 1 , 'x' , 'x' ) ;\n \nSELECT * FROM x WHERE x = 'x' AND x = 'x' ORDER BY x ;\n \nSELECT * FROM x WHERE x ( x ) ORDER BY x ;\n \nSELECT * FROM x NATURAL JOIN x WHERE x ( x ) ORDER BY x ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , x , 'x' ) ;\n \nCREATE TABLE x ( x INT NOT NULL PRIMARY KEY , x INT , x TEXT , x TEXT ) ;\n \nSELECT * , x FROM x ;\n \nSELECT * FROM x WHERE x = 'x' AND x LIKE 'x' ORDER BY x ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x LIKE 'x' ;\n \nSELECT ( SELECT x FROM x LIMIT 1 ) x , * FROM x WHERE x LIKE 'x' ;\n \nSELECT * FROM x ORDER BY x , x ;\n \nUPDATE x SET x = 'x' WHERE x = 1 AND x ( x ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE x ( x ) ;\n \nCREATE TABLE x ( x INT , x TEXT , x TEXT ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) ;\n \nSELECT * FROM x WHERE x ( x ) ORDER BY x ASC ;\n \nSELECT * FROM x WHERE x ( 'x' ) ;\n \nSELECT * FROM x JOIN x ON ( x = x ) WHERE x ( x ) ;\n \nCREATE TABLE x ( x INTEGER , x TEXT , x TEXT ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nSELECT x , x , x FROM x JOIN x ON x = x ;\n \nINSERT INTO x VALUES ( 1 , x ( 'x' ) ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) ;\n \nSELECT x , x FROM x WHERE x = 'x' ORDER BY 1 ;\n \nSELECT x ( * ) = 1 FROM x WHERE x = ( SELECT x FROM x WHERE x = 'x' ) AND x = ( SELECT x FROM x WHERE x = 'x' ) ;\n \nINSERT INTO x SELECT x / 1 FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT 1 , 1 , 1 ;\n \nINSERT INTO x SELECT * FROM ( SELECT x , x FROM x ORDER BY x ) x ;\n \nINSERT INTO x SELECT 1 FROM x ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\n \nCREATE TABLE x ( x INT NOT NULL , x INT NOT NULL , x INT NOT NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) ;\n \nSELECT x ( x ) , x ( x ) , x ( x ) FROM x ORDER BY x ;\n \nSELECT x ( ) >= x ( x ( ) ) ;\n \nSELECT x ( x ( ) , x ( ) ) ;\n \nSELECT x ( ) IS NULL ;\n \nSELECT x , x ( x ) AS x FROM x ;\n \nINSERT INTO x SELECT ARRAY [ 1 , 1 , x ] FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) ;\n \nSELECT x , x ( x ) , x ( x ) , x ( x ) , x ( x ) , x ( x ) , x ( x ) FROM x ;\n \nSELECT x , x , x FROM x ORDER BY x ( x ) , x ;\n \nSELECT x , x ( x , 'x' ) FROM x ORDER BY 1 ;\n \nSELECT x , x ( x ( x , 'x' ) ) , x ( x ( x , 'x' ) ) FROM x ;\n \nSELECT x , x , x ( x , 'x' ) FROM x ORDER BY 1 ;\n \nSELECT x , x , x , x ( x ( x , 'x' ) ) , x ( x ( x , 'x' ) ) FROM x ;\n \nSELECT x , CASE x WHEN 'x' THEN 'x' ELSE x END FROM x ORDER BY 1 ;\n \nSELECT x , x FROM x UNION SELECT x , x FROM x ORDER BY 1 ;\n \nSELECT x , x FROM x WHERE x < 1 INTERSECT SELECT x , x FROM x WHERE x > 1 ORDER BY 1 ;\n \nSELECT x , x FROM x EXCEPT SELECT x , x FROM x WHERE x < 1 ORDER BY 1 ;\n \nSELECT * FROM x WHERE ( x , x ) NOT IN ( SELECT x , x FROM x ) ;\n \nSELECT x , CAST ( x AS VARCHAR ) FROM x ORDER BY 1 ;\n \nSELECT x , x ( x ) FROM x ORDER BY 1 ;\n \nINSERT INTO x VALUES ( 1 , 1.000000 ) ;\n \nSELECT CASE WHEN 1 = 1 THEN 1 / 1 WHEN 1 = 1 THEN 1 ELSE 1 / 1 END ;\n \nSELECT CASE 1 WHEN 1 THEN 1 / 1 WHEN 1 THEN 1 ELSE 1 / 1 END ;\n \nSELECT CASE WHEN x > 1 THEN 1 / 1 ELSE 1 END FROM x ;\n \nSELECT CASE 'x' WHEN 'x' THEN 1 ELSE 1 END ;\n \nSELECT * FROM x WHERE x ( x , x ) = 1 ;\n \nUPDATE x SET x = CASE WHEN x >= 1 THEN ( - x ) ELSE ( 1 * x ) END ;\n \nUPDATE x SET x = CASE WHEN x >= 1 THEN ( 1 * x ) ELSE ( 1 * x ) END ;\n \nSELECT CASE ( CASE x ( 'x' ) WHEN 'x' THEN 'x' WHEN x ( NULL ) THEN 'x' WHEN 'x' THEN 'x' END ) WHEN 'x' THEN 'x' WHEN 'x' THEN 'x' ELSE 'x' END ;\n \nSELECT x , x FROM x WHERE x LIKE 'x' ORDER BY x , x ;\n \nSELECT x , x NOT LIKE 'x' AS x FROM x WHERE x LIKE 'x' ORDER BY x ;\n \nINSERT INTO x ( x , x ) VALUES ( x ( 1 , 1 ) , x ( 'x' , 1 ) ) ;\n \nSELECT x ( 1 , 1 , 1 , 1 , 1 , 1.000000 ) ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 'x' , x ( 'x' , 1 ) ) ;\n \nCREATE INDEX x ON x ( ( - x ) , x ) ;\n \nCREATE INDEX x ON x ( ( x ( x ) ) ) ;\n \nSELECT * FROM x WHERE x ( x ) = 'x' ;\n \nSELECT * FROM x WHERE - x = 1 ORDER BY - x , x ;\n \nINSERT INTO x VALUES ( x ( x ( 1 , 1 ) , x ( 1 , 1 ) ) ) ;\n \nSELECT x ( NULL , 'x' ) ;\n \nINSERT INTO x SELECT ( x - 1 ) * 1 + x , x ( x ( x ( x * 1 , x * 1 ) , 1 + ( x + x ) % 1 ) ) FROM x ( 1 , 1 ) x , x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1 , NULL ) , ( 1 , NULL ) , ( 1 , NULL ) ;\n \nINSERT INTO x VALUES ( x , x ) ;\n \nSELECT * FROM x EXCEPT SELECT * FROM x ;\n \nINSERT INTO x SELECT x , 1 , 'x' FROM x ( 1 , 1 ) x ;\n \nSELECT x FROM x WHERE x > 1 ;\n \nCREATE TEMPORARY TABLE x ( x INT ) ;\n \nSELECT x FROM x WHERE x IN ( 1 , 1 , 1 ) ;\n \nSELECT x FROM x WHERE x BETWEEN 1 AND 1 ;\n \nUPDATE x SET x = x ( ) + 1 WHERE x > 1 ;\n \nINSERT INTO x VALUES ( x ( 1 ) ) ;\n \nSELECT x ( 'x' , FALSE , FALSE , 'x' ) ;\n \nSELECT x ( 'x' , TRUE , FALSE , 'x' ) ;\n \nSELECT x ( 'x' , FALSE , TRUE , 'x' ) ;\n \nSELECT x ( 'x' , TRUE , TRUE , 'x' ) ;\n \nSELECT x ( 1 , 1 ) , x ( 1 , 1 ) ;\n \nSELECT x ( 1 , x ( 1 , 1 ) ) ;\n \nSELECT * FROM x ( 1 , x ( 1 , 1 ) ) ;\n \nSELECT x ( x ( 1 , 1 ) , x ( 1 , 1 ) ) ;\n \nSELECT x ( 1 , x ( 1 , 1 ) ) , x ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) , ( 1 , 'x' , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , 1 ] ) FROM x WHERE FALSE ;\n \nSELECT x , x ( 1 , 1 ) , x ( * ) FROM x GROUP BY 1 HAVING x ( * ) > 1 ;\n \nSELECT x , x ( 1 , 1 ) , x ( * ) FROM x GROUP BY 1 , 1 HAVING x ( * ) > 1 ;\n \nSELECT x , CASE WHEN x > 1 THEN x ( 1 , 1 ) ELSE 1 END FROM x ;\n \nSELECT x , x ( x ( 1 , 1 ) , 1 ) FROM x ;\n \nSELECT x ( x ( 1 , 1 ) ) FROM x ;\n \nSELECT x ( x ( 1 , 1 ) ) OVER ( ) FROM x ;\n \nSELECT x , x ( x ) OVER ( ) , x ( * ) OVER ( ) , x ( 1 , 1 ) FROM x ;\n \nSELECT x ( x ( * ) ) OVER ( PARTITION BY x ( 1 , 1 ) ORDER BY x ( 1 , 1 ) ) , x ( 1 , 1 ) x FROM x GROUP BY x ;\n \nSELECT x , x x , x ( 1 , 1 ) x , x ( * ) FROM x GROUP BY x ( x , x ) ;\n \nSELECT x , x x , x ( 1 , 1 ) x , x ( * ) FROM x GROUP BY x ( x , x ) ORDER BY x ;\n \nSELECT x , x x , x ( 1 , 1 ) x , x ( * ) FROM x GROUP BY x ( x , x , x ) ;\n \nSELECT x , x x , x ( 1 , 1 ) x , x ( * ) FROM x GROUP BY x ( x , x , x ) ORDER BY x ;\n \nSELECT 'x' AS x , x ( 1 , 1 ) AS x FROM x ORDER BY 1 ;\n \nUPDATE x SET x = x ( 1 , 1 ) ;\n \nSELECT x ( x ( 1 , 1 ) , 1 ) ;\n \nSELECT * FROM x ( x ( 1 , 1 ) , 1 ) ;\n \nSELECT 1 LIMIT x ( 1 , 1 ) ;\n \nSELECT x ( 1 , 1 ) AS x , x ( 1 , 1 ) + 1 AS x ;\n \nSELECT x ( 1 , 1 ) + 1 ORDER BY x ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( x , x , x , x [ 1 ] , x , x ) ;\n \nSELECT x = 'x' ;\n \nSELECT x ( FALSE ) ;\n \nSELECT x ( 'x' ) , x ( 'x' ) ;\n \nSELECT x ( 1 ) , x ( 'x' ) ;\n \nSELECT x ( 'x' , FALSE ) ;\n \nSELECT DISTINCT x FROM x ORDER BY 1 ;\n \nSELECT x ( * ) FROM ( SELECT DISTINCT x , x , x FROM x ) x ;\n \nSELECT x [ 1 ] , x [ 1 ] [ 1 ] [ 1 ] , x [ 1 ] , x [ 1 ] [ 1 ] , x [ 1 ] FROM x ;\n \nSELECT x ( x ) AS x , x ( x ) AS x , x ( x ) AS x FROM x ;\n \nSELECT x FROM x WHERE x [ 1 ] IS NULL ;\n \nINSERT INTO x VALUES ( ARRAY [ 1 , 1 , NULL , 1 ] , ARRAY [ 'x' , 'x' , NULL , 'x' ] ) ;\n \nSELECT ARRAY [ ARRAY [ 'x' ] , ARRAY [ 'x' ] ] ;\n \nSELECT ARRAY [ 1 , NULL , 1 ] ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , 1 ] , 1 ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' ] , 'x' ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' ] , NULL ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' , NULL , 'x' , 'x' ] , NULL ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' , NULL , 'x' , 'x' ] , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] , 1 ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] , NULL ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , NULL , 1 , 1 , 1 , 1 , 1 , NULL , 1 , 1 ] , NULL ) ;\n \nSELECT 1 = x ( 'x' ) ;\n \nSELECT 1.000000 = x ( ARRAY [ 1 , 1 , 1 ] ) ;\n \nSELECT 1 * x ( 'x' ) ;\n \nSELECT 1 * x ( 1 ) ;\n \nSELECT * FROM x WHERE x > 'x' AND x <= 'x' ;\n \nSELECT * FROM x WHERE x >= 'x' AND x < 'x' ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , 'x' , 'x' ) ;\n \nSELECT x ( x ) , x ( x ) , x ( x ) , x ( x ) , x ( x ) , x ( x ) FROM x ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 'x' , 'x' , NULL ) ;\n \nSELECT * FROM x ( ARRAY [ 1 , 1 , 1 ] ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 ] , ARRAY [ 1 , 1 ] ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 ] ) ;\n \nSELECT x , x = 'x' AS x , x ( x ) FROM ( SELECT x ( 1 , ARRAY [ 1 ] ) AS x ) x ;\n \nSELECT x , x = 'x' AS x , x ( x ) FROM ( SELECT x ( 1 , 'x' ) AS x ) x ;\n \nSELECT x , x = 'x' AS x , x ( x ) FROM ( SELECT x ( 1 , 'x' , 'x' ) AS x ) x ;\n \nSELECT x ( 1 , NULL , ARRAY [ 1 , 1 ] ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 ] , NULL ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 ] , 'x' ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 ] , ARRAY [ 1 , 1 , 1 ] ) ;\n \nSELECT x ( 1 , ARRAY [ 1 , 1 , NULL ] ) ;\n \nSELECT x ( NULL , 'x' ) IS NULL ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , NULL , 1 ] , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , NULL , 1 ] , 'x' , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , NULL , 1 ] , NULL ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 , NULL , 1 ] , 'x' , NULL ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 ] , 1 ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 ] ) ;\n \nSELECT x ( x ) FROM ( SELECT x FROM x WHERE x < 1 ORDER BY x ) x ;\n \nSELECT x ( x ( x , 1 ) ) FROM ( SELECT x FROM x WHERE x < 1 ORDER BY x ) x ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , NULL , 1 , NULL , NULL , 1 , 1 ] ) ;\n \nSELECT x ( x ( ARRAY [ 1 , 1 , NULL , 1 ] ) ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 ] , 1 ) ;\n \nSELECT x ( ARRAY [ 1 , NULL , NULL , 1 ] , NULL ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' , 'x' ] , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 ] , 1 , 1 ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , 1 , 1 ] , 1 , NULL ) ;\n \nSELECT x ( ARRAY [ 1 , 1 , NULL , 1 , NULL ] , NULL , 1 ) ;\n \nSELECT x ( ARRAY [ 'x' , 'x' , 'x' , 'x' ] , 'x' , 'x' ) ;\n \nSELECT x ( ARRAY [ 1 , NULL , 1 ] , NULL , NULL ) ;\n \nSELECT x ( ARRAY [ 'x' , NULL , 'x' ] , NULL , 'x' ) ;\n \nSELECT x ( 1 , ARRAY [ 1 ] ) ;\n \nSELECT x ( 1 , ARRAY [ ARRAY [ 1 , 1 ] , ARRAY [ 1 , 1 ] ] ) ;\n \nCREATE TABLE x ( x VARCHAR ( 1 ) ) ;\n \nSELECT x , x , x , x , x , x , x , x , x , x , x FROM x WHERE x = 'x' ;\n \nSELECT x , x , x FROM x WHERE x NOT IN ( 'x' , 'x' , 'x' ) ;\n \nSELECT x ( x ( x ) ) , x ( x ) FROM x x ;\n \nSELECT x ( ) ORDER BY 1 ;\n \nSELECT x ( x ) FROM x GROUP BY x ( x ) ;\n \nSELECT x ( * ) FROM x WHERE ( x , x ) NOT IN ( SELECT x , x FROM x WHERE x > 1 ) ;\n \nSELECT x ( ( x ) ) FROM x WHERE x > 1 ;\n \nSELECT x ( * ) FROM x WHERE x > 1 ;\n \nINSERT INTO x SELECT x , 'x' FROM x ( 1 , 1 ) x ;\n \nSELECT x ( * ) FROM x GROUP BY x ;\n \nSELECT x ( * ) , x ( 1 , 1 ) FROM x GROUP BY x ;\n \nSELECT x FROM x ORDER BY x LIMIT 1 ;\n \nSELECT x ( x ) FROM ( SELECT x ( 1 , 1 ) x ) x ORDER BY x ;\n \nINSERT INTO x VALUES ( 'x' , ARRAY [ 1 , 1 ] , 'x' ) ;\n \nINSERT INTO x ( x , x , x , x ) SELECT x , x , x , x FROM x WHERE ( x < 1 OR x > 1 ) AND x % 1 = 1 AND x IS NOT NULL ;\n \nSELECT x , x FROM x ORDER BY x NULLS FIRST LIMIT 1 ;\n \nSELECT x , x , x FROM x ORDER BY x LIMIT 1 ;\n \nINSERT INTO x VALUES ( x ( 1.000000 , 1.000000 ) ) ;\n \nINSERT INTO x VALUES ( x ( 1.000000 , 1.000000 , 'x' ) ) ;\n \nSELECT x , x ( x ) , x ( x ) , x ( x ) FROM x ;\n \nSELECT x , x ( x ) , x ( x ) , x ( x ) , x ( x ) FROM x ;\n \nSELECT * FROM x WHERE x ( x , x ( 1.000000 , 1.000000 ) ) ;\n \nSELECT * FROM x WHERE x ( x ( 1 x , 1.000000 ) , x ) ;\n \nSELECT * FROM x WHERE x < 'x' ;\n \nSELECT * FROM x WHERE x < x ( 1.000000 , 1.000000 , 'x' ) ;\n \nSELECT * FROM x WHERE x <= 'x' ;\n \nSELECT * FROM x WHERE x >= 'x' ;\n \nSELECT * FROM x WHERE x > 'x' ;\n \nSELECT * FROM x WHERE x > x ( 1.000000 , 1.000000 , 'x' ) ;\n \nSELECT x ( 1.000000 , 1.000000 ) ;\n \nSELECT x ( x ( 1.000000 , 1.000000 ) , x ( 1.000000 , 1.000000 ) ) ;\n \nSELECT x ( x ( 1.000000 , 1.000000 ) , x ( 1.000000 , NULL ) ) ;\n \nSELECT x ( x ( 1.000000 , 1.000000 , 'x' ) , x ( 1.000000 , 1.000000 , 'x' ) ) ;\n \nSELECT x ( 1.000000 , 1.000000 ) - x ( 1.000000 , 1.000000 ) ;\n \nSELECT x ( 1.000000 , 1.000000 , 'x' ) - x ( 1.000000 , 1.000000 ) ;\n \nSELECT x ( 1.000000 , 1.000000 ) < x ( 1.000000 , 1.000000 ) ;\n \nSELECT x ( 1.000000 , 1.000000 ) + x ( 1.000000 , 1.000000 ) ;\n \nSELECT x ( 1.000000 , 1.000000 ) * x ( 1.000000 , 1.000000 ) ;\n \nSELECT * FROM x WHERE x = x ( 1.000000 , 1.000000 ) ;\n \nSELECT * FROM x NATURAL JOIN x ORDER BY x ;\n \nSELECT x ( 1 , 1 , 'x' ) ;\n \nINSERT INTO x SELECT x ( x , x + 1 ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT x ( NULL , x * 1 , 'x' ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x SELECT x ( x * 1 , NULL , 'x' ) FROM x ( 1 , 1 ) x ;\n \nSELECT x ( * ) FROM x WHERE x = x ( 1 , 1 ) ;\n \nINSERT INTO x SELECT x FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( x ( 1 , 1 , 'x' ) , x ( 1 , 1 , 'x' ) , 'x' ) ;\n \nINSERT INTO x VALUES ( x ( 1.000000 , 'x' ) , 1 ) ;\n \nSELECT x ( ARRAY [ 1 , 1 ] , x ( 1 , 1 ) ) ;\n \nSELECT x ( x ( 1 , 1 ) ) ;\n \nSELECT x ( x ( 1.000000 , 1.000000 ) ) ;\n \nSELECT x ( x ( 1 , 1 ) , ARRAY [ 1 , 1 ] ) ;\n \nINSERT INTO x VALUES ( 1 , ARRAY [ x ( 1 , 1 ) , x ( 1 , 1 ) ] ) ;\n \nSELECT x ( ARRAY [ 1 , 1 ] , ARRAY [ 1 , 1 ] ) ;\n \nSELECT * FROM x ( x ( 1 , 1 ) ) ;\n \nINSERT INTO x ( x , x , x ) SELECT x , x , x FROM x ( 1 , 1 ) x ;\n \nSELECT x , x FROM x JOIN x ON x = x WHERE x LIKE 'x' ORDER BY x ;\n \nSELECT x , x FROM x WHERE x LIKE 'x' ORDER BY x ;\n \nCREATE TABLE x ( x INT , x INT , x INT , x INT , x INT , x INT ) ;\n \nCREATE TABLE x ( x INT NOT NULL , x INT PRIMARY KEY ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 ^ 1 , 'x' ) ;\n \nINSERT INTO x SELECT 1 ^ x , x ( 'x' , x ) FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) , ( 'x' , 1 ) ;\n \nSELECT x , x FROM x GROUP BY x , x HAVING x ( * ) = 1 ORDER BY x , x ;\n \nSELECT x , x FROM x GROUP BY x , x HAVING x = 1 ORDER BY x , x ;\n \nSELECT x ( x ) , x ( x ) FROM x GROUP BY x ( x ) HAVING x ( * ) > 1 OR x ( x ) = x ( x ) ORDER BY x ( x ) ;\n \nSELECT x , x ( x ) FROM x GROUP BY x HAVING x ( * ) > 1 OR x ( x ) = x ( x ) ORDER BY x ;\n \nCREATE TABLE x ( x CHAR ) ;\n \nINSERT INTO x ( x ) SELECT x ( * ) FROM x WHERE x ( ) < 1.000000 / 1 ;\n \nSELECT x , x ( x ) FROM x GROUP BY x HAVING x ( x ) > 1 ;\n \nCREATE TABLE x ( x NUMERIC ) ;\n \nSELECT x ( 1.000000 , 1.000000 , 1.000000 , 1 ) ;\n \nSELECT x ( 'x' , 1.000000 , 1.000000 , 1 ) ;\n \nSELECT x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1.000000 , 1.000000 , 1 ) AS x , x ( x , 1.000000 , 1.000000 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x , x ( x , 1 , 1 , 1 ) AS x FROM x ;\n \nSELECT 'x' AS x , x ( 'x' , 'x' ) ;\n \nSELECT 1 * 1 ;\n \nSELECT x ( 1.000000 , 1 ) ;\n \nSELECT 1.000000 / 1 ;\n \nSELECT 1 % 1 ;\n \nSELECT x ( 1 , 1 ) * 1 + 1 % 1 ;\n \nSELECT 1.000000 ^ 1 AS x ;\n \nSELECT 1.000000 ^ 1 ;\n \nSELECT 1.000000 ^ ( 1 ) ;\n \nSELECT 1.000000 ^ 1.000000 ;\n \nSELECT ( 1.000000 ) ^ 1.000000 ;\n \nSELECT 1.000000 ^ ( 1.000000 ) ;\n \nSELECT x ( 1.000000 x ) ;\n \nSELECT x ( 1.000000 , 1.000000 x ) ;\n \nSELECT x , x , x FROM x ORDER BY x ;\n \nCREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER ) ;\n \nSELECT x ( x ) FROM x WHERE x = 'x' ;\n \nINSERT INTO x SELECT x , x % 1 FROM x ( 1 , 1 ) x ;\n \nSELECT x ( x [ 1 ] ) , x ( x [ 1 ] ) FROM x ( 'x' ) AS x ;\n \nINSERT INTO x ( x , x ) SELECT x , x FROM x ;\n \nSELECT * FROM x WHERE x ISNULL ;\n \nUPDATE x SET x = x + 1 WHERE x ISNULL ;\n \nUPDATE x SET x = 1 WHERE x < 1 ;\n \nUPDATE x SET x = x + 1 WHERE x > 1 ;\n \nUPDATE x SET x = 'x' , x = 'x' WHERE x = 'x' ;\n \nUPDATE x SET x = x + 'x' ;\n \nINSERT INTO x SELECT * FROM x WHERE x < 1 ;\n \nINSERT INTO x SELECT x + 1 , x FROM x WHERE x IN ( 1 , 1 , 1 ) ;\n \nCREATE VIEW x AS SELECT x , x FROM x WHERE x ;\n \nCREATE VIEW x AS SELECT x , x , x ( x ) AS x FROM x ;\n \nINSERT INTO x SELECT * FROM x WHERE 1 > x ;\n \nINSERT INTO x SELECT * FROM x WHERE x > 1 AND x = 1 ;\n \nCREATE TABLE x ( x TEXT , x CHAR ( 1 ) , x FLOAT ) ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x FLOAT ) ;\n \nINSERT INTO x VALUES ( 'x' , 1.000000 ) ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 1.000000 ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , 1.000000 , 1.000000 , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , 1.000000 , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , 1 , 'x' ) ;\n \nSELECT * FROM x WHERE x >= 1 ORDER BY 1 ;\n \nCREATE TABLE x ( x CHAR ( 1 ) , x INTEGER ) ;\n \nCREATE VIEW x AS SELECT * FROM x WHERE NOT EXISTS ( SELECT x FROM x WHERE x = x ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , 1.000000 , 'x' , 1.000000 ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , 1.000000 , 'x' , 1.000000 ) ON CONFLICT DO NOTHING ;\n \nINSERT INTO x VALUES ( 1 , 1 , 1 , 'x' ) ON CONFLICT DO NOTHING ;\n \nCREATE VIEW x AS SELECT * FROM x ORDER BY x ;\n \nINSERT INTO x SELECT * FROM x ( 1 , 1 , 1 ) x ;\n \nSELECT * FROM x x ;\n \nUPDATE x SET x = x / 1 ;\n \nSELECT x , x , x FROM x WHERE x = 'x' ;\n \nSELECT * FROM x WHERE x IN ( 'x' , 'x' , 'x' ) ORDER BY x ;\n \nCREATE UNIQUE INDEX x ON x ( ( x + 1 ) ) ;\n \nCREATE UNIQUE INDEX x ON x ( ( x + 1 + 1 ) ) ;\n \nSELECT x ( 1 , 1 , 1 , 1 , 1 , 1.000000 , 'x' ) ;\n \nSELECT x ( 1 , 1 , 1 , 1 , 1 , 1 , 'x' ) ;\n \nCREATE TABLE x ( x INT NOT NULL PRIMARY KEY ) ;\n \nINSERT INTO x SELECT * FROM x ( 1 , 1 ) x ;\n \nSELECT x , x FROM x WHERE x = 1 LIMIT 1 ;\n \nSELECT x , x FROM x WHERE x = 'x' LIMIT 1 ;\n \nSELECT * FROM x ORDER BY x , x , x LIMIT 1 ;\n \nSELECT * FROM x WHERE x > 1 ORDER BY x , x , x LIMIT 1 ;\n \nSELECT * FROM x WHERE x LIKE 'x' ORDER BY x ;\n \nSELECT x FROM x WHERE x = 1 ;\n \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 , NULL ) ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nSELECT x ( 'x' , 'x' ) AS x ;\n \nSELECT x FROM x WHERE x LIKE 'x' ORDER BY 1 ;\n \nSELECT x FROM x UNION SELECT x FROM x ORDER BY x ;\n \nSELECT x FROM x INTERSECT SELECT x FROM x ;\n \nSELECT x FROM x EXCEPT SELECT x FROM x ;\n \nSELECT DISTINCT x FROM x ORDER BY x ;\n \nSELECT x , x ( * ) FROM x GROUP BY x ORDER BY x ;\n \nSELECT x , x ( ) OVER ( ORDER BY x ) , x ( ) OVER ( ORDER BY x ) FROM x ORDER BY x ;\n \nSELECT x FROM x INTERSECT SELECT x FROM x ORDER BY x ;\n \nSELECT ( SELECT x ( * ) FROM x ) = ( SELECT x ( * ) FROM x ) ;\n \nCREATE UNIQUE INDEX x ON x ( x , x , ( 1 ) ) ;\n \nSELECT * FROM x ( 'x' ) ORDER BY x DESC , x DESC , x LIMIT 1 ;\n \nSELECT * FROM x ( 'x' , 'x' ) ORDER BY x DESC , x DESC , x ;\n \nSELECT x ( x ( 'x' , 'x' ) ) ;\n \nSELECT x ( x ( x ( 'x' ) ) , x ( 'x' ) ) ;\n \nUPDATE x SET x = x ( 'x' , x ) ;\n \nSELECT x ( x ( 'x' , 'x' , 'x' ) , 'x' , 'x' ) ;\n \nSELECT x ( x ( 'x' ) , x ( 'x' ) , x ( 'x' ) ) ;\n \nSELECT x ( x , 'x' ) FROM x ( 'x' , 'x' ) AS x ;\n \nSELECT x ( x ( 'x' , 'x' ) , 'x' , 'x' ) ;\n \nUPDATE x SET x = NULL WHERE x = 'x' ;\n \nINSERT INTO x VALUES ( x ( 'x' ) ) ;\n \nINSERT INTO x SELECT 1 FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 1.000000 , 1 ) ;\n \nSELECT 'x' AS x ;\n \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' , 'x' , 'x' ) ;\n \nUPDATE x SET x = 'x' WHERE x IS NOT NULL ;\n \nCREATE TABLE x AS SELECT x ( 1 , 1 ) AS x , 'x' ;\n \nINSERT INTO x SELECT 1 AS x , 'x' FROM x ( 1 , 1 ) ;\n \nUPDATE x SET x = 1 , x = x ( 'x' ) / 1 WHERE x = 'x' ;\n \nCREATE TABLE x AS SELECT x ( 1 , 1 ) AS x , x ( 'x' , 1 , 'x' ) AS x ;\n \nSELECT x + 'x' FROM x ;\n \nSELECT x - 'x' FROM x ;\n \nSELECT x * 1 FROM x ;\n \nSELECT 1 * x FROM x ;\n \nSELECT x / 1 FROM x ;\n \nSELECT x = 'x' FROM x ;\n \nSELECT x != 'x' FROM x ;\n \nSELECT x <= 'x' FROM x ;\n \nSELECT x >= 'x' FROM x ;\n \nSELECT x < 'x' FROM x ;\n \nSELECT x > 'x' FROM x ;\n \nSELECT x ( x + 'x' ) FROM x ;\n \nWITH x ( x , x ) AS ( SELECT 1 , 1 ) SELECT * FROM x , x AS x ;\n \nSELECT x ( * ) FROM ( WITH x ( x ) AS ( SELECT x ( ) FROM x ( 1 , 1 ) ) SELECT * FROM x UNION SELECT * FROM x ) x ;\n \nWITH RECURSIVE x ( x ) AS ( SELECT 1 UNION SELECT 1 - x FROM x ) SELECT * FROM x ;\n \nWITH RECURSIVE x ( x ) AS ( SELECT 1 UNION SELECT x + 1 FROM x ) SELECT * FROM x LIMIT 1 ;\n \nWITH x ( x , x ) AS ( SELECT x , x ( x ) FROM x GROUP BY x ) SELECT x ( * ) FROM x WHERE x > ( SELECT x ( x ) / 1 FROM x x ) ;\n \nINSERT INTO x VALUES ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ;\n \nWITH RECURSIVE x ( x ) AS ( SELECT 1 INTERSECT SELECT x + 1 FROM x ) SELECT * FROM x ;\n \nWITH RECURSIVE x ( x ) AS ( SELECT 1 EXCEPT SELECT x + 1 FROM x ) SELECT * FROM x ;\n \nWITH RECURSIVE x ( x ) AS ( SELECT x FROM x ) SELECT * FROM x ;\n \nWITH x ( x ) AS ( SELECT 1 ) SELECT * FROM ( ( SELECT x FROM x ) ) x ;\n \nWITH x AS ( SELECT 1 ) INSERT INTO x VALUES ( 1 ) ;\n \nWITH x AS ( SELECT 1 ) INSERT INTO x SELECT * FROM x ;\n \nSELECT * FROM x ( ARRAY [ 1 , 1 ] , ARRAY [ 'x' , 'x' ] , ARRAY [ 1.000000 ] ) ;\n \nCREATE VIEW x AS SELECT * FROM x ( 1 ) ;\n \nSELECT x ( 'x' , 1 , FALSE ) , x ( 'x' , 1 , FALSE ) ;\n \nSELECT x , x ( x , x / 1 ) FROM x ;\n \nSELECT x ( 'x' , 'x' ) LIMIT 1 ;\n \nSELECT x ( ARRAY [ 'x' , 'x' ] ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' , TRUE , 1 , TRUE ) ;\n \nINSERT INTO x VALUES ( 1 , ARRAY [ 1 ] , 'x' ) ;\n \nSELECT x , x ( x ) FROM x GROUP BY x ORDER BY x ;\n \nSELECT x ( x , x + 1 ) FROM x ;\n \nSELECT x , x ( x > 1 , x ( x ) , x ( x + 1 ) ) FROM x ;\n \nSELECT x , x ( x > 1 , x , x + 1 ) FROM x ;\n \nSELECT x ( x ) FROM x ( 1 , 1 ) x ;\n \nSELECT x ( x ) OVER ( ORDER BY x ) FROM x ( 1 , 1 ) x ;\n \nSELECT x ( 1 , 1 , 1 , 1 ) ;\n \nSELECT x ( 'x' , 1 , 1 , 1 , 1 , 1 ) ;\n \nSELECT * FROM x ( 'x' , 1 ) ;\n \nSELECT x ( 'x' , ARRAY [ 'x' , 'x' ] ) ;\n \nSELECT x ( 'x' ) AS x ;\n \nSELECT x ( 'x' , 'x' , 'x' , FALSE ) ;\n \nSELECT x ( 'x' , 'x' , 'x' , TRUE ) ;\n \nUPDATE x SET x = 1 , x = 'x' WHERE x = 1 AND x = 'x' ;\n \nSELECT * FROM x WHERE x <= 1 AND x > 1 AND x = 1 ;\n \nCREATE TABLE x ( x INT UNIQUE , x INT ) ;\n \nUPDATE x SET x = x + 1 WHERE x < 1 ;\n \nUPDATE x SET x = 1 , x = 1 ;\n \nCREATE TABLE x ( x BOOLEAN NOT NULL ) ;\n \nINSERT INTO x VALUES ( TRUE ) ;\n \nUPDATE x SET x = TRUE ;\n \nUPDATE x SET x = FALSE ;\n \nCREATE TABLE x ( x INT , x VARCHAR ) ;\n \nINSERT INTO x SELECT x , x ( 'x' , 1 ) , 'x' FROM x ( 1 , 1 ) x ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 1 ) , ( 'x' , 'x' , NULL ) ;\n \nCREATE VIEW x AS SELECT x , x FROM x ;\n \nUPDATE x SET x = 1 WHERE FALSE ;\n \nINSERT INTO x VALUES ( 1 , 'x' , 'x' , 'x' , 'x' , 1 ) ;\n \nSELECT * FROM x ;\nSELECT * FROM x ;\n \nINSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\n \nINSERT INTO x VALUES ( 'x' , 1 , 'x' ) ;\n \nINSERT INTO x VALUES ( 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\n \nINSERT INTO x VALUES ( 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\n \nINSERT INTO x ( x ) SELECT x ( x ) FROM x ;\n \nSELECT 'x' AS x , x FROM x ORDER BY x ;\n \nINSERT INTO x ( x ) SELECT x ( x ) FROM x WHERE ( x > 1 ) AND ( x < 1 ) ;\n \nINSERT INTO x ( x ) SELECT x ( x ) FROM x WHERE ( x >= 1 ) AND ( x <= 1 ) ;\n \nSELECT DISTINCT x AS x FROM x ORDER BY 1 ;\n \nSELECT x AS x , x ( x ) AS x , x ( x ) AS x FROM x GROUP BY x ORDER BY x , x , x ;\n \nSELECT x AS x , ( x ( x ) + 1 ) AS x , ( x ( x ) - 1 ) AS x FROM x GROUP BY x ORDER BY x , x ;\n \nSELECT x AS x , x ( x ) + x ( x ) AS x , x ( x ) - 1 AS x FROM x GROUP BY x ORDER BY x , x ;\n \n"
  },
  {
    "path": "data/fuzz_root/mysql_init_lib/strip_trigger_collect",
    "content": "CREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW ALTER TABLE x RENAME TO x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( * ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE INDEX x ON x ( x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x , x AS x FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) FROM x WHERE x != x ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( - 1.000000 >= x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x , x DESC , x ASC , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x = 1 OR x > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 , 1 , x ( x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x ( DISTINCT 'x' ) AS x FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x + 1 = x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) OVER ( ) FROM x AS x ) AND x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) IS NOT NULL , x , x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( DISTINCT x ) ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE UNIQUE UNIQUE PRIMARY KEY UNIQUE NOT NULL , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ( x ) ) FROM x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x + x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x FROM x EXCEPT SELECT x , x FROM x WHERE x != 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) IN ( SELECT 1 INTERSECT SELECT 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x ( ) OVER x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW ALTER TABLE x RENAME x TO x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY x DESC , x ASC ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x = ( SELECT x ( x ) FROM x WHERE NULL = x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x AS x NATURAL JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( x ( x , 1 , 1 ) ) , x = x , x = x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x = x ( x ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) ISNULL , x ( x ) , x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW DROP TABLE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' , x + 1 , x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x = 1 OR x = 1 ) ) OR ( 1 = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( DISTINCT x / 1 ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 AS x , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( x ) FROM x WHERE x = ( x % 1 ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x ) WHERE x LIKE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 , 'x' ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT NULL FROM x GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ) FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) ISNULL , x ( 'x' ) , 1 FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( ( x OR NOT x ) BETWEEN 1 AND 1 ) + x ISNULL FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x FROM x WHERE x > 1 OR x = x AND x = 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x INTERSECT SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE ( SELECT x FROM x AS x GROUP BY x ) LIKE 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x FLOAT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x , x DESC , x , x LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( 1 ) , x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x GROUP BY x UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 'x' , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( x * 1 ) > x FROM x ON x ( x ) WHERE x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x FROM x , x WHERE x = 1 LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ( x ( x ( ) ISNULL ) AND x ) , x ( x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT 1 AS x , 1 , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x , x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE UNIQUE INDEX x ON x ( x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x ORDER BY CAST ( x AS TEXT ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x NOT LIKE x ( x ) IS NULL + x IS NOT NULL ) >= x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' AS x , * FROM x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x AS x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT x AS x WHERE 1.000000 NOT LIKE 'x' > x ) FROM x ORDER BY x ( x ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( x NOT IN ( 1 ) AND x IS NOT NULL NOT IN ( 1 ) ) , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x / 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x < 'x' ORDER BY x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' , x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND x = x AND x = 1 AND x LIKE 'x' ) OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x NATURAL JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = x OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ) FROM x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x <= 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 ) WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( x = 1 OR x = 1 ) FROM x UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x GROUP BY 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE ( x BETWEEN 1 AND 1 ) + x AND ( x = 1 OR x = 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( ( SELECT x FROM x AS x GROUP BY x ) AND x ( x ) IS NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x NOT LIKE 'x' ) ISNULL , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , 1.000000 , 1 , x ) FROM x ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 , x = 1 + x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT x , 'x' FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( SELECT x ( x ) FROM x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x LIKE x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT x ( x > 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 'x' AS x , x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) / 1.000000 AS x , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x <= 'x' ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x AS x , x ( x ) OVER ( PARTITION BY x ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x = x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ( x ) , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x ) , 1 , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT DISTINCT x FROM x ORDER BY NULL LIMIT 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x / 1 ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x % 1 ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( DISTINCT 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 1 ) , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x , x DESC , x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x + 1 FROM x ORDER BY 1 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x UNION SELECT * FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x NOT LIKE - 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) , x ( ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR 'x' > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x ) , x FROM x WHERE x ISNULL GROUP BY x NOT LIKE x ( x ) ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( * ) , x ) FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT x ( * ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) , ( 'x' , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x WHERE x = x AND x = 1 ORDER BY x ( ) NULLS LAST LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 >= ( SELECT x ( * ) FROM x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x % 1 ) = 1 FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x FROM x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , NULL ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , 'x' FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) AS x FROM x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x CHAR ( 1 ) PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( ) , 1 , 1 , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( x * 1 + 1 , 1 ) , x + x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( x % 1 ) OVER ( ORDER BY x ) , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT 'x' FROM x GROUP BY x HAVING 1.000000 + 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , x ( x ) FROM x WHERE x IN ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x , x ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT x AS x FROM x AS x GROUP BY x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x ( * ) OVER ( ORDER BY x DESC , x ASC ) , x * x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) OVER ( ORDER BY x ) , 1 ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 + ( SELECT x FROM x AS x WHERE x = 'x' OR x = 'x' OR x = 'x' GROUP BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 ORDER BY x DESC , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) WHERE ( SELECT x , * FROM x WHERE x GROUP BY x ORDER BY x DESC NULLS FIRST ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( ( SELECT x FROM x AS x GROUP BY x ) AND x ( 1 = 1.000000 ) IS NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( x ( x ) = x OR x = 1 ) NOT LIKE 'x' FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x UNION SELECT * FROM x WHERE ( x ) <= 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( DISTINCT x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( DISTINCT x ) , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( NULL ) , ( NULL ) , ( 1 ) , ( NULL ) , ( NULL ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) GROUP BY 1 HAVING 1.000000 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x > 1 GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ( 1.000000 ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x AS x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( DISTINCT 'x' / 1 ) , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , CAST ( x AS TEXT ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( DISTINCT x ) , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x * x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x , x FROM x WHERE x < 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) , 1 , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( ) HAVING x ( ) OVER ( ) ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT x ( ) FROM x WHERE x = 'x' ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x ( x , 1 , 1 ) + 1.000000 DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x ) SELECT x FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x AS x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( ORDER BY x ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x IN ( 1 , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x < 1 ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ) INTERSECT SELECT 1 ORDER BY x ( ) OVER ( ) , 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE x != 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x WHERE x = x ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' AS x , 'x' , 'x' , 1 , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = CASE WHEN x = 1 THEN x ELSE x + 1 END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x WHERE x = 1 OR ( x = x AND x = 1 ) ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , NOT 1.000000 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) ) , x ( x ) , 'x' FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x <= 'x' ) FROM x UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) , x ( x ) OVER ( ORDER BY x DESC , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( * , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x INTERSECT SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT x ( 'x' + x ( DISTINCT x ( x ) ) ) FROM x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x + 1 , x ( 1 ) , x + 1 , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE ( SELECT x WHERE x = x GROUP BY x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1 ) , ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE ( x BETWEEN 1 AND 1 ) + x AND ( x = 1 OR x = ( x % 1 ) ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x <= 'x' ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x ( x , 1 ) OVER ( ORDER BY x ) + 1.000000 DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( x * 1 + 1 , 1 ) , x + 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( ) HAVING x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x ( x ) FROM x WHERE x = 'x' ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x , x AS x USING ( x , x ) , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * ( SELECT 1 ) + x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x WHERE ( ( x OR NOT x ) OR x = 1 ) NOT LIKE 'x' OR x > 1 AND NOT x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW DROP TRIGGER x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( x ) AS x FROM x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( ( SELECT x FROM x WHERE x ) AND 1 ) OR x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x AS x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE 'x' != 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE x IN ( 1 , 1 ) AND x IN ( 1 , 1 , NULL , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW DROP TRIGGER IF EXISTS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT 1 AS x , 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x GROUP BY NULL ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT CASE 1 WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) FROM x WHERE x > 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ) WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( ) , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT * AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 OR ( SELECT x FROM x AS x GROUP BY x + 1 , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x IN ( 1 , 1 ) AND x NOT IN ( 1 , 1 ) AND x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 OR ( x = 1 AND x = ( SELECT x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x ( x , x , 'x' >= x IS NOT NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE 1 = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE ( x ) GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x , x = x , x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( ( - 'x' >= x AND x = 1 ) ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( 1 ) , x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x WHERE x ( x ( x , x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x USING ( x , x ) NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( ) HAVING x ( ) ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x AS x , x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT NULL , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = 1 AND x IN ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) OVER ( ) FROM x AS x GROUP BY 1 HAVING 1.000000 ) AND x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x = 1 AND x >= 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x ( x ) <= 'x' = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY UNIQUE , x INT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( x ( x ) , x , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY 1.000000 DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT x ( 'x' ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1 , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x * x ) AS x , 1 , 1 AS x , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x JOIN x ON x = x USING ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x < x ( x , x ) IS NOT NULL AND x = 1 ) OR x = 1 ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x >= x ) FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x >= x ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 1.000000 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT CAST ( x ( x ) AS DOUBLE ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x NOT IN ( 1 ) ORDER BY x , x DESC , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( DISTINCT x ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1.000000 ) ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY CHECK ( x ( x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x = 1 OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 AS x ORDER BY 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x ( x ( x ) , x , 'x' >= x IS NOT NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT DISTINCT x FROM x ORDER BY x LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( ) , NULL , NULL , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x WHERE x IN ( 1 ) AND x IN ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1 ) , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , 1 , x ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x ( x , x , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( x = 1 OR x = 1 ) NOT LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( SELECT x FROM x ) , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x ON x ( x ) WHERE x = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( DISTINCT x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 ORDER BY x DESC , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 'x' ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 AS x , 1 , x ( ) ISNULL , 1 ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT x FROM x WHERE x OR x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 1.000000 , x = x , x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( ) , 1 , 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) FROM x AS x GROUP BY x ) AND x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE ( SELECT x FROM x AS x GROUP BY x ( ) , 1 , 1 , x , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x AS x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x <= 'x' ) FROM x UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , 1 + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x * 1 ) , x ( 1 ) , x ( 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ( x ( ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x * 1 WHERE NULL BETWEEN ( SELECT x FROM x AS x GROUP BY - 'x' >= x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x FROM x AS x WHERE x IN ( 'x' ) GROUP BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x < x ( x , x ) IS NOT NULL = x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , x , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 1 , 1 ) ) , x = x , x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x + x AS x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE 1 > x OR ( 1 = x AND x = 1 ) AND ( 1 < x AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ( x , x ) ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 1.000000 ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x AS x GROUP BY x ( 'x' ) , x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY ( x > 1 OR x > 1 AND NOT x ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x WHERE x = 'x' AND x BETWEEN 1 AND 1 ORDER BY x LIMIT - 'x' OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( 1 = 1 AND x = 1 ) OR x = 1 ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x AS x ) WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x AS x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( * ) , x ( DISTINCT x ) , x ( DISTINCT x ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x <= 'x' ) GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 AND x < 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x GROUP BY NOT x > 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ORDER BY x , x DESC , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1.000000 , 1.000000 ) WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 , 1 FROM x ON x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT CAST ( 'x' AS INTEGER ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x ( 1 ) HAVING x < 'x' ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x IS NULL + x IS NOT NULL >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x , 1 ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( SELECT x FROM x WHERE x = 1 ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) GROUP BY x ( 'x' , 1 ) <= 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x ( x , x ) AND x = 1 OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( 1.000000 * x ( x ) , x , x , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x < x ( x , 1 , 'x' ) AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( ( x = 1 OR x = 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ) , x FROM x WHERE NULL ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT CASE WHEN x NOT IN ( NULL , 1 , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x AS x , x ( x ) , 'x' FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 < x ORDER BY CAST ( x AS TEXT ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x , x AS x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1.000000 , 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT 1.000000 * x ( x ) FROM x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( x = x AND 1 ) ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = x AND ( x = 1 OR - 'x' >= x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x AS x WHERE x != x GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( ) ) , x FROM x GROUP BY 'x' , x ( x ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x ORDER BY x , x DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( NOT ( x >= x ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE 1 > x OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / x ) , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT x NOT LIKE 'x' , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( ) AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( SELECT 1 ) = 1 OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x < ( SELECT ( x ( 1 ) ) WHERE x IN ( SELECT x WHERE x OR x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ( SELECT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) , x ( ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE INDEX x ON x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) PRIMARY KEY , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 1 ) , ( NULL , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( x ( 'x' ) ) HAVING x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , NULL , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT CAST ( x ( ) AS DOUBLE ) WHERE x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT * FROM x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( x ( 'x' ) = 1 OR x = x ) NOT LIKE 'x' , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = 'x' AND x = 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != 'x' GROUP BY x ( 'x' , 1 ) <= 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 1 ) , ( NULL , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x OR 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ( SELECT x FROM x AS x GROUP BY x ( ) ISNULL , x ) ) ISNULL , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x NOT LIKE x ( x ) , 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT - 'x' , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x ORDER BY x + x ( * ) , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , 'x' , x ( x , 1 ) OVER ( ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x WHERE x = x AND x = 1 ORDER BY x LIMIT - 'x' OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1 , x ) FROM x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT 1 ) = 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 AND ( x = 1 OR x = 1 ) ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != 'x' ) WHERE x = ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) , x ( x ) , x ( x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE - 'x' >= x IS NOT NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY 1 , 1 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ( x ( * ) ) , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE ( x ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT 1.000000 * x ( x ) FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) OVER ( ORDER BY x ) , 1 ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN x AND 1 ) OR ( x = 1 ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x DESC , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x AS x FROM x WHERE x = x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x USING ( x , x ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ( x ( x , 1 , 1 ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x WHERE x ( 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 OR x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x ( 'x' / 1 ) , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE ( SELECT x FROM x WHERE ( 'x' ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x AS x , x + 1 AS x FROM x ( x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE x != 1 GROUP BY x ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , 1 ) OVER ( ORDER BY - 1 DESC ) FROM x WHERE x LIKE 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = ( SELECT x ( x ) OVER ( ) FROM x ) OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x AS x , x AS x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1 ) OVER ( ORDER BY x DESC , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 , NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) PRIMARY KEY CHECK ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x ) GROUP BY x ( ) , 1 , 1 HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT NULL FROM x , x AS x , x USING ( x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x BETWEEN 1 AND 1 ) + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ) , 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE UNIQUE UNIQUE PRIMARY KEY UNIQUE NOT NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x = 1 AND x = 1 ) ORDER BY 1.000000 DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY UNIQUE ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x WHERE x = 1 AND x <= x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY ( SELECT x ORDER BY 1 ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , 1.000000 , 1 , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x , x JOIN x USING ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY CAST ( x AS FLOAT ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x + 1 < 1 ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) ISNULL , x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ASC , x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x ORDER BY x DESC , 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x + 1 , x ( 1 ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ) FROM x WHERE x = 1 AND x = 1 AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x ) , 1 , 1 , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x ( 'x' ) , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( * ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT NOT x ( x , x ) , x ) FROM x AS x ORDER BY x NULLS FIRST ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x NOT LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x NULLS LAST ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x UNION SELECT * FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x LIKE 'x' OR x > 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , NULL , 1 , 1 , x ( 'x' ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) SELECT x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ( x ) , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x + 1 = x , 'x' FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x ORDER BY x ( x , 1 ) OVER ( ORDER BY x ) + 1.000000 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT * FROM x , x WHERE x < x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , x ( x ) , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE 1 = 1 AND ( x ( ) % 1 AND 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT ( SELECT DISTINCT 'x' , ( x >= x ) , 1 , 1.000000 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x , x = x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x ) = 1 OR x ( x ) = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT NOT NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x * x ) AS x FROM x USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 FROM x UNION SELECT x + 1 FROM x ORDER BY 1 DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) , ( NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( ) >= x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != ( SELECT 1 FROM x WHERE * = x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x DESC ) FROM x ORDER BY x ( x ) OVER ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1.000000 ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT 'x' AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE EXISTS ( SELECT * FROM x WHERE x = x ) ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x , 1 , 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT UNIQUE ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( NULL , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x + 1 NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x FROM x ORDER BY x LIMIT x NOT LIKE x ( x ) OFFSET x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ( 'x' ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > x OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ) IS NOT NULL FROM x WHERE x ( x <= x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x = x OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x < 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE 1 > x OR x > 1 AND x ( 'x' ) LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) OVER y AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x FROM x AS x , x AS x USING ( x , x ) GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 IN ( SELECT x FROM x ) AS x GROUP BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x = 1 OR 'x' = x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL , x CHAR ( 1 ) NOT NULL , x INTEGER NOT NULL , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE NOT x IN ( SELECT x FROM x WHERE x IN ( 'x' , 'x' ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x , x , 'x' FROM x , x AS x WHERE x > 1 AND x = 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , NULL , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) , x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x * 1 ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x * x FROM x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( DISTINCT 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x NULLS LAST ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x AS x ORDER BY x + x , x NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x , x HAVING ( 1 = 1 AND ( x = 1 ) = 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT 1 ) , x ( x , 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , 1 AS x FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x ORDER BY x * - 1.000000 >= x IS NOT NULL LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x ( x ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x NOT LIKE 'x' FROM x WHERE x > 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x ) WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x >= x , x FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = 1 OR CASE WHEN x = 1 THEN 'x' ELSE x END = 1 ) NOT LIKE NOT ( 'x' = x AND x = 1 ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x * 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x FROM x WHERE x = 1 LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ( x ) DESC ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x AS x WHERE NOT ( 'x' = x AND x = 1 ) ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x <= 'x' ORDER BY x ( x , 1 , 1 ) DESC NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT PRIMARY KEY , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x , x ( x ) OVER ( PARTITION BY x ) FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE PRIMARY KEY , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x ORDER BY x + x , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( ) , x ( x ) OVER ( ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE ( SELECT x FROM x AS x ) IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x , NULL ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x ORDER BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( CASE x WHEN 1 THEN x ELSE 1 END ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ASC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) , x , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1 , x ( 'x' , 1 , x ) ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( NOT x > 'x' ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1.000000 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = ( SELECT x ( x ) FROM x ) AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ASC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY ( SELECT x ORDER BY 1 ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( x , 1 ) OVER ( ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x WHERE x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x DOUBLE , x DOUBLE , x TEXT , x TEXT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) OVER ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ) WHERE x IN ( SELECT x ( 1 ) OVER ( ORDER BY x ) - x AS x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( x * ( 1 - x ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x NOT INDEXED ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x CHAR ( 1 ) PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1.000000 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x LIKE 'x' AND x != x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x AS x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE x != x / 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND x ( x , 1 , 1 ) = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x + 1 , 1 , x FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , 1.000000 NOT LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IS NULL AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( 1 ) WHERE EXISTS ( SELECT 1 FROM x AS x WHERE x = x + 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( ) , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ORDER BY x , x DESC , x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x + 1 FROM x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x , x , NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) AS x FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT CASE WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ) WHERE x = x AND x = x AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x , 1 , x ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 AS x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( ) , 1 , 1 ) ISNULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x AS x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( SELECT x FROM x AS x GROUP BY x ) LIKE 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , x ( x ) , 1 , x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY NOT x > x % x % 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x AS x , x AS x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x INT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x IS NULL FROM x WHERE x = 1 OR ( ( x AND x = 1 ) = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x HAVING x < 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY x = - x ( x ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' , ( SELECT x FROM x AS x GROUP BY x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ( x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT EXISTS ( SELECT 1 FROM x ORDER BY x ( x ) OVER ( ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x , x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( SELECT x FROM x AS x GROUP BY x ) LIKE 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT DISTINCT x FROM x GROUP BY 'x' ORDER BY x LIMIT 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ) IS NOT NULL , x , x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x , 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x LIKE 'x' AND NOT x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x GROUP BY x HAVING x > x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE 1 IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND x = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) , x ( x ) OVER ( ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 WHERE ( SELECT 1 , 1 ) OR ( 1 IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 , x , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x IN ( x NOT LIKE x ( x ) IS NULL + x IS NOT NULL ) AND x NOT IN ( 1 , 1 ) AND x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x WHERE x = x AND x = 1 ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x + 1 < 1 ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x = 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x DESC , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x JOIN x NATURAL JOIN x GROUP BY NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x FROM x AS x ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ) , x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1.000000 ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 = x OR x BETWEEN x AND 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 AS x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT NOT NULL , x TEXT NOT NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x , 1 , x ( 'x' ) ) OVER ( ) AS FLOAT ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x , 1 , 1 ) , x ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x > x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( DISTINCT x , 1 , 1 ) = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x <= 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( * ) OVER ( ) FROM x GROUP BY x , x ORDER BY x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x , x ) IS NOT NULL , 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY 'x' , x ( x ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( DISTINCT 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT x FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 , x + 1 , x FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1.000000 * x ( x ) , x ( x ) OVER ( PARTITION BY 'x' , 1 , NULL ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x , x , ( x NOT IN ( 1 ) AND x NOT IN ( x ) ) ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) PRIMARY KEY ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x * x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x >= x ) OR 1 + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , - x ( 1 ) >= x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT CAST ( x ( 1 ) AS TEXT ) FROM x AS x , x AS x , x AS x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( SELECT x FROM x WHERE 1 = x ) ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE - 'x' >= x AND x = 1 OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x USING ( x , x ) , x USING ( x , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE 1 = x AND x = 1 GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( ) , x ) FROM x AS x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE NOT NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 1 AND x = 1 ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x AS x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x FROM x WHERE 1 = x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND 1 ) OR 1 = x + 1 OR x = 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , 1 , * , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x FROM x WHERE 1 = x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) ISNULL , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY 'x' , 1 , NULL ) FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ) ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) , x ( x ( 'x' ) , 1 ) AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) FROM x AS x ) AND x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x ( x ) IS NULL + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) FROM x WHERE x + x LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 'x' ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x = x ( * ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( ) ) OVER ( ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( ( SELECT 1 FROM x WHERE x = x ) , 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x DESC LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x ( 1 ) ) LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 LIMIT ( x IN ( 1 , 1 ) ) = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x ( ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x , x ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x / 1 ) AS FLOAT ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , NULL ) , ( 1 , NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x UNION SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , x ) WHERE x IS NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x JOIN x USING ( x , x ) ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x NOT LIKE x ( 1 ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT 'x' , x , 1 FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , x ( x ) OVER ( ) AS x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND x = x AND x = x AND x = x ) OR x = 1 LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 , x ( 'x' ) ) OVER ( ORDER BY x ) AS x FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY CHECK ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x = x ( x ) , x ( x ) FROM x GROUP BY x IS NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ASC , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 , 1 , NULL ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x + x ( x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x % 1 ) OVER ( ORDER BY ( 1 < x AND x = 1 ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT x ( x NOT LIKE x , 'x' , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) OVER ( ORDER BY 1 NULLS LAST ) ORDER BY x ( * ) OVER ( ORDER BY 1 NULLS LAST ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ) , x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != ( SELECT 1 FROM x WHERE x = x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT 1 FROM x JOIN x USING ( x , x ) JOIN x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE x GROUP BY x ( ) ISNULL , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT 1 AS x FROM x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x IN ( 1 , 1 , NULL ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE 1 > x OR x > 1 AND NOT x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x ORDER BY x DESC , x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x OR x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x AS x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT x ( ) , x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT * AS x , 1.000000 FROM x AS x , x AS x ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( DISTINCT x / 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( DISTINCT x ( x , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x AS x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1 , 1 ) OVER ( ORDER BY x ) AS x FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) , x ( x ) FROM x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1 ) IS NOT NULL FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT x ( 1.000000 , 1 ) OVER ( ORDER BY x ) FROM x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) WHERE x IN ( 1 , 1 ) ) != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY 'x' , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x WHERE x ( ( x = 1 OR x = 1 ) ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x ) , x ( ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) OVER ( ) FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x GROUP BY 1 HAVING 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x NOT LIKE 'x' ) OVER ( ORDER BY ( 1 < x AND x = 1 ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 IN ( SELECT 1 INTERSECT SELECT 1 ) FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x != 'x' FROM x WHERE 1 = x OR x BETWEEN x AND 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) , x ( 1 ) , ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( x = 'x' OR x = 'x' ) AS x , x = x ( * ) , 'x' FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , NULL , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x INT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x NOT LIKE x , 'x' , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x / 1 ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x ( ) OVER x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * ( SELECT 1 FROM x AS x ) + x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x < 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x ) , x FROM x WHERE x ISNULL GROUP BY x NOT LIKE x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE x > 1 OR x = 'x' OR x = 1.000000 + 1.000000 OR x = 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x NOT LIKE x , x FROM x GROUP BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x < 'x' ORDER BY 1 , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ASC , x DESC , x , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x GROUP BY x HAVING x ( x ) > 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT DISTINCT x , x FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT ( SELECT CAST ( x ( x ) AS DOUBLE ) ) , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x ORDER BY x NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x GROUP BY x , x ORDER BY x DESC LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 1 ) ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY 'x' , 1 , NULL ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x WHERE x = 1 AND x <= 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( * ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x ( x , 1 ) OVER ( ) FROM x ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT * FROM x , x AS x , x USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) ORDER BY x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( * ) OVER ( ) , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( * ) AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE EXISTS ( SELECT 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 1 AND x = 1 ) OR ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x WHERE x = x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( DISTINCT x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT DISTINCT x , x * 1 AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) OVER ( ORDER BY x ( * ) OVER ( ORDER BY x ( x <= 'x' , 1.000000 ) OVER x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x IN ( 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT , x CHAR ( 1 ) , x FLOAT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x DESC , x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' , x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x ( ) FROM x WHERE x = 1.000000 + 1.000000 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x ( x ) DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1.000000 , NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT 1 , 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE CASE WHEN 1 THEN 1 ELSE 1 END IN ( 1 , 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x , x AS x ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 = 1 FROM x WHERE x ( ) GROUP BY ( x ( x ( ) ISNULL ) AND x ) , x ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x AS x WHERE 1 > x ) ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) AS x , x ( x ) AS x FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE x = x OR x = x OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT DISTINCT * FROM x NATURAL JOIN x GROUP BY x HAVING x + x LIKE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 IN ( SELECT x , x ( x ) OVER ( PARTITION BY 1 , 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( ) OVER x NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( 1 ) FROM x AS x GROUP BY NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT ( SELECT x FROM x ORDER BY ( x = 1 AND x = 1 ) DESC LIMIT 1 OFFSET 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( ( x * 1 ) > x AND x = 1 ) FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x ORDER BY 'x' , 'x' LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ) ) FROM x GROUP BY x ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x + 1 , 1 , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x INTERSECT SELECT * FROM x ORDER BY x DESC , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x + x ( ) OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x FROM x AS x GROUP BY x ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x <= x , x >= x FROM x WHERE x IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 ORDER BY x , x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x WHERE x ( x , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ) FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x ( x <= 'x' ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x FROM x WHERE x = 1 AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x INTERSECT SELECT * FROM x ORDER BY x + 1 , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = x AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( ) IS NULL + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x ) WHERE x = x AND x = 1 AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x FROM x AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 'x' , x ( x ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) OVER ( ORDER BY x ) , 'x' FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY ( x IN ( 1 , 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x ON x ( x ) WHERE x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 AS x FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( 'x' = 'x' AND x = 1 ) , x ( x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ( x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x ) , x ) FROM x AS x ORDER BY x NULLS FIRST ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x + x , x ( x ) OVER ( PARTITION BY NOT x >= 'x' ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , x ( x , 1 ) OVER ( ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x - x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ) OVER ( ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ) , x , 1 , x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL ORDER BY x , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x * x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( x ( x ) , x ) ISNULL ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , x ( x ) IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x = 'x' GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 , x NOT LIKE 'x' , 1 , 1 FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT 1 AS x , 1 , 1 AS x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x NOT LIKE - x ( x ( 'x' ) > 1 , x ) IS NOT NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( DISTINCT 'x' , x ( 'x' , 1 ) , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( * ) ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( ) , 1 , 1 , x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( DISTINCT 'x' ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x != 1 GROUP BY x ( 'x' = x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT CASE WHEN x NOT IN ( 1 , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , 1 ) OVER ( ORDER BY x ) FROM x WHERE x LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND CASE x WHEN 1 THEN 1 ELSE 1 END != x ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ( x , x ) ISNULL , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( DISTINCT x / 1 ) FROM x ORDER BY x NULLS FIRST ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , 1 ) OVER ( ) FROM x WHERE x LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x , x ORDER BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x * x ) FROM x ) WHERE x BETWEEN x AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( 1 >= x = 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x INT , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , CAST ( ( SELECT x FROM x WHERE 1 = x ) AS INT ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ( x <= x ) IS NOT NULL , 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ) , 1.000000 NOT LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x AS x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( x ( 1.000000 ) = 1 OR x = x ) = 1 OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE ( SELECT x FROM x WHERE x != 1 GROUP BY x ) != 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( - 'x' ) , x ( x ) , x ( - 'x' >= x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x ) OVER ( x ORDER BY x ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) AND x IN ( 1 , 1 ) ORDER BY x + x , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x < ( SELECT * FROM x USING ( x , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) , ( 'x' , 'x' ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON ( 1 IN ( 1 , 1 ) ) NOT LIKE 'x' ORDER BY x , x ASC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x % 1 AS x FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , x , 1 AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY CHECK ( x NOT LIKE x ( x NOT LIKE x ( x ) ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) AS x , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = x OR x = 'x' OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x ( ) OVER ( x ORDER BY x DESC ) FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( ) % 1 != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 ORDER BY x ASC , x ASC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR ( x IS NULL ) AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ( x ( ) % 1 ) ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x > 1 OR x > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY 'x' NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x AS x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x != x ( 'x' ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = ( SELECT x ( * ) WHERE x IN ( 1 , 1 ) ) OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) OVER ( ORDER BY x NULLS LAST ) , 1 ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NOT x < 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x ) SELECT * FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x = x ( * ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x JOIN x USING ( x , x ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 , NULL , x ) FROM x GROUP BY x ( ) % x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x , x USING ( x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT ( 1 = 1 AND x = 1 ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE - 'x' >= x AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( CASE WHEN NOT ( x != 1 OR x != 1 ) THEN 1 ELSE 1 END , 1 ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 + x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * ( SELECT x > 1.000000 ) + x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x INTERSECT SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED WHERE x >= 'x' AND x < 'x' AND x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( ( x = 1 AND 1 ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x <= 'x' GROUP BY x ( x NOT LIKE 'x' ) ISNULL ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT DISTINCT * , 1 , * , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , NULL ) , ( 1 , NULL ) , ( 1 , NULL ) , ( 1 , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( * ) FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ( ) ISNULL , x ( 'x' ) , x ( ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x TEXT UNIQUE ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x AS x WHERE x = 'x' OR x = 'x' OR x = 'x' GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x ) , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x NULLS LAST , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x FLOAT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ) , x FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , x >= 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x ( ( x = 1 OR x = 1 ) ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND 1 >= ( SELECT x ( * ) FROM x ) IS NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , - 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x + 1 , x = 1 WHERE x > 1 OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x , x DESC ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x IN ( 1.000000 ) ORDER BY x DESC NULLS FIRST , x NULLS LAST ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x FROM x AS x , x AS x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT , x INT , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( 1 = 1 AND x = 1 ) OR x = 1 ORDER BY x ASC , x DESC , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x WHERE ( 'x' ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1.000000 * x ( x ) , x AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x IN ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 , NULL , 1 ) AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x * 1 + x FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INTEGER , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x ( x , 'x' ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE NULL BETWEEN ( SELECT x FROM x AS x GROUP BY - 'x' >= x ) AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 'x' AS x , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) , 'x' FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( ) , 1 , 1 , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x AS x , x , 'x' FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x ( x ) <= 'x' = x AND x > 1.000000 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL , x = NULL WHERE x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x DOUBLE NOT NULL UNIQUE , x TEXT UNIQUE ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x FROM x AS x WHERE x IN ( 'x' ) GROUP BY x ( ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT PRIMARY KEY , x FLOAT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ( 'x' ) , 1 ) AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x >= 'x' FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( * ) OVER ( ORDER BY x ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , * FROM x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x * 1 WHERE x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != x GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT 'x' FROM x ) GROUP BY x ( ) ISNULL , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , NULL , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( ) OVER tcl ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 'x' ) FROM x GROUP BY NOT x > 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ( - 1 ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT 1 FROM x LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x != 1 ORDER BY x DESC , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , x ) FROM x GROUP BY x , x ORDER BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x GROUP BY NOT x > 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT NULL , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1.000000 * x ( x ) , x ( x ( x ) OVER ( ) , 1 ) AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( - 'x' >= x IS NOT NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( CASE x WHEN 1 THEN 1 ELSE 1 END != 1 ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) , x ( 1 AS x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( NOT x > 'x' , 1 , 1 ) ) , x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x > 1 OR x > 1 AND x NOT LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x WHERE x = 'x' OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY NOT x >= 'x' ORDER BY x NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ORDER BY x ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY x DESC , x ASC ) ORDER BY 'x' NULLS LAST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE 1 OR ( 1 IN ( 1 , 1 ) ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) OR ( x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x AS x , x AS x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' / 'x' FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x GROUP BY x HAVING x ( ) ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 IN ( SELECT 1 ) FROM x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT - 1 FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x AS x , x USING ( x , x ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY NOT x >= 'x' ORDER BY x DESC NULLS LAST , * ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1.000000 ) , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY 'x' , ( x * 1 ) > x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , CAST ( ( SELECT x FROM x WHERE x OR x ) AS INT ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE NOT NULL , x INT UNIQUE NOT NULL , x FLOAT , x INT PRIMARY KEY CHECK ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT ( SELECT 1 ) ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE EXISTS ( SELECT * FROM x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) AS x , x ( 1 ) , ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x IN ( 1 , x , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x % 1 ) OVER ( ORDER BY x ( x ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( 'x' ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( DISTINCT x ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x ( x , 1 ) OVER ( ORDER BY x ) AS x , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , x ( x NOT LIKE 'x' , x ) IS NOT NULL , x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( 1 ) OVER ( ORDER BY x ) - 1 AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT 1 AS x FROM x INDEXED BY x ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x , x DESC NULLS FIRST , x , x LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x INT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , x AS x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ) OVER ( ORDER BY x ( x ) ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x < x ( x , x ) IS NOT NULL = 'x' ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( ) , 1 , 'x' , 1 , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x NATURAL JOIN x WHERE x = 'x' OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( x ( ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT x AS x WHERE 1 > x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR - 1.000000 >= x IS NOT NULL = 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = x AND x = x AND x = 1 AND x LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) AS x FROM x AS x , x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE 'x' != 1 GROUP BY x ORDER BY x DESC NULLS FIRST , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) , x ( x ) FROM x GROUP BY ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x FLOAT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( x * 1 ) > x ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x = 'x' ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1.000000 , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x = 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x AS x , x AS x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x ORDER BY ( SELECT x ORDER BY 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x ORDER BY x , x DESC , x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY ( SELECT 1 , 1 ) DESC , x ASC ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1.000000 * x ( x ) , x FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x ORDER BY x , x ASC , x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x * x FROM x ORDER BY x ( x , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x ( x <= 'x' ) ORDER BY x DESC , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( ( x ) AS DOUBLE ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x WHERE x = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x AS x GROUP BY x ( x ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + * , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE x > x OR x = x AND x = 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT CASE WHEN x NOT IN ( x ( x ) , 1 , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT 1.000000 AS x , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( ( SELECT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE ( SELECT x ( x , x ) FROM x AS x GROUP BY x ) != 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) , x ( x ) FROM x GROUP BY x ( x ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 'x' OR x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x WHERE x = x ORDER BY x , x DESC , x ASC ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 'x' ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , 1 , x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x AS x GROUP BY 'x' , x ( x ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( ORDER BY x DESC , x ASC ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x ORDER BY ( x < 1 ) DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT DISTINCT x , CASE WHEN x = 1 THEN 'x' ELSE x END AS x FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) OVER ( ORDER BY x DESC , x ASC ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x != 'x' FROM x WHERE 1 = x OR x ( x NOT LIKE x ( x ) ) BETWEEN x AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR ( x = 1 AND ( x = x OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 FROM x ON x ( x , 1 ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x - x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) FROM x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( x = 1 AND x = 1 AND x = 1 AND x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE 1 WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END GROUP BY x ( 'x' , 1 ) <= 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) OVER ( ORDER BY x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( NULL ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( NOT x <= 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x <= 'x' ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY ( SELECT DISTINCT CAST ( x ( x ) AS DOUBLE ) ) HAVING x > 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) GROUP BY x HAVING ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) OVER ( ORDER BY x NULLS LAST ) , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) OVER ( ) FROM x AS x GROUP BY x ( ) ISNULL , x ) AND x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE NOT CASE x WHEN 'x' THEN 1 ELSE 1 END GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 'x' , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT x ( ) OVER ( x ORDER BY x DESC ) FROM x ) SELECT x ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x , x ORDER BY x DESC , x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x UNION SELECT * FROM x ORDER BY x , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) , x FROM x WHERE x ISNULL GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , ( SELECT x FROM x AS x GROUP BY x ( ) % - 1.000000 >= x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE EXISTS ( SELECT * FROM x WHERE x = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x GROUP BY x ( ) ISNULL UNION SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = x AND x BETWEEN 1 AND 1 ) OR ( x = x AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS FIRST ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x INT , x INT , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , NULL , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x FROM x WHERE - 'x' >= x IS NOT NULL = ( 1 < x AND x < 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x NOT IN ( 1 ) AND x NOT IN ( 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x ORDER BY x ( x , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) ISNULL , x ( 'x' ) , 1 AS x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT NOT x IN ( SELECT x FROM x WHERE x IN ( 'x' , 'x' ) ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( x ( x ( ) ISNULL ) AND x ) , ( x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT ( SELECT 1 , 1 ) FROM x AS x GROUP BY 1 ) AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY NOT NULL , x INT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) OVER ( ORDER BY x ) , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x % 1 ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ORDER BY x , x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x + 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x GROUP BY x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ( SELECT x ( ) FROM x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( - 1 , x , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ISNULL , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT 1 FROM x JOIN x JOIN x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 , x = 1 * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 AND x <= 1 ORDER BY CAST ( x AS TEXT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY CHECK ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) OVER ( ORDER BY x ) FROM x ORDER BY 1 , 1 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT x ( x + x ( DISTINCT x ( x ) ) ) FROM x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 'x' , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x FROM x WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x LIKE x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY 'x' , * ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( * ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 1.000000 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( x * 1 ) > x AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( x NOT IN ( x ) AND x NOT IN ( NOT x > x % x % 1 ) ) , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , x FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x = ( SELECT x FROM x WHERE NULL = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) WHERE ( SELECT x FROM x AS x GROUP BY x ORDER BY x ( 1.000000 ) , x NULLS LAST ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE WHEN x NOT IN ( x ( ) , x , 1 , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x DOUBLE ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x NOT IN ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , NULL , 1 ) GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x WHERE 1 = x / 1 AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT x FROM x AS x ) FROM x AS x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( 1.000000 , 1.000000 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) FROM x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE 'x' FROM x WHERE x IN ( 1 , x NOT LIKE 'x' , 1 , 1 ) ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x DESC LIMIT ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( x = 1 ) OR ( x = 1 ) OR ( x BETWEEN 1 AND 1 ) OR ( x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE ( 'x' = 1 AND x = 1 ) = x OR x BETWEEN x AND 1 GROUP BY x HAVING x < x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x / ( x % 1 ) != 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY NOT x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE NOT NULL , x INT UNIQUE NOT NULL , x FLOAT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x BETWEEN 'x' AND 'x' ORDER BY 1 , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT NULL AS x , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY NOT x >= 'x' ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x JOIN x ON x = x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( ) ISNULL , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ( x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x ) OVER ( ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x <= 'x' ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) IS NULL + x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , x FROM x UNION SELECT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) FROM x WHERE x != 1 GROUP BY x HAVING x < 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( x * x ) AS x FROM x USING ( x , x ) ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( CASE WHEN NOT x != 1 THEN 1 ELSE 1 END , 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x IN ( SELECT x ( x ) OVER ( ORDER BY x + x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x DOUBLE , x DOUBLE , x TEXT , x TEXT , x TEXT , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 , * AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE ( x IN ( 1 , 1 ) ) = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) OVER ( ORDER BY - 1.000000 , x ASC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x > 1 AND x < 1 ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' , 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE NOT x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT * FROM x NATURAL JOIN x JOIN x USING ( x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x + CASE x WHEN 1 THEN 1 ELSE 1 END != 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( ( SELECT CAST ( x ( x ) AS INT ) ) ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( DISTINCT 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x = 1 OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( * ) OVER ( ORDER BY 1 NULLS LAST ) NULLS FIRST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x FROM x JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT DISTINCT CAST ( x ( x ) AS DOUBLE ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 WHERE x = ( SELECT x FROM x WHERE x ( 'x' ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT CASE WHEN NULL THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ( x ( 1 ) , x ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT 1 , 1 AS x , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1 ) UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , NOT x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) FROM x WHERE x NOT IN ( 1 , 1 , x ( 'x' ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( x + x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x , x ( x ) OVER ( PARTITION BY 1 , 1 , NULL ) FROM x ORDER BY x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE , x INTEGER , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 'x' ) ISNULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , 1 ) OVER ( ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( 1 ) ) GROUP BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1.000000 , 1.000000 ) WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x ORDER BY x DESC ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , x , 1 ) , ( x = 1 AND 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x FROM x UNION SELECT x + 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 ) UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 , 1 FROM x ON x ( x ) USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x + x LIKE 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x WHERE x IN ( 'x' = x ) ORDER BY x + x , x + x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x FROM x WHERE x > x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY x ASC , x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x USING ( x , x ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x NOT IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( SELECT x ( * ) OVER ( ) FROM x AS x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ( x , x ) ) OVER ( PARTITION BY x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT x ( x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x ORDER BY x ( x ) NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( ) IS NOT NULL , x ) , ( x = 1 AND 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( 'x' / 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x = 1 AND 1 = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT ( SELECT 'x' - 'x' WHERE x = x ) , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 FROM x WHERE 1 < x ORDER BY CAST ( x AS TEXT ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) , x FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1.000000 FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x = 1 OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x , x , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x > x ( ) IS NOT NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL CHECK ( x != 'x' ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ) ) ISNULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , 1.000000 * x ( x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x >= 1 AND x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 1 * 1 * 1 ) ) FROM x AS x JOIN x ON NULL = 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY x DESC , x ASC ) GROUP BY x ( 1.000000 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 1.000000 , 1.000000 ) ) UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x * 1 WHERE x < x ( x , x ) IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x * x FROM x ORDER BY x , x DESC , x ASC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , CAST ( ( x = 1 ) = 1 AS DOUBLE ) ) FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT NULL WHERE ( SELECT 1 , 1 ) OR ( 1 IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x = 'x' ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x AS x ORDER BY x ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x / 1 , x / 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x ORDER BY x ( x , 1 , 1 ) DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE ( SELECT x WHERE x = x ) = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x UNION SELECT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , x IN ( x ( x ) , x , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 ) WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE x = 'x' AND ( x = 1 OR x = 1 ) GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT * FROM x WHERE x < 1 AND x > 1 ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x WHERE x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x GROUP BY 1 , 1 ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x * ( 1 - x ) ) AS x , x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT , x FLOAT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x AS x JOIN x AS x ON x = x JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY UNIQUE , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x AS x , x AS x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT NULL FROM x GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 , 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x IN ( 'x' = x ) ORDER BY x + x , x + x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT CAST ( x ( 1 ) AS TEXT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x GROUP BY 'x' , 'x' , x + x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE , x INT , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1 , 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT DISTINCT x ( 'x' ) AS x FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x INT , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x INTEGER UNIQUE UNIQUE UNIQUE PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x ( x ) OVER ( ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY CAST ( x AS TEXT ) LIMIT ( SELECT x FROM x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1 GROUP BY x ( x ) <= 'x' ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT 1.000000 FROM x ) SELECT x FROM x WHERE x = 1 OR x > 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1 , x , NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY CAST ( x AS TEXT ) ) FROM x AS x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE x = 'x' OR x = x OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT 1 AS x , 1 , 1 FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) LIMIT 1.000000 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( * ) OVER ( ORDER BY x ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT NOT x >= 'x' FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x GROUP BY NOT x > 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x ( 1 , 1 , x ( x ) = 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x LIKE 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ( x = ( x LIKE 'x' AND x != x ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x * x FROM x GROUP BY x NOT LIKE x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( ) , x ) FROM x AS x ORDER BY x NULLS FIRST ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x DESC ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND x > 1 ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 'x' , * FROM x WHERE x IN ( SELECT x WHERE x OR x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x ( 'x' , 1 ) <= 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = 'x' AND x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = 1 OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x IN ( 1 , 1 ) FROM x ORDER BY x ( x ) NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x ( ) OVER y NULLS FIRST , 1 DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x WHERE x = 1 AND x >= 1 AND x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x ) GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY 1 DESC NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1.000000 ) , ( 1 , 1.000000 ) , ( 1 , 1.000000 ) , ( 1 , 1.000000 ) , ( 1 , 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , x ) OVER y ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x ) , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x = 'x' ) WHERE x IS NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 'x' AND x < 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( ( x = 1 OR x = 1 ) ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 ORDER BY x DESC , x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x ( ( x NOT IN ( 1 ) AND x NOT IN ( x + 1 ) ) , x ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' ) , ( 1.000000 ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( 1 ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x + x ( x ) ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 1.000000 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( ORDER BY x ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( 1 , 1 ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * 1.000000 ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = x AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON ( 1 IN ( 1 , 1 ) ) NOT LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INT , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( ORDER BY x NULLS FIRST ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT NOT x ( x , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x AS x ) AND x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x != 'x' FROM x , x USING ( x , x ) WHERE 1 = x OR x BETWEEN x AND 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) OVER ( ) , x ( * ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x EXCEPT SELECT x FROM x WHERE x != 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x FROM x ORDER BY x , x DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( 1 ) , x ) FROM x AS x ORDER BY x NULLS FIRST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x , x FROM x ORDER BY x DESC LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY CAST ( x AS FLOAT ) , x DESC NULLS LAST ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT x ( x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x ) = 1 OR x ( x ) = 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , ( 1 ) FROM x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ) WHERE ( SELECT 1 ) = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x AS x ORDER BY x ( x ) NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE * AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x VARCHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 ) GROUP BY x HAVING x ( x , 1 ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NOT INDEXED ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1.000000 , * , x ( x ( x ) ) ISNULL FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 FROM x WHERE ( 'x' = 1 AND x = 1 ) = x OR x BETWEEN x AND 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * ) SELECT NULL INTERSECT SELECT NULL ORDER BY x ( ) OVER x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , x IN ( 1 , 1 ) FROM x ORDER BY x NOT LIKE x ( x ) <= 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x FROM x ORDER BY x , x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ISNULL GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) PRIMARY KEY ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x , 1 ) OVER ( ) AS INTEGER ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x = 'x' AS x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) LIMIT x ( x , 1 ) OVER ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x , x , 1 ) , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ORDER BY x DESC , x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x ( x , 1 ) OVER ( ORDER BY x ) AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , x ( x * x ) AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( x ( 'x' ) = 1 OR x = 1 ) NOT LIKE 'x' LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , 'x' FROM x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , x ( * ) , x ( x ) ) IS NULL + x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x , x = x , x = x WHERE x = 1 AND x IN ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT CASE 1 WHEN 'x' THEN 1 WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , x ( x ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1.000000 , x ( x , x ) IS NOT NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT DISTINCT 'x' , 'x' , 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x / 1 AS x ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 'x' , 'x' AS x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x GROUP BY x ORDER BY x , x DESC NULLS FIRST LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x * 1 WHERE x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x = x AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY ( x % 1 ) ORDER BY x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) OVER ( ORDER BY x DESC , x ASC ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 = 1 FROM x WHERE x ( ) GROUP BY x ( 'x' ) , x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY x ) , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x ( x <= 'x' ) ORDER BY x DESC , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x % 1 ) OVER ( ORDER BY ( 1 < x AND x ( ) IS NOT NULL < 'x' ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( * ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x AND ( SELECT x FROM x WHERE x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' AS x , 'x' FROM x WHERE x IS NULL AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) UNIQUE , x INTEGER PRIMARY KEY CHECK ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 WHERE x < ( SELECT * FROM x USING ( x , x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS LAST , 'x' ) AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x GROUP BY x HAVING x > 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x GROUP BY NOT x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x GROUP BY x HAVING x < x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x FROM x WHERE NULL = x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 'x' , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT PRIMARY KEY , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( ( x = 'x' OR x = 'x' ) AND x IS NOT NULL ) OR x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT EXISTS ( SELECT 1 FROM x ORDER BY x ( x ) OVER ( ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 , x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x * 1 ) > x FROM x WHERE x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) AND x IN ( 1 , 1 ) ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x BETWEEN x AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT NULL INTERSECT SELECT NULL ORDER BY x ( x <= 'x' , 1.000000 ) OVER x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , x ) WHERE ( SELECT x ( 1 ) OVER ( ORDER BY x ) - x AS x ) BETWEEN x AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x USING ( x , x ) WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x ( ) GROUP BY x ( ) ISNULL , x ( 'x' ) , 'x' = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT CAST ( x ( 1 ) AS CHAR ( 1 ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x ( DISTINCT x ) ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( x ) AS x , x ( x ) AS x FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x > 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , NULL , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , CAST ( ( SELECT x FROM x WHERE 1 = x ) AS INT ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) WHERE NULL BETWEEN ( SELECT x AS x FROM x AS x GROUP BY x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1.000000 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) UNION SELECT 1 ORDER BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY CASE x WHEN 1 THEN 1 ELSE 1 END ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( x = x AND ( x = 1 OR x = 1 ) ) OR ( x >= 1.000000 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x * ( 1 - x ) ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x DESC LIMIT ( SELECT x FROM x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) , x ( 1 ) , x ( DISTINCT x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x AS x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x AS x JOIN x ON NULL = 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * AS x FROM x WHERE x = 'x' AND x = 'x' ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 1.000000 WHERE x = 1 OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' , x = 'x' WHERE x = ( SELECT x FROM x WHERE x = x ORDER BY x , x DESC , x ASC ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ( x % 1 ) OVER ( ORDER BY x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ) WHERE x = 'x' AND x = 'x' AND x = 'x' AND x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 'x' , 1 , 1 , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x AS x FROM x ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x NOT LIKE x ( x ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 'x' FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x ) , x ( ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) , x ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x FROM x UNION SELECT x + 1 FROM x ORDER BY 1 DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT , x DOUBLE , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , x > x ( ) IS NOT NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x , x ( x ) , x , 'x' FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x AS x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1.000000 WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1.000000 ) , x ( x ) , x ( x ) FROM x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x WHERE x != 1 ORDER BY x DESC , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( ) OVER y NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 GROUP BY x ORDER BY x ASC , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ) , 1 , 1 , x ( x , x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x = x OR x = 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x FROM x WHERE x = ( x = 1 OR x > 'x' ) NOT LIKE 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE EXISTS ( SELECT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , NULL , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x INTERSECT SELECT x , x FROM x WHERE x != 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x <= 'x' AS x , x ( ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , CAST ( ( x = 1 ) = 1 AS DOUBLE ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT x FROM x AS x WHERE x IN ( 'x' ) GROUP BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x WHERE x = ( SELECT x ( x ) FROM x ) AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x IS NULL AND x IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) WHERE x <= 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( - 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x * ( 1 - x ) ) , x FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x ( x NOT LIKE 'x' ) IS NULL + x AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ( x ) ) , x ( x ) , 'x' FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x ) SELECT x ( ) FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( * ) ) FROM x AS x , x AS x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x IN ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ( SELECT x FROM x WHERE 1 = x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT 1 , * FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * ( 1 - x ) ) AS x FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x ) <= 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x ORDER BY x DESC , x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ) WHERE x IN ( x ( * ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x ( x ) AS x FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( DISTINCT x ) FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x + x LIKE 'x' AND x BETWEEN 1 AND 1 ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x < ( SELECT x FROM x WHERE x > 1 GROUP BY x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ) WHERE x = 1 AND ( x = 1 OR x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , CASE x WHEN 1 THEN 1 ELSE 1 END != x ( 'x' ) , 1 ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x + x * x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x <= 'x' ) , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x * 1 FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x EXCEPT SELECT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , x , NULL , x ( x ) = 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT 1 AS x FROM x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( x <= 'x' , 1.000000 ) OVER x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT NULL FROM x GROUP BY x ( ) ISNULL , x ) AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( 1 ) >= ( SELECT 1 ORDER BY 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) ORDER BY 1 NULLS LAST LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x NOT LIKE x , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x NOT LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x GROUP BY NOT x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 , 1 , NULL , x ) FROM x JOIN x ON x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ( x ) ) FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , * FROM x WHERE x > 1 GROUP BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x , 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x AS x , x AS x , x WHERE x = x LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) AS x , x ( x ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) , x ( x ( x ) OVER ( ) , 1 ) AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x AS x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT CAST ( x ( 1 ) AS DOUBLE ) WHERE x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x FLOAT UNIQUE ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) , x ( ) OVER ( ORDER BY x DESC ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( SELECT x FROM x WHERE 1 = x ) ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL , x CHAR ( 1 ) NOT NULL NOT NULL , x INTEGER NOT NULL , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x USING ( x , x ) WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( SELECT NULL FROM x GROUP BY x ( ) ISNULL , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x != 'x' FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = ( x BETWEEN 1 AND 1 ) + 1 / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x FROM x AS x GROUP BY x ) AND 1 GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS FIRST ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ( x ) , x ) ISNULL ) , x ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x = ( SELECT x FROM x WHERE x ( 'x' ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) FROM x ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x , 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( * ) , x ( x ) , x ( x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x ( x , 1 , 1 ) DESC ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( x ( x ( ) ISNULL ) AND x ) , x ( 1 ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x + x , x + x FROM x ORDER BY x + x , x + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT ( SELECT DISTINCT * , 1 , * , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( DISTINCT 'x' / 1 ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x GROUP BY ( SELECT 1 ) LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( ) OVER x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1.000000 , x >= 1.000000 ) WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x AS x FROM x AS x WHERE x IN ( 'x' ) GROUP BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT * , 1 , * , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , x ( x ( 'x' ) > 1 , x ) IS NOT NULL , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x GROUP BY x HAVING x > 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x FROM x INDEXED BY x WHERE NULL = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( x ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x AS x WHERE 1 > x ) ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND ( x = 1 OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( NOT ( x >= x ( x ( - 1 , x ) , ( x = 1 AND 1 ) ) ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT x FROM x WHERE NULL OR 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x , 1 ) OVER ( ) , x ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x INTEGER , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT CASE 1 WHEN 'x' THEN 1 WHEN 1 THEN 'x' ELSE 'x' END ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1.000000 , 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x DESC , x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x EXCEPT SELECT x FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( x ( ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 AS x , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x , 1 , 1 ) = 'x' ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x , 'x' ) ISNULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( * ) , x >= 1 , x ( x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT NULL FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NOT INDEXED GROUP BY NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT 1 WHERE ( SELECT 1 , 1 ) OR ( 1 IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x INTERSECT SELECT x , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x AS x , x AS x , x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x , 1 , 1 ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x != x GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x + x , x LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 , 'x' ) GROUP BY x ( 'x' , 1 ) <= 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x ( x , 1 ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x WHERE x ( x ( x >= x , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 FROM x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ) , x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( x NOT IN ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) AND x NOT IN ( 1 ) ) , x ) AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x % x <= x , x NOT LIKE x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE PRIMARY KEY CHECK ( x ( x ( x ) ) IS NULL + x IS NOT NULL ) , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x != 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY CHECK ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( ( x OR NOT x ) BETWEEN 1 AND 1 ) + x ISNULL , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x ( ) FROM x WHERE x > 1 AND x = 1 ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x AS x JOIN x AS x ON x = x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT 1 ) AND x = 1 OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ORDER BY x + x , x NULLS LAST , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x DOUBLE ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 , 1 ) OVER y AS x FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) WHERE ( SELECT 1 ) = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x WHERE ( SELECT x AS x WHERE 1 > x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x , 1 AS x FROM x WHERE x % 1 != 1 ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x INDEXED BY x JOIN x AS x ON ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x NOT LIKE x ( x ) , 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x , x ) , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x ( 1 ) , ( x * 1 ) > x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT 1.000000 FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x WHERE x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) PRIMARY KEY CHECK ( - 1.000000 >= x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = x OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE , x TEXT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x ) OR x > 1 AND NOT x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT * , 1 , 1 , * ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) GROUP BY ( SELECT 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x WHERE ( x = 1 AND 1 ) OR 1 = x + 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 , NULL ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ) OVER ( ORDER BY x ) , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT * , 'x' FROM x WHERE x BETWEEN 1 AND 1 ) WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 AS x FROM x GROUP BY x ORDER BY 'x' NULLS FIRST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY 'x' ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT 1 FROM x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x , x ) , x ( x ( ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = 1 AND x ( x , x ) <= 'x' = x AND x = 1 AND ( x ) <= 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x >= 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 1 ) OVER ( ORDER BY x DESC , x ASC ) FROM x AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT x ( ) OVER ( ORDER BY 1 NULLS LAST ) ORDER BY x ( * ) OVER ( ORDER BY 1 NULLS LAST ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x + x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( CASE x WHEN 1 THEN 1 ELSE 1 END != 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( ( x = 'x' OR x = 'x' ) AND x IS NOT NULL ) OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( ) ISNULL , x ( 'x' ) , 'x' = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 'x' , 'x' , x ( x , 1 ) OVER ( ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 , 1 , x ( x ) = 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 , NOT x <= 'x' , x ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1.000000 , 1 , 1 GROUP BY x ( ) HAVING x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x JOIN x USING ( x , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 ORDER BY x ( * ) OVER ( ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED WHERE x = 1 AND x >= 1 AND x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x , x AS x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 1 ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( DISTINCT x ) , x , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' , x ( 'x' , 1 ) , x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x IN ( x NOT LIKE x ( x AS x ) IS NULL + x IS NOT NULL ) AND x NOT IN ( 1 , 1 ) AND x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ( x <= 'x' ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x AS x , x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( ) HAVING x ( 'x' ) > 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , 1 , 1 ) WHERE x IN ( SELECT x FROM x ORDER BY x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x , x WHERE x = x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT CASE WHEN x != 'x' THEN 1 ELSE 1 END FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT 1 FROM x ON x ( x ) WHERE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x = 1.000000 + 1.000000 ) OVER ( PARTITION BY x ORDER BY x DESC , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x ( 1 ) AS x FROM x ) SELECT x ( ) AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE ( x ) GROUP BY x , x HAVING ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 , NULL , 1 ) AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT 1 , 1 WHERE 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( CAST ( x ( x ) AS DOUBLE ) ) FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1.000000 , 1 , x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , 'x' , 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) AS x , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT * FROM x ORDER BY x LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE UNIQUE UNIQUE PRIMARY KEY UNIQUE NOT NULL , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x AS x , x AS x USING ( x , x ) WHERE x ISNULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( ( SELECT x FROM x WHERE 1 = x ) ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x ( x ) , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( x , 1 ) OVER ( ORDER BY x ) AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x AS x , x AS x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( ) HAVING x ( ) ORDER BY x ( * ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT 1 AS x , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x WHERE x ( x ( x ) ) GROUP BY x ( ) ISNULL , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT 1 IN ( SELECT x FROM x ) AS x GROUP BY NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != 1 GROUP BY x ( x ) ORDER BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x FROM x ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 , - 'x' , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT CASE WHEN x = 1 THEN 'x' ELSE x END AS x FROM x ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 1 , 1 ) ) , x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) % - 1.000000 >= x IS NOT NULL , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 1 WHERE ( SELECT 1 , 1 ) LIMIT 1 OFFSET 1 OR ( 1 IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ( x ( 'x' ) > 1 , x ) IS NOT NULL ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = 'x' AND x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x WHERE x + x LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x , 1 , 1 ) ) ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT 'x' UNION SELECT DISTINCT x ( x ) ORDER BY 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x , 'x' FROM x WHERE x IN ( 1 , 1 ) ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE UNIQUE INDEX x ON x ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY 1 , 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x >= 'x' FROM x ORDER BY x ( x , 1 ) ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x ( x ) OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT x FROM x AS x GROUP BY x ORDER BY x * 1 ) AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( 1 ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / x , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x INDEXED BY x JOIN x AS x ON ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) , x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 'x' , NULL , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT NULL , x , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , x ( x ) FROM x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x > 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 'x' ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ) WHERE x >= 'x' AND x < 'x' AND x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ( x ( x , 1 , 1 ) ) ) FROM x GROUP BY 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT ( SELECT x AS x FROM x WHERE x = x ) FROM x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( * ) FROM x GROUP BY x , x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x DESC , x ASC ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY 1 NULLS LAST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT * AS x , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( x ( - x ( 1 ) >= x , 1 , 1 ) ) , x = x , x = x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT * FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x FROM x WHERE x != 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT x AS x FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x + 1 , x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x ( ) ISNULL ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 'x' AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x , 1 , 'x' ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , 1.000000 * x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x ( x ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT x FROM x AS x GROUP BY x ) AND 'x' AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 IN ( SELECT * FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT x FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x NOT INDEXED NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' , ( x >= x ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT * FROM x JOIN x USING ( x ) ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) AS x INTERSECT SELECT 1 ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x AS x FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x NATURAL JOIN x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY 'x' DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x NOT LIKE x ( x ) IS NULL + x IS NOT NULL FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 , NULL , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 = x OR x BETWEEN x AND 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT CASE WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != 'x' ) WHERE ( x IN ( 1 , 1 ) ) = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x ( 1.000000 ) ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) GROUP BY NULL INTERSECT SELECT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) <= 'x' = x FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT 1 FROM x WHERE x = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 , * ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x ( x ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT DISTINCT x ( 'x' ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 FROM x AS x WHERE x = x + 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT CASE 1 WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x AS x , x , 'x' FROM x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( x NOT IN ( x ) AND x IS NOT NULL NOT IN ( 1 ) ) , x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x AS x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT ( SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT x FROM x AS x WHERE ( x = 'x' OR x = 'x' ) AND x IS NOT NULL GROUP BY x ) AND x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x ) , x FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x UNION SELECT x ( * ) AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ASC , x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x WHERE x = x AND x = x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x + x ( x ) ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x = x ORDER BY x , x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , 1.000000 + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) OVER ( ORDER BY x NULLS LAST ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x = ( SELECT 1 ) , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY UNIQUE UNIQUE NOT NULL , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON NULL = 1.000000 ORDER BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = - 1.000000 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( * ) FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 AND x ( 1.000000 ) AND x = 1 AND x = 1 AND x = 1 AND x >= 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x AS x WHERE x != 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( x ) , x ( x ) FROM x GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' , 1 , 1 , ( x != x ( 'x' ) OR x = 1 ) ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1.000000 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' WHERE x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( 1 = 1 AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1.000000 , 'x' ) GROUP BY 1.000000 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) = 1 AS x FROM x GROUP BY NOT x > 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( 1 ) HAVING x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 OR x = 1 ) NOT LIKE 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( x , x ( * ) , x ( x ) ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( x ( x ) ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x * ( - x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x ( 1 ) , 1 , 'x' ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT x FROM x WHERE x IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY NOT NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT 'x' , x , 1 AS x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 1 ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( * ) OVER ( ORDER BY x ) FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT NOT x > 'x' FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 GROUP BY x , ( x = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 'x' ) OVER ( ORDER BY 1 , 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = 'x' AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE x IN ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x ) FROM x WHERE 1 > x OR x > 1 AND x ( ) ISNULL LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ( x , x ) ) OVER ( PARTITION BY x ) FROM x ORDER BY 1 NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT NOT x >= 'x' , 1 FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x > 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x + 1 FROM x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( x , x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) SELECT x FROM x ON x ( x ) WHERE x = x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x AS x , x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x + 1 = x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( x ( x ) AS INT ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( x ( x ) ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 FROM x GROUP BY x ( x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x ( ( x = 1 OR x = 1 ) ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x , ( x IN ( 1 , 1 ) ) FROM x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x ) OVER ( ORDER BY x ) ) OVER ( ORDER BY x ) , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) INTERSECT SELECT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x ORDER BY x ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( - 'x' ) OVER ( PARTITION BY x ( x , x ) ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x AS x , x , 'x' FROM x UNION SELECT DISTINCT * FROM x AS x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) ISNULL FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x INT , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 'x' AND x BETWEEN 1 AND 1 ) OR ( x = 1 AND x != x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( 1 ) ) , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 'x' , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( SELECT x FROM x ORDER BY x LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 FROM x ON x ( x AS x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW DROP TABLE IF EXISTS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , x , 1 ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x , 1 ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( * ) , x ( DISTINCT x ) , x ( x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x FROM x AS x ORDER BY x LIMIT 1 OFFSET ( SELECT x FROM x AS x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY x ( x ) , x ASC ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , NULL ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x , x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x WHERE x = 'x' ORDER BY x ASC , x DESC , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x JOIN x ON x = x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x ( x ) FROM x WHERE x = ( x = 1 OR x > 'x' ) NOT LIKE 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET ( x , x ) = ( SELECT 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE ( x = 1 AND x = 1 ) OR ( x = 1 AND x = 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( 'x' , 1 ) , x + 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x WHERE x > 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x + x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x ) WHERE x LIKE ( x BETWEEN 1 AND 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' AS x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY 'x' , x ( 'x' , 1 ) , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR - x ( x ( 1.000000 ) ) >= x AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 'x' , 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > x ( * ) = 1 OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x * x ) AS x FROM x USING ( x , x ) ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x ) OR x > 1 AND NOT x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( x ( 1.000000 ) = 1 OR x = x ) NOT LIKE 'x' OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x * x ) AS x FROM x USING ( x , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x NOT LIKE x ( x ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 , x NOT LIKE 'x' , 1 , 1 FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x GROUP BY x / 1 ORDER BY x , x DESC , x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 1.000000 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY CHECK ( - 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x ORDER BY x , x ASC , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x NULLS LAST LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND ( ( x BETWEEN 1 AND 1 ) OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x <= 'x' ) GROUP BY 1 , x HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1.000000 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT DISTINCT x , * FROM x WHERE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT DISTINCT CAST ( x ( x / 1 ) AS INTEGER ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND 1 ) OR x = 1 GROUP BY x ( 'x' , 1 ) <= 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x JOIN x USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE WHEN x NOT IN ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = ( x = 1 OR x = x ) OR x = 1 ) NOT LIKE 'x' IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( 1 AS x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT DISTINCT x ( * ) OVER ( ORDER BY x ( ) ) FROM x AS x ) AND x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT ( x IN ( 1 , 1 ) ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x ORDER BY x LIMIT 1 OFFSET 1 ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x + 1 , x + 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT x ( 'x' ) LIMIT 1 OFFSET 1 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) , x FROM x GROUP BY x HAVING x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT 1 , 1 ) AS x FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x USING ( x , x ) WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x <= 'x' ) ORDER BY x ( * ) OVER ( ORDER BY x ) DESC , 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x DESC ) FROM x ORDER BY x ( ) NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT DISTINCT x ( ) OVER ( ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ( x ) , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x WHERE x ( x , x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , x , x FROM x WHERE ( x ( 'x' ) = 1 OR x = 1 ) NOT LIKE 'x' LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT x , 1 , 1 , * ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1 AND x = 1 ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE ( SELECT x FROM x AS x GROUP BY x ( ) HAVING x ( ) ORDER BY x + x , x + x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT 1.000000 AS x , 1 FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 AS x , 1 , 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ( x ) OVER ( ORDER BY x ) ) OVER ( ORDER BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT x AS x FROM x AS x GROUP BY x ) GROUP BY ( SELECT 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 = 1 FROM x WHERE x ( ) GROUP BY ( x = x AND 1.000000 BETWEEN 1 AND 1 ) , x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x ( x ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x NOT IN ( 1 , NULL , 1 ) GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( x ( ) ISNULL , x ( 'x' ) , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x , x ) , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY x ( x <= 'x' , 1.000000 ) OVER x ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = 1 OR x = 1 ) NOT LIKE 'x' IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( x ) , x ( DISTINCT 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 1.000000 * x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x % x <= x , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( ) ) FROM x AS x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 , 1 ) OVER ( ORDER BY x ) AS x FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x WHERE ( SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ) IS NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 GROUP BY NOT x > 'x' ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( x ( x ) ) , x ( x ( x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) OVER ( ORDER BY CAST ( x AS TEXT ) ) , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 1 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 AS x , x , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 AND x = 1 AND x = 1 AND x = 1 AND x = x AND x = 1 OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( 'x' ) ) , 1.000000 , 1 , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x = 'x' ORDER BY x ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ( x NOT IN ( x ) AND x NOT IN ( 1 ) ) , x ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x >= 1 AND x >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY ( SELECT 1 ) ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT NULL INTERSECT SELECT NULL FROM x AS x ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x INDEXED BY x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , ( SELECT x ( x ) FROM x WHERE x < x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ) ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( DISTINCT x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x GROUP BY x ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 1 ) ) FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x ORDER BY x DESC , x DESC , x , x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x ( x <= 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' , 1 FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x ( ) ISNULL , 1 GROUP BY x ( ) HAVING x ( ) ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 ) , x ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) AND x IN ( 1 , 1 ) ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x WHERE x = - 1 OR x > 1 AND NOT x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY - 1 DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x ( x , 1 , 1 ) + 1.000000 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' , 'x' , 1 , 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT CAST ( 'x' AS INTEGER ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1.000000 FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x = ( SELECT x FROM x WHERE x ( x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x FROM x , x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 'x' AND x != x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 = x OR x BETWEEN x AND 1 GROUP BY x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) AS x FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE 1 = x AND x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x , 1 , 1 ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x ) < 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( ( SELECT x FROM x WHERE x = 1 AND x = 1 GROUP BY x ) AND x ( x ) IS NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * , x , x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1.000000 , 1 , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x NOT IN ( 1 ) AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ) ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1 , x ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1 ) , ( 1.000000 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT CAST ( x ( 1 ) AS DOUBLE ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x ( * ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x ( x ) , x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( * ) FROM x GROUP BY x HAVING x ( * ) = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * , 1 , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x AS x , x + 1 AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) FROM x GROUP BY x HAVING x > 'x' ) WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x NULLS LAST ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x FROM x AS x WHERE x IN ( x ) GROUP BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x INTEGER ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) , x , x * x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x , x WHERE x LIKE 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( ) , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x FROM x AS x , x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE ( SELECT 1.000000 , 1 , x ) = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND ( x = x OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x >= 1 ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY CHECK ( x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT 1 IN ( SELECT * FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , NULL FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY 'x' , x ( x , x ) IS NOT NULL , x , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x ( ) % 1 != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x ( ) ) = 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT x ( * ) , x ( x ) , x ( x ) ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x * ( 1 - x ) ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1 , x ( 'x' = x ) ) FROM x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ORDER BY x DESC NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x ( ( x NOT IN ( 1 ) AND x IS NOT NULL NOT IN ( 1 ) ) , x ) AND x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x WHERE x ( ( x = 1 OR x = 1 ) ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x ( x ) = x / 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , NULL , 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE ( ( x OR NOT x ) OR x = 1 ) NOT LIKE 'x' OR x > 1 AND NOT x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT 'x' FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) UNION SELECT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR ( x = 1 ) AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x IS NULL AS x , * FROM x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) OVER ( ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( - 'x' >= x AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( 1 , 1 , x ( x ) = 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 GROUP BY NOT x > 'x' ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x + 1 FROM x EXCEPT SELECT x FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( x = x AND 1.000000 BETWEEN 1 AND 1 ) , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x , x , 'x' , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x ( x , x ) ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND CASE x WHEN 1 THEN 1 ELSE 1 END != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 'x' , x ( x , 1 ) AS x FROM x ORDER BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( ) , x ( x ) OVER ( ) FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS LAST , 'x' ) AS x FROM x ON x ( x ) WHERE x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x ( 'x' = x ) OR x = 'x' OR x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 AND x < 1 ORDER BY x ( x , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT UNIQUE ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 'x' AND x = 'x' GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( x ) OVER ( ORDER BY x ) , 1 ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , x , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND x = x AND x ( 1 ) = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' >= 1 AND 'x' <= x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 'x' , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x HAVING x ( * ) = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x WHERE x = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( ) , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( 1.000000 ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x UNION SELECT * FROM x WHERE CASE WHEN x != 'x' THEN 1 ELSE 1 END ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( ( x = 1 OR x > 'x' ) NOT LIKE 'x' ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER NOT NULL , x CHAR ( 1 ) NOT NULL , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY CAST ( x AS TEXT ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE CASE x WHEN 1 THEN x ELSE 1 END != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x NOT LIKE 'x' ORDER BY x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( 1.000000 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT ( SELECT x FROM x AS x GROUP BY NOT x > 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT DISTINCT x ( * ) FROM x GROUP BY x ORDER BY 1 LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x WHERE x ) FROM x ORDER BY x ( x ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x AS x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT ( SELECT x WHERE x = x ) FROM x AS x GROUP BY x ORDER BY 1 , 1 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( x ) FROM x ( x , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 1.000000 , 1 ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT ( 1 = 1 AND ( x = 1 ) = 1 ) AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED GROUP BY 'x' ORDER BY x ( x , 1 , 1 ) + 1.000000 DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( x ) , x ( 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) , 1 UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x , 1 ) , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x + 1 , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ( x , x ) ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) , x ( x ) , x FROM x GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ) FROM x WHERE x = 'x' AND ( x = 1 OR x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT CAST ( x ( DISTINCT x / 1 ) AS FLOAT ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 'x' ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 AND ( x = 1 OR x = x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x AS x , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) AS x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) , 1 >= ( SELECT x ( * ) FROM x ) IS NULL AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( ) ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ( 1 ) ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x DESC LIMIT 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = x AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x = 'x' ) WHERE NULL IN ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT 1 AS x FROM x AS x , x AS x , x ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT x ( ) OVER ( x ) FROM x ) SELECT x FROM x USING ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x CHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR ( x != x ( 'x' ) OR x = 1 ) OR x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x AS x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , NULL FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x + x LIKE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , 'x' , 'x' ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1.000000 ) WHERE x = x GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT 1 AS x , 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x = - 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x GROUP BY NOT x > 'x' LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( - 1 ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x = 1 AND x IN ( 1 , 1 ) ORDER BY x DESC , x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE x = 1 OR ( ( x * 1 ) > x AND x = 1 ) GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , 'x' FROM x WHERE x NOT IN ( 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) WHERE ( SELECT x FROM x AS x GROUP BY x ORDER BY x DESC NULLS FIRST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x ( x , 'x' ) ISNULL ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1.000000 , 1.000000 ) WHERE x IN ( 1 , - 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1.000000 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x * 1 + x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * ) SELECT x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( x % 1 ) = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x , x , 1 ) , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x INTEGER PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT CAST ( x ( 1 ) AS DOUBLE ) WHERE x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( 1 ) AS x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( * ) OVER ( ORDER BY 1 NULLS LAST ) ORDER BY x ( * ) OVER ( ORDER BY 1 NULLS LAST ) NULLS FIRST LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , 1.000000 ) , ( 1 , 'x' , NULL ) , ( 1 , 'x' , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x + 1 < 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT x ( x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x TEXT , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT ( 'x' / 1 ) , x ( 1 ) , x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND ( 1 = 1 AND x = 1 ) = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x IN ( 1 , 1 ) ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , x FROM x WHERE x ISNULL ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x AS x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 'x' , 1 , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1.000000 , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) ISNULL , x ) ISNULL FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x AS x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT * FROM x WHERE x IS NULL ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( SELECT x FROM x ORDER BY x ) ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x * x ) * 1.000000 FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT x AS x WHERE 1 > x ) FROM x NOT INDEXED NATURAL JOIN x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( 1 ) OVER ( ORDER BY x ) - x AS x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) SELECT x FROM x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x ) ) ) FROM x GROUP BY x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1.000000 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x ( 'x' ) = 1 OR 1.000000 = 1 ) NOT LIKE 'x' IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( x + 1 = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , - 'x' >= x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE 1.000000 = 1.000000 + 1.000000 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x GROUP BY x UNION SELECT x FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x ) , x ( x , 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x NULLS LAST ) FROM x ) WHERE x LIKE x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT DISTINCT x ( 'x' ) OVER ( ORDER BY NULL ) FROM x ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND 1 ) OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE 'x' = x OR x = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE x != x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x , 'x' , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ) WHERE x > 1 OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE x != 1 GROUP BY x ( x , x , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ( x ( x ( ) ISNULL ) AND x ) , x ( NULL ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x , x * x FROM x WHERE ( x >= x ) OR 1 + 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x ( ) ISNULL , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x UNION SELECT * FROM x ORDER BY x DESC NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , x ( x , x ) IS NOT NULL , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1.000000 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x AS x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) INTERSECT SELECT 1 GROUP BY x ( ) ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT - 'x' >= x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY NULL DESC , 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x = x ( * ) , x ( * ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT x FROM x AS x GROUP BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT * FROM x NATURAL JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' , x FROM x WHERE x IN ( SELECT 'x' FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x ) <= 'x' = x ( ) IS NULL + x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , x >= x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x = x ( * ) , x ( x ) OVER ( ) FROM x GROUP BY ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x ORDER BY x DESC NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( 'x' ) > 1 , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x HAVING ( 1 = 1 AND ( x = 1 ) = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x AS x JOIN x ON NULL = 1.000000 , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( ) ) FROM x WHERE x != 1 GROUP BY x HAVING x ( 'x' ) > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x WHERE ( x = 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT 'x' AS x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x NATURAL JOIN x GROUP BY 1.000000 ORDER BY x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ( SELECT x FROM x WHERE x = x ) , 1 ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 , x + x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x INTERSECT SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x OR NOT x ) OR x ( x NOT LIKE x ( x ) , 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x NOT LIKE 'x' FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( x <= 'x' ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , ( 'x' = 1 AND x = 1 ) = x , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( 1 , 1 ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( CASE WHEN x != 'x' THEN 1 ELSE 1 END ) AS x , x FROM x WHERE x ( x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x AS x GROUP BY x ORDER BY 1 + x ( x ) OVER ( ORDER BY x ) DESC ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x > ( SELECT x ( * ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 ORDER BY ( SELECT x ORDER BY * DESC NULLS LAST ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x , x ( x ( ) ISNULL , x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x AS x , x AS x , x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( CASE x WHEN 'x' THEN 1 ELSE 1 END ) , x ( CASE WHEN x = 'x' THEN 1 END ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x LIMIT 1 OFFSET 1 ) SELECT x ( ) OVER ( ORDER BY x ( ) OVER x NULLS FIRST ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x INTERSECT SELECT NULL ORDER BY x ( ) OVER x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x ( x ) IS NULL + x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = 1 OR x = ( x = 1 OR x = x ) ) NOT LIKE NOT ( 'x' = x AND x = 1 ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ) FROM x ORDER BY x DESC , x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( x ) FROM x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x , x AS x , 'x' AS x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT x FROM x AS x GROUP BY ( SELECT 1 ) ) AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ISNULL < 1 + x FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x AS x , x AS x FROM x ORDER BY ( SELECT x ORDER BY 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR CASE x WHEN 1 THEN x ELSE 1 END != 1 OR x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT NULL FROM x GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x LIMIT 1 OFFSET 1 ) SELECT x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT * FROM x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC NULLS FIRST ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x ( x <= 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x IN ( 1 , 1 ) UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ORDER BY x NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x IN ( 1 , x >= x , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 1 AND x = 1 ) OR ( x = 1 AND x ( 'x' AS x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x ) SELECT 1 , x ( * ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( x ( x NOT LIKE 'x' , x ) IS NOT NULL ) , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x != x ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x FROM x GROUP BY CASE x WHEN 1 THEN 1 ELSE 1 END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( x ) AS x , x ( x ) AS x FROM x GROUP BY x HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 IN ( SELECT ( SELECT DISTINCT 'x' AS x , 1 , 1.000000 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT 'x' / 'x' , 'x' / 'x' , 'x' / 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x AS x UNION SELECT * FROM x ORDER BY x ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x ( x , x ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( x ) , x ( 1 ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( CASE WHEN x != x ( ) THEN 1 END ) , x ( CASE WHEN x = 'x' THEN 1 END ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x JOIN x USING ( x , x ) WHERE x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) AS x FROM x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ) IS NOT NULL , x , x ( x , 1 ) OVER ( ) FROM x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1 , x ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED WHERE x = 1 AND x >= 1 AND x < 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x ( x ) , ( x * 1 ) > x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ) , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x WHERE ( x ( ) % 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x % 1 ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( - 'x' , x ) FROM x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( CASE WHEN x LIKE 'x' THEN x * ( 1 - x ) ELSE 1 END ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT 1 AS x FROM x AS x GROUP BY x ( 'x' ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x = 1 AND x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT , x TEXT , x TEXT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( 1.000000 ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 , 1 , x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' AS x FROM x WHERE 'x' != 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( * ) OVER y AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE NULL BETWEEN ( SELECT x FROM x WHERE x = 1 AND x < 1 GROUP BY - 'x' >= x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x AS x , x AS x FROM x GROUP BY x , x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x / 1 , x / 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) , x ( x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x WHERE x LIKE 'x' ORDER BY x ASC ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1 , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY 1 AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x ) <= 'x' = x ISNULL ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x GROUP BY 1 HAVING 1.000000 + 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x AS x WHERE - 'x' >= x AND x = 1 OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT 1 AS x , 1 , x ( x ( 1.000000 ) ) , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 LIMIT ( SELECT x FROM x GROUP BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x >= 1 AND x < 1 ORDER BY x DESC , x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT 1.000000 * x ( x ) FROM x ORDER BY * ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x FROM x WHERE - 'x' >= x AND x = 1 OR x = 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 , x = 1 , x = 1 , x = 1 , x = 1 , x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x GROUP BY 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x , x ( x * ( 1 - x ) ) AS x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , ( SELECT DISTINCT x ( ) LIMIT 1 OFFSET 1 ) , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x AS x FROM x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x , 'x' , 1 ) FROM x GROUP BY x ( x NOT LIKE 'x' ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , x ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x + x WHERE x + 1 = x % 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x INT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x <= 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x + 1 , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x INTERSECT SELECT x + 1 FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT ( 1.000000 / 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) FROM x WHERE x BETWEEN 1 AND 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x ASC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( x * 1 + 1 , 1 ) , x + NULL FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( x NOT IN ( x ) AND x NOT IN ( 1 ) ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT ( x NOT IN ( x ) AND x NOT IN ( 1 ) ) , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 LIMIT 1 OFFSET 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( ) , 1 , 'x' , 1 , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL ORDER BY x ( ) OVER x NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1.000000 , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x IN ( 1 , 1 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x GROUP BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x , x WHERE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NOT INDEXED GROUP BY 1 , x HAVING x > 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1.000000 FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x IS NULL AND x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x + x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( * ) , x ( * ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( x ) , x ( x ) , x ( x ) FROM x LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , NULL , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , - 'x' >= x , 1 = x / 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x > 1 ) , x ( 1 ) , ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , NULL FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ( x ( * ) ) , x ASC ) AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( ) , x ( 1 ) , x ( x ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x INDEXED BY x WHERE x = ( SELECT x FROM x INDEXED BY x WHERE NULL = x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x * ( 1 - x ) ) AS x , x FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , 'x' , 1 ) , ( 1 , 'x' , 'x' , 1 ) , ( 1 , 'x' , 'x' , 1 ) , ( 1 , 'x' , 'x' , 1 ) , ( 1 , 'x' , 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) LIMIT ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x GROUP BY - 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1 ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 = x OR 1.000000 = 1.000000 + 1.000000 BETWEEN x AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( x NOT IN ( ( x = x AND x = 1 ) ) AND x IS NOT NULL NOT IN ( 1 ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1.000000 , 'x' ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ( SELECT CAST ( x ( NULL ) AS INT ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x INTERSECT SELECT DISTINCT * FROM x ORDER BY x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x AND x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x ORDER BY 1 NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( - 1.000000 >= x IS NOT NULL = 1 AND x = 1 ) OR x = x OR x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) WHERE x ( ) ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT - 'x' , x FROM x EXCEPT SELECT x , x FROM x WHERE x != 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1.000000 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x JOIN x NATURAL JOIN x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ) , x FROM x GROUP BY 'x' , x ( x ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x >= 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 GROUP BY NOT x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x ( ) OVER tcl ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x WHERE x BETWEEN ( SELECT x AS x FROM x AS x GROUP BY x HAVING x ) AND 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x WHERE x <= 1 GROUP BY x HAVING x > 'x' ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x ( x ( ) ) = x AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 FROM x WHERE x IN ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x + x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x ( x ) OVER ( ORDER BY x ) FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( x <= 'x' , x ) OVER x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ) , x ( x ( x ) <= 'x' = x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY , x TEXT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x = x AND x = 1 ) FROM x WHERE ( 1 IN ( 1 , 1 ) ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY 1 , 1 , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( x ) , x ( x ) , x ( x ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * , x , x , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) , x ( x ( ) ISNULL , x ) ISNULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , * , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x = 1 GROUP BY x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x GROUP BY x ( ) ISNULL , x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS WITH x AS ( SELECT x ( x ) AS x FROM x AS x INDEXED BY x ) SELECT x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x IS NULL FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x AS x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x AS x , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( ) , 1 , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x AS x NATURAL JOIN x GROUP BY 1 HAVING 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 , x + 1 , x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 WHERE x = ( SELECT x FROM x WHERE x ( 'x' ) ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x AS x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) UNIQUE , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT x ( * ) FROM x AS x GROUP BY x ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 1 FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND 1 = x AND ( ( x OR NOT x ) BETWEEN 1 AND 1 ) + x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY 'x' , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( ) FROM x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x , x , 1 ) , 'x' FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , x ( x ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x * ( 1 - x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * IS NOT NULL FROM x , x WHERE 1 = x AND x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 1.000000 , x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE 1 < x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) , x ( x ) OVER ( ORDER BY x DESC , - 1 DESC ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ( x NOT LIKE x ( x ) , 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x NOT LIKE x , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x IN ( * , 1 , NULL ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 , 1 AS x , 1 GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( SELECT x FROM x AS x GROUP BY x ORDER BY x DESC NULLS FIRST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) = 1 FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT ( SELECT 1 ) , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 = 1 FROM x WHERE x ( ) GROUP BY 'x' , x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x ( ) , x FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 AND 1 = x + 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( ) IS NOT NULL , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x INT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x , x AS x , x USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1.000000 * x ( x ) , x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) WHERE ( SELECT x FROM x AS x GROUP BY x ORDER BY x DESC NULLS FIRST ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x + 1 , x FROM x , x ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , ( SELECT CAST ( x ( x ) AS INT ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x = 1 AND x ( * ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) FROM x ORDER BY x ( 1.000000 ) , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x + 1 , x ( 1 ) , x , x ( 'x' ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x INTEGER , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1.000000 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT 1.000000 FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x % 1 ) FROM x WHERE 'x' != 1 GROUP BY x ORDER BY x DESC NULLS FIRST , 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT NOT x > 'x' FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' , x = 'x' , x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) INTERSECT SELECT 1 ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x ( ) OR x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - ( SELECT DISTINCT x ( 1.000000 ) FROM x AS x GROUP BY x ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 AS x , 1 AS x , 1 AS x , 1 ORDER BY x ASC , x ASC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x ) ) WHERE x LIKE 'x' AND NOT x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 , NULL , 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( x * 1 ) > x FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) GROUP BY x ( 'x' , 1 ) <= 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT - 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 IN ( SELECT ( SELECT 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x ORDER BY x LIMIT 1 ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x GROUP BY 1 , 1 ORDER BY 1 NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT - 1 >= x FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x WHERE x = x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 'x' , 'x' ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ( SELECT CAST ( x ( x ) AS CHAR ( 1 ) ) ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x WHERE 1 ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 1.000000 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x * 1 WHERE x IN ( SELECT DISTINCT x FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x , x USING ( x , x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ORDER BY x DESC , x ASC ) ) WHERE ( x BETWEEN 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x = x ( x ) , x ( x ) AS x FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( * ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x IS NULL FROM x AS x WHERE x = 1 OR ( x = 1 AND x = 1 ) GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( x ( 1.000000 ) ) FROM x WHERE x = 1 AND x >= 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x + 1 , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ( x ( x , 1 , 1 ) ) ) FROM x GROUP BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) FROM x ORDER BY x , x ASC , x DESC ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' , x , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ) FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x FLOAT , x TEXT ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x BETWEEN ( SELECT 1 AS x WHERE ( SELECT x AS x WHERE 1 > x ) ) AND x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x AS x FROM x AS x GROUP BY x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , 'x' FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x , x AS x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x OR x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON ( SELECT 1 ) = 1 GROUP BY NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x AS x , x ( x ) OVER ( PARTITION BY x ORDER BY x DESC , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ( x ) , x ( x ) , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( * ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) FROM x , x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) AS x , x ( 1 ) , - 'x' FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( DISTINCT x / 1 ) , 1 , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ( CAST ( x ( x ) AS DOUBLE ) ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x NOT LIKE x , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ) , x IS NULL , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x , x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x NOT LIKE x ( x ( 'x' , 1 ) <= 'x' = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x CHAR ( 1 ) , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( ( SELECT x AS x FROM x AS x WHERE x IN ( 'x' ) GROUP BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = ( SELECT 1 ) AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) OVER x AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x AS x , x AS x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x ( x ) FROM x WHERE x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x TEXT , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT NOT x >= 'x' , 1 FROM x JOIN x USING ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) GROUP BY - 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1.000000 , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE NOT NULL UNIQUE ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x ORDER BY x , x DESC , x , x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ) WHERE x = x AND x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x * 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x = x AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x AS x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT CAST ( x ( x / 1 ) AS INTEGER ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x , 1 , x ( 'x' ) ) OVER ( ORDER BY x ) AS x FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x + x ( ) GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x WHERE 1 = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT DISTINCT * , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x NOT INDEXED NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT x ( x % 1 ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) PRIMARY KEY , x DOUBLE , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = 'x' AND x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x TEXT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) <= 'x' , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , CASE x WHEN 1 THEN x ELSE 1 END FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x , x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT NOT x , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x * x FROM x ORDER BY 1 , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x FROM x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x , x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ) FROM x GROUP BY x HAVING x ( ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY 1 , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x ( x ) < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x , 'x' FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x <= 'x' ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( x , x ) IS NOT NULL , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 'x' OR x = 'x' ) AND x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( DISTINCT x ) , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x = 1 AND x IN ( 1 , 1 ) ORDER BY x DESC , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) , x FROM x GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x IN ( 1 , 1 ) AND x NOT IN ( 1 , 1 ) AND x NOT LIKE x ( x ) AND x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( * , x ) OVER ( ORDER BY x DESC , x ASC ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x , x AS x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x ( DISTINCT x ) FROM x ) IS NULL NOT LIKE x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1.000000 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) , x ( x ) FROM x WHERE x ( x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x , x AS x USING ( x , x ) WHERE x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ) <= 'x' = x ISNULL < 1 + x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL , 1 ) , ( NULL , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) , ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( 1 , 1 ) INTERSECT SELECT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = x AND ( x = 1 OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 = x OR x BETWEEN CASE x WHEN 'x' THEN 1 ELSE 1 END AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , 1 AS x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x ) , x ( x ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT 1 , 1 ) FROM x AS x WHERE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER , x INTEGER , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , 1 ) FROM x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( * ) OVER ( ) , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ORDER BY 'x' ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , * FROM x ORDER BY x ( x ) OVER ( ) , x NULLS LAST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x FROM x WHERE x IN ( 1 , 1 AS x , 1 , 1 ) ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x ORDER BY x , x DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x ( x NOT LIKE x ( x ) ) , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x USING ( x , x ) WHERE 1 = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE 1 < x AND 1 >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x INTEGER , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x ( ) GROUP BY ( SELECT 1 ORDER BY 'x' ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x FROM x WHERE x = 1 AND x <= 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x FROM x ON x ( x ) WHERE x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x EXCEPT SELECT x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , CAST ( ( SELECT x FROM x WHERE 1 = x ) AS INT ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' , x + 1 , x FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT x FROM x AS x GROUP BY x ( 'x' ) , x , x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x AS x FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x FLOAT , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x , x GROUP BY 1 , x ( x ) OVER ( ) AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND 1 = x AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x NOT IN ( x , x ( 'x' ) ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x AS x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x , x , 1 ) , x ) FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( * ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 AS x FROM x , x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( NOT x > x % x % 1 , x , x ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( x ) AS x FROM x AS x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x ( x , 1 , 1 ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x DESC LIMIT ( SELECT x AS x , x FROM x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 'x' , 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT CAST ( x ( 1 ) AS DOUBLE ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) , 1 FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x * x ) OVER ( ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT x AS x FROM x AS x GROUP BY x ORDER BY x * 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x AS x , x AS x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ) / 1.000000 AS x FROM x AS x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x ( x ( ) ISNULL ) AND x ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x AS x WHERE x > 1 OR x > 1 AND NOT x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT UNIQUE , x VARCHAR ( 1 ) PRIMARY KEY , x INT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1.000000 * x ( x ) , x , x * x FROM x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = 1 OR x = 1 ) NOT LIKE NOT x ( x , x ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x , x AS x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' ) , ( 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 AND 1 = x AND x = 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = x ( x ) OR x = 'x' OR x ( x ) IS NULL + x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT x ( x ( ) , 1 , 1 ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' , 1 , 'x' , 1 ) , ( 'x' , 'x' , 1 , 'x' , 1 ) , ( 'x' , 'x' , 1 , 'x' , 1 ) , ( 'x' , 'x' , 1 , 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE WHEN 'x' THEN 'x' ELSE 'x' END ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 AS x , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( 1 , 1 ) , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x AS x ORDER BY x ( ) NULLS LAST LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) AS x GROUP BY 1 HAVING x ( ) IS NOT NULL < 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 1 , 1 , CASE x WHEN 1 THEN 1 ELSE 1 END , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT * FROM x ) SELECT * FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x , CASE WHEN x = 1 THEN 'x' ELSE x END AS x FROM x WHERE x IN ( 'x' , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) , x FROM x WHERE x ( x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x AS x GROUP BY x ORDER BY x , x DESC , x DESC ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE 'x' BETWEEN 1 AND x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 GROUP BY x ( ) HAVING x ( ) ORDER BY 1.000000 DESC NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( - 'x' >= x ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' AS x , 'x' , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( CASE WHEN x = 'x' THEN 1 END ) , x ( x / 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) OVER ( ORDER BY x ) FROM x AS x GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) ISNULL , NOT x ( x , x ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ( 1 ) ) OVER ( PARTITION BY x ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 , x ( x ) = 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( x ORDER BY x ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( x ( x , x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( 1 , 1 ) ) ORDER BY x , x DESC , x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x AS x FROM x INDEXED BY x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x AS x , x AS x , x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x AS x , x AS x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( SELECT 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT * FROM x WHERE 1 < x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 AS x , 1 ORDER BY x ( * ) OVER ( ) , 'x' LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) FROM x WHERE x + x LIKE x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT UNIQUE ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = x AND x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( 'x' ) OVER ( ORDER BY x NULLS LAST ) , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' , NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT 1 AS x , 1 AS x , 1 , 1 AS x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x NOT LIKE x FROM x WHERE x = x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x IN ( 1 , 1 ) FROM x ORDER BY x + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( ) , x , 1 , 1 , x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( SELECT x FROM x WHERE x > x ) = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x NULLS LAST ) , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT x , * FROM x ORDER BY x , x DESC , x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 FROM x ON x ( DISTINCT ( x ) ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 1 , ( x NOT IN ( x ) AND x NOT IN ( 1 ) ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE 1 > 'x' GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 ) FROM x ON x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , * FROM x WHERE x IN ( SELECT x AS x FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x + 1 = ( SELECT DISTINCT x IS NULL FROM x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x WHERE x = x OR ( x = 1 AND x = 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x JOIN x ON x = x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x ( x , 1 , 1 ) + 1.000000 DESC NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x ( ) ISNULL ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 AS x , 1 , 1 FROM x WHERE x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x != 1 AND x = x AND x = 1 AND x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY ( SELECT x ORDER BY 1.000000 DESC ) ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x > 1 OR x > 1 AND NOT x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) OVER ( PARTITION BY x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY NULL DESC ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( * ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) AS x , x ( 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1.000000 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( ) ISNULL , ( x ) , x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 1 IN ( CAST ( 'x' AS TEXT ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT 1 WHERE ( SELECT 1 , 1 ) LIMIT 'x' OFFSET 1 OR ( 1 IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x WHERE x ( x <= 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT , x TEXT , x TEXT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x , x AS x LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , ( SELECT x ( x ) OVER ( ) FROM x WHERE x < x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x ( x ) AS x FROM x AS x INDEXED BY x ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , ( SELECT 1 ) , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , x , 1 = x / 1 , 1 FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 'x' BETWEEN 1 AND x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 'x' IN ( SELECT DISTINCT x ( x ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x USING ( x , x ) NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x FROM x ON x ( x ) WHERE x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( x ( x ( ) ISNULL ) AND x ) , x ( x > 1 ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , CASE x WHEN 1 THEN 1 ELSE 1 END FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x BETWEEN 1 AND 1 ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x + x LIKE x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x INTERSECT SELECT * FROM x ORDER BY x + 1 , 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x WHERE x = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x , x AS x WHERE x IN ( 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY 'x' , 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) , x ( x , 1 , 1 ) AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x DESC , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1.000000 , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x , x DESC , x DESC , x ASC , x ASC ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x + x , CAST ( x AS TEXT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT 1 AS x , x ( x , x ) AS x , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( NULL ) FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( ) ISNULL ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( * ) FROM x ( x , x ) WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT ( SELECT 1 ) = 1 LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE CASE x WHEN 1 THEN 1 ELSE 1 END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x ) FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY CHECK ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) , x ) FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x WHERE 1 = x OR x ( x , x ) BETWEEN x AND 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x GROUP BY x ORDER BY x ASC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x GROUP BY x HAVING x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) WHERE x IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT x IS NULL FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x GROUP BY x + 1 , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x + x WHERE ( SELECT x ( * ) OVER ( ) FROM x AS x ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = x AND x = x AND x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE 1 = 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ORDER BY x DESC , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x <= x , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x WHERE ( x = 1 AND ( x = x OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x , 1 , 'x' ) ) ) FROM x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( NOT NOT ( x >= x ) ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x <= 'x' OR x = 1 AND x = x AND x ( 1.000000 ) = 1 AND ( x ) <= 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT ( SELECT DISTINCT x , x , 1.000000 ) LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x DOUBLE PRIMARY KEY CHECK ( x ( x ( x NOT LIKE x ( x ) , 1 , 1 ) ) IS NULL + x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 ) OVER ( ) , x ( x ) OVER ( ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 1.000000 FROM x WHERE ( x BETWEEN 1 AND 1 ) + x AND ( x = 1 OR x = 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x + 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * AS x FROM x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = 1 AND ( x = 1 OR ( x % 1 ) = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x ORDER BY x ( x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( ( SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ) AND 1 ) OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x - x , x + x FROM x WHERE x GROUP BY x HAVING x > 'x' ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x WHERE x IN ( 1 , 1 , NULL , 1 ) AND x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ISNULL GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x / 1.000000 ) , x ( 1 ) , x ( - 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT CASE x WHEN 1 THEN 1 ELSE 1 END != 1 AS x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT * FROM x ) SELECT 1 AS x , 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , x AS x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 + x % 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x USING ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x ORDER BY x DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ) ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x IS NULL FROM x WHERE x = 1 OR ( x = 1 AND x NOT LIKE x ( x ) <= 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( x * 1 ) > x FROM x ( x , x ) WHERE x > 1 OR x > 1 AND x NOT LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x WHERE ( x = 1 AND ( x = x OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' , x + 1 , x FROM x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 AND ( x = 1 OR x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( 1 ) >= 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 AS x , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( 1.000000 ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT 'x' FROM x INDEXED BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1.000000 ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x UNION SELECT x ( x ) OVER ( ) FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 ) , 1 , 1 GROUP BY x ( ) HAVING x ( ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , ( 1 ) , x ( 1 ) FROM x , x AS x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x ) / 1.000000 AS x FROM x AS x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x < ( SELECT x FROM x GROUP BY x + 1 , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x , x AS x WHERE x = 'x' AND x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT - 'x' FROM x ) SELECT x FROM x WHERE x LIKE 'x' OR x > 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE NOT NULL , x INT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x NATURAL JOIN x NATURAL JOIN x GROUP BY NOT x > 'x' LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x WHERE x ( x ) <= 'x' = x ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x GROUP BY x UNION SELECT x FROM x ORDER BY NOT x = 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x + 1 < 1 ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( 1 ) OVER y >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( 1 ) , 1 , 1 GROUP BY x ( ) HAVING x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT ( SELECT x ( * ) FROM x AS x GROUP BY x ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE NULL BETWEEN ( SELECT * FROM x WHERE x ( x , 1.000000 ) <= 'x' GROUP BY x ) AND 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( 'x' ) ) OVER ( ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 'x' ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( ) OVER ( ORDER BY x ( * ) OVER ( ) ) GROUP BY NULL INTERSECT SELECT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 FROM x ON x ( DISTINCT ( x ) ) OVER ( ) WHERE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , 1 , * GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ) FROM x GROUP BY x ( 'x' ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x WHERE x = x ORDER BY x , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) GROUP BY x HAVING x < 'x' ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x ( x + x ( x ) ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * AS x FROM x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x + x , x - x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != x ( x + x ( x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT NULL INTERSECT SELECT NULL ORDER BY x ( x ( ) , 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ) FROM x AS x GROUP BY x ( ) % 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( x , x + 'x' ) >= x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY NULL DESC , 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x != 1 ORDER BY x DESC , x ASC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT 1 AS x FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 AND ( x = 1 OR x = 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( x ( x ) AS DOUBLE ) ) , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x IN ( 1 , 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > ( x ( 'x' ) = 1 OR 1.000000 = 1 ) OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x , x ) FROM x ORDER BY x ( x ) DESC , x * 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x TEXT NOT NULL PRIMARY KEY ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x GROUP BY x ( x , 1 ) OVER ( ORDER BY x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x AS x GROUP BY x ORDER BY ( SELECT CAST ( x ( 1 ) AS DOUBLE ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ( * ) OVER ( ) ) LIMIT x ( x , 1 ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND 1 ) OR 1 = x + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT 'x' / 'x' , 'x' / 'x' , 'x' / 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x UNION SELECT x ( x ) FROM x ORDER BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) , x FROM x WHERE x ( x ) IS NULL + x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x VARCHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE ( x = x AND ( x = 1 OR x = 1 ) ) OR ( x = 1 AND x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW WITH x AS ( SELECT * AS x FROM x ) SELECT x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x EXCEPT SELECT x ( ) ISNULL FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , x * 1 AS x , x ORDER BY x ( ) OVER x NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x , x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ( x , x ) ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT 1 FROM x AS x , x AS x , x AS x JOIN x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY x DESC , x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x = 1 OR ( x != x AND x = 1 ) ORDER BY 1 , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + x , 1 FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT x FROM x ORDER BY x LIMIT 1 ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x * x ) OVER ( ORDER BY x DESC , x ASC ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ORDER BY x ) FROM x WHERE x LIKE 'x' ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 OR ( x = 1 AND ( x = x OR x = x ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x IN ( x NOT LIKE ( SELECT x ) + x IS NOT NULL ) AND x NOT IN ( 1 , 1 ) AND x = 1 AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT NULL FROM x GROUP BY x , ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT * FROM x WHERE - 'x' >= x AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x AS x WHERE 'x' != 1 GROUP BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ( x ) ) OVER ( PARTITION BY x ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x ) FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ) IS NOT NULL FROM x WHERE x ( x <= 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) WHERE x = x AND x ( 'x' , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY x ( ) OVER x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x , x WHERE x = x AND x = 1 AND x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT * FROM x WHERE x >= 1 AND x <= 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x FROM x WHERE x = x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x INT , x TEXT UNIQUE NOT NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND - x ( 1 AS x ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( 1.000000 ) , x ) , x , 1 , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE EXISTS ( SELECT x , x ( x , 1.000000 ) OVER ( ORDER BY x ) IS NOT NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( DISTINCT x , x ( x ( x , 1 , 1 ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x IN ( SELECT x FROM x LIMIT 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1.000000 , 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x JOIN x ON NULL = 1.000000 WHERE x = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE ( x NOT LIKE x ( x ) OR x = 1 ) != 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , 1 , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x * x FROM x GROUP BY x HAVING x > x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' , * FROM x WHERE x IN ( SELECT x FROM x WHERE x OR x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 AND ( x NOT LIKE x ( x ) OR x = 1 ) ORDER BY x DESC ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT CASE NULL WHEN 'x' THEN 'x' WHEN 'x' THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x UNION SELECT DISTINCT * FROM x ORDER BY x , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x ORDER BY x ( x , 1 , 1 ) + 1.000000 DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * ) SELECT x ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , x ( ) ISNULL , 1 AS x GROUP BY x ( ) HAVING x ( ) ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE CASE WHEN 1 THEN 1 ELSE 1 END IN ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * , 'x' FROM x WHERE x = 1 ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x JOIN x USING ( x , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) AS x , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x NOT LIKE x ( x ) IS NULL + x IS NOT NULL , 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) FROM x WHERE ( SELECT x FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x AS x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x GROUP BY x ( x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x NATURAL JOIN x AS x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , 'x' = x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( x ( DISTINCT x / 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( SELECT 1 + x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x < 1 AS INTEGER ) FROM x ORDER BY x DESC NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( * ) , 1 , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 IN ( SELECT * FROM x WHERE ( SELECT x AS x WHERE 1 > x ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( x ( 1 ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x , x ) , x ( DISTINCT 1 ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x GROUP BY 'x' , x ( x >= x ) , x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY 1.000000 DESC NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x NULLS LAST ) FROM x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY x + 1 NULLS FIRST ) FROM x AS x GROUP BY x HAVING x < x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x - x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x IS NULL LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) GROUP BY x HAVING x < x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY NOT x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x = x ( x ) AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( 1 IN ( 1 , 1 ) ) LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = 1 AND ( x = 1 OR x = 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) IN ( SELECT 1 INTERSECT SELECT 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x x JOIN x ON x = x WHERE x >= 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = x + 1 WHERE x = 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ( 1 ) ) , x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) OVER ( ORDER BY x ( * ) OVER ( ORDER BY x ( * ) OVER ( ORDER BY 1 DESC NULLS LAST ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x = x ( * ) , x ( * ) FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x CHAR ( 1 ) , x INTEGER ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x / 1 , x / 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( x ) , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x ( 1 ) ) LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE UNIQUE NOT NULL , x INT , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 AS x GROUP BY x ( ) HAVING x ( ) ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 WHERE ( SELECT x FROM x WHERE x != 1 GROUP BY x ) != x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 IN ( SELECT 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 'x' , 'x' , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ORDER BY x DESC , x LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x , x FROM x ORDER BY 1.000000 + x ( * ) , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x WHERE ( x = x AND ( x = 1 OR x = 1 ) ) OR ( x >= 1.000000 AND x = 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( 'x' ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( ORDER BY x ( ) ) FROM x GROUP BY x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x , 1 >= x NOT LIKE x ( x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) ) IS NULL AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x DESC NULLS LAST , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , * FROM x WHERE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x , x AS x , x AS x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x ) OVER ( ) ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x , x FROM x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' , x = 'x' WHERE x = 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( SELECT x ( x ) OVER ( PARTITION BY x ) ) IS NULL > 1 OR x > 1 AND x NOT LIKE - 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1.000000 , x FROM x UNION SELECT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x , x ( x ) / 1.000000 AS x , x * x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = x OR ( SELECT x FROM x AS x GROUP BY x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x ( * ) OVER ( ORDER BY x ) FROM x GROUP BY x HAVING x ( x ) > 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x ) OVER ( PARTITION BY 'x' , * ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT NULL , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY 1 , 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x > 1 OR x > 1 AND NOT x ) OR x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 ORDER BY x DESC , x NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x AS x FROM x WHERE 1 = x ) ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x ( ) % 1 AND 1 ) OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x , x WHERE x = x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( CASE WHEN x = 'x' THEN 1 END ) , x ( x / 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , 1.000000 IS NULL , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x UNION SELECT x FROM x ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( NULL ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) AND x > 1 AND x < 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 ) , x ( 1 ) , ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT DISTINCT 1 AS x , x FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x , 1 ) OVER ( ORDER BY x ) WHERE x LIKE 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE x WHEN 1 THEN x ELSE 1 END , x ( x ) , x ( x ) FROM x WHERE x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1.000000 , 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY x DESC , x ASC ) FROM x WHERE x + x LIKE 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x / 1 , x / 1 FROM x UNION SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x FLOAT UNIQUE , x FLOAT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( 1 ) , x ( x IS NULL ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE 1 > x OR x > 1 AND NOT x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x JOIN x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x ( x ( ) ) OVER ( ) FROM x AS x GROUP BY x ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x AS x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * FROM x AS x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x , 1 ) OVER ( ORDER BY x ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x AS x FROM x AS x GROUP BY 1.000000 ORDER BY x ASC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ( x NOT IN ( 'x' , 'x' ) AND x IS NOT NULL NOT IN ( 1 ) ) , x ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x FROM x WHERE x = 1 LIMIT 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT 'x' IN ( SELECT DISTINCT x >= 'x' FROM x ORDER BY NOT x = 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT DISTINCT 1 AS x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( * ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x FROM x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW DROP VIEW x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 GROUP BY x ( x ) LIMIT 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) AS x FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT NOT x > 'x' FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x HAVING x ( x ) > 1 ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE CASE ( SELECT x ( NULL ) ) WHEN 1 THEN 1 ELSE 1 END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ( x ) , x ( x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE UNIQUE UNIQUE PRIMARY KEY UNIQUE NOT NULL UNIQUE ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x AS x , 1 FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x > 1 ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x ( x ) FROM x GROUP BY x , x ORDER BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT NOT x ( ) IS NULL + x IS NOT NULL - 'x' >= x IS NOT NULL , 1 FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x , x AS x WHERE x = x AND x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x + 1 = x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x >= 'x' FROM x ORDER BY NOT x = 'x' ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT ( SELECT x FROM x ORDER BY ( x = 1 AND x = * ) DESC LIMIT 1 OFFSET 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( * ) OVER ( ORDER BY x ) , NOT ( 'x' = x AND x = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x LIKE ( x BETWEEN 1 AND 1 ) AND x = 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 , x + 1 , 1 FROM x UNION SELECT DISTINCT * FROM x ORDER BY 'x' NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , x FROM x ON x ( x , x ) WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) GROUP BY x ( ) ISNULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x TEXT ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x ( x ) , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x = 1 OR x < ( SELECT 1.000000 * x ( x ) FROM x WHERE x = x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x ( 1 ) OVER ( ) , 1.000000 , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x NOT LIKE x ( x ) IS NULL + x IS NOT NULL FROM x WHERE ( 1 IN ( 1 , 1 ) ) LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x WHERE 'x' = x AND x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( SELECT x FROM x WHERE x IN ( 1 , 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x = ( SELECT x FROM x WHERE x ( 'x' AS x ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x , x ( x ) OVER ( PARTITION BY x ) FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) AS x FROM x WHERE x ( x , x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x = 1 ORDER BY x ( ) OVER x LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x FROM x AS x JOIN x ON NULL = 1.000000 NOT LIKE 'x' USING ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x >= 1 AND x >= x ORDER BY CAST ( x AS TEXT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT CASE x WHEN 1 THEN 1 ELSE 1 END != x ( 'x' ) FROM x WHERE x != 1 GROUP BY x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x * x ) AS x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x > 'x' ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ( x ) ORDER BY x DESC NULLS LAST , 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x GROUP BY x , x HAVING x ( x ) > 1 ORDER BY x DESC LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x + x LIKE x ( 'x' ) > 1 IS NOT NULL , x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( - x ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 >= ( SELECT 1.000000 * x ( x ) FROM x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT 1 , 1 AS x , 1 FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( x = 1 OR x > 'x' ) NOT LIKE 'x' * x * 1 + x ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x AS x GROUP BY x ( ) ISNULL , ( x ( x ( ) ISNULL ) AND x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY NULL DESC ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( x ( * ) OVER ( ) , 1.000000 , 'x' ) GROUP BY - 'x' AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 1 , x = 1 , x = 1 WHERE x IN ( SELECT x WHERE x = x OR ( x = 1 AND x = 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 AS x , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 'x' , * FROM x WHERE x IN ( SELECT CAST ( 'x' AS INTEGER ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ( 'x' ) , x ) FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * , x IN ( x ( ) ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x NOT LIKE x , x ( x ( 1.000000 ) , x ) ISNULL FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = 'x' OR x = 'x' OR x = * ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x NATURAL JOIN x AS x NATURAL JOIN x GROUP BY 'x' , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x = ( SELECT x ( x ) FROM x AS x WHERE x = x ) , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT x FROM x AS x GROUP BY x ) AND 'x' AS x FROM x LIMIT 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 AS x , 1 , 1 AS x , 1 ORDER BY x ASC , x ASC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 'x' , 1 , 1.000000 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x NOT LIKE x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x UNION SELECT * AS x FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = CASE WHEN x % 1 != 1 THEN x END WHERE x = ( SELECT x FROM x WHERE x = x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) FROM x ORDER BY x ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( x ) OVER ( PARTITION BY x ORDER BY x ) FROM x GROUP BY x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x , ( x = 1 AND ( x ( ) % 1 AND 1 ) ) , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT CAST ( x ( 1.000000 , 1 , x ) AS DOUBLE ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > x OR x > 1 AND x NOT LIKE - 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x AS x , x , 'x' FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , x ( ( 1 = 1 AND ( x ( ) % 1 AND 1 ) ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ( x , 'x' ) ISNULL ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x JOIN x AS x ON x = x WHERE x = 1 AND 1 = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x AS x WHERE x > x GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT DISTINCT x WHERE ( SELECT x ( x ) OVER ( PARTITION BY x ) ) IS NULL = x + 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT x ( x ) OVER x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT CAST ( x < 1 AS INTEGER ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , NULL , 1.000000 , NULL ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x FROM x JOIN x USING ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 1 ) FROM x WHERE x != 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x CHAR ( 1 ) , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND x = x AND x >= 'x' AND x LIKE 'x' ) OR x = 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x % 1 ) FROM x WHERE x < 1 + x GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x = ( SELECT x FROM x WHERE NULL = x ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x AS x , x AS x WHERE x + x LIKE 'x' ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE ( x ( ) % 1 ) + x ( x , x ) IS NOT NULL IN ( 1.000000 , 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x INTEGER ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , ( SELECT x ( x ) OVER ( ) ORDER BY x ( * ) OVER ( ) ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 'x' , 1.000000 , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( DISTINCT x ) , x FROM x WHERE x ISNULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT - 'x' FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT x NOT LIKE 'x' LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x BETWEEN 1 AND 1 ) OR x = 1 ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , x + x , 1 FROM x UNION SELECT x WHERE x OR x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x UNION SELECT DISTINCT * FROM x ORDER BY x * 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT , x TEXT ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( x = x AND x = 1 ) , x FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x AS x ) SELECT x ( x ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT * FROM x AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) , x ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT 1 AS x FROM x AS x , x AS x , x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( 1 ) ) , x FROM x WHERE x IS NOT NULL ORDER BY x ( ) OVER tcl ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT * FROM x AS x , x AS x , x AS x NATURAL JOIN x NOT INDEXED ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' , 1 ) FROM x ( x , x ) WHERE x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ) IS NOT NULL FROM x UNION SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = 'x' >= x IS NOT NULL WHERE x > 1 OR x > 1 AND - x ( 1 ) >= x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) IS NOT NULL FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) NULLS LAST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 , 1 , NULL FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT 'x' AS x , x ( ( x % x <= x ) , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT CASE 1 WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END ORDER BY 1 , 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x , ( CASE WHEN x != 'x' THEN 1 ELSE 1 END ) AS x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( x ) OVER ( ORDER BY x DESC , 1 , 1 ) FROM x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT NOT x > 'x' FROM x ORDER BY x DESC ) GROUP BY NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( 'x' , 1 ) OVER ( ) FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( * ) OVER ( ORDER BY x ) , x FROM x GROUP BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT * FROM x , x WHERE x < x ORDER BY 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x AS x FROM x , x WHERE x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) / 1.000000 AS x FROM x WHERE - 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) OVER ( ORDER BY CAST ( x AS CHAR ( 1 ) ) ) , 1 ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x ( x ) IN ( 'x' , 'x' ) ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1.000000 , 'x' , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NATURAL JOIN x INTERSECT SELECT DISTINCT * FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( x ( x ) OVER ( ) ) , 1 ) FROM x ( x ) WHERE x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT 1 IN ( SELECT x FROM x ) AS x GROUP BY 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( x , 1 ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT x FROM x WHERE x IN ( x ( 1.000000 ) ) ORDER BY x + x , x NULLS LAST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 'x' , x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT x ( ) OVER ( ORDER BY x ( * ) OVER ( ) ) ) SELECT x ( ) AS x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ORDER BY x ASC , x DESC ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ( x ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT DISTINCT * , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT 1 FROM x AS x WHERE x = x + 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x IN ( SELECT x ( x * x ) * 1.000000 FROM x WHERE x = x + 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x DOUBLE , x CHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER PRIMARY KEY CHECK ( x ( ) IS NULL + ( x = 1 OR CASE WHEN x = 1 THEN 'x' ELSE x END = 1 ) NOT LIKE 'x' IS NOT NULL ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT x ( 1 , 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) FROM x WHERE x = 1 AND x = 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL GROUP BY x ( x , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT * FROM x WHERE x IN ( SELECT x FROM x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( x ( ) ISNULL , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 AS x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE 'x' ) ISNULL , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT CAST ( x > x ( ) IS NOT NULL AS DOUBLE ) ) FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x IS NULL FROM x WHERE x = 1 AND x >= 1.000000 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x ( ) OVER ( ORDER BY 1 >= x = 1 DESC ) FROM x ORDER BY x ( x ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x , x ) FROM x ORDER BY x ( * ) OVER ( ORDER BY x ) DESC LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , 1 ) OVER ( ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT ( SELECT x FROM x ORDER BY x LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT x ( ) OVER ( x ORDER BY x DESC ) FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x > 1 OR x > 1 AND x NOT LIKE 'x' GROUP BY x ( x <= 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1 , 1 , NULL ) , ( 1 , 1 ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ( SELECT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) ) FROM x ORDER BY x ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( NULL , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( * ) FROM x WHERE x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x INTEGER , x INT , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT x , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT * FROM x INTERSECT SELECT * FROM x ORDER BY x ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT * FROM x WHERE x >= 1 ORDER BY x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT x ( 'x' ) AS x FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE ( x = x AND x = x AND x = x AND x = x ) OR x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x NATURAL JOIN x NATURAL JOIN x ORDER BY x ( ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ORDER BY x , x DESC NULLS LAST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x , 'x' ) ISNULL FROM x WHERE x OR 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x * ( 1 - x ) ) AS x , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x WHERE x >= 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x , x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE - x ( 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x NATURAL JOIN x NOT INDEXED WHERE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x FROM x WHERE x ( ) GROUP BY x ( ) , 1 , 1 , x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x = x OR x = x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x AS x JOIN x AS x ON x = x JOIN x USING ( x ) ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1 ) , ( 'x' ) , ( 1.000000 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT ( SELECT x ( ) FROM x WHERE x = 'x' ) FROM x LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INTEGER UNIQUE NOT NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x VALUES ( 1 , 'x' , NULL ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT ( SELECT DISTINCT x AS x , ( x * 1 ) > x , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x , x USING ( x , x ) GROUP BY 1.000000 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1.000000 , 'x' ) , ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = x ( x ) OR x = 'x' OR x LIKE ( x BETWEEN 1 AND 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x / 1 ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( x ( x , 'x' , 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ISNULL < 1 + x , x ) FROM x AS x ORDER BY x NULLS FIRST ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT 1 FROM x WHERE x ( x , 1 , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x AS SELECT x + 1 , x + 1 FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x GROUP BY x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x , x FROM x WHERE x < 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x AS x JOIN x ON NULL = 1.000000 WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' , x = 'x' , x = 'x' , x = x + 1 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1.000000 IS NOT NULL ) , x ( 1 ) , x ( 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( 1 ) OVER ( ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( ( SELECT x FROM x AS x GROUP BY x ) AND x ( 1 = 1.000000 AS x ) IS NULL ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( 1 , 1 ) OVER ( ORDER BY x ) AS x FROM x WHERE x = 1.000000 + 1.000000 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW WITH x AS ( SELECT x ( 'x' ) AS x FROM x ) SELECT x ( 'x' , 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT ( SELECT DISTINCT x ( 'x' ) LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x WHERE x = 1 AND x ( x , x ) > 1 ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( ( SELECT x ( x ) FROM x ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) OVER ( ORDER BY x ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x WHERE ( x = 1 AND ( 1.000000 = 1 OR x = 1 ) ) OR ( x = 1 AND x = 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT DISTINCT x ( ) OVER ( ) ORDER BY x ( * ) OVER ( ORDER BY 1 NULLS LAST ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x TEXT PRIMARY KEY CHECK ( - 1.000000 >= x IS NOT NULL ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) ORDER BY x , x DESC , x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x WHERE ( SELECT 1 ) = 1 OR x = 'x' OR x = 'x' LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x , x AS x WHERE 1 = x AND x = 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT x ( x ) <= 'x' FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x ( x ( x ( ) ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x IN ( 1 , 1 ) ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT CASE WHEN x NOT IN ( 1 >= x = 1 , 1 ) OR x = 1 THEN 'x' ELSE 'x' END FROM x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( x ) , x ) ) WHERE x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT * , x , x , 1 , 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = NULL WHERE x ( x ) / 1.000000 = ( SELECT 'x' / 'x' , 'x' / 'x' , 'x' / 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT * FROM x ) SELECT x ( ) ISNULL , x ( 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x > x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x , x ( x ) FROM x GROUP BY x HAVING x < 'x' ORDER BY x DESC NULLS FIRST ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x AS SELECT x ( x ) , x ( x ) , x ( x ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x , x , ( x NOT IN ( 1 ) AND x NOT IN ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( ( x ( ) % 1 ) ) , x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) , x ) ISNULL FROM x WHERE x != 1 GROUP BY x ( DISTINCT x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x NOT INDEXED NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT x ( 'x' ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT * , x IN ( x ( * ) , 1 ) FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x ( * ) OVER ( ORDER BY 1 , 1 ) FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ( x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT - 'x' FROM x AS x , x AS x JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY 1 , 1 , NULL ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x + 1 FROM x EXCEPT SELECT x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) / 1.000000 AS x FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT * FROM x NOT INDEXED NATURAL JOIN x NOT INDEXED ORDER BY x , x DESC , x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( x ) OVER ( PARTITION BY x ( x NOT LIKE x ( 1 ) ) ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT 1 FROM x , x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT x NOT LIKE x ( x ) IS NULL + x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ) OVER ( ) AS x FROM x GROUP BY NOT x > x % x % 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS SELECT 1 , 1 FROM x ON x ( x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS WITH x AS ( SELECT * FROM x ) SELECT x ( 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 1 , NULL , 1 , 1 , x ( 'x' ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT DISTINCT x ( x ) OVER ( ORDER BY x NULLS LAST ) IS NOT NULL LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY x ASC , x DESC , x , x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE x > 1 OR x > 1 AND x < ( SELECT x FROM x AS x GROUP BY x + 1 , x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x JOIN x GROUP BY 1 HAVING 1.000000 + 1.000000 ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x , x FROM x WHERE x IS NOT NULL GROUP BY x HAVING ( 1 = 1 AND ( x = 1 ) = 1 ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT 1 AS x , 1 , 1 = x / 1 , NOT x >= 'x' FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x INTEGER , x DOUBLE , x DOUBLE ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW WITH x AS ( SELECT * FROM x ) SELECT DISTINCT x ( x ( 1 ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x FROM x AS x , x AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x FROM x AS x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x WHERE x ( x ) OR x < 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( x ) <= 'x' = x FROM x WHERE x = 1 LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x ( DISTINCT x / 1 ) FROM x WHERE x IS NOT NULL ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x ( ) GROUP BY x NOT LIKE x ( x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT CASE WHEN 1 THEN 'x' WHEN 1 THEN 'x' ELSE 'x' END ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE TABLE x ( x CHAR ( 1 ) , x VARCHAR ( 1 ) , x VARCHAR ( 1 ) ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( * ) FROM x AS x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ) / 1.000000 AS x FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x INTERSECT SELECT DISTINCT * FROM x ORDER BY x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT 1 , 1 , x ( 'x' ) FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x NOT LIKE x ( x ) ) FROM x WHERE x != 1 GROUP BY x ( DISTINCT 'x' ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x FROM x WHERE x >= 'x' AND x < 'x' ORDER BY x DESC LIMIT 1 OFFSET 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT - x , x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( ) ISNULL FROM x WHERE x != 1 GROUP BY x ( x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x ( x ( x ) , x ) ISNULL , x , x ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) % - 1.000000 >= x IS NOT NULL , x FROM x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x , x , 'x' FROM x , x WHERE x = 'x' AND x = x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , 1 AS x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( 'x' ) OVER ( ORDER BY x ( * ) OVER ( ) ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT x FROM x WHERE x = 1 LIMIT 1 ) GROUP BY 1 HAVING x ( ) IS NOT NULL < 'x' ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( x ) OVER ( ) FROM x ORDER BY x ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x AS WITH x AS ( SELECT ( SELECT DISTINCT 1.000000 AS x , 1.000000 ) ) SELECT 1 , 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( 1 >= ( SELECT x ( * ) FROM x ORDER BY x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT 'x' IN ( SELECT DISTINCT x ( ) % 1 AS x FROM x ORDER BY 1 ) GROUP BY 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ( NOT ( x IS NULL ) ) AND ( NOT ( NOT ( 'x' = 'x' AND x = 1 ) ) ) ) , 1.000000 , 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT 1 , 1 , * , x FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT x FROM x NATURAL JOIN x WHERE x = 'x' OR ( x = 1 AND x = 1 ) ON CONFLICT DO NOTHING ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE INDEX x ON x ( x ( x ) , x ( x ) ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT ( SELECT DISTINCT 1 , 1 , x ( 'x' ) , 1 , 1.000000 ) LIMIT 1 OFFSET 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT * FROM x AS x WHERE 1 = x AND x = 1 ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x ( x INT NOT NULL , x INT ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE TABLE x AS SELECT DISTINCT x FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x , x FROM x AS x , x AS x WHERE x IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x SELECT x % 1 AS x FROM x WHERE x IN ( 1 , 1 ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW INSERT INTO x VALUES ( 1 ) , ( 1 ) , ( NULL ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT * ) SELECT NULL INTERSECT SELECT DISTINCT x ( ) GROUP BY NULL ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW UPDATE x SET x = x ( ( x * 1 ) > x , x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x ( ) OVER ( ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( DISTINCT x / 1 ) , x ( x ) FROM x GROUP BY x ORDER BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ( NOT ( x IS NULL ) ) AND ( NOT ( x IS NULL ) ) ) FROM x WHERE x LIKE 'x' ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = 'x' WHERE ( SELECT x FROM x INDEXED BY x WHERE NULL = x ) > 1 OR x > 1 AND x NOT LIKE - 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x ( x , x ) SELECT x ( x , 1 ) OVER ( ORDER BY x ) , x + 1 FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = ( SELECT x ( DISTINCT x ( ) , x ( x ( 'x' ) ) ) FROM x ) ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT * FROM x ORDER BY 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW INSERT INTO x SELECT - x , x + x FROM x WHERE x ORDER BY x DESC LIMIT 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT DISTINCT x ( ) , x FROM x AS x , x AS x NATURAL JOIN x NATURAL JOIN x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x SELECT x ( 'x' / 1 ) , x ( DISTINCT ( x ) ) , x ( x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW SELECT x ( 'x' ) AS x ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT 1 , 1 , 'x' FROM x ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x FROM x INTERSECT SELECT x FROM x GROUP BY x ( x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT DISTINCT ( SELECT x FROM x AS x GROUP BY x , x ) GROUP BY 1 ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS SELECT * FROM x WHERE x IN ( SELECT x FROM x LIMIT 1 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT DISTINCT * FROM x AS x , x AS x JOIN x NATURAL JOIN x ORDER BY x DESC ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE VIEW x ( x , x ) AS WITH x AS ( SELECT * FROM x ) SELECT 1 , 1 ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( ) ORDER BY x ( * ) OVER ( ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT x ( x ( ) , x ( 'x' ) , NULL , x ) FROM x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT DISTINCT ( SELECT DISTINCT 'x' , 1 , 1.000000 ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW CREATE TABLE x ( x FLOAT , x INT UNIQUE NOT NULL ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW SELECT x FROM x WHERE x = ( SELECT x FROM x WHERE x = - 1 ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW SELECT x ( x ( x ) ) , x ( x ) , 'x' FROM x ORDER BY x ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW UPDATE x SET x = x ( ( SELECT DISTINCT CAST ( x ( DISTINCT x ) AS DOUBLE ) ) ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW SELECT 'x' , * FROM x WHERE x IN ( SELECT x ) ;\nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW CREATE VIEW x ( x ) AS SELECT x , x FROM x WHERE ( x = 'x' OR x = 'x' ) IS NOT NULL ;\nCREATE TRIGGER x AFTER INSERT ON x FOR EACH ROW INSERT INTO x ( x ) VALUES ( 'x' ) , ( 1.000000 ) , ( 1.000000 ) , ( 'x' ) ;\nCREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW UPDATE x SET x = x ( x , ( ( x OR NOT x ) BETWEEN 1 AND 1 ) + x ) ;\nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH ROW INSERT INTO x ( x , x ) VALUES ( 1 , 1 ) , ( 1.000000 , 'x' , 1 , 1 ) ;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/2.txt",
    "content": "CREATE TABLE v0 ( v1 INT ) ;\ninsert into v0(v1) values(1);\nupdate v0 set v1 = 1 where v1=20;\ninsert into v0(v1) values(100), (100);\nSELECT percentile_cont ( v1 ) OVER w , json_object_agg ( v1 ) OVER w FROM v0 WINDOW v2 AS ( PARTITION BY v1 ORDER BY v1 DESC ) ;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/3.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT , v3 INT CONSTRAINT xx CHECK ( v3 ) ) ;\ncreate index x on v0(v2, v3);\ninsert into x(v3) values(1),(2);\nUPDATE v0 SET v3 = NULL ;\nselect v3 from x;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/4.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT NOT NULL , v3 INT , v4 INT NOT NULL ) ;\nINSERT INTO v0 VALUES ( 0 , 0 , 0 ) , ( 0 , 0 , 0 ) ;\nselect a from b where c = 3;\ndrop table v0;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/5.txt",
    "content": "CREATE TABLE v0 ( v1 varchar(80)) ;\nINSERT INTO v0 ( v1 ) VALUES ( '' ) , ( NULL ) , ( 'X' ) , ( NULL ) ;\nSELECT bool_and ( covar_pop ( array_agg ( v1 ) ) , 10 ) FROM v0 GROUP BY v1 ;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/6.txt",
    "content": "CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER);\nINSERT INTO t1 VALUES(1, 1, 1);\nINSERT INTO t1 VALUES(1, 2, 2);\nSELECT c, sum(c) OVER win1 FROM t1 WINDOW win1 AS (ORDER BY b);\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/7.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ;\nCREATE INDEX title_idx_nulls_low ON films (title ASC);\nCREATE TABLE v4 AS SELECT v1 , v2 FROM v0 ;\nCREATE TRIGGER v5 BEFORE INSERT ON v0 FOR EACH ROW insert into v3 values (1,1);\ninsert into v4 values (1,1);\nselect * from b;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/8.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 CHAR ) ;\nCREATE VIEW v5 AS SELECT * , stddev_samp ( v1 ) AS v4 , ( SELECT max ( v1 ) FROM v0 , v0 WHERE v1 = v2 ) AS v3 FROM v0 , v0 WHERE v1 = 'Comedy' ;\nCREATE VIEW v6 AS SELECT v2 + 1 FROM v5 WHERE v1 < 100 ;\ndrop table v4;\nInsert into v6 values (44);\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/new",
    "content": "CREATE TEMPORARY TABLE v0 ( v1 NUMERIC PRIMARY KEY  ) ;\nWITH RECURSIVE v0 ( v1  ) AS ( SELECT 18 UNION SELECT v1 + 76692631.000000 FROM v0 WHERE v1 < 13915061.000000  ) SELECT v1 , v1 , v1 AS v2 , v1 FROM v0 WHERE EXISTS ( SELECT 26 FROM v0 AS v3 WHERE v1 = v1 ^ -1  ) ;\n"
  },
  {
    "path": "data/fuzz_root/mysql_input/z.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ;\ninsert into v0(v1, v2) values(1, 2);\nSELECT v1 , v1 , v1 , v1 FROM ( SELECT v2 , v1 , v1 , v2 , regr_r2 ( ) OVER ( PARTITION BY v2 ORDER BY v1 DESC) AS v4 FROM v0 ) AS v3 WHERE v1 < 3 ;\ninsert into v0(v1) values(10),(20);\nselect v1, v2 from v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/1",
    "content": "CREATE TABLE hobbies_r (name\t\ttext,person \t\ttext);\nCREATE TABLE view_base_table (key int PRIMARY KEY, data varchar(20));\nCREATE VIEW key_dependent_view AS SELECT * FROM view_base_table GROUP BY key;\nINSERT INTO key_dependent_view(key, data) VALUES (1, '123123');\nSELECT * from key_dependent_view;"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/1.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ;\nSELECT v1 , v1 , v1 , v1 FROM ( SELECT v2 , v1 , v1 , v2 , regr_r2 ( ) OVER ( PARTITION BY v2 ORDER BY v1 DESC , v1 ) AS v4 FROM v0 ) AS v3 WHERE v1 < 3 ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/2",
    "content": "CREATE TABLE hobbies_r (name text, person INT);\nselect * from hobbies_r;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/2.txt",
    "content": "CREATE TABLE v0 ( v1 INT ) ;\nSELECT percentile_cont ( v1 ) OVER w , json_object_agg ( v1 ) OVER w FROM v0 WINDOW v2 AS ( PARTITION BY v1 ORDER BY v1 DESC ) ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/3",
    "content": "create table v1(v2 INT ,v3 INT);\nselect * from v1 where v2 = 1;\ndrop table v1;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/3.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT , v3 INT CONSTRAINT xx CHECK ( v3 ) ) ;\nUPDATE v0 SET v3 = NULL ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/4",
    "content": "CREATE TABLE v0 ( v2 TEXT , v1 INT );\nSELECT DISTINCT * FROM v0 ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/4.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT NOT NULL , v3 INT , v4 INT NOT NULL ) ;\nINSERT INTO v0 VALUES ( 0 , 0 , 0 ) , ( 0 , 0 , 0 ) ;\nselect a from b where c = 3;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/5",
    "content": "CREATE TABLE v0 ( v1 TEXT , v2 INT );\nSELECT * FROM v0 , v0 , v0 , v0 ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/5.txt",
    "content": "DROP TABLE IF EXISTS t1 ;\nCREATE TABLE v0 ( v1 varchar(80)) ;\nINSERT INTO v0 ( v1 ) VALUES ( '' ) , ( NULL ) , ( 'X' ) , ( NULL ) ;\nSELECT bool_and ( covar_pop ( array_agg ( v1 ) ) , 10 ) FROM v0 GROUP BY v1 ;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/6.txt",
    "content": "CREATE TABLE t1(a INTEGER, b INTEGER, c INTEGER);\nINSERT INTO t1 VALUES(1, 1, 1);\nINSERT INTO t1 VALUES(1, 2, 2);\nSELECT c, sum(c) OVER win1 FROM t1 WINDOW win1 AS (ORDER BY b);\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/7.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ;\nCREATE INDEX title_idx_nulls_low ON films (title ASC);\nCREATE FUNCTION v3 ( ) RETURN TRIGGER AS $$ BEGIN SELECT v2 FROM v4 WHERE v1 = 1 ;END $$ LANGUAGE PLPGSQL ;\nCREATE TRIGGER v5 BEFORE UPDATE OF v1 ON v0 FOR EACH ROW EXECUTE PROCEDURE v3 ( ) ;\ninsert into v4 values (1,1);\nselect * from b;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/8.txt",
    "content": "CREATE TABLE v0 ( v1 INT , v2 CHAR ) ;\nCREATE VIEW v5 AS SELECT * , stddev_samp ( v1 ) AS v4 , ( SELECT max ( v1 ) FROM v0 , v0 WHERE v1 = v2 ) AS v3 FROM v0 , v0 WHERE v1 = 'Comedy' ;\nCREATE RECURSIVE VIEW v6 AS SELECT v2 + 1 FROM v5 WHERE v1 < 100 ;\ndrop table v4;\nInsert into v6 values (44);\n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/init",
    "content": "CREATE ROLE x LOGIN SUPERUSER ; \nCREATE ROLE x ; \nCREATE ROLE x LOGIN NOSUPERUSER ; \nSET SESSION AUTHORIZATION 'x' ; \nSET client_min_messages = 'x' ; \nCREATE PUBLICATION testpub_default ; \nRESET client_min_messages ; \nCOMMENT ON PUBLICATION testpub_default IS 'x' ; \nSELECT x ( x . x , 'x' ) FROM x p ; \nCREATE PUBLICATION testpub_xxx WITH ( foo ) ; \nCREATE PUBLICATION testpub_xxx WITH ( publish = 'x' ) ; \nALTER PUBLICATION testpub_default SET ( publish = 'x' ) ; \nCREATE SCHEMA x ; \nCREATE TABLE x . testpub_nopk ( x INT , x INT ) ; \nCREATE VIEW x AS SELECT 1 ; \nCREATE TABLE x ( x INT ) PARTITION BY LIST ( a ) ; \nCREATE PUBLICATION testpub_foralltables FOR ALL TABLES WITH ( publish = 'x' ) ; \nALTER PUBLICATION testpub_foralltables SET ( publish = 'x' ) ; \nALTER PUBLICATION testpub_foralltables ADD TABLE x ; \nALTER PUBLICATION testpub_foralltables DROP TABLE x ; \nALTER PUBLICATION testpub_foralltables SET TABLE x . testpub_nopk ; \nSELECT x , x FROM x WHERE x = 'x' ; \nDROP TABLE x ; \nDROP PUBLICATION testpub_foralltables ; \nCREATE TABLE x ( x INT ) ; \nCREATE TABLE x ( x TEXT ) INHERITS ( x ) ; \nCREATE PUBLICATION testpub3 FOR TABLE x ; \nCREATE PUBLICATION testpub4 FOR TABLE ONLY x ; \nDROP TABLE x , x ; \nDROP PUBLICATION testpub3 , testpub4 ; \nCREATE PUBLICATION testpub_fortbl FOR TABLE x ; \nCREATE PUBLICATION testpub_fortbl FOR TABLE x , x . testpub_nopk ; \nALTER PUBLICATION testpub_fortbl ADD TABLE x ; \nALTER PUBLICATION testpub_default ADD TABLE x ; \nALTER PUBLICATION testpub_default SET TABLE x ; \nALTER PUBLICATION testpub_default ADD TABLE x . testpub_nopk ; \nALTER PUBLICATION testpib_ins_trunct ADD TABLE x . testpub_nopk , x ; \nALTER PUBLICATION testpub_default DROP TABLE x , x . testpub_nopk ; \nALTER PUBLICATION testpub_default DROP TABLE x . testpub_nopk ; \nSET ROLE regress_publication_user2 ; \nGRANT CREATE ON DATABASE regression TO x ; \nGRANT regress_publication_user TO x ; \nSET ROLE regress_publication_user ; \nREVOKE CREATE ON DATABASE regression FROM x ; \nDROP VIEW x ; \nSET ROLE regress_publication_user_dummy ; \nALTER PUBLICATION testpub_default RENAME TO testpub_dummy ; \nALTER PUBLICATION testpub_default RENAME TO testpub_foo ; \nALTER PUBLICATION testpub_foo RENAME TO testpub_default ; \nALTER PUBLICATION testpub_default OWNER TO x ; \nDROP PUBLICATION testpub_default ; \nDROP PUBLICATION testpib_ins_trunct ; \nDROP PUBLICATION testpub_fortbl ; \nDROP SCHEMA pub_test CASCADE ; \nRESET SESSION AUTHORIZATION ; \nDROP ROLE x , x ; \nDROP ROLE x ; \nSET extra_float_digits TO 1 ; \nSELECT 'x' AS four , x ( x ) AS center FROM x ; \n@@SELECT 'x' AS four , ( x ) AS center FROM x ; \nSELECT 'x' AS six , x ( x ) AS center FROM x ; \n@@SELECT 'x' AS six , ( x ) AS center FROM x ; \n@@#SELECT 'x' AS two , ( x ) AS center FROM x WHERE ( x ) > 1 ; \nSELECT 'x' AS two , x . x FROM x p1 WHERE x ( x . x , x 'x' ) ; \nSELECT 'x' AS two , x . x FROM x p1 WHERE x . x ? - x 'x' ; \nSELECT 'x' AS one , x . x FROM x p1 WHERE x ( x . x , x 'x' ) ; \nSELECT 'x' AS one , x . x FROM x p1 WHERE x . x ? | x 'x' ; \nSELECT x . x , x . x , x ( x . x , x . x ) FROM x p1 , x p2 ; \nSELECT x . x , x . x , x . x + x . x FROM x p1 , x p2 ; \nSELECT x . x , x . x , x . x - x . x FROM x p1 , x p2 ; \nSELECT x . x , x . x , x . x * x . x FROM x p1 , x p2 WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \nSELECT x . x , x . x , x . x * x . x FROM x p1 , x p2 WHERE x . x [ 1 ] < 1 ; \nSELECT x . x , x . x , x . x / x . x FROM x p1 , x p2 WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \nSELECT x . x , x . x , x . x / x . x FROM x p1 , x p2 WHERE x . x [ 1 ] > 1 ; \n~######@SELECT x . x , x . x FROM x p , x l WHERE x . x < x . x ; \n@@SELECT x . x , x . x FROM x p , x p1 WHERE x . x < x . x ; \nSELECT x FROM x WHERE ? | x ; \nSELECT x FROM x WHERE ? - x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x = x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x ? || x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x ? - | x . x ; \n#SELECT x . x , x . x FROM x l1 , x l2 WHERE x . x ? x . x ; \n#SELECT x . x , x . x FROM x l , x b WHERE x . x ? x . x ; \n######@@SELECT x , - x FROM x ; \n@@SELECT x , x FROM x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x < x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x <= x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x >= x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x > x . x ; \nSELECT x . x , x . x FROM x l1 , x l2 WHERE x . x != x . x ; \n#SELECT x . x , x . x FROM x l , x l1 WHERE x . x ? x . x ; \n########@SELECT x . x , x . x FROM x l , x l1 WHERE x . x < x . x ; \n@SELECT x . x , x . x FROM x l , x b WHERE x . x < x . x ; \nSELECT 'x' AS six , x ( x ) AS box FROM x ; \nSELECT 'x' AS twentyfour , x . x + x . x AS translation FROM x b , x p ; \nSELECT 'x' AS twentyfour , x . x - x . x AS translation FROM x b , x p ; \nSELECT x . x , x . x , x . x * x . x FROM x b , x p WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \nSELECT x . x , x . x , x . x * x . x FROM x b , x p WHERE x . x [ 1 ] > 1 ; \nSELECT x . x , x . x , x . x / x . x FROM x b , x p WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \nSELECT x ( x . x , x . x ) FROM x a , x b ; \n#SELECT x , x ( x ) FROM x ; \n@@@@SELECT x . x , x . x FROM x p1 , x p2 WHERE x . x < x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x <= x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x = x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x >= x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x > x . x ; \nSELECT x . x , x . x , x . x + x . x FROM x p , x p1 ; \nSELECT x . x , x . x , x . x - x . x FROM x p , x p1 ; \nSELECT x . x , x . x , x . x * x . x FROM x p , x p1 ; \nSELECT x . x , x . x , x . x / x . x FROM x p , x p1 WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \n~@SELECT 'x' AS twentyfour , x . x , x . x , x . x > x . x AS contains FROM x poly , x p ; \n@SELECT 'x' AS twentyfour , x . x , x . x , x . x < x . x AS contained FROM x poly , x p ; \nSELECT 'x' AS four , x ( x ) AS npoints , x AS polygon FROM x ; \nSELECT 'x' AS four , x ( x ) FROM x ; \nSELECT 'x' AS four , x ( x ) FROM x WHERE x ( x ) ; \nSELECT 'x' AS four , x AS open_path , x ( x ( x ) ) AS polygon FROM x WHERE x ( x ) ; \n~@@SELECT x . x , x . x FROM x p1 , x p2 WHERE x . x && x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x & < x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x & > x . x ; \nSELECT x . x , x . x FROM x p1 , x p2 WHERE x . x & < | x . x ; \nSELECT 'x' AS six , x ( x , 50.000000 ) FROM x ; \n#SELECT 'x' AS two , x ( x ) FROM x WHERE ( x ) >= 1 ; \nSELECT x , x ( 1 , x ) FROM x WHERE x >= 'x' ; \nSELECT x , x ( 1 , x ) FROM x WHERE x < 'x' ; \n~SELECT x . x , x . x FROM x c1 , x c2 WHERE x . x = x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x && x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x & < x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x & > x . x ; \n@SELECT x . x , x . x FROM x c1 , x c2 WHERE x . x < x . x ; \n@SELECT x . x , x . x FROM x c1 , x c2 WHERE x . x > x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x & < | x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x != x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x <= x . x ; \nSELECT x . x , x . x FROM x c1 , x c2 WHERE x . x >= x . x ; \nSELECT x . x , x . x , x . x + x . x FROM x c , x p ; \nSELECT x . x , x . x , x . x - x . x FROM x c , x p ; \nSELECT x . x , x . x , x . x * x . x FROM x c , x p ; \nSELECT x . x , x . x , x . x / x . x FROM x c , x p WHERE x . x [ 1 ] BETWEEN 1 AND 1 ; \nSELECT x . x , x . x , x . x / x . x FROM x c , x p WHERE x . x [ 1 ] > 1 ; \n~CREATE TABLE x ( x int4 , x point ) ; \nCREATE INDEX x ON x USING spgist ( x ) WITH ( fillfactor = 1 ) ; \nINSERT INTO x ( x , x ) SELECT x , x ( x * 1 , x * 1 ) FROM x ( 1 , 1 ) g ; \nDELETE FROM x WHERE x < 1 ; \nVACUUM x ; \nINSERT INTO x ( x , x ) SELECT x + 1 , x ( x * 1 + 1 , x * 1 + 1 ) FROM x ( 1 , 1 ) g ; \nDELETE FROM x WHERE x % 1 = 1 ; \nCREATE TABLE x ( x serial , x box ) ; \nINSERT INTO x ( x ) SELECT x ( x ( x , x ) , x ( x + x , x + x ) ) FROM x ( 1 , 1 , 1 ) i , x ( 1 , 1 , 1 ) j , x ( 1 , 1 ) s ; \nCREATE INDEX x ON x USING spgist ( x ) ; \nSELECT x ( * ) FROM ( VALUES ( x ( 1 , 1 ) ) , ( x ( 1 , 1 ) ) , ( x ( 1 , 1 ) ) ) v ( p ) WHERE EXISTS ( SELECT * FROM x b WHERE x . x && x ( x . x , x . x ) ) ; \nCREATE TABLE x ( x int4 , x TEXT ) ; \nINSERT INTO x ( x , x ) SELECT - x , 'x' || x ( 'x' , 1 - x ) || 'x' FROM x ( 1 , 1 ) g ; \nALTER INDEX x SET ( fillfactor = 1 ) ; \nREINDEX INDEX x ; \nBEGIN ; \nDECLARE foo13 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo14 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo15 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo16 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo17 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo18 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo19 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo20 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo21 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo22 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo23 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo24 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nDECLARE foo25 CURSOR FOR SELECT * FROM x WHERE x = 1 ; \nFETCH ALL IN foo13 ; \nFETCH ALL IN foo14 ; \nFETCH ALL IN foo15 ; \nFETCH ALL IN foo16 ; \nFETCH ALL IN foo17 ; \nFETCH ALL IN foo18 ; \nFETCH ALL IN foo19 ; \nFETCH ALL IN foo20 ; \nFETCH ALL IN foo21 ; \nFETCH ALL IN foo22 ; \nFETCH ALL IN foo23 ; \nFETCH ALL IN foo24 ; \nFETCH ALL IN foo25 ; \nCLOSE foo13 ; \nCLOSE foo14 ; \nCLOSE foo15 ; \nCLOSE foo16 ; \nCLOSE foo17 ; \nCLOSE foo18 ; \nCLOSE foo19 ; \nCLOSE foo20 ; \nCLOSE foo21 ; \nCLOSE foo22 ; \nCLOSE foo23 ; \nCLOSE foo24 ; \nCLOSE foo25 ; \nEND ; \nDECLARE c1 CURSOR FOR SELECT * FROM x LIMIT 1 ; \nFETCH ALL IN c1 ; \nFETCH 1 IN c1 ; \nFETCH BACKWARD 1 IN c1 ; \nFETCH BACKWARD ALL IN c1 ; \nDECLARE c2 CURSOR FOR SELECT * FROM x LIMIT 1 ; \nFETCH ALL IN c2 ; \nFETCH 1 IN c2 ; \nFETCH BACKWARD 1 IN c2 ; \nFETCH BACKWARD ALL IN c2 ; \nDECLARE c3 CURSOR FOR SELECT * FROM x OFFSET 1 ; \nFETCH ALL IN c3 ; \nFETCH 1 IN c3 ; \nFETCH BACKWARD 1 IN c3 ; \nFETCH BACKWARD ALL IN c3 ; \nDECLARE c4 CURSOR FOR SELECT * FROM x OFFSET 1 ; \nFETCH ALL IN c4 ; \nFETCH 1 IN c4 ; \nFETCH BACKWARD 1 IN c4 ; \nFETCH BACKWARD ALL IN c4 ; \nROLLBACK ; \nCREATE TEMP SEQUENCE x ; \nSELECT x , x , x ( 'x' ) FROM x ORDER BY x LIMIT 1 ; \nSELECT x ( 'x' ) ; \nSELECT x , x , x ( 1 , 1 ) FROM x ORDER BY x LIMIT 1 ; \nSELECT x ( x ) AS s1 , x ( x ) + x ( ) * 1 AS s2 FROM x GROUP BY x ORDER BY x LIMIT 1 ; \nSET client_min_messages TO 'x' ; \nDROP ROLE IF EXISTS x ; \nCREATE USER x ; \nSET search_path TO 'x' ; \nCREATE FOREIGN DATA WRAPPER addr_fdw ; \nCREATE SERVER addr_fserv FOREIGN DATA WRAPPER addr_fdw ; \nCREATE TEXT SEARCH TEMPLATE addr_ts_temp ( lexize = dsimple_lexize ) ; \nCREATE TABLE x . gentable ( x serial PRIMARY KEY CONSTRAINT a_chk CHECK ( x > 1 ) , x TEXT DEFAULT 'x' ) ; \nCREATE VIEW x . genview AS SELECT * FROM x . gentable ; \nCREATE MATERIALIZED VIEW x . genmatview AS SELECT * FROM x . gentable ; \nCREATE TYPE addr_nsp . gencomptype AS ( a INT ) ; \nCREATE TYPE addr_nsp . genenum AS ENUM ( 'x' , 'x' ) ; \nCREATE FOREIGN TABLE x . genftable ( x INT ) SERVER addr_fserv ; \nCREATE AGGREGATE addr_nsp . genaggr ( int4 ) ( sfunc = int4pl , stype = int4 ) ; \nCREATE TRIGGER x BEFORE INSERT ON x . gentable FOR EACH ROW EXECUTE PROCEDURE addr_nsp . trig ( ) ; \nCREATE POLICY genpol ON x . gentable ; \nCREATE SERVER integer\" FOREIGN DATA WRAPPER addr_fdw ; \nCREATE USER MAPPING FOR x SERVER integer\" ; \nALTER DEFAULT PRIVILEGES FOR ROLE x IN SCHEMA public GRANT ALL ON TABLES TO x ; \nCREATE PUBLICATION addr_pub FOR TABLE x . gentable ; \nCREATE STATISTICS addr_nsp . gentable_stat ON x , x FROM x . gentable ; \nSELECT x ( 'x' , 'x' , 'x' ) ; \n$$$$SELECT * FROM x ( 'x' , 'x' , 'x' ) ; \n$$$$DROP FOREIGN DATA WRAPPER addr_fdw CASCADE ; \nDROP PUBLICATION addr_pub ; \nDROP SUBSCRIPTION regress_addr_sub ; \nDROP SCHEMA addr_nsp CASCADE ; \nDROP OWNED BY x ; \nDROP USER x ; \nDROP TABLE IF EXISTS x ; \nCREATE TABLE x ( x INT , x TEXT ) ; \nDROP VIEW IF EXISTS x ; \nCREATE VIEW x AS SELECT * FROM x ; \nDROP INDEX x ; \nDROP INDEX IF EXISTS x ; \nCREATE INDEX x ON x ( x ) ; \nDROP SEQUENCE x ; \nDROP SEQUENCE IF EXISTS x ; \nCREATE SEQUENCE x ; \nDROP SCHEMA test_schema_exists ; \nDROP SCHEMA IF EXISTS test_schema_exists ; \nDROP TYPE test_type_exists ; \nDROP TYPE IF EXISTS test_type_exists ; \nCREATE TYPE test_type_exists AS ( a INT , b TEXT ) ; \nDROP DOMAIN test_domain_exists ; \nDROP DOMAIN IF EXISTS test_domain_exists ; \nCREATE GROUP x ; \nDROP USER IF EXISTS x , x ; \nDROP ROLE IF EXISTS x , x ; \nDROP GROUP x ; \nDROP GROUP IF EXISTS x , x ; \nDROP COLLATION IF EXISTS x ; \nDROP CONVERSION x ; \nDROP CONVERSION IF EXISTS x ; \nCREATE CONVERSION test_conversion_exists FOR 'x' TO 'x' FROM iso8859_1_to_utf8 ; \nDROP TEXT SEARCH PARSER x ; \nDROP TEXT SEARCH PARSER IF EXISTS x ; \nDROP TEXT SEARCH DICTIONARY x ; \nDROP TEXT SEARCH DICTIONARY IF EXISTS x ; \nDROP TEXT SEARCH TEMPLATE x ; \nDROP TEXT SEARCH TEMPLATE IF EXISTS x ; \nDROP TEXT SEARCH CONFIGURATION x ; \nDROP TEXT SEARCH CONFIGURATION IF EXISTS x ; \nDROP EXTENSION test_extension_exists ; \nDROP EXTENSION IF EXISTS test_extension_exists ; \nDROP FUNCTION x ( ) ; \nDROP FUNCTION IF EXISTS x ( ) ; \nDROP FUNCTION x ( INT , TEXT , INT [ ] ) ; \nDROP FUNCTION IF EXISTS x ( INT , TEXT , INT [ ] ) ; \nDROP AGGREGATE x ( * ) ; \nDROP AGGREGATE IF EXISTS x ( * ) ; \nDROP AGGREGATE x ( INT ) ; \nDROP AGGREGATE IF EXISTS x ( INT ) ; \n@#@@#@@#@@#@DROP LANGUAGE test_language_exists ; \nDROP LANGUAGE IF EXISTS test_language_exists ; \nDROP CAST ( TEXT AS TEXT ) ; \nDROP CAST IF EXISTS ( TEXT AS TEXT ) ; \nDROP TRIGGER test_trigger_exists ON test_exists ; \nDROP TRIGGER IF EXISTS test_trigger_exists ON test_exists ; \nDROP TRIGGER test_trigger_exists ON no_such_table ; \nDROP TRIGGER IF EXISTS test_trigger_exists ON no_such_table ; \nDROP TRIGGER test_trigger_exists ON no_such_schema . no_such_table ; \nDROP TRIGGER IF EXISTS test_trigger_exists ON no_such_schema . no_such_table ; \nCREATE TRIGGER x BEFORE UPDATE ON x FOR EACH ROW EXECUTE PROCEDURE x ( ) ; \nDROP RULE test_rule_exists ON test_exists ; \nDROP RULE IF EXISTS test_rule_exists ON test_exists ; \nDROP RULE test_rule_exists ON no_such_table ; \nDROP RULE IF EXISTS test_rule_exists ON no_such_table ; \nDROP RULE test_rule_exists ON no_such_schema . no_such_table ; \nDROP RULE IF EXISTS test_rule_exists ON no_such_schema . no_such_table ; \nDROP FOREIGN DATA WRAPPER test_fdw_exists ; \nDROP FOREIGN DATA WRAPPER IF EXISTS test_fdw_exists ; \nDROP SERVER test_server_exists ; \nDROP SERVER IF EXISTS test_server_exists ; \nDROP OPERATOR CLASS test_operator_class USING btree ; \nDROP OPERATOR CLASS IF EXISTS test_operator_class USING btree ; \nDROP OPERATOR CLASS test_operator_class USING no_such_am ; \nDROP OPERATOR CLASS IF EXISTS test_operator_class USING no_such_am ; \nDROP OPERATOR FAMILY test_operator_family USING btree ; \nDROP OPERATOR FAMILY IF EXISTS test_operator_family USING btree ; \nDROP OPERATOR FAMILY test_operator_family USING no_such_am ; \nDROP OPERATOR FAMILY IF EXISTS test_operator_family USING no_such_am ; \nDROP ACCESS METHOD no_such_am ; \nDROP ACCESS METHOD IF EXISTS no_such_am ; \nDROP AGGREGATE IF EXISTS no_such_schema . foo ( INT ) ; \nDROP AGGREGATE IF EXISTS x ( no_such_type ) ; \nDROP AGGREGATE IF EXISTS x ( no_such_schema . no_such_type ) ; \nDROP CAST IF EXISTS ( INTEGER AS no_such_type2 ) ; \nDROP CAST IF EXISTS ( no_such_type1 AS INTEGER ) ; \nDROP CAST IF EXISTS ( INTEGER AS no_such_schema . bar ) ; \nDROP CAST IF EXISTS ( no_such_schema . foo AS INTEGER ) ; \nDROP COLLATION IF EXISTS x . foo ; \nDROP CONVERSION IF EXISTS x . foo ; \nDROP DOMAIN IF EXISTS no_such_schema . foo ; \nDROP FOREIGN TABLE IF EXISTS x . foo ; \nDROP FUNCTION IF EXISTS no_such_schema . foo ( ) ; \nDROP FUNCTION IF EXISTS x ( no_such_type ) ; \nDROP FUNCTION IF EXISTS x ( no_such_schema . no_such_type ) ; \nDROP INDEX IF EXISTS x . foo ; \nDROP MATERIALIZED VIEW IF EXISTS x . foo ; \nDROP OPERATOR IF EXISTS no_such_schema . + ( INT , INT ) ; \nDROP OPERATOR IF EXISTS + ( no_such_type , no_such_type ) ; \nDROP OPERATOR IF EXISTS + ( no_such_schema . no_such_type , no_such_schema . no_such_type ) ; \n#DROP OPERATOR CLASS IF EXISTS no_such_schema . widget_ops USING btree ; \nDROP OPERATOR FAMILY IF EXISTS no_such_schema . float_ops USING btree ; \nDROP RULE IF EXISTS foo ON no_such_schema . bar ; \nDROP SEQUENCE IF EXISTS x . foo ; \nDROP TABLE IF EXISTS x . foo ; \nDROP TEXT SEARCH CONFIGURATION IF EXISTS x . foo ; \nDROP TEXT SEARCH DICTIONARY IF EXISTS x . foo ; \nDROP TEXT SEARCH PARSER IF EXISTS x . foo ; \nDROP TEXT SEARCH TEMPLATE IF EXISTS x . foo ; \nDROP TRIGGER IF EXISTS foo ON no_such_schema . bar ; \nDROP TYPE IF EXISTS no_such_schema . foo ; \nDROP VIEW IF EXISTS x . foo ; \n$$$$DROP FUNCTION test_ambiguous_funcname ; \nDROP FUNCTION IF EXISTS test_ambiguous_funcname ; \nDROP FUNCTION x ( INT ) ; \nDROP FUNCTION x ( TEXT ) ; \n$$$$DROP PROCEDURE test_ambiguous_procname ; \nDROP PROCEDURE IF EXISTS test_ambiguous_procname ; \nDROP ROUTINE IF EXISTS test_ambiguous_procname ; \nDROP PROCEDURE x ( INT ) ; \nDROP PROCEDURE x ( TEXT ) ; \nDROP DATABASE x ( FORCE ) ; \nDROP DATABASE x WITH ( FORCE ) ; \nDROP DATABASE IF EXISTS x ( FORCE ) ; \nDROP DATABASE IF EXISTS x WITH ( FORCE ) ; \nCREATE TYPE mood AS ENUM ( 'x' , 'x' , 'x' ) ; \nDROP TYPE mood ; \nCREATE TABLE x ( x int8 , x int8 ) ; \nINSERT INTO x VALUES ( 'x' , 'x' ) ; \nINSERT INTO x VALUES ( + 1 , 'x' ) ; \nINSERT INTO x ( x ) VALUES ( 'x' ) ; \nSELECT * FROM x ; \nSELECT * FROM x WHERE x = 1 ; \nSELECT * FROM x WHERE x < 1 ; \nSELECT * FROM x WHERE x > 1 ; \nSELECT * FROM x WHERE x <= 1 ; \nSELECT * FROM x WHERE x >= 1 ; \nSELECT * FROM x WHERE 1 = x ; \nSELECT * FROM x WHERE 1 < x ; \nSELECT * FROM x WHERE 1 > x ; \nSELECT * FROM x WHERE 1 <= x ; \nSELECT * FROM x WHERE 1 >= x ; \nSELECT 'x' AS five , x AS plus , - x AS minus FROM x ; \nSELECT 'x' AS five , x , x , x + x AS plus FROM x ; \nSELECT 'x' AS five , x , x , x - x AS minus FROM x ; \nSELECT 'x' AS three , x , x , x * x AS multiply FROM x ; \nSELECT 'x' AS three , x , x , x * x AS multiply FROM x WHERE x < 1 OR ( x > 1 AND x < 1 ) ; \nSELECT 'x' AS five , x , x , x / x AS divide , x % x AS mod FROM x ; \nSELECT 'x' AS five , x , x ( x ) FROM x ; \nSELECT 1 + x AS plus4 FROM x ; \nSELECT 1 - x AS minus4 FROM x ; \nSELECT 'x' AS five , 1 * x AS twice int4\" FROM x ; \nSELECT 'x' AS five , x * 1 AS twice int4\" FROM x ; \nSELECT x ( x ) , x ( x ) FROM x ; \nSELECT 'x' AS to_char_1 , x ( x , 'x' ) , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_2 , x ( x , 'x' ) , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_3 , x ( ( x * 1 ) , 'x' ) , x ( ( x * 1 ) , 'x' ) FROM x ; \nSELECT 'x' AS to_char_4 , x ( ( x * 1 ) , 'x' ) , x ( ( x * 1 ) , 'x' ) FROM x ; \nSELECT 'x' AS to_char_5 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_6 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_7 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_8 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_9 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_10 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_11 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_12 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_13 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_14 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_15 , x ( x , 'x' ) FROM x ; \nSELECT 'x' AS to_char_16 , x ( x , x 'x' ) FROM x ; \nSELECT 'x' AS to_char_17 , x ( x , 'x' ) FROM x ; \nSELECT CAST ( x AS int4 ) FROM x WHERE x = 1 ; \nSELECT CAST ( x AS int2 ) FROM x WHERE x = 1 ; \nSELECT CAST ( x AS float4 ) , CAST ( x AS float8 ) FROM x ; \nSELECT CAST ( x AS oid ) FROM x ; \n#ANALYZE x ; \nSELECT x , EXTRACT ( YEAR FROM x ) , x ( * ) FROM x GROUP BY 1 , 1 ORDER BY 1 , 1 ; \n\\CREATE TABLE x ( x INT , x INT , x TEXT ) ; \nINSERT INTO x SELECT 1 , x , 'x' || x FROM x ( 1 , 1 ) x ; \n\\CREATE TYPE complex AS ( r float8 , i float8 ) ; \nCREATE TYPE quad AS ( c1 complex , c2 complex ) ; \nINSERT INTO x VALUES ( 1 , ( ( 3.300000 , 4.400000 ) , ( 5.500000 , 6.600000 ) ) ) ; \nINSERT INTO x VALUES ( 1 , ( ( NULL , 4.400000 ) , ( 5.500000 , 6.600000 ) ) ) ; \nCREATE TEMP TABLE x ( x fullname , x date ) ; \nALTER TABLE x ADD COLUMN x TEXT DEFAULT 'x' ; \nALTER TABLE x ADD COLUMN x TEXT DEFAULT NULL ; \nUPDATE x SET x . suffix = 'x' ; \nINSERT INTO x ( x , x . c1 . r , x . c2 . i ) VALUES ( 1 , 1 , 1 ) ; \nCREATE TEMP TABLE x ( x TEXT ) ; \nINSERT INTO x VALUES ( x ( 'x' , 1 ) ) ; \n~~~~~~SELECT ROW ( 1 , 1 ) IN ( ROW ( 1 , 1 ) , ROW ( 1 , 1 ) ) ; \nCREATE TEMP TABLE x ( x TEXT , x TEXT ) ; \nINSERT INTO x SELECT 'x' , NULL FROM x ( 1 , 1 ) ; \nCREATE INDEX ON x ( x , x ) ; \nSET enable_sort = off ; \nEXPLAIN ( costs off ) SELECT x , x FROM x WHERE ( x , x ) > ( 'x' , 'x' ) ORDER BY x , x ; \nSELECT x , x FROM x WHERE ( x , x ) > ( 'x' , 'x' ) ORDER BY x , x ; \nRESET enable_sort ; \nSELECT ( ROW ( 1 , 2.000000 ) ) . f1 ; \nSELECT ( ROW ( 1 , 2.000000 ) ) . f2 ; \nSELECT ( x ) . f1 FROM ( SELECT ROW ( 1 , 2.000000 ) AS r ) ss ; \nSELECT ROW ( ) ; \nSELECT ROW ( ) IS NULL ; \nSELECT ROW ( ) = ROW ( ) ; \nSELECT ARRAY [ ROW ( 1 , 1 ) , ROW ( 1 , 1 ) , ROW ( 1 , 1 ) ] ; \nSELECT ROW ( 1 , 1.100000 ) = ANY ( ARRAY [ ROW ( 1 , 7.700000 ) , ROW ( 1 , 1.100000 ) , ROW ( 1 , 0.000000 ) ] ) ; \nSELECT ROW ( 1 , 1.100000 ) = ANY ( ARRAY [ ROW ( 1 , 7.700000 ) , ROW ( 1 , 1.000000 ) , ROW ( 1 , 0.000000 ) ] ) ; \nCREATE TYPE cantcompare AS ( p point , r float8 ) ; \nCREATE TEMP TABLE x ( x cantcompare ) ; \nINSERT INTO x VALUES ( 'x' ) ; \nCREATE TYPE testtype3 AS ( a INT , b TEXT ) ; \nCREATE TYPE testtype5 AS ( a INT ) ; \nCREATE TYPE testtype6 AS ( a INT , b point ) ; \nDROP TYPE testtype1 , testtype3 , testtype5 , testtype6 ; \nCREATE TYPE testtype1 AS ( a INT , b INT ) ; \nSELECT x . x , x . x = ROW ( 1 ) , x . x = ARRAY [ ROW ( 1 ) ] , x . x = ROW ( ROW ( 1 ) ) FROM x ( ARRAY [ ROW ( 1 , ROW ( 1 ) , ARRAY [ ROW ( 1 ) ] , ROW ( ROW ( 1 ) ) ) , ROW ( 1 , ROW ( 1 ) , ARRAY [ ROW ( 1 ) ] , ROW ( ROW ( 1 ) ) ) ] ) AS q ( a INT , b record , c record [ ] , d record ) ; \nDROP TYPE testtype1 , testtype2 , testtype3 , testtype4 , testtype5 , testtype6 ; \nCREATE TABLE x ( x SERIAL PRIMARY KEY , x BOOLEAN NOT NULL , x NUMERIC ) ; \nCREATE TYPE price_input AS ( id INTEGER , price NUMERIC ) ; \nCREATE TYPE price_key AS ( id INTEGER ) ; \n$$$$INSERT INTO x VALUES ( 1 , FALSE , 1 ) , ( 1 , FALSE , 1 ) , ( 1 , TRUE , 17.990000 ) ; \nCREATE TEMP TABLE x ( x INT , x TEXT ) ; \n$$$$$$$$$$$$$$SELECT x ( ROW ( 1 , 'x' ) ) ; \nSELECT CAST ( x AS TEXT ) FROM x ; \n$$SELECT x . x FROM x f ; \nSELECT x ( x ) FROM x f ; \nALTER TABLE x ADD COLUMN x TEXT ; \nSELECT x ( x ) FROM x i ; \nSELECT x ( x ) FROM x i ( x , y ) ; \nCREATE TEMP VIEW x AS SELECT * FROM x ; \nSELECT x ( x ) FROM ( SELECT x , x FROM x ) AS ss ; \nSELECT x ( x ) FROM ( SELECT x , x FROM x OFFSET 1 ) AS ss ; \nSELECT x ( x ) FROM ( SELECT x AS a , x AS b FROM x ) AS ss ; \nSELECT x ( x ) FROM ( SELECT x AS a , x AS b FROM x OFFSET 1 ) AS ss ; \nSELECT x ( x ) FROM ( SELECT x AS a , x AS b FROM x ) AS ss ( x , y ) ; \nSELECT x ( x ) FROM ( SELECT x AS a , x AS b FROM x OFFSET 1 ) AS ss ( x , y ) ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM ( SELECT x , x FROM x WHERE x = 1 AND x < 1 OFFSET 1 ) q ; \nSELECT x ( x ) FROM ( SELECT x , x FROM x WHERE x = 1 AND x < 1 OFFSET 1 ) q ; \nSELECT x ( x ) FROM ( SELECT x AS x , x AS y FROM x WHERE x = 1 AND x < 1 OFFSET 1 ) q ; \nSELECT x ( x ) FROM ( SELECT x AS x , x AS y FROM x WHERE x = 1 AND x < 1 OFFSET 1 ) q ( a , b ) ; \nCREATE TEMP TABLE x AS SELECT * FROM x LIMIT 1 ; \nCREATE TEMP TABLE x ( ) INHERITS ( x ) ; \nINSERT INTO x VALUES ( 1 , 1 ) ; \nSELECT x ( x ) FROM ( SELECT x , x FROM x OFFSET 1 ) r ; \nCREATE TABLE x ( x TEXT , x TEXT ) ; \nINSERT INTO x ( x , x ) VALUES ( 'x' , 'x' ) ; \nSELECT x . x FROM ( SELECT x AS d FROM x ) s ; \nSELECT ( x ) . a , ( x ) . b FROM ( SELECT x AS d FROM x ) s ; \nSELECT ( x ) . ctid FROM ( SELECT x AS d FROM x ) s ; \nSELECT x ( * ) AS should_be_1 FROM x ; \nSELECT x ( * ) AS should_be_2 FROM x ; \nSELECT x ( * ) AS should_be_3 FROM x ; \nCOPY x TO 'x' ; \n\\BEGIN TRANSACTION READ ONLY ; \nBEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ ; \nCOMMIT ; \nABORT ; \nSTART TRANSACTION ; \nSAVEPOINT s ; \nRELEASE SAVEPOINT s ; \nROLLBACK TO SAVEPOINT s ; \nSET synchronous_commit = ON ; \nSHOW synchronous_commit ; \nRESET synchronous_commit ; \nDISCARD TEMP ; \nDISCARD ALL ; \nDECLARE hsc CURSOR FOR SELECT * FROM x ; \nFETCH NEXT FROM hsc ; \nFETCH FIRST FROM hsc ; \nFETCH LAST FROM hsc ; \nFETCH 1 FROM hsc ; \nCLOSE hsc ; \nPREPARE hsp AS SELECT x ( * ) FROM x ; \n$PREPARE hsp_noexec ( INTEGER ) AS INSERT INTO x VALUES ( 1 ) ; \nEXECUTE hsp ; \nDEALLOCATE hsp ; \nLOCK x IN ACCESS SHARE MODE ; \nLOCK x IN ROW SHARE MODE ; \nLOCK x IN ROW EXCLUSIVE MODE ; \nUNLISTEN a ; \nUNLISTEN * ; \nCHECKPOINT ; \nSELECT x ( ) ; \nSELECT x ( x ( ) ) ; \n_CREATE AGGREGATE x ( sfunc = int4_avg_accum , basetype = int4 , stype = int8 , finalfunc = int8_avg , initcond1 = 'x' ) ; \nCOMMENT ON AGGREGATE x ( int4 ) IS 'x' ; \nCOMMENT ON AGGREGATE x ( int4 ) IS NULL ; \nCREATE AGGREGATE x ( sfunc1 = int4pl , basetype = int4 , stype1 = int4 , initcond1 = 'x' ) ; \nCREATE AGGREGATE x ( sfunc = int8inc , basetype = 'x' , stype = int8 , initcond = 'x' ) ; \nCREATE AGGREGATE x ( any\" ) ( sfunc = int8inc_any , stype = int8 , initcond = 'x' ) ; \nCOMMENT ON AGGREGATE x ( * ) IS 'x' ; \nCOMMENT ON AGGREGATE x ( any\" ) IS 'x' ; \nCREATE AGGREGATE x ( int8 , int8 ) ( sfunc = sum3 , stype = int8 , initcond = 'x' ) ; \nCREATE TYPE aggtype AS ( a INTEGER , b INTEGER , c TEXT ) ; \nCREATE AGGREGATE x ( INTEGER , INTEGER , TEXT ) ( sfunc = aggf_trans , stype = aggtype [ ] , initcond = 'x' ) ; \nCREATE AGGREGATE x ( INTEGER , INTEGER , TEXT ) ( sfunc = aggfns_trans , stype = aggtype [ ] , sspace = 1 , initcond = 'x' ) ; \nCREATE AGGREGATE x ( VARIADIC items anyarray ) ( stype = anyelement , sfunc = least_accum ) ; \nALTER AGGREGATE x ( float8 ORDER BY anyelement ) RENAME TO test_percentile_disc ; \nALTER AGGREGATE x ( VARIADIC any\" ORDER BY VARIADIC any\" ) RENAME TO test_rank ; \nDROP AGGREGATE x ( NUMERIC ) ; \nDROP FUNCTION x ( int8 , int8 , int8 , int8 ) ; \n$$$$CREATE TABLE x ( x INTEGER PRIMARY KEY ) ; \nINSERT INTO x VALUES ( 1 ) ; \n@SELECT x 'x' ? 'x' ; \n@@@@@@@@@@@@@@@@@@@SELECT x ( 'x' , 'x' ) ; \nSELECT x ( 'x' , 'x' , silent => TRUE ) ; \n@@@@@@@@@@@@@@@@SELECT x ( 'x' , 'x' , silent => FALSE ) ; \nSELECT * FROM x ( 'x' , 'x' ) ; \n@@@@@@@@@@@@@SELECT x , x , x ( 'x' , 'x' , x ( 'x' , x , 'x' , x ) ) AS x && y\" FROM ( VALUES ( x 'x' ) , ( 'x' ) , ( 'x' ) ) x ( x ) , ( VALUES ( x 'x' ) , ( 'x' ) , ( 'x' ) ) y ( y ) ; \nSELECT x , x , x ( 'x' , 'x' , x ( 'x' , x , 'x' , x ) ) AS x || y\" FROM ( VALUES ( x 'x' ) , ( 'x' ) , ( 'x' ) ) x ( x ) , ( VALUES ( x 'x' ) , ( 'x' ) , ( 'x' ) ) y ( y ) ; \n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SET TIME ZONE 'x' ; \nSET TIME ZONE DEFAULT ; \nSELECT x ( 'x' , 'x' , vars => 'x' ) ; \n@@@@@@CREATE TABLE x ( x TEXT ) ; \nSELECT 'x' AS two , * FROM x ; \nSELECT x ( 1 ) ; \nSELECT 'x' || 1 + 1 ; \nSELECT 1 || 4.000000 ; \nSELECT x ( 1 , 1 , 1 , 'x' , TRUE , FALSE , x ( 'x' , 'x' ) ) ; \nSELECT x ( 'x' , 1 , 1 , 1 , 'x' , TRUE , FALSE , x ( 'x' , 'x' ) ) ; \nSELECT x ( 'x' , 1 , 1 , NULL , 1 ) ; \nSELECT x ( NULL , 1 , 1 , NULL , 1 ) IS NULL ; \nSELECT x ( x 'x' ) ; \nSELECT x ( VARIADIC ARRAY [ 1 , 1 , 1 ] ) ; \nSELECT x ( 'x' , VARIADIC ARRAY [ 1 , 1 , 1 ] ) ; \nSELECT x ( 'x' , VARIADIC 1 ) ; \nSELECT x ( 'x' , 1 ) ; \nSELECT x ( 'x' , 'x' , 1 , 'x' ) ; \nSELECT x ( 'x' , 'x' , NULL , 'x' ) ; \nSELECT x ( 'x' , 'x' , 1 , NULL ) ; \nSELECT x ( 'x' , NULL , 1 , 'x' ) ; \nSELECT x ( 'x' , 1 , 1 , 1 ) ; \nSELECT x ( 'x' , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ) ; \nSELECT x ( 'x' , VARIADIC ARRAY [ 'x' , 'x' ] ) ; \nSELECT x ( 'x' , VARIADIC ARRAY [ 1 , 1 ] ) ; \nSELECT x ( 'x' , VARIADIC ARRAY [ TRUE , FALSE ] ) ; \nSELECT x ( x ( 'x' , 'x' ) , VARIADIC x ( x ) ) FROM x ( 1 , 1 ) g ( i ) ; \nSELECT x ( 'x' , NULL ) ; \nSELECT x ( 'x' , 1 , 'x' ) ; \nSELECT x ( 'x' , 1 , NULL ) ; \nSELECT x ( 'x' , NULL , 'x' ) ; \nCREATE TYPE shell ; \nCREATE TYPE int42 ; \nCREATE TYPE text_w_default ; \nCREATE FUNCTION x ( cstring ) RETURNS int42 AS 'x' LANGUAGE internal STRICT IMMUTABLE ; \nCREATE FUNCTION x ( int42 ) RETURNS cstring AS 'x' LANGUAGE internal STRICT IMMUTABLE ; \nCREATE FUNCTION x ( cstring ) RETURNS text_w_default AS 'x' LANGUAGE internal STRICT IMMUTABLE ; \nCREATE FUNCTION x ( text_w_default ) RETURNS cstring AS 'x' LANGUAGE internal STRICT IMMUTABLE ; \nCREATE TABLE x ( x text_w_default , x int42 ) ; \nINSERT INTO x DEFAULT VALUES ; \nCREATE TYPE case_int42 ( Internallength\" = 1 , Input\" = int42_in , Output\" = int42_out , Alignment\" = int4 , Default\" = 1 , Passedbyvalue\" ) ; \nCREATE TYPE default_test_row AS ( f1 text_w_default , f2 int42 ) ; \nSELECT * FROM x ( ) ; \nCOMMENT ON TYPE bad IS 'x' ; \nCOMMENT ON TYPE default_test_row IS 'x' ; \nCOMMENT ON TYPE default_test_row IS NULL ; \nCOMMENT ON COLUMN default_test_row . nope IS 'x' ; \nCOMMENT ON COLUMN default_test_row . f1 IS 'x' ; \nCOMMENT ON COLUMN default_test_row . f1 IS NULL ; \nCREATE FUNCTION x ( cstring ) RETURNS opaque AS 'x' LANGUAGE internal IMMUTABLE STRICT ; \nCREATE FUNCTION x ( opaque ) RETURNS opaque AS 'x' LANGUAGE internal IMMUTABLE STRICT ; \nINSERT INTO x VALUES ( 'x' ) , ( 'x' ) ; \nTABLE x ; \nCREATE DOMAIN domaindroptest int4 ; \nCOMMENT ON DOMAIN domaindroptest IS 'x' ; \nCREATE DOMAIN dependenttypetest domaindroptest ; \nDROP DOMAIN domaindroptest ; \nDROP DOMAIN domaindroptest CASCADE ; \nCREATE DOMAIN domainvarchar VARCHAR ( 1 ) ; \nCREATE DOMAIN domainnumeric NUMERIC ( 1 , 1 ) ; \nCREATE DOMAIN domainint4 int4 ; \nCREATE DOMAIN domaintext TEXT ; \nSELECT CAST ( 'x' AS domainvarchar ) ; \nCREATE TABLE x ( x domainint4 , x domaintext , x domainvarchar , x domainnumeric ) ; \nDROP DOMAIN domainvarchar RESTRICT ; \nDROP DOMAIN domainnumeric RESTRICT ; \nDROP DOMAIN domainint4 RESTRICT ; \nDROP DOMAIN domaintext ; \nCREATE DOMAIN domainint4arr int4 [ 1 ] ; \nCREATE DOMAIN domainchar4arr VARCHAR ( 1 ) [ 1 ] [ 1 ] ; \nCREATE TABLE x ( x domainint4arr , x domainchar4arr ) ; \nINSERT INTO x VALUES ( NULL , 'x' ) ; \nINSERT INTO x ( x [ 1 ] , x [ 1 ] ) VALUES ( 1 , 1 ) ; \nSELECT x [ 1 ] , x [ 1 : 1 ] FROM x ; \nCOPY x FROM STDIN ; \n{UPDATE x SET x [ 1 ] = x [ 1 ] + 1 , x [ 1 ] = x [ 1 ] - 1 WHERE x IS NULL ; \nSELECT * FROM x WHERE x IS NULL ; \nDROP DOMAIN domainint4arr RESTRICT ; \nDROP DOMAIN domainchar4arr RESTRICT ; \nCREATE DOMAIN dia AS INT [ ] ; \nCREATE TYPE comptype AS ( r float8 , i float8 ) ; \nCREATE DOMAIN dcomptype AS comptype ; \nCREATE TABLE x ( x dcomptype UNIQUE ) ; \nSELECT ( x ) . r , ( x ) . i , ( x ) . * FROM x ; \nUPDATE x SET x . r = ( x ) . r + 1 WHERE ( x ) . i > 1 ; \nINSERT INTO x ( x . r , x . i ) VALUES ( 1 , 1 ) ; \nCREATE RULE silly AS ON DELETE TO x DO INSTEAD UPDATE x SET x . r = ( x ) . r - 1 , x . i = ( x ) . i + 1 WHERE ( x ) . i > 1 ; \nDROP TYPE comptype CASCADE ; \nCOMMENT ON CONSTRAINT c1 ON DOMAIN dcomptype IS 'x' ; \nCREATE DOMAIN dcomptypea AS comptype [ ] ; \nCREATE TABLE x ( x dcomptypea UNIQUE ) ; \nINSERT INTO x ( x [ 1 ] . r ) VALUES ( 1 ) ; \nSELECT x [ 1 ] , x [ 1 ] . x , x [ 1 ] . x FROM x ; \nUPDATE x SET x [ 1 ] = ROW ( x [ 1 ] . x , x [ 1 ] . x ) ; \nUPDATE x SET x [ 1 ] . r = x [ 1 ] . x + 1 WHERE x [ 1 ] . x > 1 ; \nINSERT INTO x ( x [ 1 ] . r , x [ 1 ] . i ) VALUES ( 1 , 1 ) ; \nCREATE RULE silly AS ON DELETE TO x DO INSTEAD UPDATE x SET x [ 1 ] . r = x [ 1 ] . x - 1 , x [ 1 ] . i = x [ 1 ] . x + 1 WHERE x [ 1 ] . x > 1 ; \nCREATE TABLE x ( x posint [ ] ) ; \nINSERT INTO x VALUES ( ARRAY [ 1 ] ) ; \nCREATE DOMAIN vc4 AS VARCHAR ( 1 ) ; \nCREATE TABLE x ( x vc4 [ ] ) ; \nDROP TYPE vc4 ; \nCREATE DOMAIN dposinta AS posint [ ] ; \nCREATE TABLE x ( x dposinta [ ] ) ; \nSELECT x ( x ) FROM x ; \nSELECT x ( x [ 1 ] ) FROM x ; \nSELECT x ( x [ 1 ] [ 1 ] ) FROM x ; \nSELECT x ( ( x [ 1 ] ) [ 1 ] ) FROM x ; \nUPDATE x SET x [ 1 ] = ARRAY [ 1 ] ; \nSELECT x , x [ 1 ] , ( x [ 1 ] ) [ 1 ] FROM x ; \nUPDATE x SET x [ 1 ] [ 1 ] = ARRAY [ 1 ] ; \nDROP DOMAIN posint CASCADE ; \nCREATE DOMAIN dnotnull VARCHAR ( 1 ) NOT NULL ; \nCREATE DOMAIN dnull VARCHAR ( 1 ) ; \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' , 'x' , 'x' ) ; \nINSERT INTO x VALUES ( NULL , 'x' , 'x' , 'x' , 'x' ) ; \nINSERT INTO x VALUES ( 'x' , NULL , 'x' , 'x' , 'x' ) ; \nINSERT INTO x VALUES ( 'x' , 'x' , NULL , 'x' , 'x' ) ; \nSELECT CAST ( 'x' AS dnotnull ) ; \nDROP DOMAIN dnotnull RESTRICT ; \nDROP DOMAIN dnull RESTRICT ; \nDROP DOMAIN dcheck RESTRICT ; \nCREATE DOMAIN ddef1 int4 DEFAULT 1 ; \nCREATE DOMAIN ddef2 oid DEFAULT 'x' ; \nCREATE DOMAIN ddef3 TEXT DEFAULT 1 ; \nCREATE DOMAIN ddef4 int4 DEFAULT x ( 'x' ) ; \nCREATE DOMAIN ddef5 NUMERIC ( 1 , 1 ) NOT NULL DEFAULT 'x' ; \nCREATE TABLE x ( x ddef1 , x ddef2 , x ddef3 , x ddef4 PRIMARY KEY , x ddef1 NOT NULL DEFAULT NULL , x ddef2 DEFAULT 'x' , x ddef4 DEFAULT 1 , x ddef5 ) ; \nCOPY x ( x ) FROM STDIN ; \nDROP TABLE x CASCADE ; \nCREATE DOMAIN dnotnulltest INTEGER ; \nCREATE TABLE x ( x dnotnulltest , x dnotnulltest ) ; \nALTER DOMAIN dnotnulltest SET NOT NULL ; \nUPDATE x SET x = NULL ; \nDROP DOMAIN dnotnulltest CASCADE ; \nCREATE TABLE x ( x ddef1 ) ; \nALTER DOMAIN ddef1 SET DEFAULT 'x' ; \nALTER DOMAIN ddef1 DROP DEFAULT ; \nCREATE DOMAIN con AS INTEGER ; \nCREATE TABLE x ( x con ) ; \nALTER DOMAIN con DROP CONSTRAINT t ; \nALTER DOMAIN con DROP CONSTRAINT nonexistent ; \nALTER DOMAIN con DROP CONSTRAINT IF EXISTS nonexistent ; \nCREATE DOMAIN things AS INT ; \nCREATE TABLE x ( x things ) ; \nINSERT INTO x ( x ) VALUES ( 1 ) ; \nALTER DOMAIN things VALIDATE CONSTRAINT meow ; \nUPDATE x SET x = 1 ; \nCREATE TABLE x ( x INTEGER ) ; \nCREATE DOMAIN dom AS INTEGER ; \nCREATE VIEW x AS SELECT CAST ( x AS dom ) FROM x ; \nINSERT INTO x ( x ) VALUES ( NULL ) ; \nALTER DOMAIN dom SET NOT NULL ; \nDROP DOMAIN ddef1 RESTRICT ; \nDROP DOMAIN ddef2 RESTRICT ; \nDROP DOMAIN ddef3 RESTRICT ; \nDROP DOMAIN ddef4 RESTRICT ; \nDROP DOMAIN ddef5 RESTRICT ; \nCREATE DOMAIN vchar4 VARCHAR ( 1 ) ; \nDROP DOMAIN vchar4 CASCADE ; \nCREATE DOMAIN str_domain AS TEXT NOT NULL ; \nCREATE TABLE x ( x INT , x INT ) ; \nALTER TABLE x ADD COLUMN x str_domain ; \nALTER TABLE x ADD COLUMN x str_domain2 ; \n$EXECUTE s1 ( 1 ) ; \n$$$$$$CREATE TYPE ddtest1 AS ( f1 posint ) ; \nCREATE TABLE x ( x ddtest1 ) ; \nINSERT INTO x VALUES ( ROW ( 1 ) ) ; \nCREATE TABLE x ( x ddtest1 [ ] ) ; \nCREATE DOMAIN ddtest1d AS ddtest1 ; \nCREATE TABLE x ( x ddtest1d ) ; \nDROP DOMAIN ddtest1d ; \nCREATE DOMAIN ddtest1d AS ddtest1 [ ] ; \nCREATE TYPE rposint AS RANGE ( subtype = posint ) ; \nCREATE TABLE x ( x rposint ) ; \nDROP TYPE rposint ; \nCREATE TABLE x ( x posint2 ) ; \nDROP TYPE ddtest1 ; \n$$$$SELECT x ( 121.000000 ) ; \nSELECT x ( 1.234560 ) ; \nCREATE DOMAIN mynums AS NUMERIC ( 1 , 1 ) [ 1 ] ; \n$$$$CREATE DOMAIN mynums2 AS mynums ; \n$$$$DROP FUNCTION x ( NUMERIC ) ; \n$$$$CREATE DOMAIN di AS INT ; \n$$$$$$$$DROP DOMAIN di ; \nCREATE TABLE x ( x inotnull ) ; \nINSERT INTO x VALUES ( NULL ) ; \nDROP DOMAIN inotnull ; \nDROP FUNCTION x ( anyelement , anyelement ) ; \nCREATE DOMAIN testdomain1 AS INT ; \nALTER DOMAIN testdomain1 RENAME TO testdomain2 ; \nALTER DOMAIN testdomain1 RENAME CONSTRAINT unsigned TO unsigned_foo ; \nALTER DOMAIN testdomain1 DROP CONSTRAINT unsigned_foo ; \nDROP DOMAIN testdomain1 ; \nINSERT INTO x VALUES ( x ) ; \n$$$$$$SELECT x ( * ) > 1 FROM x ; \nCREATE TABLE x ( x float8 ) ; \nSELECT 'x' AS five , * FROM x ; \nSELECT 'x' AS one , x . * FROM x f WHERE x . x = 'x' ; \nSELECT 'x' AS three , x . * FROM x f WHERE 'x' > x . x ; \nSELECT 'x' AS three , x . * FROM x f WHERE x . x < 'x' ; \nSELECT 'x' AS four , x . * FROM x f WHERE 'x' >= x . x ; \nSELECT 'x' AS four , x . * FROM x f WHERE x . x <= 'x' ; \nSELECT 'x' AS three , x . x , x . x * 'x' AS x FROM x f WHERE x . x > 'x' ; \nSELECT 'x' AS three , x . x , x . x + 'x' AS x FROM x f WHERE x . x > 'x' ; \nSELECT 'x' AS three , x . x , x . x / 'x' AS x FROM x f WHERE x . x > 'x' ; \nSELECT 'x' AS three , x . x , x . x - 'x' AS x FROM x f WHERE x . x > 'x' ; \nSELECT 'x' AS one , x . x ^ 'x' AS square_f1 FROM x f WHERE x . x = 'x' ; \n@SELECT 'x' AS five , x . x , x . x AS abs_f1 FROM x f ; \nSELECT 'x' AS five , x . x , x ( x . x ) AS trunc_f1 FROM x f ; \nSELECT 'x' AS five , x . x , x ( x . x ) AS round_f1 FROM x f ; \nSELECT x ( x ) AS ceil_f1 FROM x f ; \nSELECT x ( x ) AS ceiling_f1 FROM x f ; \nSELECT x ( x ) AS floor_f1 FROM x f ; \nSELECT x ( x ) AS sign_f1 FROM x f ; \nSET extra_float_digits = 1 ; \nSELECT x ( x 'x' ) AS eight ; \nSELECT x ( x 'x' , x 'x' ) ; \nSELECT 'x' AS three , x . x , x ( x ( x . x ) ) AS exp_ln_f1 FROM x f WHERE x . x > 'x' ; \nUPDATE x SET x = x . x * 'x' WHERE x . x > 'x' ; \nSELECT 'x' AS bad , x . x * 'x' FROM x f ; \nSELECT 'x' AS bad , x . x ^ 'x' FROM x f ; \nSELECT 1 ^ 1 + 1 ^ 1 + 1 ^ 0.000000 + 1 ^ 0.500000 ; \nSELECT 'x' AS bad , x ( x . x ) FROM x f WHERE x . x = 'x' ; \nSELECT 'x' AS bad , x ( x . x ) FROM x f WHERE x . x < 'x' ; \nSELECT 'x' AS bad , x ( x . x ) FROM x f ; \nSELECT 'x' AS bad , x . x / 'x' FROM x f ; \nRESET extra_float_digits ; \nDELETE FROM x ; \nCREATE TYPE xfloat8 ; \nCREATE FUNCTION x ( cstring ) RETURNS xfloat8 IMMUTABLE STRICT LANGUAGE internal AS 'x' ; \nCREATE FUNCTION x ( xfloat8 ) RETURNS cstring IMMUTABLE STRICT LANGUAGE internal AS 'x' ; \nCREATE CAST ( xfloat8 AS float8 ) WITHOUT FUNCTION ; \nCREATE CAST ( float8 AS xfloat8 ) WITHOUT FUNCTION ; \nCREATE CAST ( xfloat8 AS BIGINT ) WITHOUT FUNCTION ; \nCREATE CAST ( BIGINT AS xfloat8 ) WITHOUT FUNCTION ; \nDROP TYPE xfloat8 CASCADE ; \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) , ( 1 , 'x' , 1 ) ; \nREFRESH MATERIALIZED VIEW x ; \nCREATE MATERIALIZED VIEW x AS SELECT x ( x ) AS grandtot FROM x ; \nCREATE UNIQUE INDEX x ON x ( ( x > 1 ) ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE x < 1 ; \nCREATE VIEW x AS SELECT x ( x ) AS grandtot FROM x ; \nEXPLAIN ( costs off ) CREATE MATERIALIZED VIEW x AS SELECT * FROM x ; \nCREATE MATERIALIZED VIEW x AS SELECT * FROM x ; \nALTER MATERIALIZED VIEW x SET SCHEMA mvtest_mvschema ; \nSET search_path = mvtest_mvschema , public ; \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) ; \nREFRESH MATERIALIZED VIEW CONCURRENTLY x ; \nRESET search_path ; \nEXPLAIN ( costs off ) SELECT * FROM x ; \nDROP MATERIALIZED VIEW IF EXISTS x ; \nREFRESH MATERIALIZED VIEW CONCURRENTLY x WITH NO DATA ; \nSELECT * FROM x FOR SHARE ; \nCREATE VIEW x AS SELECT 1 moo ; \nCREATE VIEW x AS SELECT x , 1 * x FROM x UNION ALL SELECT x , 1 * x FROM x ; \nCREATE MATERIALIZED VIEW x AS SELECT x , 1 * x FROM x UNION ALL SELECT x , 1 * x FROM x ; \nCREATE MATERIALIZED VIEW x AS SELECT * FROM x WHERE x = 1 ; \nDROP VIEW x CASCADE ; \nCREATE TABLE x ( x , x ) AS VALUES ( 1 , 1 ) ; \nCREATE UNIQUE INDEX ON x ( x ) ; \nINSERT INTO x SELECT * FROM x ; \nCREATE TABLE x ( x , x , x ) AS VALUES ( 1 , 1 , 1 ) ; \nINSERT INTO x VALUES ( 1 , 1 , 1 ) ; \nCREATE MATERIALIZED VIEW x AS SELECT 1 AS col1 WITH NO DATA ; \nCREATE MATERIALIZED VIEW x AS SELECT * FROM x WHERE x = ( SELECT LEAST ( x ) FROM x ) WITH NO DATA ; \nDROP MATERIALIZED VIEW x CASCADE ; \nCREATE TABLE x ( x serial PRIMARY KEY , x box ) ; \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) ; \nCREATE UNIQUE INDEX x ON x ( x ) ; \nUPDATE x SET x = 'x' WHERE x = 1 ; \nSELECT * FROM x ORDER BY x ; \nUPDATE x SET x = 1 WHERE x = 1 ; \nDROP MATERIALIZED VIEW x ; \nCREATE TABLE x AS SELECT x ( 1 , 1 ) AS a ; \nCREATE MATERIALIZED VIEW x AS SELECT x FROM x WHERE x <= 1 ; \nDELETE FROM x WHERE EXISTS ( SELECT * FROM x WHERE x . x = x . x ) ; \nSET ROLE regress_user_mvtest ; \nCREATE MATERIALIZED VIEW IF NOT EXISTS x AS SELECT * FROM x ; \nDROP OWNED BY x CASCADE ; \n$$CREATE MATERIALIZED VIEW x AS SELECT 1 AS x WITH NO DATA ; \n$$SELECT x FROM x TABLESAMPLE x ( 1 ) REPEATABLE ( 1 ) ; \nSELECT x FROM x TABLESAMPLE x ( 5.500000 ) REPEATABLE ( 1 ) ; \nFETCH FIRST FROM tablesample_cur ; \nFETCH NEXT FROM tablesample_cur ; \nCLOSE tablesample_cur ; \nEXPLAIN ( COSTS OFF ) SELECT * FROM x ; \nEXPLAIN ( costs off ) SELECT x ( * ) FROM x TABLESAMPLE x ( 1 ) ; \nSELECT x ( * ) FROM x TABLESAMPLE x ( 1 ) ; \nSELECT x ( * ) FROM x ; \nSELECT * FROM ( VALUES ( 1 ) , ( 1 ) ) v ( pct ) , LATERAL ( SELECT x ( * ) FROM x TABLESAMPLE x ( x ) ) ss ; \nEXPLAIN ( costs off ) SELECT x , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) ) v ( pct ) , LATERAL ( SELECT * FROM x TABLESAMPLE x ( x ) ) ss GROUP BY x ; \nSELECT x , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) ) v ( pct ) , LATERAL ( SELECT * FROM x TABLESAMPLE x ( x ) ) ss GROUP BY x ; \nSELECT x FROM x TABLESAMPLE x ( 1 ) ; \nWITH query_select AS ( SELECT * FROM x ) SELECT * FROM x TABLESAMPLE x ( 5.500000 ) REPEATABLE ( 1 ) ; \nCREATE TABLE x ( x INT ) PARTITION BY list ( a ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 1 ) ; \nEXPLAIN ( costs off ) SELECT * FROM x TABLESAMPLE x ( 1 ) ; \nDROP TABLE x , x , x ; \n$$$$SELECT * INTO TABLE x FROM x ; \nSELECT * INTO TABLE x FROM x WHERE x < 1 ; \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' ) , ( 'x' , 'x' , 'x' ) ; \nUPDATE x SET x = 'x' ; \nCREATE TABLE x ( x int4 , x float4 , x polygon ) ; \nSET DateStyle = 'x' ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' ; \nSET datestyle TO dmy ; \nRESET datestyle ; \nSELECT TIME WITHOUT TIME ZONE 'x' ; \nSELECT TIME WITH TIME ZONE 'x' ; \nSELECT x 'x' AS Confucius' Birthday\" ; \nSELECT x 'x' AS Julian Epoch\" ; \nSELECT x 'x' + TIME 'x' AS Date + Time\" ; \nSELECT x 'x' + TIME WITH TIME ZONE 'x' AS Date + Time PST\" ; \nSELECT x 'x' + TIME WITH TIME ZONE 'x' AS Date + Time UTC\" ; \nSELECT x 'x' + INTERVAL 'x' AS Add Two Years\" ; \nSELECT x 'x' - INTERVAL 'x' AS Subtract Two Years\" ; \nSELECT x 'x' - TIME 'x' AS Subtract Time\" ; \nSELECT x 'x' - TIME WITH TIME ZONE 'x' AS Subtract Time UTC\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' - INTERVAL 'x' AS Feb 29\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' - INTERVAL 'x' AS Feb 28\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' + INTERVAL 'x' AS Dec 31\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' + INTERVAL 'x' AS Feb 23, 285506\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' + INTERVAL 'x' AS Jan 20, 288244\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' + INTERVAL 'x' AS Dec 31, 294276\" ; \nSELECT TIMESTAMP WITHOUT TIME ZONE 'x' - TIMESTAMP WITHOUT TIME ZONE 'x' AS 106751991 Days\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' = ( TIMESTAMP WITHOUT TIME ZONE 'x' + INTERVAL 'x' ) ) AS True\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' = ( TIMESTAMP WITHOUT TIME ZONE 'x' - INTERVAL 'x' ) ) AS True\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' > 'x' ) AS True\" ; \nSELECT x 'x' + TIME 'x' AS Jan_01_1994_11am\" ; \nSELECT x 'x' + TIME 'x' AS Jan_01_1994_10am\" ; \nSELECT x 'x' + x 'x' AS Jan_01_1994_8am\" ; \nSELECT x ( x 'x' , TIME WITH TIME ZONE 'x' ) AS Jan_01_1994_8am\" ; \nSELECT 'x' AS 64\" , x + INTERVAL 'x' AS one_year FROM x ; \nSELECT 'x' AS 64\" , x - INTERVAL 'x' AS one_year FROM x ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' - INTERVAL 'x' AS Feb 29\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' - INTERVAL 'x' AS Feb 28\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' + INTERVAL 'x' AS Dec 31\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' = ( TIMESTAMP WITH TIME ZONE 'x' + INTERVAL 'x' ) ) AS True\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' = ( TIMESTAMP WITH TIME ZONE 'x' - INTERVAL 'x' ) ) AS True\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' > 'x' ) AS True\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' + INTERVAL 'x' AS Apr 3, 12:00\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' + INTERVAL 'x' AS Apr 3, 13:00\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' - INTERVAL 'x' AS Apr 2, 12:00\" ; \nSELECT TIMESTAMP WITH TIME ZONE 'x' - INTERVAL 'x' AS Apr 2, 11:00\" ; \nRESET TIME ZONE ; \nSELECT x ( x 'x' , TIME 'x' ) AS Jan_01_1994_10am\" ; \nSELECT x ( x 'x' , TIME 'x' ) AS Jan_01_1994_9am\" ; \nSELECT x ( x 'x' , TIME WITH TIME ZONE 'x' ) AS Jan_01_1994_11am\" ; \nSELECT x ( x 'x' , TIME WITH TIME ZONE 'x' ) AS Jan_01_1994_10am\" ; \nSELECT CAST ( TIME 'x' AS INTERVAL ) AS +01:02\" ; \nSELECT CAST ( INTERVAL 'x' AS TIME ) AS 02:03:00\" ; \nSELECT TIME 'x' + INTERVAL 'x' AS 03:31:00\" ; \nSELECT TIME 'x' - INTERVAL 'x' AS 23:29:00\" ; \nSELECT TIME 'x' + INTERVAL 'x' AS 14:31:00\" ; \nSELECT TIME 'x' + INTERVAL 'x' AS 07:31:00\" ; \nSELECT CAST ( TIME WITH TIME ZONE 'x' AS INTERVAL ) AS +00:01\" ; \nSELECT CAST ( INTERVAL 'x' AS TIME WITH TIME ZONE ) AS 02:03:00-08\" ; \nSELECT TIME WITH TIME ZONE 'x' - INTERVAL 'x' AS 23:29:00-08\" ; \nSELECT TIME WITH TIME ZONE 'x' + INTERVAL 'x' AS 14:31:00-08\" ; \nSELECT CAST ( CAST ( x 'x' + TIME WITH TIME ZONE 'x' + INTERVAL 'x' AS TIME WITH TIME ZONE ) AS TIME ) AS 07:31:00\" ; \nSELECT CAST ( CAST ( x 'x' + TIME WITH TIME ZONE 'x' + INTERVAL 'x' AS TIMESTAMP WITHOUT TIME ZONE ) AS TIME ) AS 07:31:00\" ; \nSELECT x . x AS t , x . x AS i , x . x + x . x AS add\" , x . x - x . x AS subtract\" FROM x t , x i WHERE x . x BETWEEN 'x' AND 'x' AND x . x BETWEEN 'x' AND 'x' ORDER BY 1 , 1 ; \nSELECT x . x AS t , x . x AS i , x . x + x . x AS add\" , x . x - x . x AS subtract\" FROM x t , x i ORDER BY 1 , 1 ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) AS False\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , TIMESTAMP WITH TIME ZONE 'x' ) AS False\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITH TIME ZONE 'x' , INTERVAL 'x' ) AS False\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) AS False\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , TIMESTAMP WITHOUT TIME ZONE 'x' ) AS False\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) AS True\" ; \nSELECT ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) OVERLAPS ( TIMESTAMP WITHOUT TIME ZONE 'x' , INTERVAL 'x' ) AS False\" ; \nSELECT ( TIME 'x' , TIME 'x' ) OVERLAPS ( TIME 'x' , TIME 'x' ) AS True\" ; \nSELECT ( TIME 'x' , INTERVAL 'x' ) OVERLAPS ( TIME 'x' , INTERVAL 'x' ) AS True\" ; \nSELECT ( TIME 'x' , INTERVAL 'x' ) OVERLAPS ( TIME 'x' , INTERVAL 'x' ) AS False\" ; \nCREATE TABLE x ( x TIMESTAMP WITH TIME ZONE ) ; \nINSERT INTO x ( x ) SELECT x FROM x WHERE x BETWEEN 'x' AND 'x' OR x BETWEEN 'x' AND 'x' ; \nSELECT 'x' AS 16\" , x AS timestamp\" FROM x ORDER BY x ; \nSELECT 'x' AS 160\" , x . x AS timestamp\" , x . x AS interval\" , x . x + x . x AS plus FROM x d , x t ORDER BY x , x , x ; \nSELECT 'x' AS 160\" , x . x AS timestamp\" , x . x AS interval\" , x . x - x . x AS minus FROM x d , x t WHERE x ( x . x ) ORDER BY x , x , x ; \nSELECT 'x' AS 16\" , x . x AS timestamp\" , TIMESTAMP WITH TIME ZONE 'x' AS gpstime_zero , x . x - TIMESTAMP WITH TIME ZONE 'x' AS difference FROM x d ORDER BY x ; \nSELECT 'x' AS 226\" , x . x AS timestamp1 , x . x AS timestamp2 , x . x - x . x AS difference FROM x d1 , x d2 ORDER BY x , x , x ; \nSET DateStyle TO 'x' ; \nSHOW DateStyle ; \nSELECT 'x' AS 64\" , x AS us_postgres FROM x ; \nSELECT 'x' AS 64\" , x AS us_iso FROM x ; \nSELECT 'x' AS 64\" , x AS us_sql FROM x ; \nSELECT x ( * ) AS one FROM x WHERE x = 'x' ; \nSELECT 'x' AS 65\" , x AS european_postgres FROM x ; \nSELECT 'x' AS 65\" , x AS european_iso FROM x ; \nSELECT 'x' AS 65\" , x AS european_sql FROM x ; \nRESET DateStyle ; \nSELECT x ( 'x' , x 'x' ) ; \nSELECT x , x ( 'x' , 'x' || x ) FROM x ( 1 , 1 ) i ; \nSHOW TIME ZONE ; \nCREATE TEMP TABLE x ( x INT ) ; \nCREATE TEMP TABLE x ( x FLOAT ) ; \nINSERT INTO x VALUES ( 2.100000 ) ; \n\\CREATE TEMP TABLE x ( x INT ) ON COMMIT DELETE ROWS ; \nCREATE INDEX ON x ( x ( 'x' ) ) ; \nCREATE TEMP TABLE x ( x ) ON COMMIT DELETE ROWS AS SELECT 1 ; \nCREATE TEMP TABLE x ( x INT ) ON COMMIT DROP ; \nCREATE TEMP TABLE x ( x ) ON COMMIT DROP AS SELECT 1 ; \nCREATE TABLE x ( x INT ) ON COMMIT DELETE ROWS ; \nCREATE TABLE x ( x ) ON COMMIT DELETE ROWS AS SELECT 1 ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY ) ; \nCREATE TEMP TABLE x ( x INT REFERENCES x ) ON COMMIT DELETE ROWS ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY ) ON COMMIT DELETE ROWS ; \nCREATE TEMP TABLE x ( x INT REFERENCES x ) ; \nCREATE TABLE x . whereami ( x TEXT ) ; \nINSERT INTO x . whereami VALUES ( 'x' ) ; \n$$$$SET search_path = pg_temp , public ; \nSET search_path = public , pg_temp ; \nSELECT pg_temp . whoami ( ) ; \nDROP TABLE x . whereami ; \nSELECT pg_temp . nonempty ( 'x' ) ; \nCREATE TEMP TABLE x ( x INT ) PARTITION BY list ( a ) ON COMMIT DELETE ROWS ; \nCREATE TEMP TABLE x PARTITION OF x FOR VALUES IN ( 1 ) ON COMMIT DELETE ROWS ; \nCREATE TEMP TABLE x ( x INT ) PARTITION BY list ( a ) ON COMMIT DROP ; \nCREATE TEMP TABLE x PARTITION OF x FOR VALUES IN ( 1 ) ON COMMIT DROP ; \nINSERT INTO x VALUES ( 1 ) , ( 1 ) ; \n~SELECT x FROM x WHERE x 'x' ; \nCREATE TEMP TABLE x PARTITION OF x FOR VALUES IN ( 1 ) ON COMMIT PRESERVE ROWS ; \n~SELECT x FROM x WHERE x 'x' ORDER BY x ; \nCREATE TEMP TABLE x ( ) INHERITS ( x ) ON COMMIT DELETE ROWS ; \n~CREATE TEMP TABLE x ( ) INHERITS ( x ) ON COMMIT DROP ; \n~$$PREPARE TRANSACTION 'x' ; \n$$DROP FUNCTION pg_temp . twophase_func ( ) ; \n@@CREATE TYPE pg_temp . twophase_type AS ( a INT ) ; \nCREATE VIEW x . twophase_view AS SELECT 1 ; \nCREATE SEQUENCE x . twophase_seq ; \nSELECT x FROM x ; \nLOCK x IN ACCESS EXCLUSIVE MODE ; \n\\CREATE TABLE x ( x INT DEFAULT 1 , x INT , x TEXT ) ; \nCREATE TABLE x ( x INT PRIMARY KEY , x TEXT ) ; \nINSERT INTO x VALUES ( 1 , 1 , 'x' ) ; \nINSERT INTO x ( x , x ) VALUES ( 1 , 1 ) ; \nUPDATE x SET x = DEFAULT , x = DEFAULT ; \nUPDATE x AS x SET x = 1 WHERE x . x = 1 ; \nUPDATE x x SET x = x . x + 1 WHERE x . x = 1 ; \nUPDATE x SET x = x . x FROM ( VALUES ( 1 , 1 ) ) AS v ( i , j ) WHERE x . x = x . x ; \nUPDATE x SET x = x . * FROM ( VALUES ( 1 , 1 ) ) AS v ( i , j ) WHERE x . x = x . x ; \nINSERT INTO x SELECT x , x + 1 , x FROM x ; \nUPDATE x SET ( x , x , x ) = ( 'x' , x + 1 , DEFAULT ) WHERE x = 'x' ; \nUPDATE x SET ( x , x ) = ( 'x' , x + x ) , x = x + 1 WHERE x = 1 ; \nUPDATE x SET ( x , x ) = ( SELECT x , x FROM x WHERE x = 1 AND x = 'x' ) WHERE x = 1 AND x = 1 ; \nUPDATE x x SET ( x , x ) = ( SELECT x + 1 , x FROM x i WHERE x . x = x . x AND x . x = x . x AND x . x IS NOT DISTINCT FROM x . x ) ; \nUPDATE x SET ( x , x ) = ( SELECT x + 1 , x FROM x ) ; \nUPDATE x SET ( x , x ) = ( SELECT x + 1 , x FROM x WHERE x = 1 ) WHERE x = 1 ; \nUPDATE x SET ( x , x ) = ROW ( x . * ) FROM ( VALUES ( 1 , 1 ) ) AS v ( i , j ) WHERE x . x = x . x ; \nUPDATE x SET ( x , x ) = ( x . * ) FROM ( VALUES ( 1 , 1 ) ) AS v ( i , j ) WHERE x . x = x . x ; \nUPDATE x AS x SET x = x . x + 1 WHERE x . x = 1 ; \nUPDATE x SET x = x ( 'x' , 1 ) WHERE x = 'x' ; \nSELECT x , x , x ( x ) FROM x ; \nUPDATE x x SET ( x , x ) = ( SELECT x , x FROM x s WHERE x . x = x . x ) WHERE CURRENT_USER = SESSION_USER ; \nINSERT INTO x VALUES ( 1 , 'x' ) ; \nWITH aaa AS ( SELECT 1 AS a , 'x' AS b ) INSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET ( x , x ) = ( SELECT x , x FROM x ) RETURNING * ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET ( x , x ) = ( SELECT x || 'x' , x FROM x i WHERE x . x = x . x ) RETURNING * ; \nCREATE TABLE x ( x VARCHAR , x NUMERIC , x TEXT , x BIGINT , x INT ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES FROM ( 'x' , 1 ) TO ( 'x' , 1 ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES FROM ( 'x' , 1 ) TO ( 'x' , 1 ) ; \nUPDATE x SET x = x - 1 ; \nALTER TABLE x DROP COLUMN x , DROP COLUMN x , DROP COLUMN x ; \nALTER TABLE x ADD COLUMN x NUMERIC , ADD COLUMN x VARCHAR , ADD COLUMN x TEXT ; \nALTER TABLE x DROP COLUMN x ; \nALTER TABLE x ADD COLUMN x BIGINT ; \nCREATE TABLE x PARTITION OF x FOR VALUES FROM ( 1 ) TO ( 1 ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES FROM ( 1 ) TO ( 1 ) ; \nCREATE TABLE x ( x VARCHAR , x INT , x NUMERIC , x BIGINT , x TEXT ) ; \n\\EXPLAIN ( costs off ) UPDATE x SET x = x - 1 WHERE x > 1 ; \nUPDATE x SET x = x - 1 , x = x WHERE x = 1 ; \nUPDATE x SET x = x - 1 WHERE x > 1 ; \nUPDATE x SET x = x ; \nUPDATE x SET x = x + 1 WHERE x = 1 ; \nUPDATE x SET x = x + 1 RETURNING x , x , x ; \nUPDATE x SET x = x - 1 WHERE x > 1 RETURNING * ; \nUPDATE x SET x = x - 1 WHERE x > 1 RETURNING x , x + x ; \nCREATE VIEW x AS SELECT * FROM x WHERE ( SELECT x > x FROM x ) WITH CHECK OPTION ; \nUPDATE x SET x = 'x' , x = 1 , x = 1 WHERE x = 1 ; \nUPDATE x SET x = 'x' , x = 1 WHERE x = 1 ; \nUPDATE x SET x = 1 WHERE x = 'x' AND x > 1 AND x > 1 RETURNING ( x ) , * ; \n$$CREATE TRIGGER x AFTER UPDATE ON x REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nUPDATE x SET x = ( CASE WHEN x = 1 THEN 1 ELSE x + 1 END ) WHERE x = 'x' AND x > 1 AND x >= 1 ; \nCREATE TRIGGER x AFTER DELETE ON x REFERENCING OLD TABLE AS old_table FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nCREATE TRIGGER x AFTER INSERT ON x REFERENCING NEW TABLE AS new_table FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nUPDATE x SET x = x + 1 WHERE x = 'x' AND x > 1 AND x >= 1 ; \nDROP TRIGGER trans_deletetrig ON range_parted ; \nDROP TRIGGER trans_inserttrig ON range_parted ; \n$$CREATE TRIGGER x BEFORE UPDATE OR INSERT ON x FOR EACH ROW EXECUTE PROCEDURE x ( ) ; \nDROP TRIGGER trans_updatetrig ON range_parted ; \nDROP TRIGGER trig_c1_100 ON part_c_1_100 ; \nDROP TRIGGER trig_d1_15 ON part_d_1_15 ; \nDROP TRIGGER trig_d15_20 ON part_d_15_20 ; \nALTER TABLE x ENABLE ROW LEVEL SECURITY ; \nGRANT ALL ON x , x TO x ; \nCREATE POLICY seeall ON x AS PERMISSIVE FOR SELECT USING ( TRUE ) ; \nCREATE POLICY policy_range_parted ON x FOR UPDATE USING ( TRUE ) WITH CHECK ( x % 1 = 1 ) ; \nSET SESSION AUTHORIZATION regress_range_parted_user ; \nUPDATE x SET x = 'x' , x = 1 WHERE x = 'x' AND x = 1 ; \n$$CREATE TRIGGER x BEFORE INSERT ON x FOR EACH ROW EXECUTE PROCEDURE x ( ) ; \nDROP TRIGGER trig_d_1_15 ON part_d_1_15 ; \nCREATE POLICY policy_range_parted_subplan ON x AS RESTRICTIVE FOR UPDATE USING ( TRUE ) WITH CHECK ( ( SELECT x . x <= x FROM x ) ) ; \nDROP POLICY policy_range_parted ON range_parted ; \nDROP POLICY policy_range_parted_subplan ON range_parted ; \nDROP POLICY policy_range_parted_wholerow ON range_parted ; \nREVOKE ALL ON x , x FROM x ; \n$$CREATE TRIGGER x AFTER DELETE ON x FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nCREATE TRIGGER x AFTER UPDATE ON x FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nCREATE TRIGGER x AFTER INSERT ON x FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nDROP TRIGGER parent_delete_trig ON range_parted ; \nDROP TRIGGER parent_update_trig ON range_parted ; \nDROP TRIGGER parent_insert_trig ON range_parted ; \nDROP TRIGGER c1_delete_trig ON part_c_1_100 ; \nDROP TRIGGER c1_update_trig ON part_c_1_100 ; \nDROP TRIGGER c1_insert_trig ON part_c_1_100 ; \nDROP TRIGGER d1_delete_trig ON part_d_1_15 ; \nDROP TRIGGER d1_update_trig ON part_d_1_15 ; \nDROP TRIGGER d1_insert_trig ON part_d_1_15 ; \nDROP TRIGGER d15_delete_trig ON part_d_15_20 ; \nDROP TRIGGER d15_update_trig ON part_d_15_20 ; \nDROP TRIGGER d15_insert_trig ON part_d_15_20 ; \nCREATE TABLE x PARTITION OF x DEFAULT ; \nINSERT INTO x VALUES ( 'x' , 1 ) ; \nUPDATE x SET x = 'x' WHERE x = 'x' ; \nCREATE TABLE x ( x TEXT , x INT ) PARTITION BY list ( a ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 'x' , 'x' ) ; \nCREATE TABLE x ( x NUMERIC , x INT , x int8 ) PARTITION BY list ( a ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 1 ) PARTITION BY list ( b ) ; \nCREATE TABLE x ( x INT , x int8 , x NUMERIC ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES IN ( 1 ) ; \nCREATE TABLE x ( x NUMERIC , x INT , x int8 ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES IN ( 1 , 1 ) ; \nUPDATE x SET x = x + x WHERE x = 1 ; \n$$DROP TRIGGER parted_mod_b ON sub_part1 ; \n$$CREATE TRIGGER x BEFORE DELETE ON x FOR EACH ROW EXECUTE PROCEDURE x ( ) ; \nDROP TRIGGER trig_skip_delete ON sub_part2 ; \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ; \nUPDATE x x SET x = 1 FROM x t2 WHERE x . x = x . x AND x = 1 ; \n$$CREATE TABLE x ( x INT , x INT ) PARTITION BY hash ( a custom_opclass , b custom_opclass ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES WITH ( modulus 1 , remainder 1 ) ; \nUPDATE x SET x = 1 , x = 1 WHERE x = 1 ; \nUPDATE x SET x = x - 1 WHERE x = 1 ; \nDROP OPERATOR CLASS custom_opclass USING hash ; \nDROP FUNCTION x ( a int4 , seed int8 ) ; \nEXPLAIN ( costs off ) INSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO NOTHING ; \nCREATE UNIQUE INDEX x ON x ( x ( x ) COLLATE C\" , x ( x ) text_pattern_ops ) ; \nEXPLAIN ( costs off ) INSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ( x ) text_pattern_ops , x ( x ) COLLATE C\" ) DO NOTHING ; \nEXPLAIN ( costs off ) INSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ( x ) COLLATE C\" , x ( x ) text_pattern_ops ) DO NOTHING ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT DO UPDATE SET x = x . x ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET x = x . x ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ( x ) ) DO UPDATE SET x = x . x ; \nCREATE UNIQUE INDEX x ON x ( x ( x ) ) ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ( x ) , x ( x ) ) DO UPDATE SET x = x . x ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) WHERE x LIKE 'x' DO UPDATE SET x = x . x ; \nCREATE TABLE x ( x BIGINT , x BIGINT ) ; \nCREATE UNIQUE INDEX x ON x ( COALESCE ( x , 1 ) ) ; \nCREATE UNIQUE INDEX x ON x ( x ) WHERE COALESCE ( x , 1 ) > 1 ; \nINSERT INTO x VALUES ( 1 , 1 ) ON CONFLICT ( COALESCE ( x , 1 ) ) DO NOTHING ; \nINSERT INTO x VALUES ( 1 , 1 ) ON CONFLICT ( x ) WHERE COALESCE ( x , 1 ) > 1 DO NOTHING ; \nCREATE VIEW x AS SELECT * FROM x WITH CASCADED CHECK OPTION ; \nCREATE TABLE x ( x CHAR ( 1 ) ) INHERITS ( x ) ; \nINSERT INTO x VALUES ( 'x' , 1 , 1 ) ; \nALTER TABLE x DROP COLUMN x , DROP COLUMN x ; \nCREATE TABLE x ( x INT UNIQUE , x box , EXCLUDE USING gist ( x WITH && ) ) ; \nCREATE TABLE x ( x INT PRIMARY KEY , x INT ) ; \nBEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT DO NOTHING ; \nBEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ON CONFLICT ( x ) DO UPDATE SET x = 1 ; \nCREATE TABLE x ( x INT UNIQUE , x CHAR ) PARTITION BY list ( a ) ; \nCREATE TABLE x PARTITION OF x ( x UNIQUE ) FOR VALUES IN ( 1 , 1 ) ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT DO NOTHING ; \nINSERT INTO x VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO NOTHING ; \nCREATE TABLE x ( x CHAR , x INT UNIQUE ) ; \nTRUNCATE x ; \nALTER TABLE x DROP x , ADD x CHAR ; \nINSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET x = x . x ; \nINSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET x = x . x WHERE x . x = 'x' ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 1 ) PARTITION BY list ( a ) ; \nINSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) , ( 1 , 'x' ) , ( 1 , 'x' ) ON CONFLICT ( x ) DO UPDATE SET x = x . x WHERE x . x = 'x' ; \nCREATE UNIQUE INDEX ON ONLY x ( x ) ; \nALTER INDEX x ATTACH PARTITION x ; \nCREATE TABLE x ( x TEXT , x INT , x INT , x TEXT ) ; \nCREATE UNIQUE INDEX ON x ( x , x ) ; \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) ON CONFLICT ( x , x ) DO UPDATE SET ( x , x , x ) = ROW ( x . * ) WHERE x = ( 1 , TEXT 'x' , 1 ) AND x = ( 1 , TEXT 'x' , 1 ) ; \n$$CREATE TRIGGER x AFTER UPDATE ON x REFERENCING NEW TABLE AS inserted FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \nINSERT INTO x VALUES ( 1 , 'x' , 1 ) ON CONFLICT ( x , x ) DO UPDATE SET x = x . x + 1 ; \n##@#@#@#########$$$$SELECT FALSE <= 1 BETWEEN 1 AND 1 ; \nSELECT FALSE >= 1 BETWEEN 1 AND 1 ; \nBEGIN TRANSACTION ; \nGRANT USAGE ON SCHEMA schema_op1 TO x ; \nREVOKE USAGE ON SCHEMA schema_op1 FROM x ; \nSET ROLE regress_rol_op1 ; \n######$$$$#@##@##@#CREATE OPERATOR % ( leftarg = int8 ) ; \nCREATE TYPE type_op3 AS ENUM ( 'x' , 'x' , 'x' ) ; \n$$$$REVOKE USAGE ON TYPE type_op3 FROM x ; \n##CREATE TYPE type_op4 AS ENUM ( 'x' , 'x' , 'x' ) ; \n$$$$REVOKE USAGE ON TYPE type_op4 FROM x ; \n##CREATE TYPE type_op5 AS ENUM ( 'x' , 'x' , 'x' ) ; \n$$$$##CREATE TYPE type_op6 AS ENUM ( 'x' , 'x' , 'x' ) ; \n$$$$REVOKE USAGE ON TYPE type_op6 FROM x ; \n##CREATE SCHEMA x CREATE UNIQUE INDEX x ON x ( x ) CREATE VIEW x AS SELECT x + 1 AS a , x + 1 AS b FROM x CREATE TABLE x ( x serial , x INT UNIQUE ) ; \nSELECT x ( * ) FROM x WHERE x = ( SELECT x FROM x WHERE x = 'x' ) ; \nINSERT INTO x . abc DEFAULT VALUES ; \nSELECT * FROM x . abc ; \nSELECT * FROM x . abc_view ; \nALTER SCHEMA x RENAME TO x ; \nDROP SCHEMA test_ns_schema_renamed CASCADE ; \nCREATE TABLE x ( x int4 ) ; \nCOMMENT ON TABLE attmp_wrong IS 'x' ; \nCOMMENT ON TABLE attmp IS 'x' ; \nCOMMENT ON TABLE attmp IS NULL ; \nALTER TABLE x ADD COLUMN x float8 ; \nALTER TABLE x ADD COLUMN x float4 ; \nALTER TABLE x ADD COLUMN x int2 ; \nALTER TABLE x ADD COLUMN x polygon ; \nALTER TABLE x ADD COLUMN x CHAR ; \nALTER TABLE x ADD COLUMN x int4 ; \nALTER TABLE x ADD COLUMN x tid ; \nALTER TABLE x ADD COLUMN x xid ; \nALTER TABLE x ADD COLUMN x oidvector ; \nALTER TABLE x ADD COLUMN x BOOLEAN ; \nALTER TABLE x ADD COLUMN x point ; \nALTER TABLE x ADD COLUMN x lseg ; \nALTER TABLE x ADD COLUMN x path ; \nALTER TABLE x ADD COLUMN x box ; \nALTER TABLE x ADD COLUMN x TIMESTAMP ; \nALTER TABLE x ADD COLUMN x INTERVAL ; \nALTER TABLE x ADD COLUMN x float8 [ ] ; \nALTER TABLE x ADD COLUMN x float4 [ ] ; \nALTER TABLE x ADD COLUMN x int2 [ ] ; \nINSERT INTO x ( x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x , x ) VALUES ( 1 , 'x' , 'x' , 4.100000 , 4.100000 , 1 , 'x' , 'x' , 1 , 'x' , 'x' , 'x' , TRUE , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' ) ; \nCREATE INDEX x ON x ( x , ( x + x ) , x ) ; \nALTER INDEX x ALTER COLUMN 1 SET STATISTICS 1 ; \nALTER TABLE x RENAME TO x ; \nALTER INDEX x RENAME TO x ; \nSET ROLE regress_alter_table_user1 ; \n______ALTER INDEX IF EXISTS x RENAME TO x ; \n__CREATE VIEW x ( x ) AS SELECT x FROM x ; \nSET enable_seqscan TO off ; \nSET enable_bitmapscan TO off ; \nSELECT x FROM x WHERE x < 1 ; \nRESET enable_seqscan ; \nRESET enable_bitmapscan ; \nALTER TABLE x ADD CONSTRAINT onek_unique1_constraint UNIQUE ( x ) ; \nALTER TABLE x DROP CONSTRAINT onek_unique1_constraint_foo ; \nALTER TABLE x ADD CONSTRAINT onek_check_constraint CHECK ( x >= 1 ) ; \nALTER TABLE x RENAME CONSTRAINT onek_check_constraint TO onek_check_constraint_foo ; \nALTER TABLE x DROP CONSTRAINT onek_check_constraint_foo ; \nCREATE TABLE x ( x INT CONSTRAINT con1 CHECK ( x > 1 ) , x INT , x INT ) ; \nCREATE TABLE x ( x INT CONSTRAINT con1 CHECK ( x > 1 ) , x INT ) INHERITS ( x ) ; \nCREATE TABLE x ( x INT , CONSTRAINT chk_a CHECK ( x > 1 ) , PRIMARY KEY ( x ) ) ; \nALTER TABLE x RENAME CONSTRAINT chk_a TO chk_a_new ; \nALTER TABLE x RENAME CONSTRAINT constraint_rename_cache_pkey TO constraint_rename_pkey_new ; \nCREATE TABLE x ( LIKE x INCLUDING ALL ) ; \nCREATE TABLE x ( x INT PRIMARY KEY ) ; \nCREATE TABLE x ( x INT , x INT , UNIQUE ( x , x ) ) ; \nALTER TABLE x ADD CONSTRAINT attmpconstr FOREIGN KEY ( x ) REFERENCES x MATCH FULL ; \nALTER TABLE x ADD CONSTRAINT attmpconstr FOREIGN KEY ( x ) REFERENCES x ( x ) MATCH FULL ; \nDELETE FROM x WHERE x = 1 ; \nALTER TABLE x DROP CONSTRAINT attmpconstr ; \nALTER TABLE x ADD CONSTRAINT attmpconstr FOREIGN KEY ( x ) REFERENCES x MATCH FULL NOT VALID ; \nALTER TABLE x VALIDATE CONSTRAINT attmpconstr ; \nCREATE TABLE x ( ) INHERITS ( x ) ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) ; \nALTER TABLE x ADD CONSTRAINT b_le_20 CHECK ( x <= 1 ) NOT VALID ; \nALTER TABLE x ADD CONSTRAINT check_a_is_2 CHECK ( x = 1 ) NO INHERIT NOT VALID ; \nALTER TABLE x VALIDATE CONSTRAINT check_a_is_2 ; \nDELETE FROM ONLY x ; \nSET constraint_exclusion TO 'x' ; \nCREATE TABLE x ( x date , CHECK ( FALSE ) NO INHERIT NOT VALID ) ; \nEXPLAIN ( costs off ) SELECT * FROM x WHERE x BETWEEN 'x' AND 'x' ; \nALTER TABLE x VALIDATE CONSTRAINT nv_child_2011_d_check ; \nCREATE TEMP TABLE x ( x inet ) ; \nALTER TABLE x ADD FOREIGN KEY ( x ) REFERENCES x ; \nALTER TABLE x ADD FOREIGN KEY ( x ) REFERENCES x ( x ) ; \nCREATE TEMP TABLE x ( x int8 ) ; \nCREATE TEMP TABLE x ( x NUMERIC ) ; \nCREATE TEMP TABLE x ( x NUMERIC PRIMARY KEY ) ; \nCREATE TEMP TABLE x ( x INT , x inet , PRIMARY KEY ( x , x ) ) ; \nCREATE TEMP TABLE x ( x cidr , x TIMESTAMP ) ; \nALTER TABLE x ADD FOREIGN KEY ( x , x ) REFERENCES x ; \nALTER TABLE x ADD FOREIGN KEY ( x , x ) REFERENCES x ( x , x ) ; \nCREATE TEMP TABLE x ( x INT , x inet ) ; \nALTER TABLE x ADD CONSTRAINT fknd FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE ; \nALTER TABLE x ADD CONSTRAINT fkdd FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED ; \nALTER TABLE x ADD CONSTRAINT fkdi FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY IMMEDIATE ; \nALTER TABLE x ADD CONSTRAINT fknd2 FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION DEFERRABLE INITIALLY DEFERRED ; \nALTER TABLE x ALTER CONSTRAINT fknd2 NOT DEFERRABLE ; \nALTER TABLE x ADD CONSTRAINT fkdd2 FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE ; \nALTER TABLE x ALTER CONSTRAINT fkdd2 DEFERRABLE INITIALLY DEFERRED ; \nALTER TABLE x ADD CONSTRAINT fkdi2 FOREIGN KEY ( x ) REFERENCES x ON DELETE CASCADE ON UPDATE NO ACTION NOT DEFERRABLE ; \nALTER TABLE x ALTER CONSTRAINT fkdi2 DEFERRABLE INITIALLY IMMEDIATE ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 CHECK ( x > 1 ) ; \nCREATE TABLE x ( x INT , x INT , x INT ) ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 CHECK ( x + x < x * 1 ) ; \nINSERT INTO x ( x , x , x ) VALUES ( 1 , 1 , 1 ) ; \nCREATE TABLE x ( x INT CHECK ( x > 1 ) , x INT ) ; \nALTER TABLE x ADD CHECK ( x > x ) ; \nCREATE TABLE x ( x INT ) INHERITS ( x , x ) ; \nALTER TABLE x ADD CONSTRAINT foo CHECK ( x > 1 ) ; \nALTER TABLE x NO INHERIT x ; \nALTER TABLE x INHERIT x ; \nALTER TABLE x RENAME x TO x ; \nALTER TABLE x ADD x bool ; \nALTER TABLE x DROP x ; \nALTER TABLE x ADD x INT ; \nUPDATE x SET x = 1 WHERE x IS NULL ; \nCREATE TABLE x ( x INT ) INHERITS ( x ) ; \nALTER TABLE x ADD CONSTRAINT foo CHECK ( x > 1 ) NO INHERIT ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 UNIQUE ( x ) ; \nALTER TABLE x ALTER COLUMN x TYPE INTEGER USING 1 ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 UNIQUE ( x , x ) ; \nCREATE TABLE x ( x INT , x INT , UNIQUE ( x ) ) ; \nALTER TABLE x ADD UNIQUE ( x ) ; \nCREATE TABLE x ( x serial , x INT ) ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 PRIMARY KEY ( x ) ; \nALTER TABLE x ADD CONSTRAINT atacc_oid1 PRIMARY KEY ( x ) ; \nALTER TABLE x DROP CONSTRAINT atacc_test1 RESTRICT ; \nALTER TABLE x ADD COLUMN x INT PRIMARY KEY ; \nALTER TABLE x ADD COLUMN x INT DEFAULT 1 PRIMARY KEY ; \nALTER TABLE x ADD COLUMN x float8 NOT NULL DEFAULT x ( ) , ADD PRIMARY KEY ( x ) ; \nALTER TABLE x ADD CONSTRAINT atacc_test1 PRIMARY KEY ( x , x ) ; \nALTER TABLE x ADD CONSTRAINT atacc_test2 PRIMARY KEY ( x ) ; \nINSERT INTO x ( x , x ) VALUES ( NULL , 1 ) ; \nINSERT INTO x ( x , x ) VALUES ( 1 , NULL ) ; \nINSERT INTO x ( x , x ) VALUES ( NULL , NULL ) ; \nCREATE TABLE x ( x INT , x INT , PRIMARY KEY ( x ) ) ; \nALTER TABLE x ALTER COLUMN x DROP NOT NULL ; \nALTER TABLE x ALTER x SET NOT NULL ; \nALTER TABLE x ALTER COLUMN x SET NOT NULL ; \nCREATE TABLE x ( x INT NOT NULL ) ; \nALTER TABLE x ADD CONSTRAINT atacc1_pkey\" PRIMARY KEY ( x ) ; \nALTER TABLE x DROP CONSTRAINT atacc1_pkey\" ; \nALTER TABLE x ALTER x DROP NOT NULL ; \nINSERT INTO x VALUES ( NULL , 1 ) ; \nALTER TABLE x ADD CONSTRAINT atacc1_constr_or CHECK ( x IS NOT NULL OR x < 1 ) ; \nALTER TABLE x DROP CONSTRAINT atacc1_constr_or ; \nALTER TABLE x ADD CONSTRAINT atacc1_constr_invalid CHECK ( x IS NOT NULL ) NOT VALID ; \nALTER TABLE x DROP CONSTRAINT atacc1_constr_invalid ; \nALTER TABLE x ADD CONSTRAINT atacc1_constr_a_valid CHECK ( x IS NOT NULL ) ; \nINSERT INTO x VALUES ( 1 , NULL ) ; \nALTER TABLE x ALTER x SET NOT NULL , ALTER x SET NOT NULL ; \nALTER TABLE x ALTER x DROP NOT NULL , ALTER x DROP NOT NULL ; \nALTER TABLE x ADD CONSTRAINT atacc1_constr_b_valid CHECK ( x IS NOT NULL ) ; \nCREATE TABLE x ( x VARCHAR ( 1 ) ) INHERITS ( x ) ; \nINSERT INTO x ( x , x ) VALUES ( NULL , 'x' ) ; \nALTER TABLE ONLY x ALTER x SET NOT NULL ; \nCREATE TABLE x ( x int4 DEFAULT 1 , x TEXT DEFAULT 'x' ) ; \nALTER TABLE x ALTER COLUMN x DROP DEFAULT ; \nALTER TABLE x ALTER COLUMN x SET DEFAULT 1 ; \nALTER TABLE x ALTER COLUMN x SET DEFAULT 'x' ; \nDROP RULE def_view_test_ins ON def_view_test ; \nCREATE TABLE x ( x int4 NOT NULL , x int4 , x int4 NOT NULL , x int4 ) ; \nINSERT INTO x VALUES ( 1 , 1 , 1 , 1 ) ; \nSELECT * FROM x GROUP BY x ; \nSELECT x . * FROM x ; \nSELECT x . x FROM x ; \nSELECT x , x , x FROM x ; \nSELECT x , x , x , x FROM x ; \nINSERT INTO x VALUES ( DEFAULT , 1 , 1 , 1 ) ; \nINSERT INTO x ( x ) VALUES ( DEFAULT ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( 1 , 1 , 1 , 1 ) ; \nINSERT INTO x ( x , x , x , x ) VALUES ( DEFAULT , 1 , 1 , 1 ) ; \nALTER TABLE x SET WITHOUT OIDS ; \nANALYZE x ( a ) ; \nANALYZE x ( ........pg.dropped.1........\" ) ; \nVACUUM ANALYZE x ( a ) ; \nVACUUM ANALYZE x ( ........pg.dropped.1........\" ) ; \nCOMMENT ON COLUMN atacc1 . a IS 'x' ; \nCOMMENT ON COLUMN atacc1 . ........pg.dropped.1........\" IS 'x' ; \nALTER TABLE x ALTER x SET STATISTICS 1 ; \nALTER TABLE x ALTER x SET DEFAULT 1 ; \nALTER TABLE x ALTER x DROP DEFAULT ; \nALTER TABLE x ADD PRIMARY KEY ( x ) ; \nALTER TABLE x ADD CHECK ( x > 1 ) ; \nCREATE TABLE x ( x int4 UNIQUE ) ; \nCREATE TABLE x AS SELECT * FROM x ; \nSELECT * INTO x FROM x ; \nCREATE TABLE x ( x float8 , x NUMERIC ( 1 , 1 ) , x TEXT COLLATE C\" ) ; \nCREATE TABLE x ( x int4 , x int4 , x int4 ) ; \nCOPY x TO STDOUT ; \nCOPY x ( x ) TO STDOUT ; \nCOPY x ( x , x ) FROM STDIN ; \nALTER TABLE ONLY x DROP COLUMN x ; \nALTER TABLE x RENAME COLUMN x TO x ; \nALTER TABLE ONLY x RENAME COLUMN x TO x ; \nALTER TABLE IF EXISTS x RENAME COLUMN x TO x ; \nALTER TABLE x ADD COLUMN x INT ; \nALTER TABLE ONLY x ADD COLUMN x INT ; \nCREATE TABLE x ( x INT NOT NULL ) INHERITS ( x ) ; \nCREATE TABLE x ( ) ; \nDROP TABLE x , x CASCADE ; \nALTER TABLE x ADD x TEXT ; \nCREATE TABLE x ( x TEXT , x INT ) INHERITS ( x ) ; \nALTER TABLE x ADD COLUMN x INT CHECK ( x > 1 ) ; \nUPDATE x SET x = x + 1 , x = x ( x ) ; \nCREATE DOMAIN mytype AS TEXT ; \nCREATE TEMP TABLE x ( x TEXT , x mytype , x TEXT ) ; \nINSERT INTO x VALUES ( 'x' , 'x' , 'x' ) ; \nDROP DOMAIN mytype CASCADE ; \nSELECT x , x ( x ) FROM x GROUP BY x ; \nCREATE TABLE x ( x serial8 , x BOOLEAN , CONSTRAINT anothertab_chk CHECK ( x <= 1 ) ) ; \nINSERT INTO x ( x , x ) VALUES ( DEFAULT , TRUE ) ; \nINSERT INTO x ( x , x ) VALUES ( DEFAULT , FALSE ) ; \nALTER TABLE x ALTER COLUMN x TYPE TEXT USING CASE WHEN x IS TRUE THEN 'x' WHEN x IS FALSE THEN 'x' ELSE 'x' END ; \nCREATE TABLE x ( x INT PRIMARY KEY , x INT UNIQUE , x INT , x INT , x INT ) ; \nALTER TABLE x ADD EXCLUDE USING btree ( x WITH = ) ; \nALTER TABLE x ADD EXCLUDE USING btree ( x WITH = ) WHERE ( x IS NOT NULL ) ; \nALTER TABLE x ADD EXCLUDE USING btree ( x WITH = ) WHERE ( x > 1 ) ; \nALTER TABLE x ADD UNIQUE ( x , x ) ; \nALTER TABLE x ALTER COLUMN x TYPE BIGINT ; \nALTER TABLE x ALTER COLUMN x TYPE BIGINT , ALTER COLUMN x TYPE BIGINT , ALTER COLUMN x TYPE BIGINT ; \nALTER TABLE x ALTER x TYPE TEXT USING x || 'x' , ALTER x TYPE BIGINT USING x * 1 ; \nCREATE TABLE x ( x INT , x tab1 ) ; \nCREATE TABLE x ( x TEXT , x INT ) ; \nCREATE INDEX ON x ( x ) ; \nCOMMENT ON CONSTRAINT at_partitioned_id_name_key ON at_partitioned IS 'x' ; \nCOMMENT ON INDEX at_partitioned_id_name_key IS 'x' ; \nCOMMENT ON CONSTRAINT at_partitioned_0_id_name_key ON at_partitioned_0 IS 'x' ; \nCOMMENT ON INDEX at_partitioned_0_id_name_key IS 'x' ; \nCOMMENT ON CONSTRAINT at_partitioned_1_id_name_key ON at_partitioned_1 IS 'x' ; \nCOMMENT ON INDEX at_partitioned_1_id_name_key IS 'x' ; \nCREATE TEMP TABLE x AS SELECT x , x AS oldoid , x AS oldfilenode FROM x WHERE x LIKE 'x' ; \nCREATE TABLE x ( x FLOAT CHECK ( x > 10.200000 ) , x FLOAT ) ; \nSELECT x , x , x , x , x FROM x c , x r WHERE x LIKE 'x' AND x . x = x . x ORDER BY 1 , 1 ; \nALTER TABLE x ALTER COLUMN x TYPE NUMERIC ; \nALTER TABLE x ADD CONSTRAINT bnoinherit CHECK ( x > 1 ) NO INHERIT ; \nALTER TABLE x ADD CONSTRAINT blocal CHECK ( x < 1 ) ; \nALTER TABLE x ADD CONSTRAINT bmerged CHECK ( x > 1 ) ; \nCREATE TABLE x ( x SMALLINT ) INHERITS ( x ) ; \nCREATE TABLE x ( x int2 , x int4 , x int8 ) ; \nCREATE TABLE x ( x int4 , x int8 , x int2 ) ; \nCREATE TABLE x ( x int8 , x int2 , x int4 ) ; \nALTER TABLE x ALTER COLUMN x TYPE int4 USING ( x ( x ) ) ; \nCREATE TABLE x ( x INT REFERENCES x , x TEXT ) ; \nALTER TABLE x DROP CONSTRAINT check_fk_presence_2_id_fkey ; \nCREATE VIEW x AS SELECT * FROM x bt ; \nCREATE VIEW x AS SELECT * , x ( x ) AS j FROM x v1 ; \nCREATE OR REPLACE VIEW x AS SELECT * , 1 + 1 AS more FROM x bt ; \nEXECUTE p_ddl ; \n$$$$$$$$$$$$$$$$$$$$$$$$$$DROP FUNCTION x ( regclass , TEXT ) ; \nDROP TYPE lockmodes ; \nCREATE TYPE lockmodes AS ENUM ( 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' , 'x' ) ; \nBEGIN ; ALTER TABLE x ALTER COLUMN x SET STATISTICS 1 ; \nSELECT * FROM x ORDER BY 1 ; \nBEGIN ; ALTER TABLE x CLUSTER ON alterlock_pkey ; \nBEGIN ; ALTER TABLE x SET WITHOUT CLUSTER ; \nBEGIN ; ALTER TABLE x SET ( fillfactor = 1 ) ; \nBEGIN ; ALTER TABLE x RESET ( fillfactor ) ; \nBEGIN ; ALTER TABLE x SET ( toast . autovacuum_enabled = off ) ; \nBEGIN ; ALTER TABLE x SET ( autovacuum_enabled = off ) ; \nBEGIN ; ALTER TABLE x ALTER COLUMN x SET ( n_distinct = 1 ) ; \nBEGIN ; ALTER TABLE x SET ( autovacuum_enabled = off , fillfactor = 1 ) ; \nBEGIN ; ALTER TABLE x ALTER COLUMN x SET DEFAULT 'x' ; \nCREATE TRIGGER x BEFORE DELETE OR UPDATE ON x FOR EACH ROW EXECUTE PROCEDURE x ( 1 , 1 ) ; \nALTER TABLE x VALIDATE CONSTRAINT alterlock2nv ; \nALTER TABLE x RESET ( autovacuum_enabled ) ; \nALTER VIEW x RESET ( autovacuum_enabled ) ; \nALTER VIEW x SET ( security_barrier = off ) ; \nALTER VIEW x RESET ( security_barrier ) ; \nALTER TABLE x SET ( security_barrier = off ) ; \nALTER TABLE x RESET ( security_barrier ) ; \nSELECT x ( NULL ) ; \nALTER FUNCTION x ( TEXT ) CALLED ON NULL INPUT ; \nALTER FUNCTION x ( TEXT ) RETURNS NULL ON NULL INPUT ; \nCREATE TABLE x . t1 ( x serial PRIMARY KEY , x INT CHECK ( x > 1 ) ) ; \nCREATE VIEW x . v1 AS SELECT * FROM x . t1 ; \nCREATE TYPE alter1 . ctype AS ( f1 INT , f2 TEXT ) ; \nCREATE OPERATOR CLASS alter1 . ctype_hash_ops DEFAULT FOR TYPE alter1 . ctype USING hash AS OPERATOR 1 alter1 . = ( alter1 . ctype , alter1 . ctype ) ; \nCREATE CONVERSION alter1 . latin1_to_utf8 FOR 'x' TO 'x' FROM iso8859_1_to_utf8 ; \nCREATE TEXT SEARCH TEMPLATE alter1 . tmpl ( init = dsimple_init , lexize = dsimple_lexize ) ; \nINSERT INTO x . t1 ( x ) VALUES ( 1 ) ; \nALTER TABLE x . v1 SET SCHEMA alter2 ; \nALTER FUNCTION alter1 . plus1 ( INT ) SET SCHEMA alter2 ; \nALTER DOMAIN alter1 . posint SET SCHEMA alter2 ; \nALTER OPERATOR CLASS alter1 . ctype_hash_ops USING hash SET SCHEMA alter2 ; \nALTER OPERATOR FAMILY alter1 . ctype_hash_ops USING hash SET SCHEMA alter2 ; \nALTER OPERATOR alter1 . = ( alter1 . ctype , alter1 . ctype ) SET SCHEMA alter2 ; \nALTER FUNCTION alter1 . same ( alter1 . ctype , alter1 . ctype ) SET SCHEMA alter2 ; \nALTER CONVERSION alter1 . latin1_to_utf8 SET SCHEMA alter2 ; \nALTER TEXT SEARCH PARSER alter1 . prs SET SCHEMA alter2 ; \nALTER TEXT SEARCH CONFIGURATION alter1 . cfg SET SCHEMA alter2 ; \nALTER TEXT SEARCH TEMPLATE alter1 . tmpl SET SCHEMA alter2 ; \nALTER TEXT SEARCH DICTIONARY alter1 . dict SET SCHEMA alter2 ; \nDROP SCHEMA alter1 ; \nSELECT * FROM x . t1 ; \nSELECT * FROM x . v1 ; \nSELECT alter2 . plus1 ( 1 ) ; \nDROP SCHEMA alter2 CASCADE ; \nCREATE TYPE test_type AS ( a INT ) ; \nALTER TYPE test_type ALTER ATTRIBUTE b SET DATA TYPE INTEGER ; \nALTER TYPE test_type DROP ATTRIBUTE b ; \nALTER TYPE test_type DROP ATTRIBUTE a , ADD ATTRIBUTE d BOOLEAN ; \nALTER TYPE test_type RENAME ATTRIBUTE a TO aa ; \nALTER TYPE test_type RENAME ATTRIBUTE d TO dd ; \nDROP TYPE test_type ; \nCREATE TYPE test_type1 AS ( a INT , b TEXT ) ; \nCREATE TABLE x ( x INT , x test_type1 ) ; \nCREATE TABLE x OF test_type2 ; \nCREATE TYPE test_typex AS ( a INT , b TEXT ) ; \nCREATE TABLE x ( x INT , x test_typex CHECK ( ( x ) . a > 1 ) ) ; \nDROP TYPE test_typex ; \nCREATE TYPE test_type3 AS ( a INT ) ; \nALTER TYPE test_type3 DROP ATTRIBUTE a , ADD ATTRIBUTE b INT ; \nCREATE TYPE test_type_empty AS ( ) ; \nDROP TYPE test_type_empty ; \nCREATE TYPE tt_t0 AS ( z inet , x INT , y NUMERIC ( 1 , 1 ) ) ; \nALTER TYPE tt_t0 DROP ATTRIBUTE z ; \nALTER TABLE x OF tt_t0 ; \nCREATE TYPE tt_t1 AS ( x INT , y NUMERIC ( 1 , 1 ) ) ; \nCREATE TABLE x ( x TEXT CHECK ( x IS NOT NULL ) ) ; \nALTER TABLE ONLY x DROP CONSTRAINT test_drop_constr_parent_c_check\" ; \nALTER TABLE IF EXISTS x ADD COLUMN x INT ; \nALTER TABLE IF EXISTS x ADD CONSTRAINT xxx PRIMARY KEY ( x ) ; \nALTER TABLE IF EXISTS x ADD CHECK ( x BETWEEN 1 AND 1 ) ; \nALTER TABLE IF EXISTS x ALTER COLUMN x SET DEFAULT 1 ; \nALTER TABLE IF EXISTS x SET SCHEMA alter2 ; \nDROP TABLE x . tt8 ; \nDROP SCHEMA alter2 ; \nCREATE TABLE x ( x INT , x INT CHECK ( x > 1 ) , x INT , CONSTRAINT comment_test_pk PRIMARY KEY ( x ) ) ; \nCOMMENT ON COLUMN comment_test . id IS 'x' ; \nCOMMENT ON INDEX comment_test_index IS 'x' ; \nCOMMENT ON CONSTRAINT comment_test_positive_col_check ON comment_test IS 'x' ; \nCOMMENT ON CONSTRAINT comment_test_pk ON comment_test IS 'x' ; \nCOMMENT ON INDEX comment_test_pk IS 'x' ; \nALTER TABLE x ALTER COLUMN x SET DATA TYPE INT ; \nALTER TABLE x ALTER COLUMN x SET DATA TYPE TEXT ; \nALTER TABLE x ALTER COLUMN x SET DATA TYPE BIGINT ; \nCREATE TABLE x ( x TEXT CONSTRAINT comment_test_child_fk REFERENCES x ) ; \nCOMMENT ON COLUMN comment_test_child . id IS 'x' ; \nCOMMENT ON INDEX comment_test_child_fk IS 'x' ; \nCOMMENT ON CONSTRAINT comment_test_child_fk ON comment_test_child IS 'x' ; \nSHOW allow_system_table_mods ; \nCREATE TABLE x . new_system_table ( ) ; \nCREATE TABLE x ( x serial PRIMARY KEY , x TEXT ) ; \nALTER TABLE x SET SCHEMA pg_catalog ; \nALTER TABLE x SET SCHEMA public ; \nINSERT INTO x ( x ) VALUES ( 'x' ) , ( 'x' ) ; \nUPDATE x SET x = - x ; \nDELETE FROM x WHERE x = 'x' ; \nALTER TABLE x DROP CONSTRAINT new_system_table_pkey ; \nCREATE UNLOGGED TABLE x ( x SERIAL PRIMARY KEY , x TEXT ) ; \n~~CREATE TABLE x ( x SERIAL PRIMARY KEY , x TEXT ) ; \n~ALTER TABLE x SET UNLOGGED ; \n~ALTER TABLE x ADD COLUMN x INTEGER ; \nALTER TABLE x ADD EXCLUDE USING gist ( x WITH && ) ; \nALTER TABLE x ALTER COLUMN x TYPE CHAR ( 1 ) ; \nALTER TABLE x ADD CONSTRAINT chk_a CHECK ( x > 1 ) NO INHERIT ; \nCREATE TABLE x ( LIKE x ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES IN ( 'x' ) ; \nCREATE TABLE x ( x INT NOT NULL , x CHAR ( 1 ) COLLATE C\" , CONSTRAINT check_a CHECK ( x > 1 ) ) PARTITION BY LIST ( a ) ; \nALTER TABLE x OWNER TO x ; \nSET SESSION AUTHORIZATION regress_test_me ; \nCREATE TEMP TABLE x ( x INT ) PARTITION BY LIST ( a ) ; \nCREATE TYPE mytype AS ( a INT ) ; \nCREATE TABLE x OF mytype ; \nDROP TYPE mytype CASCADE ; \nCREATE TABLE x ( LIKE x , x INT ) ; \nCREATE TABLE x ( x CHAR ( 1 ) , x INT NOT NULL ) ; \nALTER TABLE x ALTER x TYPE CHAR ( 1 ) COLLATE POSIX\" ; \nCREATE TABLE x ( x CHAR ( 1 ) COLLATE C\" , x INT NOT NULL ) ; \nALTER TABLE x ADD CONSTRAINT check_a CHECK ( x >= 1 ) ; \nCREATE TABLE x ( x INT NOT NULL , x CHAR ( 1 ) COLLATE C\" , CONSTRAINT check_a CHECK ( x > 1 ) ) ; \nCREATE TABLE x ( LIKE x INCLUDING CONSTRAINTS ) ; \nALTER TABLE x ATTACH PARTITION x DEFAULT ; \nCREATE TABLE x ( x INT , x CHAR ) PARTITION BY LIST ( a ) ; \nCREATE TABLE x ( LIKE x , CONSTRAINT check_a CHECK ( x IN ( 1 ) ) ) ; \nALTER TABLE x DETACH PARTITION x ; \nALTER TABLE x ADD CONSTRAINT check_a CHECK ( x IN ( 1 , 1 ) ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 1 , 1 ) ; \nCREATE TABLE x ( x INT NOT NULL CHECK ( x = 1 ) , x INT NOT NULL CHECK ( x >= 1 AND x <= 1 ) ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES FROM ( 1 , 1 ) TO ( 1 , 1 ) ; \nCREATE TABLE x ( x INT NOT NULL CHECK ( x = 1 ) , x INT NOT NULL CHECK ( x >= 1 AND x < 1 ) ) ; \nCREATE TABLE x ( LIKE x ) PARTITION BY LIST ( b ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 'x' ) ; \nINSERT INTO x ( x , x ) VALUES ( 1 , 'x' ) ; \nDELETE FROM x WHERE x NOT IN ( 1 ) ; \nALTER TABLE x ADD CONSTRAINT check_a CHECK ( x IS NOT NULL AND x = 1 ) ; \nALTER TABLE x DROP CONSTRAINT check_a ; \nALTER TABLE x ADD CONSTRAINT check_a CHECK ( x IN ( 1 ) ) , ALTER x SET NOT NULL ; \nCREATE TABLE x ( x INT , LIKE x , CONSTRAINT check_a CHECK ( x IS NOT NULL AND x = 1 ) ) ; \nCREATE TABLE x ( LIKE x , CONSTRAINT check_a CHECK ( x IS NOT NULL AND x = 1 ) ) PARTITION BY LIST ( b ) ; \nALTER TABLE x DROP x , DROP x , DROP x ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES IN ( 'x' , NULL ) ; \nCREATE TABLE x PARTITION OF x DEFAULT PARTITION BY LIST ( a ) ; \nCREATE TABLE x ( x INT , x TEXT ) PARTITION BY LIST ( a ) ; \nCREATE TABLE x PARTITION OF x DEFAULT PARTITION BY LIST ( b ) ; \nCREATE TABLE x PARTITION OF x ( CONSTRAINT check_1 CHECK ( x IS NOT NULL AND x = 1 ) ) FOR VALUES IN ( 'x' ) ; \nCREATE TABLE x ( x INT , x INT ) PARTITION BY HASH ( a part_test_int4_ops ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES WITH ( MODULUS 1 , REMAINDER 1 ) ; \nALTER TABLE x ATTACH PARTITION x FOR VALUES WITH ( MODULUS 1 , REMAINDER 1 ) ; \nCREATE TABLE x PARTITION OF x FOR VALUES IN ( 'x' , 'x' , 'x' ) ; \nALTER TABLE x ALTER COLUMN x TYPE TEXT ; \nALTER TABLE ONLY x ALTER x DROP NOT NULL ; \nALTER TABLE ONLY x DROP CONSTRAINT check_b ; \nALTER TABLE ONLY x ADD CONSTRAINT check_a CHECK ( x > 1 ) ; \nALTER TABLE ONLY x DROP CONSTRAINT check_a ; \nALTER TABLE x ALTER x SET NOT NULL , ADD CONSTRAINT check_a2 CHECK ( x > 1 ) ; \nALTER TABLE x DROP CONSTRAINT check_a2 ; \nALTER TABLE x ADD x INT NOT NULL ; \nALTER TABLE x ADD CONSTRAINT parted_validate_test_chka CHECK ( x > 1 ) NOT VALID ; \nALTER TABLE x VALIDATE CONSTRAINT parted_validate_test_chka ; \nALTER TABLE x ALTER COLUMN x SET ( n_distinct = 1 , n_distinct_inherited = 1 ) ; \nALTER TABLE x ALTER COLUMN x RESET ( n_distinct_inherited ) ; \nCREATE TEMP TABLE x ( x INT ) PARTITION BY list ( a ) ; \n$$CREATE TRIGGER x BEFORE INSERT ON x FOR EACH STATEMENT EXECUTE PROCEDURE x ( ) ; \n$$CREATE OPERATOR CLASS at_test_sql_partop FOR TYPE int4 USING btree AS OPERATOR 1 < ( int4 , int4 ) , OPERATOR 1 <= ( int4 , int4 ) , OPERATOR 1 = ( int4 , int4 ) , OPERATOR 1 >= ( int4 , int4 ) , OPERATOR 1 > ( int4 , int4 ) , FUNCTION 1 x ( int4 , int4 ) ; \nDROP OPERATOR CLASS at_test_sql_partop USING btree ; \nDROP FUNCTION at_test_sql_partop ; \nRESET max_stack_depth ; \nSELECT x ( x ( x ) , FALSE ) FROM ( SELECT x AS b , x * 1 AS c FROM x ( 1 , 1 ) x ) q ; \nSELECT x ( x ( x ) , TRUE ) FROM ( SELECT x AS b , x * 1 AS c FROM x ( 1 , 1 ) x ) q ; \n$$$$SELECT x ( x ( x ) , FALSE ) FROM ( SELECT x || x AS b , x AS c , ARRAY [ ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) , ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) ] AS z FROM x ( 1 , 1 ) x , x ( 1 , 1 ) y ) q ; \nSELECT x ( x ( x ) , FALSE ) FROM x ( 1 , 1 ) x ; \n$$$$SELECT x ( x ) FROM ( SELECT x || x AS b , x AS c , ARRAY [ ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) , ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) ] AS z FROM x ( 1 , 1 ) x , x ( 1 , 1 ) y ) q ; \n$$$$SELECT x ( x , TRUE ) FROM ( SELECT x || x AS b , x AS c , ARRAY [ ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) , ROW ( x . * , ARRAY [ 1 , 1 , 1 ] ) ] AS z FROM x ( 1 , 1 ) x , x ( 1 , 1 ) y ) q ; \nSELECT x ( ROW ( ( SELECT x ( x ) AS d FROM x ( 1 , 1 ) x ) ) , FALSE ) ; \nSELECT x ( TIMESTAMP 'x' ) ; \nSET LOCAL TIME ZONE 10.500000 ; \nSET LOCAL TIME ZONE 1 ; \n$$$$CREATE TEMP TABLE x ( x TEXT , x json ) ; \nINSERT INTO x VALUES ( 'x' , 'x' ) , ( 'x' , 'x' ) , ( 'x' , 'x' ) ; \nSELECT * FROM x ( 'x' ) q ; \nSELECT x ( 'x' , 'x' , 'x' ) IS NULL AS expect_false ; \nSELECT x ( 'x' , 'x' , 'x' ) IS NULL AS expect_true ; \nCREATE TYPE jpop AS ( a TEXT , b INT , c TIMESTAMP ) ; \nCREATE DOMAIN js_int_not_null AS INT NOT NULL ; \nCREATE TYPE j_unordered_pair AS ( x INT , y INT ) ; \n_CREATE TYPE jsrec AS ( i INT , ia int4 , ia1 INT [ ] , ia2 INT [ ] [ ] , ia3 INT [ ] [ ] [ ] , ia1d js_int_array_1d , ia2d js_int_array_2d , t TEXT , ta TEXT [ ] , c CHAR ( 1 ) , ca CHAR ( 1 ) [ ] , ts TIMESTAMP , js json , jsb jsonb , jsa json [ ] , rec jpop , reca jpop [ ] ) ; \nCREATE TYPE jsrec_i_not_null AS ( i js_int_not_null ) ; \nSELECT x ( ROW ( 1 , 1 ) , 'x' ) ; \nCREATE TYPE jpop2 AS ( a INT , b json , c INT , d INT ) ; \nSELECT x , x ( ROW ( x , 1 ) , 'x' ) FROM ( VALUES ( 1 ) , ( 1 ) ) v ( i ) ; \nCREATE TEMP TABLE x ( x json ) ; \nDROP TYPE jsrec ; \nDROP TYPE jsrec_i_not_null ; \nDROP DOMAIN js_int_not_null ; \nDROP DOMAIN js_int_array_1d ; \nDROP DOMAIN js_int_array_2d ; \nDROP DOMAIN j_ordered_pair ; \nDROP TYPE j_unordered_pair ; \nSELECT x ( 'x' , 1 , 'x' , 1.200000 , 'x' , TRUE , 'x' , NULL , 'x' , x 'x' ) ; \nSELECT x ( 1 , 1 ) ; \nSELECT x ( NULL , 1 ) ; \nSELECT x ( x , 1 ) FROM ( SELECT 1 AS a , 1 AS b ) r ; \nSELECT x ( x 'x' , 1 ) ; \nINSERT INTO x VALUES ( 1 , 'x' , 'x' ) ; \nINSERT INTO x VALUES ( 1 , NULL , 'x' ) ; \nSELECT * FROM x ( 'x' ) AS x ( a INT , b TEXT , d TEXT ) ; \nSELECT * FROM x ( 'x' ) AS x ( a INT , b TEXT , c BOOLEAN ) ; \nSELECT * FROM x ( 'x' ) AS x ( a INT , b json , c BOOLEAN ) ; \n_SELECT * FROM x ( 'x' ) AS x ( ia int4 ) ; \n_____SELECT * FROM x ( 'x' ) AS x ( ia2 INT [ ] [ ] ) ; \nSELECT * FROM x ( 'x' ) AS x ( ia2 int4 [ ] [ ] ) ; \nCREATE TABLE x ( x INT , x macaddr8 ) ; \nCREATE INDEX x ON x USING btree ( x ) ; \nCREATE INDEX x ON x USING hash ( x ) ; \nSELECT x , x , x ( x ) FROM x ORDER BY 1 , 1 ; \nSELECT x & 'x' FROM x ; \nSELECT x | 'x' FROM x ; \nGRANT ALL ON SCHEMA temp_func_test TO x ; \nSET search_path TO temp_func_test , public ; \nCREATE FUNCTION x ( TEXT , date ) RETURNS bool LANGUAGE 'x' AS 'x' ; \nCREATE FUNCTION x ( TEXT [ ] ) RETURNS INT LANGUAGE 'x' AS 'x' ; \nCREATE FUNCTION x ( ) RETURNS bool LANGUAGE 'x' AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' IMMUTABLE AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' STABLE AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' VOLATILE AS 'x' ; \nALTER FUNCTION x ( INT ) VOLATILE ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' SECURITY DEFINER AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' SECURITY INVOKER AS 'x' ; \nALTER FUNCTION x ( INT ) SECURITY DEFINER ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' LEAKPROOF AS 'x' ; \nALTER FUNCTION x ( INT ) LEAKPROOF ; \nALTER FUNCTION x ( INT ) OWNER TO x ; \nSET SESSION AUTHORIZATION regress_unpriv_user ; \nALTER FUNCTION x ( INT ) NOT LEAKPROOF ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' CALLED ON NULL INPUT AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' RETURNS NULL ON NULL INPUT AS 'x' ; \nCREATE FUNCTION x ( INT ) RETURNS bool LANGUAGE 'x' STRICT AS 'x' ; \nALTER FUNCTION x ( INT ) CALLED ON NULL INPUT ; \nDROP FUNCTION x ( INT , INT , TEXT ) , x ( INT ) , x ( INT ) ; \nCREATE FUNCTION x ( BIGINT ) RETURNS bool LANGUAGE 'x' IMMUTABLE AS 'x' ; \nDROP FUNCTION functest_b_1 ; \nDROP FUNCTION x ( a INT ) ; \nSELECT * FROM x ( 1 ) ; \nDROP SCHEMA temp_func_test CASCADE ; \nSELECT x ( x ) AS avg_1 FROM x ; \nSELECT x ( x ) AS avg_32 FROM x WHERE x < 1 ; \nSELECT x ( x ) AS avg_3_4 FROM ONLY x ; \nSELECT x ( x ) AS sum_1500 FROM x ; \nSELECT x ( x ) AS sum_198 FROM x ; \nSELECT x ( x ) AS avg_431_773 FROM x ; \nSELECT x ( x ) AS avg_6_8 FROM ONLY x ; \nSELECT x ( x ) AS max_3 FROM x ; \nSELECT x ( x ) AS max_100 FROM x ; \nSELECT x ( x . x ) AS max_324_78 FROM x ; \nSELECT x ( x . x ) AS max_3_7 FROM x ; \nSELECT x ( 1.000000 ) , x ( 2.000000 ) ; \nSELECT x ( x , x ) FROM x ; \nSELECT x ( x , x ) , x ( x , x ) FROM x ; \nCREATE TABLE x ( x float8 , x float8 ) ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ; \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 , 1 , 1 ) ; \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x ; \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 , 1 ) ; \nSELECT x ( * ) , x ( x ) , x ( x , x ) , x ( x ) , x ( x , x ) , x ( x , x ) FROM x WHERE x IN ( 1 , 1 ) ; \nSELECT x ( x ) AS cnt_1000 FROM x ; \nSELECT x ( DISTINCT x ) AS cnt_4 FROM x ; \nSELECT x ( * ) AS cnt_1000 FROM x ; \nSELECT ( SELECT x ( ( SELECT x . x FROM x i WHERE x . x = x . x ) ) ) FROM x o ; \nSELECT ARRAY ( SELECT x ( x + x ) s FROM x ( 1 , 1 ) y GROUP BY x ORDER BY x ) FROM x ( 1 , 1 ) x ; \nCREATE TEMPORARY TABLE x ( x INT2 , x INT4 , x INT8 , x INTEGER , x INT2 , x BIT ( 1 ) ) ; \nSELECT x ( x ) AS ?\" , x ( x ) AS ?\" FROM x ; \nCOPY x FROM STDIN NULL 'x' ; \nCREATE TEMPORARY TABLE x ( x BOOL , x BOOL , x BOOL , x BOOL ) ; \nSELECT x ( x ) AS n\" , x ( x ) AS n\" FROM x ; \nSELECT x ( x ) AS f\" , x ( x ) AS t\" , x ( x ) AS f\" , x ( x ) AS n\" , x ( NOT x ) AS f\" , x ( NOT x ) AS t\" FROM x ; \nSELECT x ( x ) AS t\" , x ( x ) AS t\" , x ( x ) AS f\" , x ( x ) AS n\" , x ( NOT x ) AS f\" , x ( NOT x ) AS t\" FROM x ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x WHERE x < 1 ; \nSELECT x ( x ) FROM x WHERE x < 1 ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x WHERE x > 1 ; \nSELECT x ( x ) FROM x WHERE x > 1 ; \nSET LOCAL max_parallel_workers_per_gather = 1 ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x WHERE x = 1 ; \nSELECT x ( x ) FROM x WHERE x = 1 ; \nEXPLAIN ( costs off ) SELECT x , ( SELECT x ( x ) FROM x WHERE x > x ) AS gt FROM x ; \nSELECT x , ( SELECT x ( x ) FROM x WHERE x > x ) AS gt FROM x ; \nEXPLAIN ( costs off ) SELECT DISTINCT x ( x ) FROM x ; \nSELECT DISTINCT x ( x ) FROM x ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x ORDER BY 1 ; \nSELECT x ( x ) FROM x ORDER BY 1 ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x ORDER BY x ( x ) ; \nSELECT x ( x ) FROM x ORDER BY x ( x ) ; \nEXPLAIN ( costs off ) SELECT x ( x ) FROM x ORDER BY x ( x ) + 1 ; \nSELECT x ( x ) FROM x ORDER BY x ( x ) + 1 ; \nEXPLAIN ( costs off ) SELECT x ( x ) , x ( 1 , 1 ) AS g FROM x ORDER BY x DESC ; \nSELECT x ( x ) , x ( 1 , 1 ) AS g FROM x ORDER BY x DESC ; \nEXPLAIN ( costs off ) SELECT x ( 1 ) FROM x ; \nSELECT x ( 1 ) FROM x ; \nCREATE INDEX x ON x ( x DESC ) ; \nCREATE INDEX x ON x ( x ) WHERE x IS NOT NULL ; \nEXPLAIN ( costs off ) SELECT x ( x ) , x ( x ) FROM x ; \nEXPLAIN ( costs off ) SELECT DISTINCT x ( x ) , x ( x ) FROM x ; \nSELECT DISTINCT x ( x ) , x ( x ) FROM x ; \nSELECT x ( x ( x ) ) FROM x ; \nSELECT ( SELECT x ( x ( x ) ) FROM x ) FROM x ; \nCREATE TEMP TABLE x ( x INT , x INT , x INT , x INT , PRIMARY KEY ( x , x ) ) ; \nCREATE TEMP TABLE x ( x INT , x INT , x INT , PRIMARY KEY ( x , x ) ) ; \nCREATE TEMP TABLE x ( x INT , x INT , x INT , PRIMARY KEY ( x , x ) DEFERRABLE ) ; \nEXPLAIN ( costs off ) SELECT * FROM x GROUP BY x , x , x , x ; \nEXPLAIN ( costs off ) SELECT x , x FROM x GROUP BY x , x , x ; \nEXPLAIN ( costs off ) SELECT * FROM x GROUP BY x , x , x ; \nEXPLAIN ( costs off ) SELECT * FROM ONLY x GROUP BY x , x , x , x ; \nCREATE TEMP TABLE x ( x INT , x INT , x INT , x INT , PRIMARY KEY ( x , x ) ) PARTITION BY list ( a ) ; \nCREATE TEMP TABLE x PARTITION OF x FOR VALUES IN ( 1 ) ; \nSELECT x ( x ORDER BY x ) FROM ( VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ) v ( a , b ) ; \nSELECT x ( x ORDER BY x DESC ) FROM ( VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ) v ( a , b ) ; \nSELECT x ( DISTINCT x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) , ( 1 ) ) v ( a ) ; \nSELECT x ( DISTINCT x ORDER BY x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) , ( 1 ) ) v ( a ) ; \nSELECT x ( DISTINCT x ORDER BY x DESC ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) , ( 1 ) ) v ( a ) ; \nSELECT x ( DISTINCT x ORDER BY x DESC NULLS LAST ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( NULL ) , ( 1 ) ) v ( a ) ; \nSELECT x ( x , x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) ; \nSELECT x ( DISTINCT x , x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( DISTINCT x , x , x ORDER BY x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \n~~SELECT x ( DISTINCT x , x , x ORDER BY x USING < , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \n~~SELECT x ( DISTINCT x , x , x ORDER BY x USING < ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \n~~SELECT x ( DISTINCT x , x , x ORDER BY x , x USING < , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nCREATE VIEW x AS SELECT x ( x , x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) ; \nCREATE OR REPLACE VIEW x AS SELECT x ( DISTINCT x , x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nCREATE OR REPLACE VIEW x AS SELECT x ( DISTINCT x , x , x ORDER BY x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nCREATE OR REPLACE VIEW x AS SELECT x ( x , x , x ORDER BY x + 1 ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) ; \nCREATE OR REPLACE VIEW x AS SELECT x ( x , x , x ORDER BY x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) ; \n~~CREATE OR REPLACE VIEW x AS SELECT x ( x , x , x ORDER BY x USING < ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) ; \n~~CREATE OR REPLACE VIEW x AS SELECT x ( DISTINCT x , x , x ORDER BY x , x USING < , x ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( DISTINCT x , x , x ORDER BY x ) FROM ( VALUES ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( DISTINCT x , x , x ORDER BY x , x + 1 ) FROM ( VALUES ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( DISTINCT x , x , x ORDER BY x , x , x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( DISTINCT x , x , x ORDER BY x , x ) FROM ( VALUES ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( x , 'x' ) FROM ( VALUES ( 'x' ) , ( 'x' ) , ( 'x' ) ) g ( a ) ; \nSELECT x ( x , 'x' ) FROM ( VALUES ( 'x' ) , ( NULL ) , ( 'x' ) , ( 'x' ) ) g ( a ) ; \nSELECT x ( x , 'x' ) FROM ( VALUES ( NULL ) , ( NULL ) , ( 'x' ) , ( 'x' ) ) g ( a ) ; \nSELECT x ( x , 'x' ) FROM ( VALUES ( NULL ) , ( NULL ) ) g ( a ) ; \nSELECT x ( x , 'x' ) FROM x ; \nINSERT INTO x VALUES ( x ( 'x' , 'x' ) ) ; \nSELECT x ( x , NULL ) FROM x ; \nSELECT x ( x , x ( 'x' , 'x' ) ) FROM x ; \nSELECT x ( x ) FILTER ( WHERE x > 1 ) FROM x ; \nSELECT x ( 1 / x ) FILTER ( WHERE x > 1 ) FROM x ; \nSELECT x ( x COLLATE C\" ) FILTER ( WHERE ( x COLLATE POSIX\" ) > 'x' ) FROM ( VALUES ( 'x' , 'x' ) ) AS v ( foo , bar ) ; \n~~SELECT x ( DISTINCT x , x , x ORDER BY x , x USING < , x ) FILTER ( WHERE x > 1 ) FROM ( VALUES ( 1 , 1 , 'x' ) , ( 1 , NULL , NULL ) , ( 1 , 1 , 'x' ) , ( 1 , 1 , 'x' ) ) v ( a , b , c ) , x ( 1 , 1 ) i ; \nSELECT x ( 0.500000 ) WITHIN GROUP ( ORDER BY x ) FROM x ; \nSELECT x ( 0.500000 ) WITHIN GROUP ( ORDER BY x ) , x ( x ) FROM x ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ) v ( x ) ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ) v ( x ) ; \nSELECT x ( ARRAY [ 1 , 0.100000 , 0.250000 , 0.500000 , 0.750000 , 0.900000 , 1 ] ) WITHIN GROUP ( ORDER BY x ) FROM x ; \nSELECT x ( ARRAY [ 1 , 0.250000 , 0.500000 , 0.750000 , 1 ] ) WITHIN GROUP ( ORDER BY x ) FROM x ; \nSELECT x ( ARRAY [ [ NULL , 1 , 0.500000 ] , [ 0.750000 , 0.250000 , NULL ] ] ) WITHIN GROUP ( ORDER BY x ) FROM x ; \nSELECT x ( ARRAY [ 1 , 1 , 0.250000 , 0.750000 , 0.500000 , 1 , 0.300000 , 0.320000 , 0.350000 , 0.380000 , 0.400000 ] ) WITHIN GROUP ( ORDER BY x ) FROM x ( 1 , 1 ) x ; \nSELECT x ( x ( 1 ) WITHIN GROUP ( ORDER BY x COLLATE POSIX\" ) ) FROM ( VALUES ( 'x' ) , ( 'x' ) ) v ( x ) ; \nSELECT x ( x ) WITHIN GROUP ( ORDER BY x ) FROM x ( 1 , 1 ) x ; \nSELECT ARRAY ( SELECT x ( x ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 0.300000 ) , ( 0.700000 ) ) v ( a ) GROUP BY x ) FROM x ( 1 , 1 ) g ( x ) ; \nSELECT x ( x ( x ) ) WITHIN GROUP ( ORDER BY x ) FROM x ( 1 , 1 ) x ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 'x' ) , ( 'x' ) ) v ( x ) ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x , x ) FROM x ; \nSELECT x ( 'x' ) WITHIN GROUP ( ORDER BY x ) FROM x ( 1 , 1 ) x ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x ) FROM x ( 1 , 1 ) x ; \nSELECT x ( VARIADIC ARRAY [ x , x ] ) FROM x ; \nBEGIN WORK ; \nCREATE TYPE avg_state AS ( total BIGINT , count BIGINT ) ; \n$$$$$$$$$$$$SELECT x ( x ) , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) ) t ( one ) ; \nSELECT x ( DISTINCT x ) , x ( DISTINCT x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) ) t ( one ) ; \nSELECT x ( DISTINCT x ) , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) ) t ( one ) ; \nSELECT x ( x ) FILTER ( WHERE x > 1 ) , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) ) t ( one ) ; \nSELECT x ( x ) , x ( x ) FROM ( VALUES ( 1 , 1 ) , ( 1 , 1 ) ) t ( one , two ) ; \nSELECT x ( 1 ) WITHIN GROUP ( ORDER BY x ) , x ( 1 ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ) t ( a ) ; \n$$$$$$$$SELECT x ( x ) , x ( x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ) t ( one ) ; \n$$BEGIN ISOLATION LEVEL REPEATABLE READ ; \n$$ALTER TABLE x SET ( parallel_workers = 1 ) ; \nSET LOCAL parallel_setup_cost = 1 ; \nEXPLAIN ( COSTS OFF ) SELECT x ( x ) FROM x ; \nSET parallel_setup_cost = 1 ; \nSET parallel_tuple_cost = 1 ; \nSET min_parallel_table_scan_size = 1 ; \nSET max_parallel_workers_per_gather = 1 ; \nSET enable_indexonlyscan = off ; \nSELECT x ( x ) WITHIN GROUP ( ORDER BY x ) FROM ( VALUES ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) , ( 1 ) ) v ( x ) GROUP BY ( x ) ORDER BY 1 ; \nSELECT x ( x ORDER BY x ) FROM ( VALUES ( 1 , NULL ) ) AS d ( x , y ) ; \nSELECT x ( x ORDER BY x ) FROM ( VALUES ( 1 , 1 ) ) AS d ( x , y ) ; \nSELECT x || 'x' , CASE x || 'x' WHEN 'x' THEN 1 ELSE 1 END , x ( * ) FROM x ( ARRAY [ 'x' , 'x' ] ) u ( v ) GROUP BY x || 'x' ORDER BY 1 ; \nSELECT x || 'x' , CASE WHEN x || 'x' = 'x' THEN 1 ELSE 1 END , x ( * ) FROM x ( ARRAY [ 'x' , 'x' ] ) u ( v ) GROUP BY x || 'x' ORDER BY 1 ; \nEXPLAIN ( costs off ) SELECT 1 FROM x WHERE ( x , x ) IN ( SELECT x , x FROM x ) ; \n~~~~~~~~~~~~~~~~~~~~~~~~~CREATE TABLE x ( x SERIAL PRIMARY KEY , x INT , x TEXT ) ; \nINSERT INTO x ( x , x ) VALUES ( 1 , x ( 'x' , 1 ) ) ; \nDELETE FROM x AS x WHERE x . x > 1 ; \nDELETE FROM x x WHERE x . x > 1 ; \nDELETE FROM x WHERE x > 1 ; \nCREATE TABLE x ( x date ) ; \nSELECT x AS Fifteen\" FROM x ; \nSELECT x AS Nine\" FROM x WHERE x < 'x' ; \nSELECT x AS Three\" FROM x WHERE x BETWEEN 'x' AND 'x' ; \nSELECT x 'x' ; \nSET datestyle TO mdy ; \nSELECT x - x 'x' AS Days From 2K\" FROM x ; \nSELECT x - x 'x' AS Days From Epoch\" FROM x ; \nSELECT x 'x' - x 'x' AS One day\" ; \nSELECT x 'x' - x 'x' AS Two days\" ; \nSELECT x ( 1 , 1 , 1 ) ; \nSELECT x ( 1 , 1 , 0.000000 ) ; \nSELECT x ( 1 , 1 , 100.099998 ) ; \nSELECT x ( 1 , 1 , 2.100000 ) ; \nCREATE TABLE x ( x INT , x INT , x CHAR ( 1 ) , x CHAR ) ; \nINSERT INTO x VALUES ( 1 , 1 , 'x' , 'x' ) ; \nSELECT x , x ( * ) FROM x GROUP BY x . x ORDER BY x ; \nSELECT x ( * ) FROM x GROUP BY x . x ORDER BY x ; \nSELECT x ( * ) FROM x GROUP BY x ORDER BY x ; \nSELECT x . x , x ( * ) FROM x GROUP BY x ORDER BY x ; \nSELECT x FROM x ORDER BY x ; \nSELECT x ( * ) FROM x GROUP BY x ORDER BY x DESC ; \nSELECT x ( * ) FROM x ORDER BY 1 DESC ; \nSELECT x , x ( * ) FROM x GROUP BY 1 ORDER BY 1 ; \nSELECT x , x ( * ) FROM x GROUP BY 1 ; \nSELECT x ( * ) FROM x x , x y WHERE x . x = x . x GROUP BY x ORDER BY x ; \nSELECT x , x FROM x ORDER BY x ; \nSELECT x / 1 , x / 1 FROM x ORDER BY x / 1 ; \nSELECT x / 1 , x / 1 FROM x GROUP BY x / 1 ORDER BY x / 1 ; \nSELECT x . x , x ( * ) FROM x x , x y WHERE x . x = x . x GROUP BY x . x ORDER BY x . x ; \nSELECT x ( * ) FROM x x , x y WHERE x . x = x . x GROUP BY x . x ORDER BY x . x ; \nSELECT x ( x ) FROM x GROUP BY x ORDER BY x ; \nSELECT x ( x ) FROM x GROUP BY x / 1 ORDER BY x / 1 ; \nSELECT x ( x . x ) , x ( x ) FROM x GROUP BY x ( x ) ORDER BY x ( x ) ; \nSELECT x FROM x ORDER BY x ( x ) ; \nSELECT x ( x ) FROM x GROUP BY ( x + 1 ) / 1 ORDER BY ( x + 1 ) / 1 DESC ; \nSELECT x ( x . x ) FROM x x , x y WHERE x . x = x . x GROUP BY x / 1 ORDER BY x / 1 ; \nSELECT x . x / 1 , x ( x . x ) FROM x x , x y WHERE x . x = x . x GROUP BY x . x / 1 ORDER BY x . x / 1 ; \nSELECT x ( x ) FROM x x , x y WHERE x . x = x . x GROUP BY x . x / 1 ; \nCREATE TABLE x ( x INTEGER , x INTEGER , x TEXT ) ; \nCREATE TABLE x ( x INTEGER , x INTEGER ) ; \nINSERT INTO x VALUES ( NULL , NULL , 'x' ) ; \nINSERT INTO x VALUES ( NULL , 1 , 'x' ) ; \nINSERT INTO x VALUES ( NULL , NULL ) ; \nCREATE TEMP TABLE x ( ) ; \nSELECT 'x' AS xxx\" , * FROM x AS tx ; \nSELECT 'x' AS xxx\" , * FROM x tx ; \nSELECT 'x' AS xxx\" , * FROM x AS t1 ( a , b , c ) ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) , x t2 ( d , e ) ; \nSELECT 'x' AS xxx\" , x . x , x . x FROM x t1 ( a , b , c ) , x t2 ( d , e ) WHERE x . x = x . x ; \nSELECT 'x' AS xxx\" , * FROM x CROSS JOIN x ; \nSELECT 'x' AS xxx\" , x , x , x FROM x CROSS JOIN x ; \nSELECT 'x' AS xxx\" , x . x , x , x FROM x t1 CROSS JOIN x t2 ; \nSELECT 'x' AS xxx\" , x , x , x FROM ( x CROSS JOIN x ) AS tx ( ii , jj , tt , ii2 , kk ) ; \nSELECT 'x' AS xxx\" , x . x , x . x , x . x FROM ( x t1 ( a , b , c ) CROSS JOIN x t2 ( d , e ) ) AS tx ( ii , jj , tt , ii2 , kk ) ; \nSELECT 'x' AS xxx\" , * FROM x CROSS JOIN x a CROSS JOIN x b ; \nSELECT 'x' AS xxx\" , * FROM x INNER JOIN x USING ( i ) ; \nSELECT 'x' AS xxx\" , * FROM x JOIN x USING ( i ) ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) JOIN x t2 ( a , d ) USING ( a ) ORDER BY x , x ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) JOIN x t2 ( a , b ) USING ( b ) ORDER BY x , x . x ; \nSELECT 'x' AS xxx\" , * FROM x NATURAL JOIN x ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) NATURAL JOIN x t2 ( a , d ) ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b , c ) NATURAL JOIN x t2 ( d , a ) ; \nSELECT 'x' AS xxx\" , * FROM x t1 ( a , b ) NATURAL JOIN x t2 ( a ) ; \nSELECT 'x' AS xxx\" , * FROM x JOIN x ON ( x . x = x . x ) ; \nSELECT 'x' AS xxx\" , * FROM x JOIN x ON ( x . x <= x . x ) ; \nSELECT 'x' AS xxx\" , * FROM x LEFT OUTER JOIN x USING ( i ) ORDER BY x , x , x ; \nSELECT 'x' AS xxx\" , * FROM x LEFT JOIN x USING ( i ) ORDER BY x , x , x ; \nSELECT 'x' AS xxx\" , * FROM x RIGHT OUTER JOIN x USING ( i ) ; \nSELECT 'x' AS xxx\" , * FROM x RIGHT JOIN x USING ( i ) ; \nSELECT 'x' AS xxx\" , * FROM x FULL OUTER JOIN x USING ( i ) ORDER BY x , x , x ; \nSELECT 'x' AS xxx\" , * FROM x FULL JOIN x USING ( i ) ORDER BY x , x , x ; \nSELECT 'x' AS xxx\" , * FROM x LEFT JOIN x USING ( i ) WHERE ( x = 1 ) ; \nCREATE TEMP TABLE x ( x INT , x INT ) ; \nSELECT * FROM x LEFT JOIN x ON ( x = x AND x IS NOT NULL ) ; \nSELECT * FROM ( x LEFT JOIN x ON ( x = x ) ) LEFT JOIN x xx ( xx1 , xx2 ) ON ( x = x ) ; \nSELECT * FROM ( x LEFT JOIN x ON ( x = x ) ) LEFT JOIN x xx ( xx1 , xx2 ) ON ( x = x AND x IS NOT NULL ) ; \nSELECT * FROM ( x LEFT JOIN x ON ( x = x ) ) LEFT JOIN x xx ( xx1 , xx2 ) ON ( x = x ) WHERE ( x IS NOT NULL ) ; \nSELECT x ( * ) FROM x a WHERE x IN ( SELECT x FROM x b JOIN x c USING ( unique1 ) WHERE x . x = 1 ) ; \nSELECT x ( * ) FROM x x WHERE x . x IN ( SELECT x . x FROM x a , x b WHERE x . x = x . x ) AND x . x = 1 AND x . x IN ( SELECT x . x FROM x aa , x bb WHERE x . x = x . x ) ; \nSET geqo = ON ; \nSET geqo_threshold = 1 ; \nEXPLAIN ( costs off ) SELECT x , x , x , x FROM x RIGHT JOIN x ON x = x WHERE x < x AND x IS NULL ; \nSELECT x , x , x , x FROM x RIGHT JOIN x ON x = x WHERE x < x AND x IS NULL ; \nEXPLAIN ( costs off ) SELECT * FROM x FULL JOIN ( SELECT * FROM x ORDER BY x . x DESC , x . x ASC ) j2_tbl ON x . x = x . x AND x . x = x . x ; \nSELECT * FROM x FULL JOIN ( SELECT * FROM x ORDER BY x . x DESC , x . x ASC ) j2_tbl ON x . x = x . x AND x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x ( * ) FROM ( SELECT * FROM x x ORDER BY x . x , x . x , x . x ) x LEFT JOIN ( SELECT * FROM x y ORDER BY x . x ) y ON x . x = x . x AND x . x = x . x AND x . x = x . x ; \nSELECT x ( * ) FROM ( SELECT * FROM x x ORDER BY x . x , x . x , x . x ) x LEFT JOIN ( SELECT * FROM x y ORDER BY x . x ) y ON x . x = x . x AND x . x = x . x AND x . x = x . x ; \nDELETE FROM x USING x table1 WHERE x . x = x . x ; \nDELETE FROM x USING x JOIN x USING ( a ) WHERE x . x > x . x ; \nDELETE FROM x USING x t3_other WHERE x . x = x . x AND x . x = x . x ; \nSELECT * FROM x LEFT JOIN x ON ( x . x = x . x ) ; \nSELECT x . x FROM x JOIN x ON ( x . x = x . x ) ; \nCREATE TEMP TABLE x ( x int4 , x int4 ) ; \nSET enable_hashjoin TO off ; \nSET enable_nestloop TO off ; \nSELECT x . * , x . * FROM x LEFT JOIN x ON x . x = x . x ; \nSELECT x . * , x . * FROM x RIGHT JOIN x ON x . x = x . x ; \nRESET enable_hashjoin ; \nRESET enable_nestloop ; \nSET work_mem TO 'x' ; \nSET enable_mergejoin TO off ; \nEXPLAIN ( costs off ) SELECT x ( * ) FROM x a , x b WHERE x . x = x . x AND ( x . x % 1 ) < 1 ; \nSELECT x ( * ) FROM x a , x b WHERE x . x = x . x AND ( x . x % 1 ) < 1 ; \nRESET work_mem ; \nRESET enable_mergejoin ; \nINSERT INTO x SELECT x , x ( 'x' , 1 ) FROM x ( 1 , 1 ) x ; \nINSERT INTO x VALUES ( 1 ) , ( 1 ) , ( 1 ) ; \nCREATE TEMP TABLE x ( x INT , x INT , x INT ) ; \nSELECT * FROM x , x WHERE x . x = x . x AND x . x = x . x - x . x ; \nSELECT * FROM x LEFT JOIN x ON ( x = x ) LEFT JOIN x ON ( x = x ) WHERE x = 1 ; \n$PREPARE foo ( bool ) AS SELECT x ( * ) FROM x a LEFT JOIN x b ON ( x . x = x . x AND EXISTS ( SELECT 1 FROM x c WHERE x . x = x . x AND 1 ) ) ; \nEXECUTE foo ( TRUE ) ; \nEXECUTE foo ( FALSE ) ; \nSET enable_mergejoin = 1 ; \nSET enable_hashjoin = 1 ; \nSET enable_nestloop = 1 ; \nCREATE TEMP TABLE x ( x INTEGER ) ; \nCREATE TEMP TABLE x ( x INTEGER , x INTEGER ) ; \nSELECT * FROM x LEFT JOIN x ON x = x AND x = x AND x = x ; \nCREATE TYPE mycomptype AS ( id INT , v BIGINT ) ; \nCREATE TEMP TABLE x ( x mycomptype ) ; \nEXPLAIN ( costs off ) SELECT x . x , x . x FROM x a , x b WHERE x . x = x . x ; \nSELECT x . x , x ( x . * ) FROM x t1 LEFT JOIN x t2 ON ( x . x = x . x ) GROUP BY x . x ORDER BY 1 ; \nSELECT x . x , x ( x . * ) FROM x t1 LEFT JOIN ( SELECT * FROM x ) t2 ON ( x . x = x . x ) GROUP BY x . x ORDER BY 1 ; \nSELECT x . x , x ( x . * ) FROM x t1 LEFT JOIN ( SELECT * FROM x OFFSET 1 ) t2 ON ( x . x = x . x ) GROUP BY x . x ORDER BY 1 ; \nSELECT x . x , x ( x . * ) FROM x t1 LEFT JOIN ( SELECT x , CASE WHEN x = 1 THEN 1 ELSE x END AS q2 FROM x ) t2 ON ( x . x = x . x ) GROUP BY x . x ORDER BY 1 ; \nCREATE TEMP TABLE x ( x CHAR NOT NULL , CONSTRAINT a_pk PRIMARY KEY ( x ) ) ; \nCREATE TEMP TABLE x ( x CHAR NOT NULL , x INTEGER NOT NULL , CONSTRAINT b_pk PRIMARY KEY ( x , x ) ) ; \nINSERT INTO x ( x , x ) VALUES ( 'x' , 1 ) ; \nEXPLAIN ( COSTS OFF ) SELECT x , x FROM ( SELECT COALESCE ( x , 1 ) AS qq FROM x a ) AS ss1 FULL OUTER JOIN ( SELECT COALESCE ( x , 1 ) AS qq FROM x b ) AS ss2 USING ( qq ) INNER JOIN x c ON x = x ; \nSELECT x , x FROM ( SELECT COALESCE ( x , 1 ) AS qq FROM x a ) AS ss1 FULL OUTER JOIN ( SELECT COALESCE ( x , 1 ) AS qq FROM x b ) AS ss2 USING ( qq ) INNER JOIN x c ON x = x ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY , x BOOLEAN , x BOOLEAN ) ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY , x INT , x BOOLEAN , x BOOLEAN , FOREIGN KEY ( x ) REFERENCES x ( x ) ) ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY , x INT , x BOOLEAN , FOREIGN KEY ( x ) REFERENCES x ( x ) ) ; \nINSERT INTO x VALUES ( 1 , TRUE , TRUE ) ; \nINSERT INTO x VALUES ( 1 , TRUE , FALSE ) ; \nINSERT INTO x VALUES ( 1 , FALSE , FALSE ) ; \nINSERT INTO x VALUES ( 1 , 1 , TRUE , TRUE ) ; \nINSERT INTO x VALUES ( 1 , 1 , TRUE , FALSE ) ; \nINSERT INTO x VALUES ( 1 , 1 , FALSE , FALSE ) ; \nINSERT INTO x VALUES ( 1 , 1 , TRUE ) ; \nINSERT INTO x VALUES ( 1 , 1 , FALSE ) ; \nSELECT * FROM x a FULL JOIN x b ON TRUE ; \nSELECT * FROM x a FULL JOIN x b ON FALSE ; \nCREATE TEMP TABLE x AS SELECT 1 AS q1 ; \nCREATE TEMP TABLE x AS SELECT 1 AS q2 ; \nEXPLAIN ( costs off ) SELECT x . x , x . x , x . x , x . x FROM x t1 INNER JOIN x i1 LEFT JOIN ( SELECT x . x , x . x , 1 AS d1 FROM ( SELECT 1 , 1 FROM x ) v1 ( x1 , x2 ) LEFT JOIN ( SELECT 1 , 1 FROM x ) v2 ( y1 , y2 ) ON x . x = x . x ) subq1 ON ( x . x = x . x ) ON ( x . x = x . x ) LEFT JOIN x t2 ON ( x . x = x . x ) WHERE x . x < 1 AND x . x > x . x ; \nSELECT x . x , x . x , x . x , x . x FROM x t1 INNER JOIN x i1 LEFT JOIN ( SELECT x . x , x . x , 1 AS d1 FROM ( SELECT 1 , 1 FROM x ) v1 ( x1 , x2 ) LEFT JOIN ( SELECT 1 , 1 FROM x ) v2 ( y1 , y2 ) ON x . x = x . x ) subq1 ON ( x . x = x . x ) ON ( x . x = x . x ) LEFT JOIN x t2 ON ( x . x = x . x ) WHERE x . x < 1 AND x . x > x . x ; \nEXPLAIN ( costs off ) SELECT x . x , x . x , x . x , x . x FROM x t1 INNER JOIN x i1 LEFT JOIN ( SELECT x . x , x . x , 1 AS d1 FROM ( VALUES ( 1 , 1 ) ) v1 ( x1 , x2 ) LEFT JOIN ( VALUES ( 1 , 1 ) ) v2 ( y1 , y2 ) ON x . x = x . x ) subq1 ON ( x . x = x . x ) ON ( x . x = x . x ) LEFT JOIN x t2 ON ( x . x = x . x ) WHERE x . x < 1 AND x . x > x . x ; \nSELECT x . x , x . x , x . x , x . x FROM x t1 INNER JOIN x i1 LEFT JOIN ( SELECT x . x , x . x , 1 AS d1 FROM ( VALUES ( 1 , 1 ) ) v1 ( x1 , x2 ) LEFT JOIN ( VALUES ( 1 , 1 ) ) v2 ( y1 , y2 ) ON x . x = x . x ) subq1 ON ( x . x = x . x ) ON ( x . x = x . x ) LEFT JOIN x t2 ON ( x . x = x . x ) WHERE x . x < 1 AND x . x > x . x ; \n$$EXPLAIN ( costs off ) SELECT x FROM x , x ( 1 ) x WHERE x = x ; \nEXPLAIN ( costs off ) SELECT x FROM x , LATERAL x ( 1 ) x WHERE x = x ; \nEXPLAIN ( costs off ) SELECT x , x FROM x JOIN x ( 1 ) x ON x = x ; \nEXPLAIN ( costs off ) SELECT x , x FROM x LEFT JOIN x ( 1 ) x ON x = x ; \nEXPLAIN ( costs off ) SELECT x , x FROM x RIGHT JOIN x ( 1 ) x ON x = x ; \nEXPLAIN ( costs off ) SELECT x , x FROM x FULL JOIN x ( 1 ) x ON x = x ; \nEXPLAIN ( costs off ) SELECT x FROM x , x ( 1 ) x WHERE x = 1 ; \n$$$$SELECT * FROM x ( 1 , 1 ) ; \nDROP FUNCTION x ( BIGINT , BIGINT ) ; \nEXPLAIN ( costs off ) SELECT * FROM x a JOIN x b ON ( x . x = 1 AND x . x = 1 ) OR ( x . x = 1 AND x . x = 1 ) ; \nEXPLAIN ( costs off ) SELECT * FROM x a JOIN x b ON ( x . x = 1 AND x . x = 1 ) OR ( ( x . x = 1 OR x . x = 1 ) AND x . x = 1 ) ; \nEXPLAIN ( costs off ) SELECT x ( * ) FROM x a JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = x . x AND x . x = x . x JOIN x ON x . x = x ; \nSELECT x ( * ) FROM x a JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = x . x AND x . x = x . x JOIN x ON x . x = x ; \nEXPLAIN ( costs off ) SELECT x . x FROM x a JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = 1 AND x . x = x . x JOIN x i1 ON x . x = x RIGHT JOIN x i2 ON x . x = x . x ORDER BY 1 ; \nSELECT x . x FROM x a JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = 1 AND x . x = x . x JOIN x i1 ON x . x = x RIGHT JOIN x i2 ON x . x = x . x ORDER BY 1 ; \nEXPLAIN ( costs off ) SELECT * FROM ( VALUES ( 1 , ARRAY [ 1 , 1 ] ) , ( 1 , ARRAY [ 1 , 1 ] ) ) AS v1 ( v1x , v1ys ) LEFT JOIN ( VALUES ( 1 , 1 ) , ( 1 , 1 ) ) AS v2 ( v2x , v2y ) ON x = x JOIN x ( x ) AS u1 ( u1y ) ON x = x ; \nSELECT * FROM ( VALUES ( 1 , ARRAY [ 1 , 1 ] ) , ( 1 , ARRAY [ 1 , 1 ] ) ) AS v1 ( v1x , v1ys ) LEFT JOIN ( VALUES ( 1 , 1 ) , ( 1 , 1 ) ) AS v2 ( v2x , v2y ) ON x = x JOIN x ( x ) AS u1 ( u1y ) ON x = x ; \nEXPLAIN ( costs off ) SELECT x , x , x , x FROM x a LEFT JOIN x b ON x = x WHERE COALESCE ( x , 1 ) = x AND x = COALESCE ( x , 1 ) ; \nSELECT x , x , x , x FROM x a LEFT JOIN x b ON x = x WHERE COALESCE ( x , 1 ) = x AND x = COALESCE ( x , 1 ) ; \nEXPLAIN ( costs off ) SELECT x , x , CASE WHEN x IS NULL THEN x ELSE 1 END FROM x a LEFT JOIN x b ON x = x WHERE ( CASE WHEN x IS NULL THEN x ELSE 1 END ) = 1 ; \nSELECT x , x , CASE WHEN x IS NULL THEN x ELSE 1 END FROM x a LEFT JOIN x b ON x = x WHERE ( CASE WHEN x IS NULL THEN x ELSE 1 END ) = 1 ; \nEXPLAIN ( costs off ) SELECT x . x , x . x , x . x , COALESCE ( x . x , x . x ) FROM x a LEFT JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = COALESCE ( x . x , x . x ) WHERE x . x < 1 AND COALESCE ( x . x , x . x ) = 1 ; \nSELECT x . x , x . x , x . x , COALESCE ( x . x , x . x ) FROM x a LEFT JOIN x b ON x . x = x . x LEFT JOIN x c ON x . x = COALESCE ( x . x , x . x ) WHERE x . x < 1 AND COALESCE ( x . x , x . x ) = 1 ; \nSELECT * FROM x t1 INNER JOIN x i8 ON x . x = 1 RIGHT JOIN x t2 ON x . x = 'x' LEFT JOIN x i4 ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT * FROM ( SELECT 1 AS id ) AS xx LEFT JOIN ( x AS a1 FULL JOIN ( SELECT 1 AS id ) AS yy ON ( x . x = x . x ) ) ON ( x . x = COALESCE ( x . x ) ) ; \nSELECT * FROM ( SELECT 1 AS id ) AS xx LEFT JOIN ( x AS a1 FULL JOIN ( SELECT 1 AS id ) AS yy ON ( x . x = x . x ) ) ON ( x . x = COALESCE ( x . x ) ) ; \nEXPLAIN ( costs off ) SELECT * FROM x a LEFT JOIN x b ON x = x WHERE x = 1 ; \nEXPLAIN ( costs off ) SELECT * FROM x a FULL JOIN x b USING ( unique2 ) WHERE x = 1 ; \nSELECT x . x , x . x FROM x a LEFT JOIN x b ON x . x = COALESCE ( x . x , 1 ) WHERE COALESCE ( x . x , 1 ) > 1 ; \nCREATE TEMP TABLE x ( x INT PRIMARY KEY , x INT ) ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , NULL ) ; \nINSERT INTO x VALUES ( 1 , 1 ) , ( 1 , 1 ) , ( 1 , 1 ) ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN x ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( x LEFT JOIN x ON x . x = x . x ) ON ( x . x = x . x ) ; \nEXPLAIN ( costs off ) SELECT x FROM x WHERE x IN ( SELECT x . x FROM x LEFT JOIN x ON x . x = x . x ) ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( SELECT * FROM x GROUP BY x . x , x . x ) s ON x . x = x . x AND x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( SELECT DISTINCT * FROM x ) s ON x . x = x . x AND x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( SELECT * FROM x GROUP BY x . x , x . x ) s ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( SELECT DISTINCT * FROM x ) s ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x LEFT JOIN ( SELECT x FROM x UNION SELECT x FROM x ) s ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT x . * FROM x i8 LEFT JOIN ( SELECT x FROM x GROUP BY x ) i4 ON x . x = x . x ; \nEXPLAIN ( costs off ) SELECT 1 FROM ( SELECT x . x FROM x LEFT JOIN x ON x . x = x . x ) q , LATERAL x ( 1 , x . x ) gs ( i ) WHERE x . x = x . x ; \nCREATE TEMP TABLE x ( x INT UNIQUE , x INT ) ; \nSELECT x . * FROM x p LEFT JOIN x c ON ( x . x = x . x ) ; \nEXPLAIN ( costs off ) SELECT x . * FROM x p LEFT JOIN x c ON ( x . x = x . x ) ; \nSELECT x . * , x FROM x p LEFT JOIN ( SELECT x . * , TRUE AS linked FROM x c ) AS ss ON ( x . x = x . x ) ; \nEXPLAIN ( costs off ) SELECT x . * , x FROM x p LEFT JOIN ( SELECT x . * , TRUE AS linked FROM x c ) AS ss ON ( x . x = x . x ) ; \nSELECT x . * FROM x p LEFT JOIN x c ON ( x . x = x . x ) WHERE x . x = 1 AND x . x = 1 ; \nEXPLAIN ( costs off ) SELECT x . * FROM x p LEFT JOIN x c ON ( x . x = x . x ) WHERE x . x = 1 AND x . x = 1 ; \nSELECT x . * FROM ( x p LEFT JOIN x c ON ( x . x = x . x ) ) JOIN x x ON x . x = x . x WHERE x . x = 1 AND x . x = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/x1",
    "content": "CREATE TABLE v0 ( v2 INT , v1 INT ) ; INSERT INTO v0 ( v1 , v2 ) VALUES ( 3 , 0 ) ; SELECT * , '1995-03-15' FROM v0 WHERE v1 NOT IN ( 10 ) AND v2 NOT IN ( 3 ) ORDER BY v2 DESC ; \n"
  },
  {
    "path": "data/fuzz_root/pqsql_init_lib/x3",
    "content": "CREATE TABLE v0 ( v1 INTEGER PRIMARY KEY ) ; CREATE TABLE v2 AS SELECT NULL FROM v0 ; CREATE TABLE v3 ( v4 INTEGER PRIMARY KEY , v5 INT ) ; INSERT INTO v0 ( v1 ) VALUES ( 10 ) ,( 12 ) ; SELECT * FROM v3 AS a JOIN v0 ON NULL = 10.100000 WHERE v1 = v1 AND v1 = 1 ; \n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/cs_is",
    "content": "create v0(v1 INT, v2 INT, v3 INT NOT NULL);\ninsert into v0(v1,v3) values(10,10);\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/cs_ss",
    "content": "create table v0(v1 INT, v2 INT);\nselect v1, v2 from v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_ci_in_drop",
    "content": "create table v0(v1 int);\ncreate index v1 on v0(v1);\ninsert into v0 values(1);\nupdate v0 set v1 = 1 where v1 = 3; \nselect v1 from v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_ci_ri",
    "content": "create table v0(v1 INT, v2 INT);\ncreate index v3 on v0(v1);\nreindex table v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_cv_in_sel",
    "content": "create table v0(v1 int ,v2 int);\ncreate view v2 as select v1, v2 from v0;\ninsert into v2 values(1, 1);\nselect v1 from v2;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_cv_is",
    "content": "create table v0(v1 INT, v2 INT, v3 FLOAT, v4 INT);\ncreate view v5 AS select * from v0;\ninsert into v5(v3, v4) values(10, 'duck');\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_cv_ss",
    "content": "create table v0(v1 FLOAT);\ncreate view v2 AS select * from v0;\nselect * from v2;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_in_alter_select",
    "content": "create temp table v0(v1 int);\ninsert into v0 values (1);\nalter table v0 drop column v1;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_ins_drop",
    "content": "create table v0(v1 int);\ninsert into v0 values( 1 );\ndrop table v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_is_ss",
    "content": "create table v0(v1 INT, v2 STRING);\ninsert into table v0(v1) values(10);\nselect v1 from v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_is_up",
    "content": "create table v0(v1 INT);\ninsert into v0(v1) values (10);\nupdate v0 set v1=3;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_rn_is",
    "content": "create table v0(v1 STRING);\nalter table v0 RENAME TO v2;\ninsert into v2(v1) values(10);\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_ss_ds",
    "content": "create table v0(v1 VARCHAR(10));\nselect * from v0;\ndrop table v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_st_re",
    "content": "create table v0(v1 int, v2 int, v3 char);\nselect v1 from v0 union select v2 from v0;\nreindex table v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/ct_st_union",
    "content": "create table v0(v1 int, v2 int, v3 char);\nselect v1 from v0 union select v2 from v0;\n"
  },
  {
    "path": "data/fuzz_root/pqsql_input/trigger",
    "content": "CREATE TABLE v0 ( v1 INT , v2 INT ) ;\nCREATE FUNCTION v3 ( ) RETURN TRIGGER AS $$ BEGIN UPDATE v0 set v1=10 where v1=5 ;END $$ LANGUAGE PLPGSQL ;\nCREATE TRIGGER v5 BEFORE INSERT OF v1 ON v0 FOR EACH ROW EXECUTE PROCEDURE v3 ( ) ;\ninsert into v0(v1, v2) values (1,1);\n"
  },
  {
    "path": "data/fuzz_root/pragma",
    "content": "application_id = _empty_\napplication_id = _int_\n\nauto_vacuum = _empty_\nauto_vacuum = 0\nauto_vacuum = NONE\nauto_vacuum = 1\nauto_vacuum = FULL\nauto_vacuum = 2\nauto_vacuum = INCREMENTAL\n\nautomatic_index = _empty_\nautomatic_index = _boolean_\n\nbusy_timeout = _empty_\nbusy_timeout = _int_\n\ncache_size = _empty_\ncache_size = _int_\ncache_size = _neg_int_\n\ncache_spill = _empty_\ncache_spill = _boolean_\ncache_spill = _int_\n\ncase_sensitive_like = _boolean_\n\ncell_size_check = _empty_\ncell_size_check = _boolean_\n\ncheckpoint_fullfsync = _empty_\ncheckpoint_fullfsync = _boolean_\n\ncollation_list = _empty_\n\ncompile_options = _empty_\n\ndata_version = _empty_\n\ndatabase_list = _empty_\n\ndefer_foreign_keys = _empty_\n\ndefer_foreign_keys = _boolean_\n\nencoding = _empty_\nencoding = 'UTF-8'\nencoding = 'UTF-16'\nencoding = 'UTF-16le'\nencoding = 'UTF-16be'\n\nforeign_key_check = _empty_\n\nforeign_keys = _empty_\nforeign_keys = _boolean_\n\nfreelist_count = _empty_\n\nfullfsync = _empty_\nfullfsync = _boolean_\n\nfunction_list = _empty_\nincremental_vacuum = _empty_\n\nintegrity_check = _empty_ \nintegrity_check = _int_\n\njournal_mode = _empty_\njournal_mode = DELETE\njournal_mode = TRUNCATE\njournal_mode = PERSIST\njournal_mode = MEMORY\njournal_mode = WAL\njournal_mode = OFF\n\njournal_size_limit\njournal_size_limit = _int_\n\nlegacy_alter_table = _empty_\nlegacy_alter_table = _boolean_\n\nlegacy_file_format = _empty_\nlegacy_file_format = _boolean_\n\nlocking_mode = _empty_\nlocking_mode = NORMAL\nlocking_mode = EXCLUSIVE\n\nmax_page_count = _empty_\nmax_page_count = _int_\n\nmmap_size = _empty_\nmmap_size = _int_\n\nmodule_list = _empty_\n\noptimize = _empty_\npage_count = _empty_\n\npage_size = _empty_\npage_size = _int_\n\nparser_trace = _boolean_\n\npragma_list = _empty_\n\nquery_only = _empty_\nquery_only = _boolean_\nquick_check = _empty_\nquick_check = _int_\n\nread_uncommitted = _empty_\nread_uncommitted = _boolean_\n\nrecursive_triggers = _empty_\nrecursive_triggers = _boolean_\n\nreverse_unordered_selects = _empty_\nreverse_unordered_selects = _boolean_\n\nversion = _empty_\nversion = _int_\n\nsecure_delete = _empty_\nsecure_delete = _boolean_\nsecure_delete = FAST\n\n\nshrink_memory = _empty_\nsoft_heap_limit = _empty_\nsoft_heap_limit = _int_\n\nstats = _empty_\n\n\nsynchronous = _empty_\nsynchronous = 0\nsynchronous = OFF\nsynchronous = 1\nsynchronous = NORMAL\nsynchronous = 2\nsynchronous = FULL\nsynchronous = 3\nsynchronous = EXTRA\n\ntemp_store = _empty_\ntemp_store = 0\ntemp_store = DEFAULT\ntemp_store = 1\ntemp_store = FILE\ntemp_store = 2\ntemp_store = MEMORY\n\nthreads = _empty_\nthreads = _int_\n\n\nuser_version = _empty_\nuser_version = _int_\n\nvdbe_addoptrace = _boolean_\n\n\nvdbe_debug = _boolean_\n\n\nvdbe_listing = _boolean_\n\n\nvdbe_trace = _boolean_\n\n\nwal_autocheckpoint = _empty_\nwal_autocheckpoint = _int_\n\n\nwal_checkpoint = _empty_\n\nwritable_= _boolean_\n\n\n"
  },
  {
    "path": "data/run.sh",
    "content": "#!/bin/bash\nexport AFL_CUSTOM_MUTATOR_ONLY=1\n#export AFL_CUSTOM_MUTATOR_LIBRARY=$(pwd)/build/libpostgresql_mutator.so\nexport AFL_CUSTOM_MUTATOR_LIBRARY=$(pwd)/build/libmysql_mutator.so\n#export AFL_CUSTOM_MUTATOR_LIBRARY=$(pwd)/build/libsqlite_mutator.so\nexport AFL_DISABLE_TRIM=1\nexport AFL_AUTORESUME=1\nexport AFL_DEBUG=1\n#export AFL_NO_UI=1\nexport AFL_FORKSRV_INIT_TMOUT=1000000\nexport SQUIRREL_CONFIG=data/config_mysql.yml\n#export SQUIRREL_CONFIG=./config_mysql.yml\n./AFLplusplus/afl-fuzz -i ./data/fuzz_root/mysql_input -o output -S \"$1\" -- ./build/db_driver\n#../../afl-fuzz -i fuzz_root/input -o output -S $1 -- ./tests/test_bins/harness\n#../../afl-fuzz -i fuzz_root/mysql_input -o output -S $1 -- ./build/db_driver ./config_mysql.yml\n"
  },
  {
    "path": "lint.cmake",
    "content": "# additional target to perform clang - format run, requires clang - format\n\n# get all project files\nfile(GLOB_RECURSE ALL_SOURCE_FILES srcs/*.cc srcs/*.cpp srcs/*.h)\n# foreach(SOURCE_FILE ${ALL_SOURCE_FILES}) string(FIND ${SOURCE_FILE}\n# ${PROJECT_TRDPARTY_DIR} PROJECT_TRDPARTY_DIR_FOUND) if(NOT\n# ${PROJECT_TRDPARTY_DIR_FOUND} EQUAL -1) list(REMOVE_ITEM ALL_SOURCE_FILES\n# ${SOURCE_FILE}) endif() endforeach()\n\n# set(clangformat_style \"{BasedOnStyle: Google, IndentWidth: 2}\")\nadd_custom_target(clangformat COMMAND clang-format -style=file -i\n                                      ${ALL_SOURCE_FILES})\n\nadd_custom_target(formatcheck COMMAND clang-format -style=file --Werror\n                                      ${ALL_SOURCE_FILES})\n\nfile(GLOB ALL_NEW_FILES srcs/*.cc srcs/*.h srcs/internal/*/*.h\n     srcs/internal/*/*.cc\n     srcs/utils/*\n     )\nadd_custom_target(\n  lint\n  COMMAND\n    clang-tidy\n    # -p build)\n    ${ALL_NEW_FILES} -p build)\n"
  },
  {
    "path": "scripts/.gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n"
  },
  {
    "path": "scripts/.pylintrc",
    "content": "# This Pylint rcfile contains a best-effort configuration to uphold the\n# best-practices and style described in the Google Python style guide:\n#   https://google.github.io/styleguide/pyguide.html\n#\n# Its canonical open-source location is:\n#   https://google.github.io/styleguide/pylintrc\n\n[MASTER]\n\n# Files or directories to be skipped. They should be base names, not paths.\nignore=third_party\n\n# Files or directories matching the regex patterns are skipped. The regex\n# matches against base names, not paths.\nignore-patterns=\n\n# Pickle collected data for later comparisons.\npersistent=no\n\n# List of plugins (as comma separated values of python modules names) to load,\n# usually to register additional checkers.\nload-plugins=\n\n# Use multiple processes to speed up Pylint.\njobs=4\n\n# Allow loading of arbitrary C extensions. Extensions are imported into the\n# active Python interpreter and may run arbitrary code.\nunsafe-load-any-extension=no\n\n\n[MESSAGES CONTROL]\n\n# Only show warnings with the listed confidence levels. Leave empty to show\n# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED\nconfidence=\n\n# Enable the message, report, category or checker with the given id(s). You can\n# either give multiple identifier separated by comma (,) or put this option\n# multiple time (only on the command line, not in the configuration file where\n# it should appear only once). See also the \"--disable\" option for examples.\n#enable=\n\n# Disable the message, report, category or checker with the given id(s). You\n# can either give multiple identifiers separated by comma (,) or put this\n# option multiple times (only on the command line, not in the configuration\n# file where it should appear only once).You can also use \"--disable=all\" to\n# disable everything first and then reenable specific checks. For example, if\n# you want to run only the similarities checker, you can use \"--disable=all\n# --enable=similarities\". If you want to run only the classes checker, but have\n# no Warning level messages displayed, use\"--disable=all --enable=classes\n# --disable=W\"\ndisable=abstract-method,\n        apply-builtin,\n        arguments-differ,\n        attribute-defined-outside-init,\n        backtick,\n        bad-option-value,\n        basestring-builtin,\n        buffer-builtin,\n        c-extension-no-member,\n        consider-using-enumerate,\n        cmp-builtin,\n        cmp-method,\n        coerce-builtin,\n        coerce-method,\n        delslice-method,\n        div-method,\n        duplicate-code,\n        eq-without-hash,\n        execfile-builtin,\n        file-builtin,\n        filter-builtin-not-iterating,\n        fixme,\n        getslice-method,\n        global-statement,\n        hex-method,\n        idiv-method,\n        implicit-str-concat-in-sequence,\n        import-error,\n        import-self,\n        import-star-module-level,\n        inconsistent-return-statements,\n        input-builtin,\n        intern-builtin,\n        invalid-str-codec,\n        locally-disabled,\n        long-builtin,\n        long-suffix,\n        map-builtin-not-iterating,\n        misplaced-comparison-constant,\n        missing-function-docstring,\n        metaclass-assignment,\n        next-method-called,\n        next-method-defined,\n        no-absolute-import,\n        no-else-break,\n        no-else-continue,\n        no-else-raise,\n        no-else-return,\n        no-init,  # added\n        no-member,\n        no-name-in-module,\n        no-self-use,\n        nonzero-method,\n        oct-method,\n        old-division,\n        old-ne-operator,\n        old-octal-literal,\n        old-raise-syntax,\n        parameter-unpacking,\n        print-statement,\n        raising-string,\n        range-builtin-not-iterating,\n        raw_input-builtin,\n        rdiv-method,\n        reduce-builtin,\n        relative-import,\n        reload-builtin,\n        round-builtin,\n        setslice-method,\n        signature-differs,\n        standarderror-builtin,\n        suppressed-message,\n        sys-max-int,\n        too-few-public-methods,\n        too-many-ancestors,\n        too-many-arguments,\n        too-many-boolean-expressions,\n        too-many-branches,\n        too-many-instance-attributes,\n        too-many-locals,\n        too-many-nested-blocks,\n        too-many-public-methods,\n        too-many-return-statements,\n        too-many-statements,\n        trailing-newlines,\n        unichr-builtin,\n        unicode-builtin,\n        unnecessary-pass,\n        unpacking-in-except,\n        useless-else-on-loop,\n        useless-object-inheritance,\n        useless-suppression,\n        using-cmp-argument,\n        wrong-import-order,\n        xrange-builtin,\n        zip-builtin-not-iterating,\n        missing-final-newline,\n        line-too-long,\n        redefined-outer-name,\n\n\n[REPORTS]\n\n# Set the output format. Available formats are text, parseable, colorized, msvs\n# (visual studio) and html. You can also give a reporter class, eg\n# mypackage.mymodule.MyReporterClass.\noutput-format=text\n\n# Tells whether to display a full report or only the messages\nreports=no\n\n# Python expression which should return a note less than 10 (10 is the highest\n# note). You have access to the variables errors warning, statement which\n# respectively contain the number of errors / warnings messages and the total\n# number of statements analyzed. This is used by the global evaluation report\n# (RP0004).\nevaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)\n\n# Template used to display messages. This is a python new-style format string\n# used to format the message information. See doc for all details\n#msg-template=\n\n\n[BASIC]\n\n# Good variable names which should always be accepted, separated by a comma\ngood-names=main,_\n\n# Bad variable names which should always be refused, separated by a comma\nbad-names=\n\n# Colon-delimited sets of names that determine each other's naming style when\n# the name regexes allow several styles.\nname-group=\n\n# Include a hint for the correct naming format with invalid-name\ninclude-naming-hint=no\n\n# List of decorators that produce properties, such as abc.abstractproperty. Add\n# to this list to register other decorators that produce valid properties.\nproperty-classes=abc.abstractproperty,cached_property.cached_property,cached_property.threaded_cached_property,cached_property.cached_property_with_ttl,cached_property.threaded_cached_property_with_ttl\n\n# Regular expression matching correct function names\nfunction-rgx=^(?:(?P<exempt>setUp|tearDown|setUpModule|tearDownModule)|(?P<camel_case>_?[A-Z][a-zA-Z0-9]*)|(?P<snake_case>_?[a-z][a-z0-9_]*))$\n\n# Regular expression matching correct variable names\nvariable-rgx=^[a-z][a-z0-9_]*$\n\n# Regular expression matching correct constant names\nconst-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$\n\n# Regular expression matching correct attribute names\nattr-rgx=^_{0,2}[a-z][a-z0-9_]*$\n\n# Regular expression matching correct argument names\nargument-rgx=^[a-z][a-z0-9_]*$\n\n# Regular expression matching correct class attribute names\nclass-attribute-rgx=^(_?[A-Z][A-Z0-9_]*|__[a-z0-9_]+__|_?[a-z][a-z0-9_]*)$\n\n# Regular expression matching correct inline iteration names\ninlinevar-rgx=^[a-z][a-z0-9_]*$\n\n# Regular expression matching correct class names\nclass-rgx=^_?[A-Z][a-zA-Z0-9]*$\n\n# Regular expression matching correct module names\nmodule-rgx=^(_?[a-z][a-z0-9_]*|__init__)$\n\n# Regular expression matching correct method names\nmethod-rgx=(?x)^(?:(?P<exempt>_[a-z0-9_]+__|runTest|setUp|tearDown|setUpTestCase|tearDownTestCase|setupSelf|tearDownClass|setUpClass|(test|assert)_*[A-Z0-9][a-zA-Z0-9_]*|next)|(?P<camel_case>_{0,2}[A-Z][a-zA-Z0-9_]*)|(?P<snake_case>_{0,2}[a-z][a-z0-9_]*))$\n\n# Regular expression which should only match function or class names that do\n# not require a docstring.\nno-docstring-rgx=(__.*__|main|test.*|.*test|.*Test)$\n\n# Minimum line length for functions/classes that require docstrings, shorter\n# ones are exempt.\ndocstring-min-length=10\n\n\n[TYPECHECK]\n\n# List of decorators that produce context managers, such as\n# contextlib.contextmanager. Add to this list to register other decorators that\n# produce valid context managers.\ncontextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager\n\n# Tells whether missing members accessed in mixin class should be ignored. A\n# mixin class is detected if its name ends with \"mixin\" (case insensitive).\nignore-mixin-members=yes\n\n# List of module names for which member attributes should not be checked\n# (useful for modules/projects where namespaces are manipulated during runtime\n# and thus existing member attributes cannot be deduced by static analysis. It\n# supports qualified module names, as well as Unix pattern matching.\nignored-modules=\n\n# List of class names for which member attributes should not be checked (useful\n# for classes with dynamically set attributes). This supports the use of\n# qualified names.\nignored-classes=optparse.Values,thread._local,_thread._local\n\n# List of members which are set dynamically and missed by pylint inference\n# system, and so shouldn't trigger E1101 when accessed. Python regular\n# expressions are accepted.\ngenerated-members=\n\n\n[FORMAT]\n\n# Maximum number of characters on a single line.\nmax-line-length=80\n\n# TODO(https://github.com/PyCQA/pylint/issues/3352): Direct pylint to exempt\n# lines made too long by directives to pytype.\n\n# Regexp for a line that is allowed to be longer than the limit.\nignore-long-lines=(?x)(\n  ^\\s*(\\#\\ )?<?https?://\\S+>?$|\n  ^\\s*(from\\s+\\S+\\s+)?import\\s+.+$)\n\n# Allow the body of an if to be on the same line as the test if there is no\n# else.\nsingle-line-if-stmt=yes\n\n# List of optional constructs for which whitespace checking is disabled. `dict-\n# separator` is used to allow tabulation in dicts, etc.: {1  : 1,\\n222: 2}.\n# `trailing-comma` allows a space between comma and closing bracket: (a, ).\n# `empty-line` allows space-only lines.\n\n# Maximum number of lines in a module\nmax-module-lines=99999\n\n# String used as indentation unit.  The internal Google style guide mandates 2\n# spaces.  Google's externaly-published style guide says 4, consistent with\n# PEP 8.  Here, we use 2 spaces, for conformity with many open-sourced Google\n# projects (like TensorFlow).\nindent-string='  '\n\n# Number of spaces of indent required inside a hanging  or continued line.\nindent-after-paren=4\n\n# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.\nexpected-line-ending-format=\n\n\n[MISCELLANEOUS]\n\n# List of note tags to take in consideration, separated by a comma.\nnotes=TODO\n\n\n[STRING]\n\n# This flag controls whether inconsistent-quotes generates a warning when the\n# character used as a quote delimiter is used inconsistently within a module.\ncheck-quote-consistency=yes\n\n\n[VARIABLES]\n\n# Tells whether we should check for unused import in __init__ files.\ninit-import=no\n\n# A regular expression matching the name of dummy variables (i.e. expectedly\n# not used).\ndummy-variables-rgx=^\\*{0,2}(_$|unused_|dummy_)\n\n# List of additional names supposed to be defined in builtins. Remember that\n# you should avoid to define new builtins when possible.\nadditional-builtins=\n\n# List of strings which can identify a callback function by name. A callback\n# name must start or end with one of those strings.\ncallbacks=cb_,_cb\n\n# List of qualified module names which can have objects that can redefine\n# builtins.\nredefining-builtins-modules=six,six.moves,past.builtins,future.builtins,functools\n\n\n[LOGGING]\n\n# Logging modules to check that the string format arguments are in logging\n# function parameter format\nlogging-modules=logging,absl.logging,tensorflow.io.logging\n\n\n[SIMILARITIES]\n\n# Minimum lines number of a similarity.\nmin-similarity-lines=4\n\n# Ignore comments when computing similarities.\nignore-comments=yes\n\n# Ignore docstrings when computing similarities.\nignore-docstrings=yes\n\n# Ignore imports when computing similarities.\nignore-imports=no\n\n\n[SPELLING]\n\n# Spelling dictionary name. Available dictionaries: none. To make it working\n# install python-enchant package.\nspelling-dict=\n\n# List of comma separated words that should not be checked.\nspelling-ignore-words=\n\n# A path to a file that contains private dictionary; one word per line.\nspelling-private-dict-file=\n\n# Tells whether to store unknown words to indicated private dictionary in\n# --spelling-private-dict-file option instead of raising a message.\nspelling-store-unknown-words=no\n\n\n[IMPORTS]\n\n# Deprecated modules which should not be used, separated by a comma\ndeprecated-modules=regsub,\n                   TERMIOS,\n                   Bastion,\n                   rexec,\n                   sets\n\n# Create a graph of every (i.e. internal and external) dependencies in the\n# given file (report RP0402 must not be disabled)\nimport-graph=\n\n# Create a graph of external dependencies in the given file (report RP0402 must\n# not be disabled)\next-import-graph=\n\n# Create a graph of internal dependencies in the given file (report RP0402 must\n# not be disabled)\nint-import-graph=\n\n# Force import order to recognize a module as part of the standard\n# compatibility libraries.\nknown-standard-library=\n\n# Force import order to recognize a module as part of a third party library.\nknown-third-party=enchant, absl\n\n# Analyse import fallback blocks. This can be used to support both Python 2 and\n# 3 compatible code, which means that the block might have code that exists\n# only in one or another interpreter, leading to false positives when analysed.\nanalyse-fallback-blocks=no\n\n\n[CLASSES]\n\n# List of method names used to declare (i.e. assign) instance attributes.\ndefining-attr-methods=__init__,\n                      __new__,\n                      setUp\n\n# List of member names, which should be excluded from the protected access\n# warning.\nexclude-protected=_asdict,\n                  _fields,\n                  _replace,\n                  _source,\n                  _make\n\n# List of valid names for the first argument in a class method.\nvalid-classmethod-first-arg=cls,\n                            class_\n\n# List of valid names for the first argument in a metaclass class method.\nvalid-metaclass-classmethod-first-arg=mcs\n\n\n[EXCEPTIONS]\n\n# Exceptions that will emit a warning when being caught. Defaults to\n# \"Exception\"\novergeneral-exceptions=StandardError,\n                       Exception,\n                       BaseException\n"
  },
  {
    "path": "scripts/dockers/mariadb/Dockerfile",
    "content": "from ubuntu:22.04\nLABEL maintainer=\"Squirrel\"\n\n# common config\nRUN apt-get update\nRUN apt-get -y install make cmake build-essential vim sudo git \\\n    clang libmysqlclient-dev ninja-build pkg-config clang-format \\\n    libpq-dev libyaml-cpp-dev lld python3-fire\n\nRUN mkdir -p /home && \\\n    groupadd dobigthing && \\\n    useradd -l -K UMASK=0000 -d /home -g dobigthing dobigthing && \\\n    chown dobigthing:dobigthing /home\n\nRUN\techo \"dobigthing:dobigthing\" | chpasswd && usermod -a -G sudo dobigthing\nRUN chmod +w /etc/sudoers && \\\n    echo \"%dobigthing   ALL=(ALL:ALL)NOPASSWD:ALL\" >> /etc/sudoers && \\\n    chmod -w /etc/sudoers\n\n# install mariadb-server\nRUN apt-get -y install apt-transport-https curl software-properties-common gnutls-dev\nRUN curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc \\\n    'https://mariadb.org/mariadb_release_signing_key.asc'\nRUN echo \"deb https://ftp.osuosl.org/pub/mariadb/repo/10.10/ubuntu jammy main\" >> /etc/apt/sources.list\nRUN echo \"deb-src https://ftp.osuosl.org/pub/mariadb/repo/10.10/ubuntu jammy main\" >> /etc/apt/sources.list\nRUN apt-get update && apt-get -y build-dep mariadb\n\nUSER dobigthing\nWORKDIR /home\n\nRUN git clone https://github.com/Dobigthing666/Squirrel.git && \\\n    cd Squirrel && git submodule update --init && \\\n    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && \\\n    cmake --build build -j && \\\n    cd AFLplusplus/ && LLVM_CONFIG=llvm-config-14 make -j20\n\nRUN git clone --depth=1 https://github.com/MariaDB/server.git mariadb && \\\n    mkdir bld && cd bld/ && \\\n    CC=/home/Squirrel/AFLplusplus/afl-clang-fast CXX=/home/Squirrel/AFLplusplus/afl-clang-fast++ cmake ../mariadb/ && \\\n    make -j20 && sudo cmake --install . --prefix /usr/local/mysql/\n\nRUN sudo chown dobigthing:dobigthing /usr/local/mysql/ -R && \\\n    cd /usr/local/mysql/ && \\\n    scripts/mysql_install_db --user=dobigthing\n\n# Get map size and save it to /tmp/mapsize\nRUN AFL_DEBUG=1 __AFL_SHM_ID=1234 /usr/local/mysql/bin/mariadbd 2>&1 | tail -n 1 | cut -d\",\" -f8 | cut -d\" \" -f 3 > /tmp/mapsize\nWORKDIR /home/Squirrel/scripts/utils\nENTRYPOINT AFL_MAP_SIZE=$(cat /tmp/mapsize) python3 run.py mariadb ../../data/fuzz_root/mysql_input/\n"
  },
  {
    "path": "scripts/dockers/mysql/Dockerfile",
    "content": "from ubuntu:22.04\nLABEL maintainer=\"Squirrel\"\n\n# common config\nRUN apt-get update\nRUN apt-get -y install make cmake build-essential vim sudo git \\\n    clang libmysqlclient-dev ninja-build pkg-config clang-format \\\n    libpq-dev libyaml-cpp-dev lld llvm bison python3-fire\n\nRUN mkdir -p /home && \\\n    groupadd dobigthing && \\\n    useradd -l -K UMASK=0000 -d /home -g dobigthing dobigthing && \\\n    chown dobigthing:dobigthing /home\n\nRUN\techo \"dobigthing:dobigthing\" | chpasswd && usermod -a -G sudo dobigthing\nRUN chmod +w /etc/sudoers && \\\n    echo \"%dobigthing   ALL=(ALL:ALL)NOPASSWD:ALL\" >> /etc/sudoers && \\\n    chmod -w /etc/sudoers\n\nUSER dobigthing\nWORKDIR /home\n\nRUN git clone https://github.com/Dobigthing666/Squirrel.git && \\\n    cd Squirrel && git submodule update --init && \\\n    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -Wno-dev -DMYSQL=ON && \\\n    cmake --build build -j && \\\n    cd AFLplusplus/ && LLVM_CONFIG=llvm-config-14 make -j20\n\nRUN git clone --depth=1 https://github.com/mysql/mysql-server.git mysql\nRUN sudo apt-get -y install apt-transport-https curl software-properties-common gnutls-dev\nRUN mkdir bld && cd bld/ && \\\n    CC=/home/Squirrel/AFLplusplus/afl-clang-fast CXX=/home/Squirrel/AFLplusplus/afl-clang-fast++ \\\n    cmake ../mysql/ -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost \\\n    -DWITH_DEBUG=1 -DCPACK_MONOLITHIC_INSTALL=1 -DWITH_UNIT_TESTS=OFF\n    \nRUN cd bld/ && make -j && sudo cmake --install . --prefix /usr/local/mysql/\n\nRUN sudo chown dobigthing:dobigthing /usr/local/mysql/ -R && \\\n    cd /usr/local/mysql/ && mkdir mysql-files && chmod 750 mysql-files && \\\n    AFL_IGNORE_PROBLEMS=1 bin/mysqld --initialize-insecure --user=dobigthing && bin/mysql_ssl_rsa_setup\n\n#ENTRYPOINT bash\n#ENTRYPOINT /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql \\\n#            --datadir=/usr/local/mysql/data --log-error=err_log.err \\\n#            --pid-file=server_pid.pid --max_statement_time=1\nRUN AFL_DEBUG=1 __AFL_SHM_ID=1234 /usr/local/mysql/bin/mysqld 2>&1 | grep \"__afl_map_size\" | tail -n 1 | cut -d\",\" -f8 | cut -d\" \" -f 3 > /tmp/mapsize\nWORKDIR /home/Squirrel/scripts/utils\nENTRYPOINT AFL_IGNORE_PROBLEMS=1 AFL_MAP_SIZE=$(cat /tmp/mapsize) python3 run.py mysql ../../data/fuzz_root/mysql_input/\n"
  },
  {
    "path": "scripts/dockers/postgresql/Dockerfile",
    "content": "from ubuntu:22.04\nLABEL maintainer=\"Squirrel\"\n\n# common config\nRUN apt-get update\nRUN apt-get -y install make cmake build-essential vim sudo git \\\n    clang ninja-build pkg-config clang-format libpq-dev llvm libyaml-cpp-dev zlib1g-dev \\\n    libreadline8 libreadline-dev bison flex python3-fire\n\nRUN mkdir -p /home && \\\n    groupadd dobigthing && \\\n    useradd -l -K UMASK=0000 -d /home -g dobigthing dobigthing && \\\n    chown dobigthing:dobigthing /home\n\nRUN\techo \"dobigthing:dobigthing\" | chpasswd && usermod -a -G sudo dobigthing\nRUN chmod +w /etc/sudoers && \\\n    echo \"%dobigthing   ALL=(ALL:ALL)NOPASSWD:ALL\" >> /etc/sudoers && \\\n    chmod -w /etc/sudoers\n\nUSER dobigthing\nWORKDIR /home\n\nRUN git clone https://github.com/s3team/Squirrel.git && \\\n    cd Squirrel && git submodule update --init && \\\n    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DPOSTGRESQL=ON && \\\n    cmake --build build -j && \\\n    cd AFLplusplus/ && LLVM_CONFIG=llvm-config-14 make -j20\n\nRUN git clone https://github.com/postgres/postgres.git postgres/ && \\\n    mkdir bld/ && cd bld/ && \\\n    CC=/home/Squirrel/AFLplusplus/afl-cc CXX=/home/Squirrel/AFLplusplus/afl-c++ \\\n    ../postgres/configure\n\nRUN cd bld/ && make -j && sudo make install && \\\n    sudo mkdir /usr/local/pgsql/data && sudo chown dobigthing /usr/local/pgsql/data &&  \\\n    AFL_IGNORE_PROBLEMS=1 /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data\n\nRUN AFL_DEBUG=1 __AFL_SHM_ID=1234 /usr/local/pgsql/bin/postgres 2>&1 | grep \"__afl_map_size\" | tail -n 1 | cut -d\",\" -f8 | cut -d\" \" -f 3 > /tmp/mapsize\nWORKDIR /home/Squirrel/scripts/utils\nENTRYPOINT AFL_MAP_SIZE=$(cat /tmp/mapsize) python3 run.py postgresql ../../data/fuzz_root/pqsql_input/\n"
  },
  {
    "path": "scripts/dockers/sqlite/Dockerfile",
    "content": "from ubuntu:22.04\nLABEL maintainer=\"Squirrel\"\n\nENV DEBIAN_FRONTEND noninteractive\n\n# common config\nRUN apt-get update\nRUN apt-get -y install make cmake build-essential vim sudo git tcl8.6 tcl8.6-tdbc-sqlite3\\\n    clang ninja-build pkg-config clang-format \\\n    libpq-dev libyaml-cpp-dev lld llvm python3-fire\n\nRUN mkdir -p /home && \\\n    groupadd dobigthing && \\\n    useradd -l -K UMASK=0000 -d /home -g dobigthing dobigthing && \\\n    chown dobigthing:dobigthing /home\n\nRUN\techo \"dobigthing:dobigthing\" | chpasswd && usermod -a -G sudo dobigthing\nRUN chmod +w /etc/sudoers && \\\n    echo \"%dobigthing   ALL=(ALL:ALL)NOPASSWD:ALL\" >> /etc/sudoers && \\\n    chmod -w /etc/sudoers\n\nUSER dobigthing\nWORKDIR /home\n\nRUN git clone https://github.com/s3team/Squirrel.git && \\\n    cd Squirrel && git submodule update --init && \\\n    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DSQLITE=ON && \\\n    cmake --build build -j && \\\n    cd AFLplusplus/ && LLVM_CONFIG=llvm-config-14 make -j20\n\nARG CFLAGS=\"-DSQLITE_MAX_LENGTH=128000000 -DSQLITE_MAX_SQL_LENGTH=128000000 -DSQLITE_MAX_MEMORY=25000000 -DSQLITE_PRINTF_PRECISION_LIMIT=1048576 -DSQLITE_DEBUG=1 -DSQLITE_MAX_PAGE_COUNT=16384\"\n\nRUN git clone https://github.com/sqlite/sqlite sqlite3/ && cd sqlite3 && mkdir bld\n\nWORKDIR /home/sqlite3/bld\n\nENV CC=/home/Squirrel/AFLplusplus/afl-cc\nENV CXX=/home/Squirrel/AFLplusplus/afl-c++\nRUN ../configure && make -j && make sqlite3.c\n\nRUN $CC $CFLAGS -I. -c \\\n    /home/sqlite3/test/ossfuzz.c -o /home/sqlite3/test/ossfuzz.o\nRUN $CC $CFLAGS -I. -c \\\n    /home/sqlite3/test/ossshell.c -o /home/sqlite3/test/ossshell.o\n\nRUN $CXX $CXXFLAGS \\\n    /home/sqlite3/test/ossfuzz.o /home/sqlite3/test/ossshell.o -o /home/ossfuzz \\\n   ./sqlite3.o -ldl -pthread\n\nWORKDIR /home/Squirrel/scripts/utils\nENTRYPOINT python3 run.py sqlite ../../data/fuzz_root/input\n"
  },
  {
    "path": "scripts/noxfile.py",
    "content": "\"\"\"Nox sessions for the project.\n\"\"\"\nimport nox\n\n\n@nox.session\ndef format(session):  # pylint: disable=redefined-builtin\n  session.run(\"yapf\", \"-i\", \"-p\", \"--recursive\", \"utils\", external=True)\n  session.notify(\"lint\")\n\n\n@nox.session\ndef format_check(session):\n  assert session.run(\"yapf\", \"-d\", \"-p\", \"--recursive\", \"utils\", external=True)\n\n\n@nox.session\ndef lint(session):\n  session.run(\"pylint\", \"utils/\", external=True)\n  session.notify(\"type_check\")\n\n\n@nox.session\ndef type_check(session):\n  session.run(\"mypy\", \"utils/\", external=True)\n"
  },
  {
    "path": "scripts/pyproject.toml",
    "content": "[tool.poetry]\nname = \"script\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Yongheng Chen <changochen1@gmail.com>\"]\nreadme = \"README.md\"\n\n[tool.poetry.dependencies]\npython = \"^3.8\"\nfire = \"^0.5.0\"\npylint = \"*\"\nyapf = \"*\"\nmypy = \"*\"\nnox = \"*\"\ntoml = \"^0.10.2\"\n\n[build-system]\nrequires = [\"poetry-core\"]\nbuild-backend = \"poetry.core.masonry.api\"\n\n[tool.yapf]\nbased_on_style = \"google\"\nindent_width = 2\ncolumn_limit = 100\nSPACES_BEFORE_COMMENT=2\n\n[tool.mypy]\nignore_missing_imports = true\n"
  },
  {
    "path": "scripts/utils/run.py",
    "content": "\"\"\"\nRun a fuzzing instance.\n\"\"\"\nimport os\nimport fire\nimport uuid\nfrom pathlib import Path\n\nDBMS = [\"sqlite\", \"mysql\", \"mariadb\", \"postgresql\"]\nROOTPATH = Path(os.path.dirname(os.path.realpath(__file__))).parent.parent\n\n\ndef get_mutator_so_path(database):\n  if database == \"mariadb\":\n    database = \"mysql\"\n  return f\"{ROOTPATH}/build/lib{database}_mutator.so\"\n\n\ndef get_config_path(database):\n  return f\"{ROOTPATH}/data/config_{database}.yml\"\n\n\ndef set_env(database):\n  os.environ[\"AFL_CUSTOM_MUTATOR_ONLY\"] = \"1\"\n  os.environ[\"AFL_DISABLE_TRIM\"] = \"1\"\n  os.environ[\"AFL_FAST_CAL\"] = \"1\"\n  os.environ[\"AFL_CUSTOM_MUTATOR_LIBRARY\"] = get_mutator_so_path(database)\n  os.environ[\"SQUIRREL_CONFIG\"] = get_config_path(database)\n\n\ndef run(database, input_dir, output_dir=None, config_file=None, fuzzer=None):\n  # Precondition checks\n  if database not in DBMS:\n    print(f\"Unsupported database. The supported ones are {DBMS}\")\n    return\n\n  if not output_dir:\n    output_dir = \"/tmp/fuzz\"\n\n  if not config_file:\n    config_file = get_config_path(database)\n  if not fuzzer:\n    fuzzer = f\"{ROOTPATH}/AFLplusplus/afl-fuzz\"\n  if not os.path.exists(config_file):\n    print(\"Invalid path for config file\")\n  if not os.path.exists(fuzzer):\n    print(\"Invalid path for afl-fuzz\")\n\n  set_env(database)\n\n  output_id = str(uuid.uuid4())[:10]\n  if database == \"sqlite\":\n    cmd = f\"{fuzzer} -i {input_dir} -o {output_dir} -M {output_id} -- /home/ossfuzz @@\"\n  else:\n    cmd = f\"{fuzzer} -i {input_dir} -o {output_dir} -M {output_id} -t 60000 -- {ROOTPATH}/build/db_driver\"\n\n  os.system(cmd)\n\n\nif __name__ == \"__main__\":\n  fire.Fire(run)\n"
  },
  {
    "path": "srcs/custom_mutator.cc",
    "content": "#include <cassert>\n#include <fstream>\n#include <iostream>\n#include <memory>\n#include <stack>\n#include <string>\n\n#include \"afl-fuzz.h\"\n#include \"config_validate.h\"\n#include \"db.h\"\n#include \"env.h\"\n#include \"yaml-cpp/yaml.h\"\n\nstruct SquirrelMutator {\n  SquirrelMutator(DataBase *db) : database(db) {}\n  ~SquirrelMutator() { delete database; }\n  DataBase *database;\n  std::string current_input;\n};\n\nextern \"C\" {\n\nvoid *afl_custom_init(afl_state_t *afl, unsigned int seed) {\n  const char *config_file_path = getenv(kConfigEnv);\n  if (!config_file_path) {\n    std::cerr << \"You should set the enviroment variable \" << kConfigEnv\n              << \" to the path of your config file.\" << std::endl;\n    exit(-1);\n  }\n  std::string config_file(config_file_path);\n  std::cerr << \"Config file: \" << config_file << std::endl;\n  YAML::Node config = YAML::LoadFile(config_file);\n  if (!utils::validate_db_config(config)) {\n    std::cerr << \"Invalid config!\" << std::endl;\n  }\n  auto *mutator = create_database(config);\n  return new SquirrelMutator(mutator);\n}\n\nvoid afl_custom_deinit(SquirrelMutator *data) { delete data; }\n\nu8 afl_custom_queue_new_entry(SquirrelMutator *mutator,\n                              const unsigned char *filename_new_queue,\n                              const unsigned char *filename_orig_queue) {\n  // read a file by file name\n  std::ifstream ifs((const char *)filename_new_queue);\n  std::string content((std::istreambuf_iterator<char>(ifs)),\n                      (std::istreambuf_iterator<char>()));\n  mutator->database->save_interesting_query(content);\n  return false;\n}\n\nunsigned int afl_custom_fuzz_count(SquirrelMutator *mutator,\n                                   const unsigned char *buf, size_t buf_size) {\n  std::string sql((const char *)buf, buf_size);\n  return mutator->database->mutate(sql);\n}\n\nsize_t afl_custom_fuzz(SquirrelMutator *mutator, uint8_t *buf, size_t buf_size,\n                       u8 **out_buf, uint8_t *add_buf,\n                       size_t add_buf_size,  // add_buf can be NULL\n                       size_t max_size) {\n  DataBase *db = mutator->database;\n  assert(db->has_mutated_test_cases());\n  mutator->current_input = db->get_next_mutated_query();\n  *out_buf = (u8 *)mutator->current_input.c_str();\n  return mutator->current_input.size();\n}\n}\n"
  },
  {
    "path": "srcs/db.h",
    "content": "#ifndef __DB_H__\n#define __DB_H__\n#include \"yaml-cpp/yaml.h\"\n\nclass DataBase {\n public:\n  // Set up the database.\n  virtual bool initialize(YAML::Node config) = 0;\n  // Mutate the query and return the number of new queries.\n  virtual size_t mutate(const std::string &) = 0;\n  // Return an new query to test. The `buffer` should be unmanaged,\n  virtual std::string get_next_mutated_query() = 0;\n  virtual bool has_mutated_test_cases() = 0;\n  // Save the interesting query to the dictionary.\n  virtual bool save_interesting_query(const std::string &) = 0;\n  // Clean up the enviroment, e.g., drop all the databases.\n  virtual bool clean_up() { return true; }\n  virtual ~DataBase(){};\n};\n\nDataBase *create_database(YAML::Node config);\n#endif  // __DB_H__\n"
  },
  {
    "path": "srcs/db_driver.cc",
    "content": "#ifdef __ANDROID__\n#include \"android-ashmem.h\"\n#endif\n#include <assert.h>\n#include <errno.h>\n#include <fcntl.h>\n#include <signal.h>\n#include <stdint.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/mman.h>\n#include <sys/shm.h>\n#include <sys/types.h>\n#include <sys/wait.h>\n#include <unistd.h>\n\n#include <iostream>\n\n#include \"absl/strings/str_format.h\"\n#include \"client.h\"\n#include \"config.h\"\n#include \"env.h\"\n#include \"types.h\"\n#include \"yaml-cpp/yaml.h\"\n\nu8 *__afl_area_ptr;\n\n#ifdef __ANDROID__\nu32 __afl_map_size = MAP_SIZE;\n#else\n__thread u32 __afl_map_size = MAP_SIZE;\n#endif\n\n/* Error reporting to forkserver controller */\n\nvoid send_forkserver_error(int error) {\n  u32 status;\n  if (!error || error > 0xffff) return;\n  status = (FS_OPT_ERROR | FS_OPT_SET_ERROR(error));\n  if (write(FORKSRV_FD + 1, (char *)&status, 4) != 4) return;\n}\n\n/* SHM setup. */\n\nstatic void __afl_map_shm(void) {\n  char *id_str = getenv(SHM_ENV_VAR);\n  char *ptr;\n\n  /* NOTE TODO BUG FIXME: if you want to supply a variable sized map then\n     uncomment the following: */\n\n  if ((ptr = getenv(\"AFL_MAP_SIZE\")) != NULL) {\n    u32 val = atoi(ptr);\n    if (val > 0) __afl_map_size = val;\n  }\n\n  if (__afl_map_size > MAP_SIZE) {\n    if (__afl_map_size > FS_OPT_MAX_MAPSIZE) {\n      fprintf(stderr,\n              \"Error: AFL++ tools *require* to set AFL_MAP_SIZE to %u to \"\n              \"be able to run this instrumented program!\\n\",\n              __afl_map_size);\n      if (id_str) {\n        send_forkserver_error(FS_ERROR_MAP_SIZE);\n        exit(-1);\n      }\n\n    } else {\n      fprintf(stderr,\n              \"Warning: AFL++ tools will need to set AFL_MAP_SIZE to %u to \"\n              \"be able to run this instrumented program!\\n\",\n              __afl_map_size);\n    }\n  }\n\n  if (id_str) {\n#ifdef USEMMAP\n    const char *shm_file_path = id_str;\n    int shm_fd = -1;\n    unsigned char *shm_base = NULL;\n\n    /* create the shared memory segment as if it was a file */\n    shm_fd = shm_open(shm_file_path, O_RDWR, 0600);\n    if (shm_fd == -1) {\n      fprintf(stderr, \"shm_open() failed\\n\");\n      send_forkserver_error(FS_ERROR_SHM_OPEN);\n      exit(1);\n    }\n\n    /* map the shared memory segment to the address space of the process */\n    shm_base =\n        mmap(0, __afl_map_size, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);\n\n    if (shm_base == MAP_FAILED) {\n      close(shm_fd);\n      shm_fd = -1;\n\n      fprintf(stderr, \"mmap() failed\\n\");\n      send_forkserver_error(FS_ERROR_MMAP);\n      exit(2);\n    }\n\n    __afl_area_ptr = shm_base;\n#else\n    u32 shm_id = atoi(id_str);\n\n    __afl_area_ptr = (u8 *)shmat(shm_id, 0, 0);\n\n#endif\n\n    if (__afl_area_ptr == (void *)-1) {\n      send_forkserver_error(FS_ERROR_SHMAT);\n      exit(1);\n    }\n\n    /* Write something into the bitmap so that the parent doesn't give up */\n    __afl_area_ptr[0] = 1;\n  }\n}\n\n/* Fork server logic. */\n\nstatic void __afl_start_forkserver(void) {\n  u8 tmp[4] = {0, 0, 0, 0};\n  u32 status = 0;\n\n  if (__afl_map_size <= FS_OPT_MAX_MAPSIZE)\n    status |= (FS_OPT_SET_MAPSIZE(__afl_map_size) | FS_OPT_MAPSIZE);\n  if (status) status |= (FS_OPT_ENABLED);\n  memcpy(tmp, &status, 4);\n\n  /* Phone home and tell the parent that we're OK. */\n\n  if (write(FORKSRV_FD + 1, tmp, 4) != 4) return;\n}\n\nstatic u32 __afl_next_testcase(u8 *buf, u32 max_len) {\n  s32 status, res = 0xffffff;\n\n  /* Wait for parent by reading from the pipe. Abort if read fails. */\n  if (read(FORKSRV_FD, &status, 4) != 4) return 0;\n\n  /* we have a testcase - read it */\n  status = read(0, buf, max_len);\n\n  /* report that we are starting the target */\n  if (write(FORKSRV_FD + 1, &res, 4) != 4) return 0;\n\n  return status;\n}\n\nstatic void __afl_end_testcase(client::ExecutionStatus status) {\n  int waitpid_status = 0xffffff;\n  if (status == client::kServerCrash) {\n    waitpid_status = 0x6;  // raise.\n  }\n\n  if (write(FORKSRV_FD + 1, &waitpid_status, 4) != 4) exit(1);\n}\n\nint main(int argc, char *argv[]) {\n  const char *config_file_path = getenv(kConfigEnv);\n  if (!config_file_path) {\n    std::cerr << absl::StrFormat(\n        \"You should set the enviroment variable %s to \"\n        \"the path of your config file.\\n\",\n        kConfigEnv);\n    exit(-1);\n  }\n  YAML::Node config = YAML::LoadFile(config_file_path);\n  std::string db_name = config[\"db\"].as<std::string>();\n  std::string startup_cmd = config[\"startup_cmd\"].as<std::string>();\n  client::DBClient *database = client::create_client(db_name, config);\n  database->initialize(config);\n\n  /* This is were the testcase data is written into */\n  constexpr size_t kMaxInputSize = 0x100000;\n  u8 *buf = (u8 *)malloc(\n      kMaxInputSize);  // this is the maximum size for a test case! set it!\n  s32 len;\n\n  __afl_map_size = MAP_SIZE;  // default is 65536\n\n  /* then we initialize the shared memory map and start the forkserver */\n\n  // Start the database server. In case that the driver\n  // is stopped and restarted, we should not start another server.\n  __afl_map_shm();\n  if (!database->check_alive()) {\n    system(startup_cmd.c_str());\n    sleep(5);\n  }\n\n  __afl_start_forkserver();\n\n  while ((len = __afl_next_testcase(buf, kMaxInputSize)) > 0) {\n    std::string query((const char *)buf, len);\n    database->prepare_env();\n\n    client::ExecutionStatus status = database->execute((const char *)buf, len);\n\n    __afl_area_ptr[0] = 1;\n    /* report the test case is done and wait for the next */\n\n    if (status == client::kServerCrash) {\n      while (!database->check_alive()) {\n        // Wait for the server to be restart.\n        sleep(5);\n      }\n    }\n    database->clean_up_env();\n    __afl_end_testcase(status);\n  }\n  assert(false && \"Crash on parent?\");\n\n  return 0;\n}\n"
  },
  {
    "path": "srcs/db_factory.cc",
    "content": "#include <cassert>\n\n#ifdef __SQUIRREL_SQLITE__\n#include \"sqlite.h\"\n#endif\n\n#ifdef __SQUIRREL_MYSQL__\n#include \"mysql.h\"\n#endif\n\n#ifdef __SQUIRREL_POSTGRESQL__\n#include \"postgresql.h\"\n#endif\n\n//#include \"db.h\"\n\nDataBase* create_database(YAML::Node config) {\n  const std::string db_name = config[\"db\"].as<std::string>();\n  DataBase* result = nullptr;\n  if (db_name == \"sqlite\") {\n#ifdef __SQUIRREL_SQLITE__\n    result = create_sqlite();\n#endif\n  } else if (db_name == \"mysql\") {\n#ifdef __SQUIRREL_MYSQL__\n    result = create_mysql();\n#endif\n  } else if (db_name == \"postgresql\") {\n#ifdef __SQUIRREL_POSTGRESQL__\n    result = create_postgresql();\n#endif\n  } else {\n    assert(false && \"Unreachable\");\n  }\n  assert(result && \"Unreachable\");\n  result->initialize(config);\n  return result;\n}\n"
  },
  {
    "path": "srcs/env.h",
    "content": "constexpr char kConfigEnv[] = \"SQUIRREL_CONFIG\";\n"
  },
  {
    "path": "srcs/internal/client/client.cc",
    "content": "#include \"client.h\"\n\n#include <cassert>\n#include <string>\n\n#ifdef __SQUIRREL_MYSQL__\n#include \"client_mysql.h\"\n#endif\n\n#ifdef __SQUIRREL_POSTGRESQL__\n#include \"client_postgresql.h\"\n#endif\n\nnamespace client {\nDBClient *create_client(const std::string &db_name, const YAML::Node &config) {\n  DBClient *result = nullptr;\n  if (db_name == \"mysql\") {\n#ifdef __SQUIRREL_MYSQL__\n    result = new MySQLClient;\n#endif\n  } else if (db_name == \"postgresql\") {\n#ifdef __SQUIRREL_POSTGRESQL__\n    result = new PostgreSQLClient;\n#endif\n  } else {\n    assert(false && \"It is not supported!\");\n  }\n  assert(result && \"It is not supported!\");\n\n  result->initialize(config);\n  return result;\n}\n};  // namespace client\n"
  },
  {
    "path": "srcs/internal/client/client.h",
    "content": "#ifndef __CLIENT_H__\n#define __CLIENT_H__\n\n#include <cstddef>\n#include <string>\n\n#include \"yaml-cpp/yaml.h\"\n\nnamespace client {\n\nenum ExecutionStatus {\n  kConnectFailed,\n  kExecuteError,\n  kServerCrash,\n  kNormal,\n  kTimeout,\n  kSyntaxError,\n  kSemanticError\n};\n\nclass DBClient {\n public:\n  virtual void initialize(YAML::Node) = 0;\n  virtual bool check_alive() = 0;\n  // Set up a clean environment for execution.\n  virtual void prepare_env() = 0;\n  virtual ExecutionStatus execute(const char *query, size_t size) = 0;\n  virtual void clean_up_env() {}\n};\n\nDBClient *create_client(const std::string &db_name, const YAML::Node &config);\n};  // namespace client\n\n#endif\n"
  },
  {
    "path": "srcs/internal/client/client_mysql.cc",
    "content": "#include \"client_mysql.h\"\n\n#include <unistd.h>\n\n#include <cstring>\n#include <deque>\n#include <iostream>\n#include <optional>\n#include <string>\n#include <string_view>\n\n#include \"mysql.h\"\n#include \"mysqld_error.h\"\n\nusing namespace std;\nnamespace {\nbool is_crash_response(int response) {\n  return response == CR_SERVER_LOST || response == CR_SERVER_GONE_ERROR;\n}\n};  // namespace\n\nnamespace client {\n\nvoid MySQLClient::initialize(YAML::Node config) {\n  host_ = config[\"host\"].as<std::string>();\n  user_name_ = config[\"user_name\"].as<std::string>();\n  passwd_ = config[\"passwd\"].as<std::string>();\n  sock_path_ = config[\"sock_path\"].as<std::string>();\n  db_prefix_ = config[\"db_prefix\"].as<std::string>();\n}\n\nvoid MySQLClient::prepare_env() {\n  ++database_id_;\n  std::string database_name = db_prefix_ + std::to_string(database_id_);\n  if (!create_database(database_name)) {\n    std::cerr << \"Failed to create database.\" << std::endl;\n  }\n}\n\nExecutionStatus MySQLClient::execute(const char *query, size_t size) {\n  // Create a connection for executing the query\n  // Check the response.\n  // Return status accordingly.\n  std::string database_name = db_prefix_ + std::to_string(database_id_);\n  std::optional<MYSQL> connection = create_connection(database_name);\n  if (!connection.has_value()) {\n    std::cerr << \"Cannot creat connection at execute \" << std::endl;\n    return kServerCrash;\n  }\n\n  int server_response = mysql_real_query(&(*connection), query, size);\n  if (is_crash_response(server_response)) {\n    std::cerr << \"Cannot mySQL_QUERY \" << std::endl;\n    return kServerCrash;\n  }\n  ExecutionStatus server_status = clean_up_connection(*connection);\n  mysql_close(&(*connection));\n  return server_status;\n}\n\nvoid MySQLClient::clean_up_env() {\n  std::string database_name = db_prefix_ + std::to_string(database_id_);\n  string reset_query = \"DROP DATABASE IF EXISTS \" + database_name + \";\";\n  std::optional<MYSQL> connection = create_connection(\"\");\n  if (!connection.has_value()) {\n    return;\n  }\n  // TODO: clean up the connection.\n  mysql_real_query(&(*connection), reset_query.c_str(), reset_query.size());\n  clean_up_connection((*connection));\n  mysql_close(&(*connection));\n}\n\nstd::optional<MYSQL> MySQLClient::create_connection(std::string_view db_name) {\n  MYSQL result;\n  if (mysql_init(&result) == NULL) return std::nullopt;\n\n  if (mysql_real_connect(&result, host_.c_str(), user_name_.c_str(),\n                         passwd_.c_str(), db_name.data(), 0, sock_path_.c_str(),\n                         CLIENT_MULTI_STATEMENTS) == NULL) {\n    std::cerr << \"Create connection failed: \" << mysql_errno(&result)\n              << mysql_error(&result) << std::endl;\n    mysql_close(&result);\n    return std::nullopt;\n  }\n\n  return result;\n}\n\nbool MySQLClient::check_alive() {\n  std::optional<MYSQL> connection = create_connection(\"\");\n  if (!connection.has_value()) {\n    return false;\n  }\n  mysql_close(&(*connection));\n  return true;\n}\n\nbool MySQLClient::create_database(const std::string &database) {\n  MYSQL tmp_m;\n\n  if (mysql_init(&tmp_m) == NULL) {\n    mysql_close(&tmp_m);\n    return false;\n  }\n\n  if (mysql_real_connect(&tmp_m, host_.c_str(), user_name_.c_str(),\n                         passwd_.c_str(), nullptr, 0, sock_path_.c_str(),\n                         CLIENT_MULTI_STATEMENTS) == NULL) {\n    fprintf(stderr, \"Connection error3 %d, %s\\n\", mysql_errno(&tmp_m),\n            mysql_error(&tmp_m));\n    mysql_close(&tmp_m);\n    return false;\n  }\n\n  string cmd = \"CREATE DATABASE IF NOT EXISTS \" + database + \";\";\n  // TODO: Check server response status.\n  mysql_real_query(&tmp_m, cmd.c_str(), cmd.size());\n  // std::cerr << \"Server response: \" << server_response << std::endl;\n  clean_up_connection(tmp_m);\n  mysql_close(&tmp_m);\n  return true;\n}\n\nExecutionStatus MySQLClient::clean_up_connection(MYSQL &mm) {\n  int res = -1;\n  do {\n    auto q_result = mysql_store_result(&mm);\n    if (q_result) mysql_free_result(q_result);\n  } while ((res = mysql_next_result(&mm)) == 0);\n\n  if (res != -1) {\n    res = mysql_errno(&mm);\n    if (is_crash_response(res)) {\n      // std::cerr << \"Found a crash!\" << std::endl;\n      return kServerCrash;\n    }\n    if (res == ER_PARSE_ERROR) {\n      // std::cerr << \"Syntax error\" << std::endl;\n      return kSyntaxError;\n    } else {\n      // std::cerr << \"Semantic error\" << std::endl;\n      return kSemanticError;\n    }\n  }\n  // std::cerr << \"Normal\" << std::endl;\n  return kNormal;\n}\n};  // namespace client\n"
  },
  {
    "path": "srcs/internal/client/client_mysql.h",
    "content": "#ifndef __CLIENT_MYSQL_H__\n#define __CLIENT_MYSQL_H__\n\n#include <cstddef>\n#include <optional>\n#include <string>\n\n#include \"client.h\"\n#include \"mysql.h\"\n#include \"yaml-cpp/yaml.h\"\n\nnamespace client {\n\nclass MySQLClient : public DBClient {\n public:\n  virtual void initialize(YAML::Node);\n  // Set up a clean environment for execution.\n  virtual void prepare_env();\n  virtual ExecutionStatus execute(const char *query, size_t size);\n  virtual void clean_up_env();\n  virtual bool check_alive();\n\n private:\n  ExecutionStatus clean_up_connection(MYSQL &);\n  bool create_database(const std::string &database);\n  std::optional<MYSQL> create_connection(const std::string_view db_name);\n\n  unsigned int database_id_ = 0;\n  std::string host_;\n  std::string user_name_;\n  std::string passwd_;\n  std::string sock_path_;\n  std::string db_prefix_;\n};\n\n};  // namespace client\n\n#endif\n"
  },
  {
    "path": "srcs/internal/client/client_postgresql.cc",
    "content": "#include \"client_postgresql.h\"\n\n#include <unistd.h>\n\n#include <cstring>\n#include <deque>\n#include <iostream>\n#include <optional>\n#include <string>\n#include <string_view>\n\n#include \"absl/strings/str_format.h\"\n#include \"client.h\"\n#include \"libpq-fe.h\"\n\nusing namespace std;\nnamespace {\nPGconn *create_connection(std::string_view db_name) {\n  std::string conninfo =\n      absl::StrFormat(\"hostaddr=%s port=%d dbname=%s connect_timeout=4\",\n                      \"127.0.0.1\", 5432, db_name);\n\n  std::cerr << \"Connection info: \" << conninfo << std::endl;\n  PGconn *result = PQconnectdb(conninfo.c_str());\n  if (PQstatus(result) == CONNECTION_BAD) {\n    fprintf(stderr, \"Error1: %s\\n\", PQerrorMessage(result));\n    std::cerr << \"BAd\" << std::endl;\n  }\n  return result;\n}\n\nvoid reset_database(PGconn *conn) {\n  auto res = PQexec(conn, \"DROP SCHEMA public CASCADE; CREATE SCHEMA public;\");\n  PQclear(res);\n}\n};  // namespace\n\nnamespace client {\n\nvoid PostgreSQLClient::initialize(YAML::Node config) {\n  host_ = config[\"host\"].as<std::string>();\n  port_ = config[\"port\"].as<std::string>();\n  user_name_ = config[\"user_name\"].as<std::string>();\n  passwd_ = config[\"passwd\"].as<std::string>();\n  db_name_ = config[\"db_name\"].as<std::string>();\n  std::cerr << \"Sock path: \" << sock_path_ << std::endl;\n}\n\nvoid PostgreSQLClient::prepare_env() {\n  PGconn *conn = create_connection(db_name_);\n  reset_database(conn);\n  PQfinish(conn);\n}\n\nExecutionStatus PostgreSQLClient::execute(const char *query, size_t size) {\n  auto conn = create_connection(db_name_);\n\n  if (PQstatus(conn) != CONNECTION_OK) {\n    fprintf(stderr, \"Error2: %s\\n\", PQerrorMessage(conn));\n    PQfinish(conn);\n    return kServerCrash;\n  }\n\n  std::string cmd(query, size);\n\n  auto res = PQexec(conn, cmd.c_str());\n  if (PQstatus(conn) != CONNECTION_OK) {\n    fprintf(stderr, \"Error3: %s\\n\", PQerrorMessage(conn));\n    PQclear(res);\n    return kServerCrash;\n  }\n\n  if (PQresultStatus(res) != PGRES_COMMAND_OK &&\n      PQresultStatus(res) != PGRES_TUPLES_OK) {\n    fprintf(stderr, \"Error4: %s\\n\", PQerrorMessage(conn));\n    PQclear(res);\n    PQfinish(conn);\n    return kExecuteError;\n  }\n  PQclear(res);\n  PQfinish(conn);\n  return kNormal;\n}\n\nvoid PostgreSQLClient::clean_up_env() {}\n\nbool PostgreSQLClient::check_alive() {\n  std::string conninfo = absl::StrFormat(\n      \"hostaddr=%s port=%d connect_timeout=4\", \"127.0.0.1\", 5432);\n  PGPing res = PQping(conninfo.c_str());\n  return res == PQPING_OK;\n}\n}  // namespace client\n"
  },
  {
    "path": "srcs/internal/client/client_postgresql.h",
    "content": "#ifndef __CLIENT_POSTGRESQL_H__\n#define __CLIENT_POSTGRESQL_H__\n\n#include <cstddef>\n#include <optional>\n#include <string>\n\n#include \"client.h\"\n#include \"yaml-cpp/yaml.h\"\n\nnamespace client {\n\nclass PostgreSQLClient : public DBClient {\n public:\n  virtual void initialize(YAML::Node);\n  // Set up a clean environment for execution.\n  virtual void prepare_env();\n  virtual ExecutionStatus execute(const char *query, size_t size);\n  virtual void clean_up_env();\n  virtual bool check_alive();\n\n private:\n  unsigned int database_id_ = 0;\n  std::string host_;\n  std::string port_;\n  std::string user_name_;\n  std::string passwd_;\n  std::string sock_path_;\n  std::string db_name_;\n};\n\n};  // namespace client\n\n#endif\n"
  },
  {
    "path": "srcs/internal/client/test_client.cc",
    "content": "#include <cassert>\n#include <cstring>\n#include <iostream>\n#include <string>\n\n#include \"client.h\"\n#include \"yaml-cpp/yaml.h\"\n\nint main(int argc, char **argv) {\n  YAML::Node config = YAML::LoadFile(std::string(argv[1]));\n\n  std::string db_name = config[\"db\"].as<std::string>();\n  // client::PostgreSQLClient *test_client = new client::PostgreSQLClient;\n  client::DBClient *test_client = client::create_client(db_name, config);\n  test_client->initialize(config);\n  /*\n  if (test_client.connect()) {\n    std::cout << \"Success!\" << std::endl;\n  } else {\n    std::cout << \"Failed!\" << std::endl;\n  }\n  */\n\n  const char *query = \"select 1;\";\n  for (int i = 0; i < 0x100; ++i) {\n    test_client->prepare_env();\n    client::ExecutionStatus result = test_client->execute(query, strlen(query));\n    assert(result == client::kNormal);\n    test_client->clean_up_env();\n  }\n}\n"
  },
  {
    "path": "srcs/internal/mysql/include/ast.h",
    "content": "#ifndef __AST_H__\n#define __AST_H__\n#include <iostream>\n#include <string>\n#include <vector>\n\n#include \"define.h\"\nusing namespace std;\n\nenum NODETYPE {\n#define DECLARE_TYPE(v) v,\n  ALLTYPE(DECLARE_TYPE)\n#undef DECLARE_TYPE\n};\ntypedef NODETYPE IRTYPE;\n\nenum CASEIDX {\n  CASE0,\n  CASE1,\n  CASE2,\n  CASE3,\n  CASE4,\n  CASE5,\n  CASE6,\n  CASE7,\n  CASE8,\n  CASE9,\n  CASE10,\n  CASE11,\n  CASE12,\n  CASE13,\n  CASE14,\n  CASE15,\n  CASE16,\n  CASE17,\n  CASE18,\n  CASE19,\n  CASE20,\n  CASE21,\n  CASE22,\n  CASE23,\n  CASE24,\n  CASE25,\n  CASE26,\n  CASE27,\n  CASE28,\n  CASE29,\n  CASE30,\n  CASE31,\n  CASE32,\n  CASE33,\n  CASE34,\n  CASE35,\n  CASE36,\n  CASE37,\n  CASE38,\n  CASE39,\n  CASE40,\n  CASE41,\n  CASE42,\n  CASE43,\n  CASE44,\n  CASE45,\n  CASE46,\n  CASE47,\n  CASE48,\n  CASE49,\n  CASE50,\n  CASE51,\n  CASE52,\n  CASE53,\n  CASE54,\n  CASE55,\n  CASE56,\n  CASE57,\n  CASE58,\n  CASE59,\n  CASE60,\n  CASE61,\n  CASE62,\n  CASE63,\n  CASE64,\n  CASE65,\n  CASE66,\n  CASE67,\n  CASE68,\n  CASE69,\n  CASE70,\n  CASE71,\n  CASE72,\n  CASE73,\n  CASE74,\n  CASE75,\n  CASE76,\n  CASE77,\n  CASE78,\n  CASE79,\n  CASE80,\n  CASE81,\n  CASE82,\n  CASE83,\n  CASE84,\n  CASE85,\n  CASE86,\n  CASE87,\n  CASE88,\n  CASE89,\n  CASE90,\n  CASE91,\n  CASE92,\n  CASE93,\n  CASE94,\n  CASE95,\n  CASE96,\n  CASE97,\n  CASE98,\n  CASE99,\n  CASE100,\n  CASE101,\n  CASE102,\n  CASE103,\n  CASE104,\n  CASE105,\n  CASE106,\n  CASE107,\n  CASE108,\n  CASE109,\n  CASE110,\n  CASE111,\n  CASE112,\n  CASE113,\n  CASE114,\n  CASE115,\n  CASE116,\n  CASE117,\n  CASE118,\n  CASE119,\n  CASE120,\n  CASE121,\n  CASE122,\n  CASE123,\n  CASE124,\n  CASE125,\n  CASE126,\n  CASE127,\n  CASE128,\n  CASE129,\n  CASE130,\n  CASE131,\n  CASE132,\n  CASE133,\n  CASE134,\n  CASE135,\n  CASE136,\n  CASE137,\n  CASE138,\n  CASE139,\n  CASE140,\n  CASE141,\n  CASE142,\n  CASE143,\n  CASE144,\n  CASE145,\n  CASE146,\n  CASE147,\n  CASE148,\n  CASE149,\n  CASE150,\n  CASE151,\n  CASE152,\n  CASE153,\n  CASE154,\n  CASE155,\n  CASE156,\n  CASE157,\n  CASE158,\n  CASE159,\n  CASE160,\n  CASE161,\n  CASE162,\n  CASE163,\n  CASE164,\n  CASE165,\n  CASE166,\n  CASE167,\n  CASE168,\n  CASE169,\n  CASE170,\n  CASE171,\n  CASE172,\n  CASE173,\n  CASE174,\n  CASE175,\n  CASE176,\n  CASE177,\n  CASE178,\n  CASE179,\n  CASE180,\n  CASE181,\n  CASE182,\n  CASE183,\n  CASE184,\n  CASE185,\n  CASE186,\n  CASE187,\n  CASE188,\n  CASE189,\n  CASE190,\n  CASE191,\n  CASE192,\n  CASE193,\n  CASE194,\n  CASE195,\n  CASE196,\n  CASE197,\n  CASE198,\n  CASE199,\n  CASE200,\n  CASE201,\n  CASE202,\n  CASE203,\n  CASE204,\n  CASE205,\n  CASE206,\n  CASE207,\n  CASE208,\n  CASE209,\n  CASE210,\n  CASE211,\n  CASE212,\n  CASE213,\n  CASE214,\n  CASE215,\n  CASE216,\n  CASE217,\n  CASE218,\n  CASE219,\n  CASE220,\n  CASE221,\n  CASE222,\n  CASE223,\n  CASE224,\n  CASE225,\n  CASE226,\n  CASE227,\n  CASE228,\n  CASE229,\n  CASE230,\n  CASE231,\n  CASE232,\n  CASE233,\n  CASE234,\n  CASE235,\n  CASE236,\n  CASE237,\n  CASE238,\n  CASE239,\n  CASE240,\n  CASE241,\n  CASE242,\n  CASE243,\n  CASE244,\n  CASE245,\n  CASE246,\n  CASE247,\n  CASE248,\n  CASE249,\n  CASE250,\n  CASE251,\n  CASE252,\n  CASE253,\n  CASE254,\n  CASE255,\n  CASE256,\n  CASE257,\n  CASE258,\n  CASE259,\n  CASE260,\n  CASE261,\n  CASE262,\n  CASE263,\n  CASE264,\n  CASE265,\n  CASE266,\n  CASE267,\n  CASE268,\n  CASE269,\n  CASE270,\n  CASE271,\n  CASE272,\n  CASE273,\n  CASE274,\n  CASE275,\n  CASE276,\n  CASE277,\n  CASE278,\n  CASE279,\n  CASE280,\n  CASE281,\n  CASE282,\n  CASE283,\n  CASE284,\n  CASE285,\n  CASE286,\n  CASE287,\n  CASE288,\n  CASE289,\n  CASE290,\n  CASE291,\n  CASE292,\n  CASE293,\n  CASE294,\n  CASE295,\n  CASE296,\n  CASE297,\n  CASE298,\n  CASE299,\n  CASE300,\n  CASE301,\n  CASE302,\n  CASE303,\n  CASE304,\n  CASE305,\n  CASE306,\n  CASE307,\n  CASE308,\n  CASE309,\n  CASE310,\n  CASE311,\n  CASE312,\n  CASE313,\n  CASE314,\n  CASE315,\n  CASE316,\n  CASE317,\n  CASE318,\n  CASE319,\n  CASE320,\n  CASE321,\n  CASE322,\n  CASE323,\n  CASE324,\n  CASE325,\n  CASE326,\n  CASE327,\n  CASE328,\n  CASE329,\n  CASE330,\n  CASE331,\n  CASE332,\n  CASE333,\n  CASE334,\n  CASE335,\n  CASE336,\n  CASE337,\n  CASE338,\n  CASE339,\n  CASE340,\n  CASE341,\n  CASE342,\n  CASE343,\n  CASE344,\n  CASE345,\n  CASE346,\n  CASE347,\n  CASE348,\n  CASE349,\n  CASE350,\n  CASE351,\n  CASE352,\n  CASE353,\n  CASE354,\n  CASE355,\n  CASE356,\n  CASE357,\n  CASE358,\n  CASE359,\n  CASE360,\n  CASE361,\n  CASE362,\n  CASE363,\n  CASE364,\n  CASE365,\n  CASE366,\n  CASE367,\n  CASE368,\n  CASE369,\n  CASE370,\n  CASE371,\n  CASE372,\n  CASE373,\n  CASE374,\n  CASE375,\n  CASE376,\n  CASE377,\n  CASE378,\n  CASE379,\n  CASE380,\n  CASE381,\n  CASE382,\n  CASE383,\n  CASE384,\n  CASE385,\n  CASE386,\n  CASE387,\n  CASE388,\n  CASE389,\n  CASE390,\n  CASE391,\n  CASE392,\n  CASE393,\n  CASE394,\n  CASE395,\n  CASE396,\n  CASE397,\n  CASE398,\n  CASE399,\n};\n\nenum DATATYPE {\n#define DECLARE_TYPE(v) k##v,\n  ALLDATATYPE(DECLARE_TYPE)\n#undef DECLARE_TYPE\n};\n\n#define GEN_NAME() name_ = gen_id_name();\n\nstatic unsigned long g_id_counter;\n\nstatic inline void reset_id_counter() { g_id_counter = 0; }\n\nstatic string gen_id_name() { return \"v\" + to_string(g_id_counter++); }\n\nclass IROperator {\n public:\n  IROperator(string prefix = \"\", string middle = \"\", string suffix = \"\")\n      : prefix_(prefix), middle_(middle), suffix_(suffix) {}\n\n  string prefix_;\n  string middle_;\n  string suffix_;\n};\n\nenum UnionType {\n  kUnionUnknown = 0,\n  kUnionString = 1,\n  kUnionFloat,\n  kUnionInt,\n  kUnionLong,\n  kUnionBool,\n};\n\nenum DATAFLAG {\n  kUse = 0x8,\n  kMapToClosestOne = 0x10,\n  kNoSplit = 0x100,\n  kGlobal = 0x4,\n  kReplace = 0x40,\n  kUndefine = 0x2,\n  kAlias = 0x80,\n  kMapToAll = 0x20,\n  kDefine = 0x1,\n};\n#define isUse(a) ((a)&kUse)\n#define isMapToClosestOne(a) ((a)&kMapToClosestOne)\n#define isNoSplit(a) ((a)&kNoSplit)\n#define isGlobal(a) ((a)&kGlobal)\n#define isReplace(a) ((a)&kReplace)\n#define isUndefine(a) ((a)&kUndefine)\n#define isAlias(a) ((a)&kAlias)\n#define isMapToAll(a) ((a)&kMapToAll)\n#define isDefine(a) ((a)&kDefine)\n\nclass IR {\n public:\n  IR(IRTYPE type, IROperator* op, IR* left = NULL, IR* right = NULL)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        data_type_(kDataWhatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, string str_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        str_val_(str_val),\n        op_(NULL),\n        left_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(data_type),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, bool b_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        bool_val_(b_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, unsigned long long_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        long_val_(long_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, int int_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        int_val_(int_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, double f_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        float_val_(f_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, IROperator* op, IR* left, IR* right, double f_val,\n     string str_val, string name, unsigned int mutated_times, int scope,\n     DATAFLAG flag)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        name_(name),\n        str_val_(str_val),\n        float_val_(f_val),\n        mutated_times_(mutated_times),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {}\n\n  IR(const IR* ir, IR* left, IR* right) {\n    this->type_ = ir->type_;\n    if (ir->op_ != NULL)\n      this->op_ = OP3(ir->op_->prefix_, ir->op_->middle_, ir->op_->suffix_);\n    else {\n      this->op_ = OP0();\n    }\n    this->left_ = left;\n    this->right_ = right;\n    this->str_val_ = ir->str_val_;\n    this->long_val_ = ir->long_val_;\n    this->data_type_ = ir->data_type_;\n    this->scope_ = ir->scope_;\n    this->data_flag_ = ir->data_flag_;\n    this->name_ = ir->name_;\n    this->operand_num_ = ir->operand_num_;\n    this->mutated_times_ = ir->mutated_times_;\n  }\n\n  union {\n    int int_val_;\n    unsigned long long_val_;\n    double float_val_;\n    bool bool_val_;\n  };\n\n  int scope_;\n  DATAFLAG data_flag_;\n  DATATYPE data_type_;\n  IRTYPE type_;\n  string name_;\n\n  string str_val_;\n  // int int_val_ = 0xdeadbeef;\n  // double float_val_ = 1.234;\n\n  IROperator* op_;\n  IR* left_;\n  IR* right_;\n  int operand_num_;\n  unsigned int mutated_times_ = 0;\n\n  string to_string();\n  string to_string_core();\n};\n\nclass Node {\n public:\n  void set_sub_type(unsigned int i) { case_idx_ = i; }\n  NODETYPE type_;\n  DATATYPE data_type_;\n  DATAFLAG data_flag_;\n  int scope_;\n  unsigned int case_idx_;\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate() {}\n  virtual void deep_delete() {}\n  Node(){};\n  ~Node(){};\n};\n\nNode* generate_ast_node_by_type(IRTYPE);\n\nDATATYPE get_datatype_by_string(string s);\n\nNODETYPE get_nodetype_by_string(string s);\n\nstring get_string_by_nodetype(NODETYPE tt);\nstring get_string_by_datatype(DATATYPE tt);\nIR* deep_copy(const IR* root);\n\nvoid deep_delete(IR* root);\n\n#define DECLARE_CLASS(v) class v;\nALLCLASS(DECLARE_CLASS);\n#undef DECLARE_CLASS\n\nclass Program : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Stmtlist* stmtlist_;\n};\n\nclass Stmtlist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Stmt* stmt_;\n  Stmtlist* stmtlist_;\n};\n\nclass Stmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  InsertStmt* insert_stmt_;\n  DropStmt* drop_stmt_;\n  CreateStmt* create_stmt_;\n  SelectStmt* select_stmt_;\n  AlterStmt* alter_stmt_;\n  UpdateStmt* update_stmt_;\n};\n\nclass CreateStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CreateTriggerStmt* create_trigger_stmt_;\n  CreateIndexStmt* create_index_stmt_;\n  CreateViewStmt* create_view_stmt_;\n  CreateTableStmt* create_table_stmt_;\n};\n\nclass DropStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  DropTableStmt* drop_table_stmt_;\n  DropViewStmt* drop_view_stmt_;\n  DropIndexStmt* drop_index_stmt_;\n  DropTriggerStmt* drop_trigger_stmt_;\n};\n\nclass AlterStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  AlterAction* alter_action_;\n  TableName* table_name_;\n};\n\nclass SelectStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectNoParens* select_no_parens_;\n  SelectWithParens* select_with_parens_;\n};\n\nclass SelectWithParens : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectNoParens* select_no_parens_;\n  SelectWithParens* select_with_parens_;\n};\n\nclass SelectNoParens : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectClauseList* select_clause_list_;\n  OptWithClause* opt_with_clause_;\n  OptOrderClause* opt_order_clause_;\n  OptLimitClause* opt_limit_clause_;\n};\n\nclass SelectClauseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectClauseList* select_clause_list_;\n  CombineClause* combine_clause_;\n  SelectClause* select_clause_;\n};\n\nclass SelectClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptGroupClause* opt_group_clause_;\n  OptAllOrDistinct* opt_all_or_distinct_;\n  OptFromClause* opt_from_clause_;\n  OptWindowClause* opt_window_clause_;\n  SelectTarget* select_target_;\n  OptWhereClause* opt_where_clause_;\n};\n\nclass CombineClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptFromClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FromClause* from_clause_;\n};\n\nclass SelectTarget : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptWindowClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowClause* window_clause_;\n};\n\nclass WindowClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowDefList* window_def_list_;\n};\n\nclass WindowDefList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowDef* window_def_;\n  WindowDefList* window_def_list_;\n};\n\nclass WindowDef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Window* window_;\n  WindowName* window_name_;\n};\n\nclass WindowName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass Window : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptExistWindowName* opt_exist_window_name_;\n  OptFrameClause* opt_frame_clause_;\n  OptPartition* opt_partition_;\n  OptOrderClause* opt_order_clause_;\n};\n\nclass OptPartition : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptFrameClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBoundStart* frame_bound_start_;\n  RangeOrRows* range_or_rows_;\n  FrameBoundEnd* frame_bound_end_;\n};\n\nclass RangeOrRows : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass FrameBoundStart : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBound* frame_bound_;\n};\n\nclass FrameBoundEnd : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBound* frame_bound_;\n};\n\nclass FrameBound : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptExistWindowName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass OptGroupClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n  OptHavingClause* opt_having_clause_;\n};\n\nclass OptHavingClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptWhereClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WhereClause* where_clause_;\n};\n\nclass WhereClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass FromClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableRef* table_ref_;\n};\n\nclass TableRef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptAsAlias* opt_as_alias_;\n  OptTablePrefix* opt_table_prefix_;\n  ExprList* expr_list_;\n  OptIndex* opt_index_;\n  OptOn* opt_on_;\n  SelectNoParens* select_no_parens_;\n  OptUsing* opt_using_;\n  TableName* table_name_;\n  TableRef* table_ref_;\n  FunctionName* function_name_;\n};\n\nclass OptIndex : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnName* column_name_;\n};\n\nclass OptOn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptUsing : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnNameList* column_name_list_;\n};\n\nclass ColumnNameList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnNameList* column_name_list_;\n  ColumnName* column_name_;\n};\n\nclass OptTablePrefix : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  JoinOp* join_op_;\n  TableRef* table_ref_;\n};\n\nclass JoinOp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptJoinType* opt_join_type_;\n};\n\nclass OptJoinType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ExprList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  OptAsAlias* opt_as_alias_;\n  ExprList* expr_list_;\n};\n\nclass OptLimitClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  LimitClause* limit_clause_;\n};\n\nclass LimitClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass OptLimitRowCount : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptOrderClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OrderItemList* order_item_list_;\n};\n\nclass OptOrderNulls : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OrderItemList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OrderItem* order_item_;\n  OrderItemList* order_item_list_;\n};\n\nclass OrderItem : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  OptOrderNulls* opt_order_nulls_;\n  OptOrderBehavior* opt_order_behavior_;\n};\n\nclass OptOrderBehavior : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptWithClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableList* cte_table_list_;\n};\n\nclass CteTableList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableList* cte_table_list_;\n  CteTable* cte_table_;\n};\n\nclass CteTable : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableName* cte_table_name_;\n  SelectStmt* select_stmt_;\n};\n\nclass CteTableName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptColumnNameListP* opt_column_name_list_p_;\n  TableName* table_name_;\n};\n\nclass OptAllOrDistinct : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass CreateTableStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptTableOptionList* opt_table_option_list_;\n  OptTableConstraintList* opt_table_constraint_list_;\n  OptTemp* opt_temp_;\n  SelectStmt* select_stmt_;\n  TableName* table_name_;\n  ColumnDefList* column_def_list_;\n  OptIgnoreOrReplace* opt_ignore_or_replace_;\n  OptIfNotExist* opt_if_not_exist_;\n};\n\nclass CreateIndexStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_1_;\n  TableName* table_name_2_;\n  OptIndexOption* opt_index_option_;\n  OptIndexKeyword* opt_index_keyword_;\n  IndexedColumnList* indexed_column_list_;\n  OptExtraOption* opt_extra_option_;\n};\n\nclass CreateTriggerStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TriggerActionTime* trigger_action_time_;\n  TriggerName* trigger_name_;\n  TableName* table_name_;\n  TriggerEvents* trigger_events_;\n  TriggerBody* trigger_body_;\n};\n\nclass CreateViewStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptViewAlgorithm* opt_view_algorithm_;\n  OptCheckOption* opt_check_option_;\n  OptSqlSecurity* opt_sql_security_;\n  ViewName* view_name_;\n  SelectStmt* select_stmt_;\n  OptColumnNameListP* opt_column_name_list_p_;\n};\n\nclass OptTableOptionList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableOptionList* table_option_list_;\n};\n\nclass TableOptionList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableOptionList* table_option_list_;\n  OptOpComma* opt_op_comma_;\n  TableOption* table_option_;\n};\n\nclass TableOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptOpEqual* opt_op_equal_;\n};\n\nclass OptOpComma : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptIgnoreOrReplace : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptViewAlgorithm : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptSqlSecurity : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptIndexOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptExtraOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  LockOption* lock_option_;\n  IndexAlgorithmOption* index_algorithm_option_;\n};\n\nclass IndexAlgorithmOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptOpEqual* opt_op_equal_;\n};\n\nclass LockOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptOpEqual* opt_op_equal_;\n};\n\nclass OptOpEqual : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass TriggerEvents : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass TriggerName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass TriggerActionTime : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass DropIndexStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_;\n  OptExtraOption* opt_extra_option_;\n};\n\nclass DropTableStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptTemp* opt_temp_;\n  TableName* table_name_;\n  OptRestrictOrCascade* opt_restrict_or_cascade_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass OptRestrictOrCascade : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass DropTriggerStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TriggerName* trigger_name_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass DropViewStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ViewName* view_name_;\n  OptRestrictOrCascade* opt_restrict_or_cascade_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass InsertStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  InsertRest* insert_rest_;\n  OptAsAlias* opt_as_alias_;\n  TableName* table_name_;\n  OptOnConflict* opt_on_conflict_;\n  OptWithClause* opt_with_clause_;\n};\n\nclass InsertRest : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptColumnNameListP* opt_column_name_list_p_;\n  SuperValuesList* super_values_list_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass SuperValuesList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ValuesList* values_list_;\n  SuperValuesList* super_values_list_;\n};\n\nclass ValuesList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptOnConflict : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptConflictExpr* opt_conflict_expr_;\n  SetClauseList* set_clause_list_;\n  WhereClause* where_clause_;\n};\n\nclass OptConflictExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IndexedColumnList* indexed_column_list_;\n  WhereClause* where_clause_;\n};\n\nclass IndexedColumnList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IndexedColumn* indexed_column_;\n  IndexedColumnList* indexed_column_list_;\n};\n\nclass IndexedColumn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  OptOrderBehavior* opt_order_behavior_;\n};\n\nclass UpdateStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptAsAlias* opt_as_alias_;\n  OptWhereClause* opt_where_clause_;\n  TableName* table_name_;\n  SetClauseList* set_clause_list_;\n  OptLimitRowCount* opt_limit_row_count_;\n  OptOrderClause* opt_order_clause_;\n};\n\nclass AlterAction : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnDef* column_def_;\n  AlterConstantAction* alter_constant_action_;\n  OptColumn* opt_column_;\n  TableName* table_name_;\n  ColumnName* column_name_1_;\n  ColumnName* column_name_2_;\n};\n\nclass AlterConstantAction : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  LockOption* lock_option_;\n};\n\nclass ColumnDefList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnDef* column_def_;\n  ColumnDefList* column_def_list_;\n};\n\nclass ColumnDef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TypeName* type_name_;\n  Identifier* identifier_;\n  OptColumnConstraintList* opt_column_constraint_list_;\n};\n\nclass OptColumnConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnConstraintList* column_constraint_list_;\n  OptReferenceClause* opt_reference_clause_;\n  OptCheck* opt_check_;\n};\n\nclass ColumnConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnConstraintList* column_constraint_list_;\n  ColumnConstraint* column_constraint_;\n};\n\nclass ColumnConstraint : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ConstraintType* constraint_type_;\n};\n\nclass OptReferenceClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ReferenceClause* reference_clause_;\n  OptForeignKey* opt_foreign_key_;\n};\n\nclass OptCheck : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptEnforced* opt_enforced_;\n  Expr* expr_;\n};\n\nclass ConstraintType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ReferenceClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptConstraintAttributeSpec* opt_constraint_attribute_spec_;\n  OptColumnNameListP* opt_column_name_list_p_;\n  TableName* table_name_;\n  OptForeignKeyActions* opt_foreign_key_actions_;\n};\n\nclass OptForeignKey : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptForeignKeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ForeignKeyActions* foreign_key_actions_;\n};\n\nclass ForeignKeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  KeyActions* key_actions_;\n};\n\nclass KeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptConstraintAttributeSpec : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptInitialTime* opt_initial_time_;\n};\n\nclass OptInitialTime : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ConstraintName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Name* name_;\n};\n\nclass OptTemp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptCheckOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptColumnNameListP : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnNameList* column_name_list_;\n};\n\nclass SetClauseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SetClause* set_clause_;\n  SetClauseList* set_clause_list_;\n};\n\nclass SetClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  ColumnNameList* column_name_list_;\n  ColumnName* column_name_;\n};\n\nclass OptAsAlias : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  AsAlias* as_alias_;\n};\n\nclass Expr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CastExpr* cast_expr_;\n  InExpr* in_expr_;\n  BetweenExpr* between_expr_;\n  Operand* operand_;\n  ExistsExpr* exists_expr_;\n  LogicExpr* logic_expr_;\n};\n\nclass Operand : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FunctionExpr* function_expr_;\n  UnaryExpr* unary_expr_;\n  ExprList* expr_list_;\n  CaseExpr* case_expr_;\n  ArrayExpr* array_expr_;\n  SelectNoParens* select_no_parens_;\n  ExtractExpr* extract_expr_;\n  ArrayIndex* array_index_;\n  BinaryExpr* binary_expr_;\n  ScalarExpr* scalar_expr_;\n};\n\nclass CastExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  TypeName* type_name_;\n};\n\nclass ScalarExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Literal* literal_;\n  ColumnName* column_name_;\n};\n\nclass UnaryExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n};\n\nclass BinaryExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n  BinaryOp* binary_op_;\n  CompExpr* comp_expr_;\n};\n\nclass LogicExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass InExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n  ExprList* expr_list_;\n  OptNot* opt_not_;\n  TableName* table_name_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass CaseExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n  CaseList* case_list_;\n};\n\nclass BetweenExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n  Operand* operand_3_;\n};\n\nclass ExistsExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptNot* opt_not_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass FunctionExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n  FunctionName* function_name_;\n  OptFilterClause* opt_filter_clause_;\n  OptDistinct* opt_distinct_;\n  OptOverClause* opt_over_clause_;\n};\n\nclass OptDistinct : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptFilterClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptOverClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Window* window_;\n  WindowName* window_name_;\n};\n\nclass CaseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CaseList* case_list_;\n  CaseClause* case_clause_;\n};\n\nclass CaseClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass CompExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n};\n\nclass ExtractExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  DatetimeField* datetime_field_;\n  Expr* expr_;\n};\n\nclass DatetimeField : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ArrayExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass ArrayIndex : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n  IntLiteral* int_literal_;\n};\n\nclass Literal : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  BoolLiteral* bool_literal_;\n  StringLiteral* string_literal_;\n  NumLiteral* num_literal_;\n};\n\nclass StringLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  string string_val_;\n};\n\nclass BoolLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass NumLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IntLiteral* int_literal_;\n  FloatLiteral* float_literal_;\n};\n\nclass IntLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  int int_val_;\n};\n\nclass FloatLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  float float_val_;\n};\n\nclass OptColumn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass TriggerBody : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  AlterStmt* alter_stmt_;\n  DropStmt* drop_stmt_;\n  InsertStmt* insert_stmt_;\n  UpdateStmt* update_stmt_;\n};\n\nclass OptIfNotExist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptIfExist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass Identifier : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  string string_val_;\n};\n\nclass AsAlias : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass TableName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass ColumnName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass OptIndexKeyword : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ViewName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass FunctionName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass BinaryOp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptNot : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass Name : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass TypeName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  NumericType* numeric_type_;\n  CharacterType* character_type_;\n};\n\nclass CharacterType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterWithLength* character_with_length_;\n  CharacterWithoutLength* character_without_length_;\n};\n\nclass CharacterWithLength : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterConflicta* character_conflicta_;\n  IntLiteral* int_literal_;\n};\n\nclass CharacterWithoutLength : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterConflicta* character_conflicta_;\n};\n\nclass CharacterConflicta : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass NumericType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptTableConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableConstraintList* table_constraint_list_;\n};\n\nclass TableConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableConstraint* table_constraint_;\n  TableConstraintList* table_constraint_list_;\n};\n\nclass TableConstraint : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IndexedColumnList* indexed_column_list_;\n  ColumnNameList* column_name_list_;\n  Expr* expr_;\n  ConstraintName* constraint_name_;\n  OptEnforced* opt_enforced_;\n  ReferenceClause* reference_clause_;\n};\n\nclass OptEnforced : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/mysql/include/define.h",
    "content": "#pragma once\n#ifndef __DEFINE_H__\n#define __DEFINE_H__\n\n#define ALLTYPE(V)               \\\n  V(kProgram)                    \\\n  V(kStmtlist)                   \\\n  V(kStmt)                       \\\n  V(kCreateStmt)                 \\\n  V(kDropStmt)                   \\\n  V(kAlterStmt)                  \\\n  V(kSelectStmt)                 \\\n  V(kSelectWithParens)           \\\n  V(kSelectNoParens)             \\\n  V(kSelectClauseList)           \\\n  V(kSelectClause)               \\\n  V(kCombineClause)              \\\n  V(kOptFromClause)              \\\n  V(kSelectTarget)               \\\n  V(kOptWindowClause)            \\\n  V(kWindowClause)               \\\n  V(kWindowDefList)              \\\n  V(kWindowDef)                  \\\n  V(kWindowName)                 \\\n  V(kWindow)                     \\\n  V(kOptPartition)               \\\n  V(kOptFrameClause)             \\\n  V(kRangeOrRows)                \\\n  V(kFrameBoundStart)            \\\n  V(kFrameBoundEnd)              \\\n  V(kFrameBound)                 \\\n  V(kOptExistWindowName)         \\\n  V(kOptGroupClause)             \\\n  V(kOptHavingClause)            \\\n  V(kOptWhereClause)             \\\n  V(kWhereClause)                \\\n  V(kFromClause)                 \\\n  V(kTableRef)                   \\\n  V(kOptIndex)                   \\\n  V(kOptOn)                      \\\n  V(kOptUsing)                   \\\n  V(kColumnNameList)             \\\n  V(kOptTablePrefix)             \\\n  V(kJoinOp)                     \\\n  V(kOptJoinType)                \\\n  V(kExprList)                   \\\n  V(kOptLimitClause)             \\\n  V(kLimitClause)                \\\n  V(kOptLimitRowCount)           \\\n  V(kOptOrderClause)             \\\n  V(kOptOrderNulls)              \\\n  V(kOrderItemList)              \\\n  V(kOrderItem)                  \\\n  V(kOptOrderBehavior)           \\\n  V(kOptWithClause)              \\\n  V(kCteTableList)               \\\n  V(kCteTable)                   \\\n  V(kCteTableName)               \\\n  V(kOptAllOrDistinct)           \\\n  V(kCreateTableStmt)            \\\n  V(kCreateIndexStmt)            \\\n  V(kCreateTriggerStmt)          \\\n  V(kCreateViewStmt)             \\\n  V(kOptTableOptionList)         \\\n  V(kTableOptionList)            \\\n  V(kTableOption)                \\\n  V(kOptOpComma)                 \\\n  V(kOptIgnoreOrReplace)         \\\n  V(kOptViewAlgorithm)           \\\n  V(kOptSqlSecurity)             \\\n  V(kOptIndexOption)             \\\n  V(kOptExtraOption)             \\\n  V(kIndexAlgorithmOption)       \\\n  V(kLockOption)                 \\\n  V(kOptOpEqual)                 \\\n  V(kTriggerEvents)              \\\n  V(kTriggerName)                \\\n  V(kTriggerActionTime)          \\\n  V(kDropIndexStmt)              \\\n  V(kDropTableStmt)              \\\n  V(kOptRestrictOrCascade)       \\\n  V(kDropTriggerStmt)            \\\n  V(kDropViewStmt)               \\\n  V(kInsertStmt)                 \\\n  V(kInsertRest)                 \\\n  V(kSuperValuesList)            \\\n  V(kValuesList)                 \\\n  V(kOptOnConflict)              \\\n  V(kOptConflictExpr)            \\\n  V(kIndexedColumnList)          \\\n  V(kIndexedColumn)              \\\n  V(kUpdateStmt)                 \\\n  V(kAlterAction)                \\\n  V(kAlterConstantAction)        \\\n  V(kColumnDefList)              \\\n  V(kColumnDef)                  \\\n  V(kOptColumnConstraintList)    \\\n  V(kColumnConstraintList)       \\\n  V(kColumnConstraint)           \\\n  V(kOptReferenceClause)         \\\n  V(kOptCheck)                   \\\n  V(kConstraintType)             \\\n  V(kReferenceClause)            \\\n  V(kOptForeignKey)              \\\n  V(kOptForeignKeyActions)       \\\n  V(kForeignKeyActions)          \\\n  V(kKeyActions)                 \\\n  V(kOptConstraintAttributeSpec) \\\n  V(kOptInitialTime)             \\\n  V(kConstraintName)             \\\n  V(kOptTemp)                    \\\n  V(kOptCheckOption)             \\\n  V(kOptColumnNameListP)         \\\n  V(kSetClauseList)              \\\n  V(kSetClause)                  \\\n  V(kOptAsAlias)                 \\\n  V(kExpr)                       \\\n  V(kOperand)                    \\\n  V(kCastExpr)                   \\\n  V(kScalarExpr)                 \\\n  V(kUnaryExpr)                  \\\n  V(kBinaryExpr)                 \\\n  V(kLogicExpr)                  \\\n  V(kInExpr)                     \\\n  V(kCaseExpr)                   \\\n  V(kBetweenExpr)                \\\n  V(kExistsExpr)                 \\\n  V(kFunctionExpr)               \\\n  V(kOptDistinct)                \\\n  V(kOptFilterClause)            \\\n  V(kOptOverClause)              \\\n  V(kCaseList)                   \\\n  V(kCaseClause)                 \\\n  V(kCompExpr)                   \\\n  V(kExtractExpr)                \\\n  V(kDatetimeField)              \\\n  V(kArrayExpr)                  \\\n  V(kArrayIndex)                 \\\n  V(kLiteral)                    \\\n  V(kStringLiteral)              \\\n  V(kBoolLiteral)                \\\n  V(kNumLiteral)                 \\\n  V(kIntLiteral)                 \\\n  V(kFloatLiteral)               \\\n  V(kOptColumn)                  \\\n  V(kTriggerBody)                \\\n  V(kOptIfNotExist)              \\\n  V(kOptIfExist)                 \\\n  V(kIdentifier)                 \\\n  V(kAsAlias)                    \\\n  V(kTableName)                  \\\n  V(kColumnName)                 \\\n  V(kOptIndexKeyword)            \\\n  V(kViewName)                   \\\n  V(kFunctionName)               \\\n  V(kBinaryOp)                   \\\n  V(kOptNot)                     \\\n  V(kName)                       \\\n  V(kTypeName)                   \\\n  V(kCharacterType)              \\\n  V(kCharacterWithLength)        \\\n  V(kCharacterWithoutLength)     \\\n  V(kCharacterConflicta)         \\\n  V(kNumericType)                \\\n  V(kOptTableConstraintList)     \\\n  V(kTableConstraintList)        \\\n  V(kTableConstraint)            \\\n  V(kOptEnforced)                \\\n  V(kUnknown)\n\n#define ALLCLASS(V)             \\\n  V(Program)                    \\\n  V(Stmtlist)                   \\\n  V(Stmt)                       \\\n  V(CreateStmt)                 \\\n  V(DropStmt)                   \\\n  V(AlterStmt)                  \\\n  V(SelectStmt)                 \\\n  V(SelectWithParens)           \\\n  V(SelectNoParens)             \\\n  V(SelectClauseList)           \\\n  V(SelectClause)               \\\n  V(CombineClause)              \\\n  V(OptFromClause)              \\\n  V(SelectTarget)               \\\n  V(OptWindowClause)            \\\n  V(WindowClause)               \\\n  V(WindowDefList)              \\\n  V(WindowDef)                  \\\n  V(WindowName)                 \\\n  V(Window)                     \\\n  V(OptPartition)               \\\n  V(OptFrameClause)             \\\n  V(RangeOrRows)                \\\n  V(FrameBoundStart)            \\\n  V(FrameBoundEnd)              \\\n  V(FrameBound)                 \\\n  V(OptExistWindowName)         \\\n  V(OptGroupClause)             \\\n  V(OptHavingClause)            \\\n  V(OptWhereClause)             \\\n  V(WhereClause)                \\\n  V(FromClause)                 \\\n  V(TableRef)                   \\\n  V(OptIndex)                   \\\n  V(OptOn)                      \\\n  V(OptUsing)                   \\\n  V(ColumnNameList)             \\\n  V(OptTablePrefix)             \\\n  V(JoinOp)                     \\\n  V(OptJoinType)                \\\n  V(ExprList)                   \\\n  V(OptLimitClause)             \\\n  V(LimitClause)                \\\n  V(OptLimitRowCount)           \\\n  V(OptOrderClause)             \\\n  V(OptOrderNulls)              \\\n  V(OrderItemList)              \\\n  V(OrderItem)                  \\\n  V(OptOrderBehavior)           \\\n  V(OptWithClause)              \\\n  V(CteTableList)               \\\n  V(CteTable)                   \\\n  V(CteTableName)               \\\n  V(OptAllOrDistinct)           \\\n  V(CreateTableStmt)            \\\n  V(CreateIndexStmt)            \\\n  V(CreateTriggerStmt)          \\\n  V(CreateViewStmt)             \\\n  V(OptTableOptionList)         \\\n  V(TableOptionList)            \\\n  V(TableOption)                \\\n  V(OptOpComma)                 \\\n  V(OptIgnoreOrReplace)         \\\n  V(OptViewAlgorithm)           \\\n  V(OptSqlSecurity)             \\\n  V(OptIndexOption)             \\\n  V(OptExtraOption)             \\\n  V(IndexAlgorithmOption)       \\\n  V(LockOption)                 \\\n  V(OptOpEqual)                 \\\n  V(TriggerEvents)              \\\n  V(TriggerName)                \\\n  V(TriggerActionTime)          \\\n  V(DropIndexStmt)              \\\n  V(DropTableStmt)              \\\n  V(OptRestrictOrCascade)       \\\n  V(DropTriggerStmt)            \\\n  V(DropViewStmt)               \\\n  V(InsertStmt)                 \\\n  V(InsertRest)                 \\\n  V(SuperValuesList)            \\\n  V(ValuesList)                 \\\n  V(OptOnConflict)              \\\n  V(OptConflictExpr)            \\\n  V(IndexedColumnList)          \\\n  V(IndexedColumn)              \\\n  V(UpdateStmt)                 \\\n  V(AlterAction)                \\\n  V(AlterConstantAction)        \\\n  V(ColumnDefList)              \\\n  V(ColumnDef)                  \\\n  V(OptColumnConstraintList)    \\\n  V(ColumnConstraintList)       \\\n  V(ColumnConstraint)           \\\n  V(OptReferenceClause)         \\\n  V(OptCheck)                   \\\n  V(ConstraintType)             \\\n  V(ReferenceClause)            \\\n  V(OptForeignKey)              \\\n  V(OptForeignKeyActions)       \\\n  V(ForeignKeyActions)          \\\n  V(KeyActions)                 \\\n  V(OptConstraintAttributeSpec) \\\n  V(OptInitialTime)             \\\n  V(ConstraintName)             \\\n  V(OptTemp)                    \\\n  V(OptCheckOption)             \\\n  V(OptColumnNameListP)         \\\n  V(SetClauseList)              \\\n  V(SetClause)                  \\\n  V(OptAsAlias)                 \\\n  V(Expr)                       \\\n  V(Operand)                    \\\n  V(CastExpr)                   \\\n  V(ScalarExpr)                 \\\n  V(UnaryExpr)                  \\\n  V(BinaryExpr)                 \\\n  V(LogicExpr)                  \\\n  V(InExpr)                     \\\n  V(CaseExpr)                   \\\n  V(BetweenExpr)                \\\n  V(ExistsExpr)                 \\\n  V(FunctionExpr)               \\\n  V(OptDistinct)                \\\n  V(OptFilterClause)            \\\n  V(OptOverClause)              \\\n  V(CaseList)                   \\\n  V(CaseClause)                 \\\n  V(CompExpr)                   \\\n  V(ExtractExpr)                \\\n  V(DatetimeField)              \\\n  V(ArrayExpr)                  \\\n  V(ArrayIndex)                 \\\n  V(Literal)                    \\\n  V(StringLiteral)              \\\n  V(BoolLiteral)                \\\n  V(NumLiteral)                 \\\n  V(IntLiteral)                 \\\n  V(FloatLiteral)               \\\n  V(OptColumn)                  \\\n  V(TriggerBody)                \\\n  V(OptIfNotExist)              \\\n  V(OptIfExist)                 \\\n  V(Identifier)                 \\\n  V(AsAlias)                    \\\n  V(TableName)                  \\\n  V(ColumnName)                 \\\n  V(OptIndexKeyword)            \\\n  V(ViewName)                   \\\n  V(FunctionName)               \\\n  V(BinaryOp)                   \\\n  V(OptNot)                     \\\n  V(Name)                       \\\n  V(TypeName)                   \\\n  V(CharacterType)              \\\n  V(CharacterWithLength)        \\\n  V(CharacterWithoutLength)     \\\n  V(CharacterConflicta)         \\\n  V(NumericType)                \\\n  V(OptTableConstraintList)     \\\n  V(TableConstraintList)        \\\n  V(TableConstraint)            \\\n  V(OptEnforced)\n\n#define ALLDATATYPE(V)   \\\n  V(DataWhatever)        \\\n  V(DataTableName)       \\\n  V(DataColumnName)      \\\n  V(DataViewName)        \\\n  V(DataFunctionName)    \\\n  V(DataPragmaKey)       \\\n  V(DataPragmaValue)     \\\n  V(DataTableSpaceName)  \\\n  V(DataSequenceName)    \\\n  V(DataExtensionName)   \\\n  V(DataRoleName)        \\\n  V(DataSchemaName)      \\\n  V(DataDatabase)        \\\n  V(DataTriggerName)     \\\n  V(DataWindowName)      \\\n  V(DataTriggerFunction) \\\n  V(DataDomainName)      \\\n  V(DataAliasName)\n\n#define SWITCHSTART switch (case_idx_) {\n#define SWITCHEND \\\n  default:        \\\n                  \\\n    assert(0);    \\\n    }\n\n#define CASESTART(idx) case CASE##idx: {\n#define CASEEND \\\n  break;        \\\n  }\n\n#define TRANSLATESTART IR *res = NULL;\n\n#define GENERATESTART(len) case_idx_ = rand() % len;\n\n#define GENERATEEND return;\n\n#define TRANSLATEEND             \\\n  v_ir_collector.push_back(res); \\\n                                 \\\n  return res;\n\n#define TRANSLATEENDNOPUSH return res;\n\n#define SAFETRANSLATE(a) (assert(a != NULL), a->translate(v_ir_collector))\n\n#define SAFEDELETE(a) \\\n  if (a != NULL) a->deep_delete()\n\n#define SAFEDELETELIST(a) \\\n  for (auto _i : a) SAFEDELETE(_i)\n\n#define OP1(a) new IROperator(a)\n\n#define OP2(a, b) new IROperator(a, b)\n\n#define OP3(a, b, c) new IROperator(a, b, c)\n\n#define OPSTART(a) new IROperator(a)\n\n#define OPMID(a) new IROperator(\"\", a, \"\")\n\n#define OPEND(a) new IROperator(\"\", \"\", a)\n\n#define OP0() new IROperator()\n\n#define TRANSLATELIST(t, a, b)           \\\n  res = SAFETRANSLATE(a[0]);             \\\n  res = new IR(t, OP0(), res);           \\\n  v_ir_collector.push_back(res);         \\\n  for (int i = 1; i < a.size(); i++) {   \\\n    IR *tmp = SAFETRANSLATE(a[i]);       \\\n    res = new IR(t, OPMID(b), res, tmp); \\\n    v_ir_collector.push_back(res);       \\\n  }\n\n#define PUSH(a) v_ir_collector.push_back(a)\n\n#define MUTATESTART               \\\n  IR *res = NULL;                 \\\n  auto randint = get_rand_int(3); \\\n  switch (randint) {\n#define DOLEFT case 0: {\n#define DORIGHT \\\n  break;        \\\n  }             \\\n                \\\n  case 1: {\n#define DOBOTH \\\n  break;       \\\n  }            \\\n  case 2: {\n#define MUTATEEND \\\n  }               \\\n  }               \\\n                  \\\n  return res;\n\n#endif\n"
  },
  {
    "path": "srcs/internal/mysql/include/mutator.h",
    "content": "#ifndef __MUTATOR_H__\n#define __MUTATOR_H__\n\n#include <map>\n#include <set>\n\n#include \"ast.h\"\n#include \"define.h\"\n#include \"utils.h\"\n\n#define LUCKY_NUMBER 500\n\nusing namespace std;\n\nenum RELATIONTYPE {\n  kRelationElement,\n  kRelationSubtype,\n  kRelationAlias,\n};\n\nclass Mutator {\n public:\n  Mutator() { srand(time(nullptr)); }\n\n  IR *deep_copy_with_record(const IR *root, const IR *record);\n  unsigned long hash(IR *);\n  unsigned long hash(string &);\n\n  IR *ir_random_generator(vector<IR *> v_ir_collector);\n\n  vector<IR *> mutate_all(vector<IR *> &v_ir_collector);        // done\n  vector<IR *> mutate(IR *input);                               // done\n  IR *strategy_delete(IR *cur);                                 // Done\n  IR *strategy_insert(IR *cur);                                 // Done\n  IR *strategy_replace(IR *cur);                                // done\n  bool lucky_enough_to_be_mutated(unsigned int mutated_times);  // done\n\n  bool replace(IR *root, IR *old_ir, IR *new_ir);  // done\n  IR *locate_parent(IR *root, IR *old_ir);         // done\n\n  void init(string f_testcase = \"\", string f_common_string = \"\",\n            string file2d = \"\", string file1d = \"\",\n            string f_gen_type = \"\");  // DONE\n\n  void init_ir_library(string filename);          // DONE\n  void init_value_library();                      // DONE\n  void init_common_string(string filename);       // DONE\n  void init_data_library(string filename);        // DONE\n  void init_data_library_2d(string filename);     // DONE\n  void init_not_mutatable_type(string filename);  // DONE\n  void init_safe_generate_type(string filename);\n  void add_ir_to_library(IR *);  // DONE\n\n  string get_a_string();            // DONE\n  unsigned long get_a_val();        // DONE\n  IR *get_ir_from_library(IRTYPE);  // DONE\n  IR *generate_ir_by_type(IRTYPE);  // Done\n\n  string get_data_by_type(DATATYPE);\n  pair<string, string> get_data_2d_by_type(DATATYPE, DATATYPE);  // DONE\n\n  void reset_data_library();  // DONE\n\n  string parse_data(string &);  // DONE\n  void extract_struct(IR *);    // Done\n  void extract_struct2(IR *);   // Done\n\n  bool fix(IR *root);  // done\n\n  vector<IR *> split_to_stmt(IR *root, map<IR **, IR *> &m_save,\n                             set<IRTYPE> &split_set);  // done\n  bool connect_back(map<IR **, IR *> &m_save);         // done\n\n  bool fix_one(IR *stmt_root,\n               map<int, map<DATATYPE, vector<IR *>>> &scope_library);  // done\n\n  void analyze_scope(IR *stmt_root);\n  map<IR *, vector<IR *>> build_graph(\n      IR *stmt_root, map<int, map<DATATYPE, vector<IR *>>> &scope_library);\n  bool fill_stmt_graph(map<IR *, vector<IR *>> &graph);              // done\n  void clear_scope_library(bool clear_define);                       // done\n  IR *find_closest_node(IR *stmt_root, IR *node, DATATYPE type);     // done\n  bool fill_one(IR *parent);                                         // done\n  bool fill_one_pair(IR *parent, IR *child);                         // done\n  bool fill_stmt_graph_one(map<IR *, vector<IR *>> &graph, IR *ir);  // done\n  bool validate(IR *&root);                                          // done\n\n  unsigned int calc_node(IR *root);\n  bool replace_one_value_from_datalibray_2d(DATATYPE p_datatype,\n                                            DATATYPE c_data_type, string &p_key,\n                                            string &old_c_value,\n                                            string &new_c_value);\n  bool remove_one_pair_from_datalibrary_2d(DATATYPE p_datatype,\n                                           DATATYPE c_data_type, string &p_key);\n  bool replace_one_from_datalibrary(DATATYPE datatype, string &old_str,\n                                    string &new_str);\n  bool remove_one_from_datalibrary(DATATYPE datatype, string &key);\n  ~Mutator();\n  void debug(IR *root);\n  int try_fix(char *buf, int len, char *&new_buf, int &new_len);\n\n  void add_ir_to_library_no_deepcopy(IR *);  // DONE\n\n  IR *record_ = NULL;\n  IR *mutated_root_ = NULL;\n  map<IRTYPE, vector<IR *>> ir_library_;\n  map<IRTYPE, set<unsigned long>> ir_library_hash_;\n\n  vector<string> string_library_;\n  set<unsigned long> string_library_hash_;\n  vector<unsigned long> value_library_;\n\n  map<DATATYPE, map<DATATYPE, RELATIONTYPE>> relationmap_;\n\n  vector<string> common_string_library_;\n  set<IRTYPE> not_mutatable_types_;\n  set<IRTYPE> string_types_;\n  set<IRTYPE> int_types_;\n  set<IRTYPE> float_types_;\n\n  set<IRTYPE> safe_generate_type_;\n  set<IRTYPE> split_stmt_types_;\n  set<IRTYPE> split_substmt_types_;\n\n  map<DATATYPE, vector<string>> data_library_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>> data_library_2d_;\n\n  map<DATATYPE, vector<string>> g_data_library_;\n  map<DATATYPE, set<unsigned long>> g_data_library_hash_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>> g_data_library_2d_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>>\n      g_data_library_2d_hash_;\n\n  map<int, map<DATATYPE, vector<IR *>>> scope_library_;\n\n  set<unsigned long> global_hash_;\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/mysql/include/utils.h",
    "content": "#ifndef __UTILS_H__\n#define __UTILS_H__\n\n#include <string>\n#include <vector>\n\n#include \"../parser/bison_parser.h\"\n#include \"../parser/flex_lexer.h\"\nusing std::string;\nusing std::vector;\n\n#define get_rand_int(range) rand() % (range)\n#define vector_rand_ele_safe(a) \\\n  (a.size() != 0 ? a[get_rand_int(a.size())] : gen_id_name())\n#define vector_rand_ele(a) (a[get_rand_int(a.size())])\n\nvoid trim_string(string &);\n\nstring gen_string();\n\ndouble gen_float();\n\nlong gen_long();\n\nint gen_int();\n\nuint64_t ducking_hash(const void *key, int len);\nvector<string> get_all_files_in_dir(const char *dir_name);\nProgram *parser(string sql);\n#endif\n"
  },
  {
    "path": "srcs/internal/mysql/mysql.cc",
    "content": "#include \"mysql.h\"\n\n#include <cassert>\n#include <string>\n#include <vector>\n\n#include \"absl/strings/str_format.h\"\n#include \"ast.h\"\n#include \"define.h\"\n#include \"mutator.h\"\n#include \"utils.h\"\n\nMySQLDB *create_mysql() { return new MySQLDB; }\n\nMySQLDB::MySQLDB() { mutator_ = std::make_unique<Mutator>(); }\n\nbool MySQLDB::initialize(YAML::Node config) {\n  const std::string init_lib_path = config[\"init_lib\"].as<std::string>();\n  std::string data_lib = config[\"data_lib\"].as<std::string>();\n  std::vector<std::string> file_list =\n      get_all_files_in_dir(init_lib_path.c_str());\n  for (auto &f : file_list) {\n    mutator_->init(absl::StrFormat(\"%s/%s\", init_lib_path, f));\n  }\n  mutator_->init_data_library(data_lib);\n  return true;\n}\n\nbool MySQLDB::save_interesting_query(const std::string &query) {\n  if (Program *program = parser(query)) {\n    std::vector<IR *> ir_set;\n    IR *ir = program->translate(ir_set);\n    ir_set.clear();\n    mutator_->extract_struct(ir);\n    string strip_sql = ir->to_string();\n    auto p_strip_sql = parser(strip_sql);\n    if (p_strip_sql) {\n      auto root_ir = p_strip_sql->translate(ir_set);\n      p_strip_sql->deep_delete();\n      mutator_->add_ir_to_library(root_ir);\n      deep_delete(root_ir);\n    }\n    return true;\n  }\n  return false;\n}\n\nsize_t MySQLDB::validate_all(std::vector<IR *> &ir_set) {\n  for (IR *&ir : ir_set) {\n    bool result = mutator_->validate(ir);\n    if (!result) {\n      continue;\n    }\n    std::string validated_ir = ir->to_string();\n    validated_test_cases_.push(std::move(validated_ir));\n  }\n  return validated_test_cases_.size();\n}\n\nbool MySQLDB::has_mutated_test_cases() {\n  return !validated_test_cases_.empty();\n}\n\nsize_t MySQLDB::mutate(const std::string &query) {\n  std::vector<IR *> ir_set, mutated_tree;\n  Program *program_root = parser(query.c_str());\n  if (program_root == nullptr) {\n    return 0;\n  }\n\n  // TODO: Remove this uncessary try.\n  // Or we will have exception from the parser?\n  try {\n    program_root->translate(ir_set);\n  } catch (...) {\n    for (auto ir : ir_set) {\n      delete ir;\n    }\n    program_root->deep_delete();\n  }\n  program_root->deep_delete();\n\n  mutated_tree = mutator_->mutate_all(ir_set);\n  deep_delete(ir_set[ir_set.size() - 1]);\n\n  size_t validated_ir_size = validate_all(mutated_tree);\n  for (auto ir : mutated_tree) {\n    deep_delete(ir);\n  }\n\n  // std::cerr << \"validated ir size: \" << validated_ir_size << std::endl;\n\n  return validated_ir_size;\n}\n\nstd::string MySQLDB::get_next_mutated_query() {\n  assert(has_mutated_test_cases());\n  auto result = validated_test_cases_.top();\n  validated_test_cases_.pop();\n  return result;\n}\n"
  },
  {
    "path": "srcs/internal/mysql/mysql.h",
    "content": "#ifndef __MYSQL_H__\n#define __MYSQL_H__\n#include <memory>\n#include <stack>\n\n#include \"db.h\"\n\nclass Mutator;\nclass IR;\n\nclass MySQLDB : public DataBase {\n public:\n  MySQLDB();\n  // Set up the database.\n  virtual bool initialize(YAML::Node config);\n  virtual size_t mutate(const std::string &);\n  virtual bool save_interesting_query(const std::string &);\n  // Return an new query to test. The `buffer` should be unmanaged,\n  virtual std::string get_next_mutated_query();\n  virtual bool has_mutated_test_cases();\n  // Clean up the enviroment, e.g., drop all the databases.\n  virtual bool clean_up() { return true; }\n\n private:\n  size_t validate_all(std::vector<IR *> &ir_set);\n  std::unique_ptr<Mutator> mutator_;\n  std::stack<std::string> validated_test_cases_;\n};\n\nMySQLDB *create_mysql();\n#endif\n"
  },
  {
    "path": "srcs/internal/mysql/parser/Makefile",
    "content": "# bison's version is too old on OSX, allow user to pass in custom path\nBISON?=bison\nFLEX?=flex\n\n#BISON_VERSION=$(shell $(BISON) --version | head -n 1 | grep -o '[0-9]\\.[0-9]\\+')\n#BISON_VERSION_SUPPORTED=$(shell echo $(BISON_VERSION) \\>= 3.0 | bc)\n#ifneq ($(BISON_VERSION_SUPPORTED), 1)\n#$(error Bison version $(BISON_VERSION) not supported. If you are using OS X, `bison` uses the system default instead of the brew version. Run BISON=/usr/local/opt/bison/bin/bison make)\n#endif\n\n#FLEX_VERSION=$(shell $(FLEX) --version | head -n 1 | grep -o '[0-9]\\.[0-9]\\+')\n#FLEX_VERSION_SUPPORTED=$(shell echo $(FLEX_VERSION) \\>= 2.6 | bc)\n#ifneq ($(FLEX_VERSION_SUPPORTED), 1)\n#$(error Flex version $(FLEX_VERSION) not supported. If you are using OS X, `flex` uses the system default instead of the brew version. Run FLEX=/usr/local/opt/flex/bin/flex make)\n#endif\n\nall: bison_parser.cpp flex_lexer.cpp\n\nbison_parser.cpp: bison.y\n\t$(BISON) bison.y --output=bison_parser.cpp --defines=bison_parser.h --verbose -Wconflicts-rr\n\nflex_lexer.cpp: flex.l\n\t$(FLEX) flex.l\n\nclean:\n\trm -f bison_parser.cpp flex_lexer.cpp bison_parser.h flex_lexer.h *.output\n\n# Tests if the parser builds correctly and doesn't contain conflicts.\ntest:\n\t! $(BISON) bison_parser.y -v --output=conflict_test.cpp 2>&1 | grep \"conflict\" >/tmp/2\n"
  },
  {
    "path": "srcs/internal/mysql/parser/bison.y",
    "content": "%{\n#include \"bison_parser.h\"\n#include \"flex_lexer.h\"\n#include <stdio.h>\n#include <string.h>\nint yyerror(YYLTYPE* llocp, Program * result, yyscan_t scanner, const char *msg) { return 0; }\n%}\n%code requires {\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n}\n%define api.prefix\t{ff_}\n%define parse.error\tverbose\n%define api.pure\tfull\n%define api.token.prefix\t{SQL_}\n%locations\n\n%initial-action {\n    // Initialize\n    @$.first_column = 0;\n    @$.last_column = 0;\n    @$.first_line = 0;\n    @$.last_line = 0;\n    @$.total_column = 0;\n    @$.string_length = 0;\n};\n%lex-param { yyscan_t scanner }\n%parse-param { Program* result }\n%parse-param { yyscan_t scanner }\n%union FF_STYPE{\n\tlong\tival;\n\tchar*\tsval;\n\tdouble\tfval;\n\tProgram *\tprogram_t;\n\tStmtlist *\tstmtlist_t;\n\tStmt *\tstmt_t;\n\tCreateStmt *\tcreate_stmt_t;\n\tDropStmt *\tdrop_stmt_t;\n\tAlterStmt *\talter_stmt_t;\n\tSelectStmt *\tselect_stmt_t;\n\tSelectWithParens *\tselect_with_parens_t;\n\tSelectNoParens *\tselect_no_parens_t;\n\tSelectClauseList *\tselect_clause_list_t;\n\tSelectClause *\tselect_clause_t;\n\tCombineClause *\tcombine_clause_t;\n\tOptFromClause *\topt_from_clause_t;\n\tSelectTarget *\tselect_target_t;\n\tOptWindowClause *\topt_window_clause_t;\n\tWindowClause *\twindow_clause_t;\n\tWindowDefList *\twindow_def_list_t;\n\tWindowDef *\twindow_def_t;\n\tWindowName *\twindow_name_t;\n\tWindow *\twindow_t;\n\tOptPartition *\topt_partition_t;\n\tOptFrameClause *\topt_frame_clause_t;\n\tRangeOrRows *\trange_or_rows_t;\n\tFrameBoundStart *\tframe_bound_start_t;\n\tFrameBoundEnd *\tframe_bound_end_t;\n\tFrameBound *\tframe_bound_t;\n\tOptExistWindowName *\topt_exist_window_name_t;\n\tOptGroupClause *\topt_group_clause_t;\n\tOptHavingClause *\topt_having_clause_t;\n\tOptWhereClause *\topt_where_clause_t;\n\tWhereClause *\twhere_clause_t;\n\tFromClause *\tfrom_clause_t;\n\tTableRef *\ttable_ref_t;\n\tOptIndex *\topt_index_t;\n\tOptOn *\topt_on_t;\n\tOptUsing *\topt_using_t;\n\tColumnNameList *\tcolumn_name_list_t;\n\tOptTablePrefix *\topt_table_prefix_t;\n\tJoinOp *\tjoin_op_t;\n\tOptJoinType *\topt_join_type_t;\n\tExprList *\texpr_list_t;\n\tOptLimitClause *\topt_limit_clause_t;\n\tLimitClause *\tlimit_clause_t;\n\tOptLimitRowCount *\topt_limit_row_count_t;\n\tOptOrderClause *\topt_order_clause_t;\n\tOptOrderNulls *\topt_order_nulls_t;\n\tOrderItemList *\torder_item_list_t;\n\tOrderItem *\torder_item_t;\n\tOptOrderBehavior *\topt_order_behavior_t;\n\tOptWithClause *\topt_with_clause_t;\n\tCteTableList *\tcte_table_list_t;\n\tCteTable *\tcte_table_t;\n\tCteTableName *\tcte_table_name_t;\n\tOptAllOrDistinct *\topt_all_or_distinct_t;\n\tCreateTableStmt *\tcreate_table_stmt_t;\n\tCreateIndexStmt *\tcreate_index_stmt_t;\n\tCreateTriggerStmt *\tcreate_trigger_stmt_t;\n\tCreateViewStmt *\tcreate_view_stmt_t;\n\tOptTableOptionList *\topt_table_option_list_t;\n\tTableOptionList *\ttable_option_list_t;\n\tTableOption *\ttable_option_t;\n\tOptOpComma *\topt_op_comma_t;\n\tOptIgnoreOrReplace *\topt_ignore_or_replace_t;\n\tOptViewAlgorithm *\topt_view_algorithm_t;\n\tOptSqlSecurity *\topt_sql_security_t;\n\tOptIndexOption *\topt_index_option_t;\n\tOptExtraOption *\topt_extra_option_t;\n\tIndexAlgorithmOption *\tindex_algorithm_option_t;\n\tLockOption *\tlock_option_t;\n\tOptOpEqual *\topt_op_equal_t;\n\tTriggerEvents *\ttrigger_events_t;\n\tTriggerName *\ttrigger_name_t;\n\tTriggerActionTime *\ttrigger_action_time_t;\n\tDropIndexStmt *\tdrop_index_stmt_t;\n\tDropTableStmt *\tdrop_table_stmt_t;\n\tOptRestrictOrCascade *\topt_restrict_or_cascade_t;\n\tDropTriggerStmt *\tdrop_trigger_stmt_t;\n\tDropViewStmt *\tdrop_view_stmt_t;\n\tInsertStmt *\tinsert_stmt_t;\n\tInsertRest *\tinsert_rest_t;\n\tSuperValuesList *\tsuper_values_list_t;\n\tValuesList *\tvalues_list_t;\n\tOptOnConflict *\topt_on_conflict_t;\n\tOptConflictExpr *\topt_conflict_expr_t;\n\tIndexedColumnList *\tindexed_column_list_t;\n\tIndexedColumn *\tindexed_column_t;\n\tUpdateStmt *\tupdate_stmt_t;\n\tAlterAction *\talter_action_t;\n\tAlterConstantAction *\talter_constant_action_t;\n\tColumnDefList *\tcolumn_def_list_t;\n\tColumnDef *\tcolumn_def_t;\n\tOptColumnConstraintList *\topt_column_constraint_list_t;\n\tColumnConstraintList *\tcolumn_constraint_list_t;\n\tColumnConstraint *\tcolumn_constraint_t;\n\tOptReferenceClause *\topt_reference_clause_t;\n\tOptCheck *\topt_check_t;\n\tConstraintType *\tconstraint_type_t;\n\tReferenceClause *\treference_clause_t;\n\tOptForeignKey *\topt_foreign_key_t;\n\tOptForeignKeyActions *\topt_foreign_key_actions_t;\n\tForeignKeyActions *\tforeign_key_actions_t;\n\tKeyActions *\tkey_actions_t;\n\tOptConstraintAttributeSpec *\topt_constraint_attribute_spec_t;\n\tOptInitialTime *\topt_initial_time_t;\n\tConstraintName *\tconstraint_name_t;\n\tOptTemp *\topt_temp_t;\n\tOptCheckOption *\topt_check_option_t;\n\tOptColumnNameListP *\topt_column_name_list_p_t;\n\tSetClauseList *\tset_clause_list_t;\n\tSetClause *\tset_clause_t;\n\tOptAsAlias *\topt_as_alias_t;\n\tExpr *\texpr_t;\n\tOperand *\toperand_t;\n\tCastExpr *\tcast_expr_t;\n\tScalarExpr *\tscalar_expr_t;\n\tUnaryExpr *\tunary_expr_t;\n\tBinaryExpr *\tbinary_expr_t;\n\tLogicExpr *\tlogic_expr_t;\n\tInExpr *\tin_expr_t;\n\tCaseExpr *\tcase_expr_t;\n\tBetweenExpr *\tbetween_expr_t;\n\tExistsExpr *\texists_expr_t;\n\tFunctionExpr *\tfunction_expr_t;\n\tOptDistinct *\topt_distinct_t;\n\tOptFilterClause *\topt_filter_clause_t;\n\tOptOverClause *\topt_over_clause_t;\n\tCaseList *\tcase_list_t;\n\tCaseClause *\tcase_clause_t;\n\tCompExpr *\tcomp_expr_t;\n\tExtractExpr *\textract_expr_t;\n\tDatetimeField *\tdatetime_field_t;\n\tArrayExpr *\tarray_expr_t;\n\tArrayIndex *\tarray_index_t;\n\tLiteral *\tliteral_t;\n\tStringLiteral *\tstring_literal_t;\n\tBoolLiteral *\tbool_literal_t;\n\tNumLiteral *\tnum_literal_t;\n\tIntLiteral *\tint_literal_t;\n\tFloatLiteral *\tfloat_literal_t;\n\tOptColumn *\topt_column_t;\n\tTriggerBody *\ttrigger_body_t;\n\tOptIfNotExist *\topt_if_not_exist_t;\n\tOptIfExist *\topt_if_exist_t;\n\tIdentifier *\tidentifier_t;\n\tAsAlias *\tas_alias_t;\n\tTableName *\ttable_name_t;\n\tColumnName *\tcolumn_name_t;\n\tOptIndexKeyword *\topt_index_keyword_t;\n\tViewName *\tview_name_t;\n\tFunctionName *\tfunction_name_t;\n\tBinaryOp *\tbinary_op_t;\n\tOptNot *\topt_not_t;\n\tName *\tname_t;\n\tTypeName *\ttype_name_t;\n\tCharacterType *\tcharacter_type_t;\n\tCharacterWithLength *\tcharacter_with_length_t;\n\tCharacterWithoutLength *\tcharacter_without_length_t;\n\tCharacterConflicta *\tcharacter_conflicta_t;\n\tNumericType *\tnumeric_type_t;\n\tOptTableConstraintList *\topt_table_constraint_list_t;\n\tTableConstraintList *\ttable_constraint_list_t;\n\tTableConstraint *\ttable_constraint_t;\n\tOptEnforced *\topt_enforced_t;\n}\n\n%token OP_NOTEQUAL ENABLE SIMPLE TEXT OVER YEAR INSERT_METHOD OP_SEMI\n%token BIGINT LIMIT OP_GREATERTHAN WITH ORDER OPTION LAST UNBOUNDED\n%token PRECEDING EXCEPT NUMERIC OP_LESSTHAN ACTION BEFORE OP_GREATEREQ CHECK\n%token COMPACT FULL NATURAL BINARY NATIONAL ENUM REDUNDANT OP_ADD\n%token CURRENT MERGE TRIGGER COMPRESSED OP_SUB FALSE UNIQUE WHERE\n%token MINUTE FIRST ON PARTIAL DOUBLE AFTER PRIMARY MONTH\n%token DEFERRED VALUES LONGTEXT SQL SHARED VALIDATION OR VIEW\n%token INDEX GROUP OP_MUL INPLACE FOREIGN RESTRICT SPATIAL FOLLOWING\n%token DEC SELECT NONE DISTINCT TRUE DYNAMIC BY OP_MOD\n%token INTEGER SECURITY IS DEFINER ROW ENFORCED END RECURSIVE\n%token FOR TEMPTABLE UNION NULLS UPDATE ELSE RANGE SET\n%token INVOKER OFFSET INDEXED FORCE NCHAR AND INITIALLY PRECISION\n%token FILTER WITHOUT NOT DELETE DEFFERRABLE REAL THEN UNDEFINED\n%token DEFAULT CROSS CHAR REFERENCES OP_XOR CASE FIXED HOUR\n%token NO COLUMN LOCAL DROP REPLACE ASC OP_COMMA DISABLE\n%token TABLE ARRAY IF EXTRACT LEFT FULLTEXT HASH ALGORITHM\n%token LOCK DECIMAL PARTITION CASCADE ADD BETWEEN OP_LESSEQ MATCH\n%token ALL ROWS JOIN LIKE OP_RP IGNORE INT MEDIUMTEXT\n%token BOOLEAN KEY EACH USING RENAME DO OP_LP CHARACTER\n%token UMINUS CAST GROUPS OUTER NULL SMALLINT EXCLUSIVE TEMPORARY\n%token CONSTRAINT CREATE OP_LBRACKET WHEN IMMEDIATE TO BTREE DAY\n%token CONFLICT ROW_FORMAT OP_RBRACKET EXISTS INSERT KEYS INTO OP_DIVIDE\n%token CASCADED ISNULL AS INNER INTERSECT IN OP_EQUAL VARCHAR\n%token COPY ALTER DESC FROM TINYTEXT FLOAT SECOND WINDOW\n%token NOTHING HAVING\n%token <ival> INTLITERAL\n\n%token <fval> FLOATLITERAL\n\n%token <sval> IDENTIFIER\n\n%token <sval> STRINGLITERAL\n\n\n%type <program_t>\tprogram\n%type <stmtlist_t>\tstmtlist\n%type <stmt_t>\tstmt\n%type <create_stmt_t>\tcreate_stmt\n%type <drop_stmt_t>\tdrop_stmt\n%type <alter_stmt_t>\talter_stmt\n%type <select_stmt_t>\tselect_stmt\n%type <select_with_parens_t>\tselect_with_parens\n%type <select_no_parens_t>\tselect_no_parens\n%type <select_clause_list_t>\tselect_clause_list\n%type <select_clause_t>\tselect_clause\n%type <combine_clause_t>\tcombine_clause\n%type <opt_from_clause_t>\topt_from_clause\n%type <select_target_t>\tselect_target\n%type <opt_window_clause_t>\topt_window_clause\n%type <window_clause_t>\twindow_clause\n%type <window_def_list_t>\twindow_def_list\n%type <window_def_t>\twindow_def\n%type <window_name_t>\twindow_name\n%type <window_t>\twindow\n%type <opt_partition_t>\topt_partition\n%type <opt_frame_clause_t>\topt_frame_clause\n%type <range_or_rows_t>\trange_or_rows\n%type <frame_bound_start_t>\tframe_bound_start\n%type <frame_bound_end_t>\tframe_bound_end\n%type <frame_bound_t>\tframe_bound\n%type <opt_exist_window_name_t>\topt_exist_window_name\n%type <opt_group_clause_t>\topt_group_clause\n%type <opt_having_clause_t>\topt_having_clause\n%type <opt_where_clause_t>\topt_where_clause\n%type <where_clause_t>\twhere_clause\n%type <from_clause_t>\tfrom_clause\n%type <table_ref_t>\ttable_ref\n%type <opt_index_t>\topt_index\n%type <opt_on_t>\topt_on\n%type <opt_using_t>\topt_using\n%type <column_name_list_t>\tcolumn_name_list\n%type <opt_table_prefix_t>\topt_table_prefix\n%type <join_op_t>\tjoin_op\n%type <opt_join_type_t>\topt_join_type\n%type <expr_list_t>\texpr_list\n%type <opt_limit_clause_t>\topt_limit_clause\n%type <limit_clause_t>\tlimit_clause\n%type <opt_limit_row_count_t>\topt_limit_row_count\n%type <opt_order_clause_t>\topt_order_clause\n%type <opt_order_nulls_t>\topt_order_nulls\n%type <order_item_list_t>\torder_item_list\n%type <order_item_t>\torder_item\n%type <opt_order_behavior_t>\topt_order_behavior\n%type <opt_with_clause_t>\topt_with_clause\n%type <cte_table_list_t>\tcte_table_list\n%type <cte_table_t>\tcte_table\n%type <cte_table_name_t>\tcte_table_name\n%type <opt_all_or_distinct_t>\topt_all_or_distinct\n%type <create_table_stmt_t>\tcreate_table_stmt\n%type <create_index_stmt_t>\tcreate_index_stmt\n%type <create_trigger_stmt_t>\tcreate_trigger_stmt\n%type <create_view_stmt_t>\tcreate_view_stmt\n%type <opt_table_option_list_t>\topt_table_option_list\n%type <table_option_list_t>\ttable_option_list\n%type <table_option_t>\ttable_option\n%type <opt_op_comma_t>\topt_op_comma\n%type <opt_ignore_or_replace_t>\topt_ignore_or_replace\n%type <opt_view_algorithm_t>\topt_view_algorithm\n%type <opt_sql_security_t>\topt_sql_security\n%type <opt_index_option_t>\topt_index_option\n%type <opt_extra_option_t>\topt_extra_option\n%type <index_algorithm_option_t>\tindex_algorithm_option\n%type <lock_option_t>\tlock_option\n%type <opt_op_equal_t>\topt_op_equal\n%type <trigger_events_t>\ttrigger_events\n%type <trigger_name_t>\ttrigger_name\n%type <trigger_action_time_t>\ttrigger_action_time\n%type <drop_index_stmt_t>\tdrop_index_stmt\n%type <drop_table_stmt_t>\tdrop_table_stmt\n%type <opt_restrict_or_cascade_t>\topt_restrict_or_cascade\n%type <drop_trigger_stmt_t>\tdrop_trigger_stmt\n%type <drop_view_stmt_t>\tdrop_view_stmt\n%type <insert_stmt_t>\tinsert_stmt\n%type <insert_rest_t>\tinsert_rest\n%type <super_values_list_t>\tsuper_values_list\n%type <values_list_t>\tvalues_list\n%type <opt_on_conflict_t>\topt_on_conflict\n%type <opt_conflict_expr_t>\topt_conflict_expr\n%type <indexed_column_list_t>\tindexed_column_list\n%type <indexed_column_t>\tindexed_column\n%type <update_stmt_t>\tupdate_stmt\n%type <alter_action_t>\talter_action\n%type <alter_constant_action_t>\talter_constant_action\n%type <column_def_list_t>\tcolumn_def_list\n%type <column_def_t>\tcolumn_def\n%type <opt_column_constraint_list_t>\topt_column_constraint_list\n%type <column_constraint_list_t>\tcolumn_constraint_list\n%type <column_constraint_t>\tcolumn_constraint\n%type <opt_reference_clause_t>\topt_reference_clause\n%type <opt_check_t>\topt_check\n%type <constraint_type_t>\tconstraint_type\n%type <reference_clause_t>\treference_clause\n%type <opt_foreign_key_t>\topt_foreign_key\n%type <opt_foreign_key_actions_t>\topt_foreign_key_actions\n%type <foreign_key_actions_t>\tforeign_key_actions\n%type <key_actions_t>\tkey_actions\n%type <opt_constraint_attribute_spec_t>\topt_constraint_attribute_spec\n%type <opt_initial_time_t>\topt_initial_time\n%type <constraint_name_t>\tconstraint_name\n%type <opt_temp_t>\topt_temp\n%type <opt_check_option_t>\topt_check_option\n%type <opt_column_name_list_p_t>\topt_column_name_list_p\n%type <set_clause_list_t>\tset_clause_list\n%type <set_clause_t>\tset_clause\n%type <opt_as_alias_t>\topt_as_alias\n%type <expr_t>\texpr\n%type <operand_t>\toperand\n%type <cast_expr_t>\tcast_expr\n%type <scalar_expr_t>\tscalar_expr\n%type <unary_expr_t>\tunary_expr\n%type <binary_expr_t>\tbinary_expr\n%type <logic_expr_t>\tlogic_expr\n%type <in_expr_t>\tin_expr\n%type <case_expr_t>\tcase_expr\n%type <between_expr_t>\tbetween_expr\n%type <exists_expr_t>\texists_expr\n%type <function_expr_t>\tfunction_expr\n%type <opt_distinct_t>\topt_distinct\n%type <opt_filter_clause_t>\topt_filter_clause\n%type <opt_over_clause_t>\topt_over_clause\n%type <case_list_t>\tcase_list\n%type <case_clause_t>\tcase_clause\n%type <comp_expr_t>\tcomp_expr\n%type <extract_expr_t>\textract_expr\n%type <datetime_field_t>\tdatetime_field\n%type <array_expr_t>\tarray_expr\n%type <array_index_t>\tarray_index\n%type <literal_t>\tliteral\n%type <string_literal_t>\tstring_literal\n%type <bool_literal_t>\tbool_literal\n%type <num_literal_t>\tnum_literal\n%type <int_literal_t>\tint_literal\n%type <float_literal_t>\tfloat_literal\n%type <opt_column_t>\topt_column\n%type <trigger_body_t>\ttrigger_body\n%type <opt_if_not_exist_t>\topt_if_not_exist\n%type <opt_if_exist_t>\topt_if_exist\n%type <identifier_t>\tidentifier\n%type <as_alias_t>\tas_alias\n%type <table_name_t>\ttable_name\n%type <column_name_t>\tcolumn_name\n%type <opt_index_keyword_t>\topt_index_keyword\n%type <view_name_t>\tview_name\n%type <function_name_t>\tfunction_name\n%type <binary_op_t>\tbinary_op\n%type <opt_not_t>\topt_not\n%type <name_t>\tname\n%type <type_name_t>\ttype_name\n%type <character_type_t>\tcharacter_type\n%type <character_with_length_t>\tcharacter_with_length\n%type <character_without_length_t>\tcharacter_without_length\n%type <character_conflicta_t>\tcharacter_conflicta\n%type <numeric_type_t>\tnumeric_type\n%type <opt_table_constraint_list_t>\topt_table_constraint_list\n%type <table_constraint_list_t>\ttable_constraint_list\n%type <table_constraint_t>\ttable_constraint\n%type <opt_enforced_t>\topt_enforced\n\n%left  OR\n%left  AND\n%left  NOT\n%nonassoc  OP_NOTEQUAL MATCH LIKE OP_EQUAL\n%nonassoc  OP_GREATERTHAN OP_LESSTHAN OP_GREATEREQ OP_LESSEQ\n%nonassoc  ISNULL\n%nonassoc  IS\n%left  OP_ADD OP_SUB\n%left  OP_MUL OP_MOD OP_DIVIDE\n%left  OP_XOR\n%right  UMINUS\n%left  OP_LBRACKET OP_RBRACKET\n%left  OP_RP OP_LP\n%nonassoc  JOIN\n%nonassoc  ON\n\n%destructor{\n\tfree( ($$) );\n}  <sval>\n\n%destructor{\n\t \n}  <fval> <ival>\n\n%destructor { if($$!=NULL)$$->deep_delete(); } <*>\n\n%%\nprogram:\n\tstmtlist  {\n\t\t$$ = result;\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->stmtlist_ = $1;\n\t\t\t\t$$ = NULL;\n\n\t}\n  ;\n\nstmtlist:\n\tstmt OP_SEMI stmtlist  {\n\t\t$$ = new Stmtlist();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->stmt_ = $1;\n\t\t$$->stmtlist_ = $3;\n\t\t\n\t}\n   |\tstmt OP_SEMI  {\n\t\t$$ = new Stmtlist();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->stmt_ = $1;\n\t\t\n\t}\n  ;\n\nstmt:\n\tcreate_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->create_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->drop_stmt_ = $1;\n\t\t\n\t}\n   |\tselect_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->select_stmt_ = $1;\n\t\t\n\t}\n   |\tupdate_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->update_stmt_ = $1;\n\t\t\n\t}\n   |\tinsert_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->insert_stmt_ = $1;\n\t\t\n\t}\n   |\talter_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->alter_stmt_ = $1;\n\t\t\n\t}\n  ;\n\ncreate_stmt:\n\tcreate_table_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->create_table_stmt_ = $1;\n\t\t\n\t}\n   |\tcreate_index_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->create_index_stmt_ = $1;\n\t\t\n\t}\n   |\tcreate_trigger_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->create_trigger_stmt_ = $1;\n\t\t\n\t}\n   |\tcreate_view_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->create_view_stmt_ = $1;\n\t\t\n\t}\n  ;\n\ndrop_stmt:\n\tdrop_index_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->drop_index_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_table_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->drop_table_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_trigger_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->drop_trigger_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_view_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->drop_view_stmt_ = $1;\n\t\t\n\t}\n  ;\n\nalter_stmt:\n\tALTER TABLE table_name alter_action  {\n\t\t$$ = new AlterStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\t$$->alter_action_ = $4;\n\t\t\n\t}\n  ;\n\nselect_stmt:\n\tselect_no_parens %prec UMINUS {\n\t\t$$ = new SelectStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_no_parens_ = $1;\n\t\t\n\t}\n   |\tselect_with_parens %prec UMINUS {\n\t\t$$ = new SelectStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_with_parens_ = $1;\n\t\t\n\t}\n  ;\n\nselect_with_parens:\n\tOP_LP select_no_parens OP_RP  {\n\t\t$$ = new SelectWithParens();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n   |\tOP_LP select_with_parens OP_RP  {\n\t\t$$ = new SelectWithParens();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_with_parens_ = $2;\n\t\t\n\t}\n  ;\n\nselect_no_parens:\n\topt_with_clause select_clause_list opt_order_clause opt_limit_clause  {\n\t\t$$ = new SelectNoParens();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_with_clause_ = $1;\n\t\t$$->select_clause_list_ = $2;\n\t\t$$->opt_order_clause_ = $3;\n\t\t$$->opt_limit_clause_ = $4;\n\t\t\n\t}\n  ;\n\nselect_clause_list:\n\tselect_clause  {\n\t\t$$ = new SelectClauseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_clause_ = $1;\n\t\t\n\t}\n   |\tselect_clause combine_clause select_clause_list  {\n\t\t$$ = new SelectClauseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_clause_ = $1;\n\t\t$$->combine_clause_ = $2;\n\t\t$$->select_clause_list_ = $3;\n\t\t\n\t}\n  ;\n\nselect_clause:\n\tSELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause  {\n\t\t$$ = new SelectClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_all_or_distinct_ = $2;\n\t\t$$->select_target_ = $3;\n\t\t$$->opt_from_clause_ = $4;\n\t\t$$->opt_where_clause_ = $5;\n\t\t$$->opt_group_clause_ = $6;\n\t\t$$->opt_window_clause_ = $7;\n\t\t\n\t}\n  ;\n\ncombine_clause:\n\tUNION  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINTERSECT  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tEXCEPT  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_from_clause:\n\tfrom_clause  {\n\t\t$$ = new OptFromClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->from_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFromClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nselect_target:\n\texpr_list  {\n\t\t$$ = new SelectTarget();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $1;\n\t\t\n\t}\n  ;\n\nopt_window_clause:\n\twindow_clause  {\n\t\t$$ = new OptWindowClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWindowClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nwindow_clause:\n\tWINDOW window_def_list  {\n\t\t$$ = new WindowClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_def_list_ = $2;\n\t\t\n\t}\n  ;\n\nwindow_def_list:\n\twindow_def  {\n\t\t$$ = new WindowDefList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_def_ = $1;\n\t\t\n\t}\n   |\twindow_def OP_COMMA window_def_list  {\n\t\t$$ = new WindowDefList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->window_def_ = $1;\n\t\t$$->window_def_list_ = $3;\n\t\t\n\t}\n  ;\n\nwindow_def:\n\twindow_name AS OP_LP window OP_RP  {\n\t\t$$ = new WindowDef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_name_ = $1;\n\t\t$$->window_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->window_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataWindowName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nwindow_name:\n\tidentifier  {\n\t\t$$ = new WindowName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\nwindow:\n\topt_exist_window_name opt_partition opt_order_clause opt_frame_clause  {\n\t\t$$ = new Window();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_exist_window_name_ = $1;\n\t\t$$->opt_partition_ = $2;\n\t\t$$->opt_order_clause_ = $3;\n\t\t$$->opt_frame_clause_ = $4;\n\t\t\n\t}\n  ;\n\nopt_partition:\n\tPARTITION BY expr_list  {\n\t\t$$ = new OptPartition();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptPartition();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_frame_clause:\n\trange_or_rows frame_bound_start  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->range_or_rows_ = $1;\n\t\t$$->frame_bound_start_ = $2;\n\t\t\n\t}\n   |\trange_or_rows BETWEEN frame_bound_start AND frame_bound_end  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->range_or_rows_ = $1;\n\t\t$$->frame_bound_start_ = $3;\n\t\t$$->frame_bound_end_ = $5;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nrange_or_rows:\n\tRANGE  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tROWS  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tGROUPS  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nframe_bound_start:\n\tframe_bound  {\n\t\t$$ = new FrameBoundStart();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->frame_bound_ = $1;\n\t\t\n\t}\n   |\tUNBOUNDED PRECEDING  {\n\t\t$$ = new FrameBoundStart();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nframe_bound_end:\n\tframe_bound  {\n\t\t$$ = new FrameBoundEnd();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->frame_bound_ = $1;\n\t\t\n\t}\n   |\tUNBOUNDED FOLLOWING  {\n\t\t$$ = new FrameBoundEnd();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nframe_bound:\n\texpr PRECEDING  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t\n\t}\n   |\texpr FOLLOWING  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_ = $1;\n\t\t\n\t}\n   |\tCURRENT ROW  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_exist_window_name:\n\tidentifier  {\n\t\t$$ = new OptExistWindowName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataWindowName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n   |\t  {\n\t\t$$ = new OptExistWindowName();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_group_clause:\n\tGROUP BY expr_list opt_having_clause  {\n\t\t$$ = new OptGroupClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $3;\n\t\t$$->opt_having_clause_ = $4;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptGroupClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_having_clause:\n\tHAVING expr  {\n\t\t$$ = new OptHavingClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptHavingClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_where_clause:\n\twhere_clause  {\n\t\t$$ = new OptWhereClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->where_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWhereClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nwhere_clause:\n\tWHERE expr  {\n\t\t$$ = new WhereClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n  ;\n\nfrom_clause:\n\tFROM table_ref  {\n\t\t$$ = new FromClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_ref_ = $2;\n\t\t\n\t}\n  ;\n\ntable_ref:\n\topt_table_prefix table_name opt_as_alias opt_index opt_on opt_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->table_name_ = $2;\n\t\t$$->opt_as_alias_ = $3;\n\t\t$$->opt_index_ = $4;\n\t\t$$->opt_on_ = $5;\n\t\t$$->opt_using_ = $6;\n\t\t\n\t}\n   |\topt_table_prefix function_name OP_LP expr_list OP_RP opt_as_alias opt_on opt_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->function_name_ = $2;\n\t\t$$->expr_list_ = $4;\n\t\t$$->opt_as_alias_ = $6;\n\t\t$$->opt_on_ = $7;\n\t\t$$->opt_using_ = $8;\n\t\t\n\t}\n   |\topt_table_prefix OP_LP select_no_parens OP_RP opt_as_alias opt_on opt_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->select_no_parens_ = $3;\n\t\t$$->opt_as_alias_ = $5;\n\t\t$$->opt_on_ = $6;\n\t\t$$->opt_using_ = $7;\n\t\t\n\t}\n   |\topt_table_prefix OP_LP table_ref OP_RP opt_as_alias opt_on opt_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->table_ref_ = $3;\n\t\t$$->opt_as_alias_ = $5;\n\t\t$$->opt_on_ = $6;\n\t\t$$->opt_using_ = $7;\n\t\t\n\t}\n  ;\n\nopt_index:\n\tINDEXED BY column_name  {\n\t\t$$ = new OptIndex();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $3;\n\t\t\n\t}\n   |\tNOT INDEXED  {\n\t\t$$ = new OptIndex();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIndex();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_on:\n\tON expr  {\n\t\t$$ = new OptOn();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n   |\t %prec JOIN {\n\t\t$$ = new OptOn();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_using:\n\tUSING OP_LP column_name_list OP_RP  {\n\t\t$$ = new OptUsing();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptUsing();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ncolumn_name_list:\n\tcolumn_name  {\n\t\t$$ = new ColumnNameList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t\n\t}\n   |\tcolumn_name OP_COMMA column_name_list  {\n\t\t$$ = new ColumnNameList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_name_ = $1;\n\t\t$$->column_name_list_ = $3;\n\t\t\n\t}\n  ;\n\nopt_table_prefix:\n\ttable_ref join_op  {\n\t\t$$ = new OptTablePrefix();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_ref_ = $1;\n\t\t$$->join_op_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTablePrefix();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\njoin_op:\n\tOP_COMMA  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tJOIN  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tNATURAL opt_join_type JOIN  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_join_type_ = $2;\n\t\t\n\t}\n  ;\n\nopt_join_type:\n\tLEFT  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tLEFT OUTER  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tINNER  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tCROSS  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n  ;\n\nexpr_list:\n\texpr opt_as_alias OP_COMMA expr_list  {\n\t\t$$ = new ExprList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_as_alias_ = $2;\n\t\t$$->expr_list_ = $4;\n\t\t\n\t}\n   |\texpr opt_as_alias  {\n\t\t$$ = new ExprList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_as_alias_ = $2;\n\t\t\n\t}\n  ;\n\nopt_limit_clause:\n\tlimit_clause  {\n\t\t$$ = new OptLimitClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->limit_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptLimitClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nlimit_clause:\n\tLIMIT expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t\n\t}\n   |\tLIMIT expr OFFSET expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n   |\tLIMIT expr OP_COMMA expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n  ;\n\nopt_limit_row_count:\n\tLIMIT expr  {\n\t\t$$ = new OptLimitRowCount();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptLimitRowCount();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_order_clause:\n\tORDER BY order_item_list  {\n\t\t$$ = new OptOrderClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->order_item_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_order_nulls:\n\tNULLS FIRST  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tNULLS LAST  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\norder_item_list:\n\torder_item  {\n\t\t$$ = new OrderItemList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->order_item_ = $1;\n\t\t\n\t}\n   |\torder_item OP_COMMA order_item_list  {\n\t\t$$ = new OrderItemList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->order_item_ = $1;\n\t\t$$->order_item_list_ = $3;\n\t\t\n\t}\n  ;\n\norder_item:\n\texpr opt_order_behavior opt_order_nulls  {\n\t\t$$ = new OrderItem();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_order_behavior_ = $2;\n\t\t$$->opt_order_nulls_ = $3;\n\t\t\n\t}\n  ;\n\nopt_order_behavior:\n\tASC  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tDESC  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_with_clause:\n\tWITH cte_table_list  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_list_ = $2;\n\t\t\n\t}\n   |\tWITH RECURSIVE cte_table_list  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->cte_table_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ncte_table_list:\n\tcte_table  {\n\t\t$$ = new CteTableList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_ = $1;\n\t\t\n\t}\n   |\tcte_table OP_COMMA cte_table_list  {\n\t\t$$ = new CteTableList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->cte_table_ = $1;\n\t\t$$->cte_table_list_ = $3;\n\t\t\n\t}\n  ;\n\ncte_table:\n\tcte_table_name AS OP_LP select_stmt OP_RP  {\n\t\t$$ = new CteTable();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_name_ = $1;\n\t\t$$->select_stmt_ = $4;\n\t\t\n\t}\n  ;\n\ncte_table_name:\n\ttable_name opt_column_name_list_p  {\n\t\t$$ = new CteTableName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $1;\n\t\t$$->opt_column_name_list_p_ = $2;\n\t\t\n\t}\n  ;\n\nopt_all_or_distinct:\n\tALL  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tDISTINCT  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ncreate_table_stmt:\n\tCREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt  {\n\t\t$$ = new CreateTableStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->opt_if_not_exist_ = $4;\n\t\t$$->table_name_ = $5;\n\t\t$$->opt_table_option_list_ = $6;\n\t\t$$->opt_ignore_or_replace_ = $7;\n\t\t$$->select_stmt_ = $9;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)128; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list  {\n\t\t$$ = new CreateTableStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->opt_if_not_exist_ = $4;\n\t\t$$->table_name_ = $5;\n\t\t$$->column_def_list_ = $7;\n\t\t$$->opt_table_constraint_list_ = $8;\n\t\t$$->opt_table_option_list_ = $10;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_def_list_; \n\t\t\twhile(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_def_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->identifier_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\ttmp3->data_type_ = kDataColumnName; \n\t\t\t\t\t\ttmp3->scope_ = 2; \n\t\t\t\t\t\ttmp3->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp1 = tmp1->column_def_list_;\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncreate_index_stmt:\n\tCREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option  {\n\t\t$$ = new CreateIndexStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_index_keyword_ = $2;\n\t\t$$->table_name_1_ = $4;\n\t\t$$->table_name_2_ = $6;\n\t\t$$->indexed_column_list_ = $8;\n\t\t$$->opt_index_option_ = $10;\n\t\t$$->opt_extra_option_ = $11;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_1_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)128; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_2_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncreate_trigger_stmt:\n\tCREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body  {\n\t\t$$ = new CreateTriggerStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->trigger_name_ = $3;\n\t\t$$->trigger_action_time_ = $4;\n\t\t$$->trigger_events_ = $5;\n\t\t$$->table_name_ = $7;\n\t\t$$->trigger_body_ = $11;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->trigger_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTriggerName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncreate_view_stmt:\n\tCREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_view_algorithm_ = $2;\n\t\t$$->opt_sql_security_ = $3;\n\t\t$$->view_name_ = $5;\n\t\t$$->opt_column_name_list_p_ = $6;\n\t\t$$->select_stmt_ = $8;\n\t\t$$->opt_check_option_ = $9;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_view_algorithm_ = $4;\n\t\t$$->opt_sql_security_ = $5;\n\t\t$$->view_name_ = $7;\n\t\t$$->opt_column_name_list_p_ = $8;\n\t\t$$->select_stmt_ = $10;\n\t\t$$->opt_check_option_ = $11;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_table_option_list:\n\ttable_option_list  {\n\t\t$$ = new OptTableOptionList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_option_list_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTableOptionList();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ntable_option_list:\n\ttable_option  {\n\t\t$$ = new TableOptionList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_option_ = $1;\n\t\t\n\t}\n   |\ttable_option opt_op_comma table_option_list  {\n\t\t$$ = new TableOptionList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->table_option_ = $1;\n\t\t$$->opt_op_comma_ = $2;\n\t\t$$->table_option_list_ = $3;\n\t\t\n\t}\n  ;\n\ntable_option:\n\tINSERT_METHOD opt_op_equal NO  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tINSERT_METHOD opt_op_equal FIRST  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tINSERT_METHOD opt_op_equal LAST  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal DEFAULT  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal DYNAMIC  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal FIXED  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal COMPRESSED  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE6;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal REDUNDANT  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE7;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tROW_FORMAT opt_op_equal COMPACT  {\n\t\t$$ = new TableOption();\n\t\t$$->case_idx_ = CASE8;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n  ;\n\nopt_op_comma:\n\tOP_COMMA  {\n\t\t$$ = new OptOpComma();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOpComma();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_ignore_or_replace:\n\tIGNORE  {\n\t\t$$ = new OptIgnoreOrReplace();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tREPLACE  {\n\t\t$$ = new OptIgnoreOrReplace();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIgnoreOrReplace();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_view_algorithm:\n\tALGORITHM OP_EQUAL UNDEFINED  {\n\t\t$$ = new OptViewAlgorithm();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tALGORITHM OP_EQUAL MERGE  {\n\t\t$$ = new OptViewAlgorithm();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tALGORITHM OP_EQUAL TEMPTABLE  {\n\t\t$$ = new OptViewAlgorithm();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptViewAlgorithm();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\nopt_sql_security:\n\tSQL SECURITY DEFINER  {\n\t\t$$ = new OptSqlSecurity();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tSQL SECURITY INVOKER  {\n\t\t$$ = new OptSqlSecurity();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptSqlSecurity();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_index_option:\n\tUSING BTREE  {\n\t\t$$ = new OptIndexOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tUSING HASH  {\n\t\t$$ = new OptIndexOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIndexOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_extra_option:\n\tindex_algorithm_option  {\n\t\t$$ = new OptExtraOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->index_algorithm_option_ = $1;\n\t\t\n\t}\n   |\tlock_option  {\n\t\t$$ = new OptExtraOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->lock_option_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptExtraOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nindex_algorithm_option:\n\tALGORITHM opt_op_equal DEFAULT  {\n\t\t$$ = new IndexAlgorithmOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tALGORITHM opt_op_equal INPLACE  {\n\t\t$$ = new IndexAlgorithmOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tALGORITHM opt_op_equal COPY  {\n\t\t$$ = new IndexAlgorithmOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n  ;\n\nlock_option:\n\tLOCK opt_op_equal DEFAULT  {\n\t\t$$ = new LockOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tLOCK opt_op_equal NONE  {\n\t\t$$ = new LockOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tLOCK opt_op_equal SHARED  {\n\t\t$$ = new LockOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n   |\tLOCK opt_op_equal EXCLUSIVE  {\n\t\t$$ = new LockOption();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->opt_op_equal_ = $2;\n\t\t\n\t}\n  ;\n\nopt_op_equal:\n\tOP_EQUAL  {\n\t\t$$ = new OptOpEqual();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOpEqual();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ntrigger_events:\n\tDELETE  {\n\t\t$$ = new TriggerEvents();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINSERT  {\n\t\t$$ = new TriggerEvents();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tUPDATE  {\n\t\t$$ = new TriggerEvents();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ntrigger_name:\n\tidentifier  {\n\t\t$$ = new TriggerName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\ntrigger_action_time:\n\tBEFORE  {\n\t\t$$ = new TriggerActionTime();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tAFTER  {\n\t\t$$ = new TriggerActionTime();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ndrop_index_stmt:\n\tDROP INDEX table_name opt_extra_option  {\n\t\t$$ = new DropIndexStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\t$$->opt_extra_option_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ndrop_table_stmt:\n\tDROP opt_temp TABLE opt_if_exist table_name opt_restrict_or_cascade  {\n\t\t$$ = new DropTableStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->opt_if_exist_ = $4;\n\t\t$$->table_name_ = $5;\n\t\t$$->opt_restrict_or_cascade_ = $6;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_restrict_or_cascade:\n\tRESTRICT  {\n\t\t$$ = new OptRestrictOrCascade();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tCASCADE  {\n\t\t$$ = new OptRestrictOrCascade();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptRestrictOrCascade();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ndrop_trigger_stmt:\n\tDROP TRIGGER opt_if_exist trigger_name  {\n\t\t$$ = new DropTriggerStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_if_exist_ = $3;\n\t\t$$->trigger_name_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->trigger_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTriggerName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ndrop_view_stmt:\n\tDROP VIEW opt_if_exist view_name opt_restrict_or_cascade  {\n\t\t$$ = new DropViewStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_if_exist_ = $3;\n\t\t$$->view_name_ = $4;\n\t\t$$->opt_restrict_or_cascade_ = $5;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ninsert_stmt:\n\topt_with_clause INSERT INTO table_name opt_as_alias insert_rest opt_on_conflict  {\n\t\t$$ = new InsertStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_with_clause_ = $1;\n\t\t$$->table_name_ = $4;\n\t\t$$->opt_as_alias_ = $5;\n\t\t$$->insert_rest_ = $6;\n\t\t$$->opt_on_conflict_ = $7;\n\t\t\n\t}\n  ;\n\ninsert_rest:\n\topt_column_name_list_p select_no_parens  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n   |\topt_column_name_list_p DEFAULT VALUES  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t\n\t}\n   |\topt_column_name_list_p VALUES super_values_list  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t$$->super_values_list_ = $3;\n\t\t\n\t}\n  ;\n\nsuper_values_list:\n\tvalues_list  {\n\t\t$$ = new SuperValuesList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->values_list_ = $1;\n\t\t\n\t}\n   |\tvalues_list OP_COMMA super_values_list  {\n\t\t$$ = new SuperValuesList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->values_list_ = $1;\n\t\t$$->super_values_list_ = $3;\n\t\t\n\t}\n  ;\n\nvalues_list:\n\tOP_LP expr_list OP_RP  {\n\t\t$$ = new ValuesList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $2;\n\t\t\n\t}\n  ;\n\nopt_on_conflict:\n\tON CONFLICT opt_conflict_expr DO NOTHING  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_conflict_expr_ = $3;\n\t\t\n\t}\n   |\tON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_conflict_expr_ = $3;\n\t\t$$->set_clause_list_ = $6;\n\t\t$$->where_clause_ = $7;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_conflict_expr:\n\tOP_LP indexed_column_list OP_RP where_clause  {\n\t\t$$ = new OptConflictExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->indexed_column_list_ = $2;\n\t\t$$->where_clause_ = $4;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptConflictExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nindexed_column_list:\n\tindexed_column  {\n\t\t$$ = new IndexedColumnList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->indexed_column_ = $1;\n\t\t\n\t}\n   |\tindexed_column OP_COMMA indexed_column_list  {\n\t\t$$ = new IndexedColumnList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->indexed_column_ = $1;\n\t\t$$->indexed_column_list_ = $3;\n\t\t\n\t}\n  ;\n\nindexed_column:\n\texpr opt_order_behavior  {\n\t\t$$ = new IndexedColumn();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_order_behavior_ = $2;\n\t\t\n\t}\n  ;\n\nupdate_stmt:\n\tUPDATE IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count  {\n\t\t$$ = new UpdateStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\t$$->opt_as_alias_ = $4;\n\t\t$$->set_clause_list_ = $6;\n\t\t$$->opt_where_clause_ = $7;\n\t\t$$->opt_order_clause_ = $8;\n\t\t$$->opt_limit_row_count_ = $9;\n\t\t\n\t}\n   |\tUPDATE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count  {\n\t\t$$ = new UpdateStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->table_name_ = $2;\n\t\t$$->opt_as_alias_ = $3;\n\t\t$$->set_clause_list_ = $5;\n\t\t$$->opt_where_clause_ = $6;\n\t\t$$->opt_order_clause_ = $7;\n\t\t$$->opt_limit_row_count_ = $8;\n\t\t\n\t}\n  ;\n\nalter_action:\n\tRENAME TO table_name  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)64; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tRENAME opt_column column_name TO column_name  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_column_ = $2;\n\t\t$$->column_name_1_ = $3;\n\t\t$$->column_name_2_ = $5;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_1_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_2_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 3; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)64; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tADD opt_column column_def  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_column_ = $2;\n\t\t$$->column_def_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_def_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tDROP opt_column column_name  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->opt_column_ = $2;\n\t\t$$->column_name_1_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_1_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\talter_constant_action  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->alter_constant_action_ = $1;\n\t\t\n\t}\n  ;\n\nalter_constant_action:\n\tDROP PRIMARY KEY  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tFORCE  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tDISABLE KEYS  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tENABLE KEYS  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tlock_option  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->lock_option_ = $1;\n\t\t\n\t}\n   |\tWITH VALIDATION  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tWITHOUT VALIDATION  {\n\t\t$$ = new AlterConstantAction();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n  ;\n\ncolumn_def_list:\n\tcolumn_def  {\n\t\t$$ = new ColumnDefList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_def_ = $1;\n\t\t\n\t}\n   |\tcolumn_def OP_COMMA column_def_list  {\n\t\t$$ = new ColumnDefList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_def_ = $1;\n\t\t$$->column_def_list_ = $3;\n\t\t\n\t}\n  ;\n\ncolumn_def:\n\tidentifier type_name opt_column_constraint_list  {\n\t\t$$ = new ColumnDef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t$$->type_name_ = $2;\n\t\t$$->opt_column_constraint_list_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataColumnName; \n\t\t\t\ttmp1->scope_ = 2; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)1; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_column_constraint_list:\n\tcolumn_constraint_list opt_check opt_reference_clause  {\n\t\t$$ = new OptColumnConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_constraint_list_ = $1;\n\t\t$$->opt_check_ = $2;\n\t\t$$->opt_reference_clause_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumnConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ncolumn_constraint_list:\n\tcolumn_constraint  {\n\t\t$$ = new ColumnConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_constraint_ = $1;\n\t\t\n\t}\n   |\tcolumn_constraint column_constraint_list  {\n\t\t$$ = new ColumnConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_constraint_ = $1;\n\t\t$$->column_constraint_list_ = $2;\n\t\t\n\t}\n  ;\n\ncolumn_constraint:\n\tconstraint_type  {\n\t\t$$ = new ColumnConstraint();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->constraint_type_ = $1;\n\t\t\n\t}\n  ;\n\nopt_reference_clause:\n\topt_foreign_key reference_clause  {\n\t\t$$ = new OptReferenceClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_foreign_key_ = $1;\n\t\t$$->reference_clause_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptReferenceClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_check:\n\tCHECK OP_LP expr OP_RP opt_enforced  {\n\t\t$$ = new OptCheck();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $3;\n\t\t$$->opt_enforced_ = $5;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptCheck();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nconstraint_type:\n\tPRIMARY KEY  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tNOT NULL  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tUNIQUE  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nreference_clause:\n\tREFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec  {\n\t\t$$ = new ReferenceClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $2;\n\t\t$$->opt_column_name_list_p_ = $3;\n\t\t$$->opt_foreign_key_actions_ = $4;\n\t\t$$->opt_constraint_attribute_spec_ = $5;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 100; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 101; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)8; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_foreign_key:\n\tFOREIGN KEY  {\n\t\t$$ = new OptForeignKey();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptForeignKey();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_foreign_key_actions:\n\tforeign_key_actions  {\n\t\t$$ = new OptForeignKeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->foreign_key_actions_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptForeignKeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nforeign_key_actions:\n\tMATCH FULL  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tMATCH PARTIAL  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tMATCH SIMPLE  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tON UPDATE key_actions  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->key_actions_ = $3;\n\t\t\n\t}\n   |\tON DELETE key_actions  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->key_actions_ = $3;\n\t\t\n\t}\n  ;\n\nkey_actions:\n\tSET NULL  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tSET DEFAULT  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tCASCADE  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tRESTRICT  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tNO ACTION  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n  ;\n\nopt_constraint_attribute_spec:\n\tDEFFERRABLE opt_initial_time  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_initial_time_ = $2;\n\t\t\n\t}\n   |\tNOT DEFFERRABLE opt_initial_time  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_initial_time_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_initial_time:\n\tINITIALLY DEFERRED  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINITIALLY IMMEDIATE  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nconstraint_name:\n\tCONSTRAINT name  {\n\t\t$$ = new ConstraintName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->name_ = $2;\n\t\t\n\t}\n  ;\n\nopt_temp:\n\tTEMPORARY  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_check_option:\n\tWITH CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tWITH CASCADED CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tWITH LOCAL CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\nopt_column_name_list_p:\n\tOP_LP column_name_list OP_RP  {\n\t\t$$ = new OptColumnNameListP();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_list_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumnNameListP();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nset_clause_list:\n\tset_clause  {\n\t\t$$ = new SetClauseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->set_clause_ = $1;\n\t\t\n\t}\n   |\tset_clause OP_COMMA set_clause_list  {\n\t\t$$ = new SetClauseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->set_clause_ = $1;\n\t\t$$->set_clause_list_ = $3;\n\t\t\n\t}\n  ;\n\nset_clause:\n\tcolumn_name OP_EQUAL expr  {\n\t\t$$ = new SetClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t$$->expr_ = $3;\n\t\t\n\t}\n   |\tOP_LP column_name_list OP_RP OP_EQUAL expr  {\n\t\t$$ = new SetClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_name_list_ = $2;\n\t\t$$->expr_ = $5;\n\t\t\n\t}\n  ;\n\nopt_as_alias:\n\tas_alias  {\n\t\t$$ = new OptAsAlias();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->as_alias_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptAsAlias();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nexpr:\n\toperand  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\tbetween_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->between_expr_ = $1;\n\t\t\n\t}\n   |\texists_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->exists_expr_ = $1;\n\t\t\n\t}\n   |\tin_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->in_expr_ = $1;\n\t\t\n\t}\n   |\tcast_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->cast_expr_ = $1;\n\t\t\n\t}\n   |\tlogic_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->logic_expr_ = $1;\n\t\t\n\t}\n  ;\n\noperand:\n\tOP_LP expr_list OP_RP  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $2;\n\t\t\n\t}\n   |\tarray_index  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->array_index_ = $1;\n\t\t\n\t}\n   |\tscalar_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->scalar_expr_ = $1;\n\t\t\n\t}\n   |\tunary_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->unary_expr_ = $1;\n\t\t\n\t}\n   |\tbinary_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->binary_expr_ = $1;\n\t\t\n\t}\n   |\tcase_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->case_expr_ = $1;\n\t\t\n\t}\n   |\textract_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE6;\n\t\t$$->extract_expr_ = $1;\n\t\t\n\t}\n   |\tarray_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE7;\n\t\t$$->array_expr_ = $1;\n\t\t\n\t}\n   |\tfunction_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE8;\n\t\t$$->function_expr_ = $1;\n\t\t\n\t}\n   |\tOP_LP select_no_parens OP_RP  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE9;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n  ;\n\ncast_expr:\n\tCAST OP_LP expr AS type_name OP_RP  {\n\t\t$$ = new CastExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $3;\n\t\t$$->type_name_ = $5;\n\t\t\n\t}\n  ;\n\nscalar_expr:\n\tcolumn_name  {\n\t\t$$ = new ScalarExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t\n\t}\n   |\tliteral  {\n\t\t$$ = new ScalarExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->literal_ = $1;\n\t\t\n\t}\n  ;\n\nunary_expr:\n\tOP_SUB operand %prec OP_SUB {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $2;\n\t\t\n\t}\n   |\tNOT operand %prec NOT {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_ = $2;\n\t\t\n\t}\n   |\toperand ISNULL %prec ISNULL {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\toperand IS NULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\toperand IS NOT NULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\tNULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tOP_MUL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n  ;\n\nbinary_expr:\n\tcomp_expr  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->comp_expr_ = $1;\n\t\t\n\t}\n   |\toperand binary_op operand %prec OP_ADD {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->binary_op_ = $2;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand LIKE operand  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand NOT LIKE operand  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $4;\n\t\t\n\t}\n  ;\n\nlogic_expr:\n\texpr AND expr  {\n\t\t$$ = new LogicExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $1;\n\t\t$$->expr_2_ = $3;\n\t\t\n\t}\n   |\texpr OR expr  {\n\t\t$$ = new LogicExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_1_ = $1;\n\t\t$$->expr_2_ = $3;\n\t\t\n\t}\n  ;\n\nin_expr:\n\toperand opt_not IN OP_LP select_no_parens OP_RP  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->select_no_parens_ = $5;\n\t\t\n\t}\n   |\toperand opt_not IN OP_LP expr_list OP_RP  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->expr_list_ = $5;\n\t\t\n\t}\n   |\toperand opt_not IN table_name  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->table_name_ = $4;\n\t\t\n\t}\n  ;\n\ncase_expr:\n\tCASE expr case_list END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t$$->case_list_ = $3;\n\t\t\n\t}\n   |\tCASE case_list END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->case_list_ = $2;\n\t\t\n\t}\n   |\tCASE expr case_list ELSE expr END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->expr_1_ = $2;\n\t\t$$->case_list_ = $3;\n\t\t$$->expr_2_ = $5;\n\t\t\n\t}\n   |\tCASE case_list ELSE expr END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->case_list_ = $2;\n\t\t$$->expr_1_ = $4;\n\t\t\n\t}\n  ;\n\nbetween_expr:\n\toperand BETWEEN operand AND operand %prec BETWEEN {\n\t\t$$ = new BetweenExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t$$->operand_3_ = $5;\n\t\t\n\t}\n   |\toperand NOT BETWEEN operand AND operand %prec NOT {\n\t\t$$ = new BetweenExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $4;\n\t\t$$->operand_3_ = $6;\n\t\t\n\t}\n  ;\n\nexists_expr:\n\topt_not EXISTS OP_LP select_no_parens OP_RP  {\n\t\t$$ = new ExistsExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_not_ = $1;\n\t\t$$->select_no_parens_ = $4;\n\t\t\n\t}\n  ;\n\nfunction_expr:\n\tfunction_name OP_LP OP_RP opt_filter_clause opt_over_clause  {\n\t\t$$ = new FunctionExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->function_name_ = $1;\n\t\t$$->opt_filter_clause_ = $4;\n\t\t$$->opt_over_clause_ = $5;\n\t\t\n\t}\n   |\tfunction_name OP_LP opt_distinct expr_list OP_RP opt_filter_clause opt_over_clause  {\n\t\t$$ = new FunctionExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->function_name_ = $1;\n\t\t$$->opt_distinct_ = $3;\n\t\t$$->expr_list_ = $4;\n\t\t$$->opt_filter_clause_ = $6;\n\t\t$$->opt_over_clause_ = $7;\n\t\t\n\t}\n  ;\n\nopt_distinct:\n\tDISTINCT  {\n\t\t$$ = new OptDistinct();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptDistinct();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_filter_clause:\n\tFILTER OP_LP WHERE expr OP_RP  {\n\t\t$$ = new OptFilterClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $4;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFilterClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_over_clause:\n\tOVER OP_LP window OP_RP  {\n\t\t$$ = new OptOverClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_ = $3;\n\t\t\n\t}\n   |\tOVER window_name  {\n\t\t$$ = new OptOverClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->window_name_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOverClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ncase_list:\n\tcase_clause  {\n\t\t$$ = new CaseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->case_clause_ = $1;\n\t\t\n\t}\n   |\tcase_clause case_list  {\n\t\t$$ = new CaseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->case_clause_ = $1;\n\t\t$$->case_list_ = $2;\n\t\t\n\t}\n  ;\n\ncase_clause:\n\tWHEN expr THEN expr  {\n\t\t$$ = new CaseClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n  ;\n\ncomp_expr:\n\toperand OP_EQUAL operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_NOTEQUAL operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_GREATERTHAN operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_LESSTHAN operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_LESSEQ operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_GREATEREQ operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n  ;\n\nextract_expr:\n\tEXTRACT OP_LP datetime_field FROM expr OP_RP  {\n\t\t$$ = new ExtractExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->datetime_field_ = $3;\n\t\t$$->expr_ = $5;\n\t\t\n\t}\n  ;\n\ndatetime_field:\n\tSECOND  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tMINUTE  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tHOUR  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tDAY  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tMONTH  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tYEAR  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n  ;\n\narray_expr:\n\tARRAY OP_LBRACKET expr_list OP_RBRACKET  {\n\t\t$$ = new ArrayExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $3;\n\t\t\n\t}\n  ;\n\narray_index:\n\toperand OP_LBRACKET int_literal OP_RBRACKET  {\n\t\t$$ = new ArrayIndex();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t$$->int_literal_ = $3;\n\t\t\n\t}\n  ;\n\nliteral:\n\tstring_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->string_literal_ = $1;\n\t\t\n\t}\n   |\tbool_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->bool_literal_ = $1;\n\t\t\n\t}\n   |\tnum_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->num_literal_ = $1;\n\t\t\n\t}\n  ;\n\nstring_literal:\n\tSTRINGLITERAL  {\n\t\t$$ = new StringLiteral();\n\t\t$$->string_val_ = $1;\n\t\tfree($1);\n\t\t\n\t}\n  ;\n\nbool_literal:\n\tTRUE  {\n\t\t$$ = new BoolLiteral();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tFALSE  {\n\t\t$$ = new BoolLiteral();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nnum_literal:\n\tint_literal  {\n\t\t$$ = new NumLiteral();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->int_literal_ = $1;\n\t\t\n\t}\n   |\tfloat_literal  {\n\t\t$$ = new NumLiteral();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->float_literal_ = $1;\n\t\t\n\t}\n  ;\n\nint_literal:\n\tINTLITERAL  {\n\t\t$$ = new IntLiteral();\n\t\t$$->int_val_ = $1;\n\t\t\n\t}\n  ;\n\nfloat_literal:\n\tFLOATLITERAL  {\n\t\t$$ = new FloatLiteral();\n\t\t$$->float_val_ = $1;\n\t\t\n\t}\n  ;\n\nopt_column:\n\tCOLUMN  {\n\t\t$$ = new OptColumn();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumn();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ntrigger_body:\n\tdrop_stmt  {\n\t\t$$ = new TriggerBody();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->drop_stmt_ = $1;\n\t\t\n\t}\n   |\tupdate_stmt  {\n\t\t$$ = new TriggerBody();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->update_stmt_ = $1;\n\t\t\n\t}\n   |\tinsert_stmt  {\n\t\t$$ = new TriggerBody();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->insert_stmt_ = $1;\n\t\t\n\t}\n   |\talter_stmt  {\n\t\t$$ = new TriggerBody();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->alter_stmt_ = $1;\n\t\t\n\t}\n  ;\n\nopt_if_not_exist:\n\tIF NOT EXISTS  {\n\t\t$$ = new OptIfNotExist();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIfNotExist();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_if_exist:\n\tIF EXISTS  {\n\t\t$$ = new OptIfExist();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIfExist();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nidentifier:\n\tIDENTIFIER  {\n\t\t$$ = new Identifier();\n\t\t$$->string_val_ = $1;\n\t\tfree($1);\n\t\t\n\t}\n  ;\n\nas_alias:\n\tAS identifier  {\n\t\t$$ = new AsAlias();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $2;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataAliasName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)1; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ntable_name:\n\tidentifier  {\n\t\t$$ = new TableName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataTableName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncolumn_name:\n\tidentifier  {\n\t\t$$ = new ColumnName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataColumnName; \n\t\t\t\ttmp1->scope_ = 2; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_index_keyword:\n\tUNIQUE  {\n\t\t$$ = new OptIndexKeyword();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tFULLTEXT  {\n\t\t$$ = new OptIndexKeyword();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tSPATIAL  {\n\t\t$$ = new OptIndexKeyword();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIndexKeyword();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\nview_name:\n\tidentifier  {\n\t\t$$ = new ViewName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\nfunction_name:\n\tidentifier  {\n\t\t$$ = new FunctionName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataFunctionName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)4; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nbinary_op:\n\tOP_ADD  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tOP_SUB  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tOP_DIVIDE  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tOP_MOD  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tOP_MUL  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tOP_XOR  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n  ;\n\nopt_not:\n\tNOT  {\n\t\t$$ = new OptNot();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptNot();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nname:\n\tidentifier  {\n\t\t$$ = new Name();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\ntype_name:\n\tnumeric_type  {\n\t\t$$ = new TypeName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->numeric_type_ = $1;\n\t\t\n\t}\n   |\tcharacter_type  {\n\t\t$$ = new TypeName();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->character_type_ = $1;\n\t\t\n\t}\n  ;\n\ncharacter_type:\n\tcharacter_with_length  {\n\t\t$$ = new CharacterType();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_with_length_ = $1;\n\t\t\n\t}\n   |\tcharacter_without_length  {\n\t\t$$ = new CharacterType();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->character_without_length_ = $1;\n\t\t\n\t}\n  ;\n\ncharacter_with_length:\n\tcharacter_conflicta OP_LP int_literal OP_RP  {\n\t\t$$ = new CharacterWithLength();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_conflicta_ = $1;\n\t\t$$->int_literal_ = $3;\n\t\t\n\t}\n  ;\n\ncharacter_without_length:\n\tcharacter_conflicta  {\n\t\t$$ = new CharacterWithoutLength();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_conflicta_ = $1;\n\t\t\n\t}\n   |\tSET  {\n\t\t$$ = new CharacterWithoutLength();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tENUM  {\n\t\t$$ = new CharacterWithoutLength();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tBINARY  {\n\t\t$$ = new CharacterWithoutLength();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\ncharacter_conflicta:\n\tCHARACTER  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tCHAR  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tVARCHAR  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tTEXT  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tTINYTEXT  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tMEDIUMTEXT  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tLONGTEXT  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n   |\tNATIONAL CHARACTER  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE7;\n\t\t\n\t}\n   |\tNATIONAL CHAR  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE8;\n\t\t\n\t}\n   |\tNCHAR  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE9;\n\t\t\n\t}\n  ;\n\nnumeric_type:\n\tINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINTEGER  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tSMALLINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tBIGINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tREAL  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tFLOAT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tFIXED  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n   |\tDOUBLE  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE7;\n\t\t\n\t}\n   |\tDOUBLE PRECISION  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE8;\n\t\t\n\t}\n   |\tDECIMAL  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE9;\n\t\t\n\t}\n   |\tDEC  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE10;\n\t\t\n\t}\n   |\tNUMERIC  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE11;\n\t\t\n\t}\n   |\tBOOLEAN  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE12;\n\t\t\n\t}\n  ;\n\nopt_table_constraint_list:\n\ttable_constraint_list  {\n\t\t$$ = new OptTableConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_constraint_list_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTableConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ntable_constraint_list:\n\ttable_constraint  {\n\t\t$$ = new TableConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_constraint_ = $1;\n\t\t\n\t}\n   |\ttable_constraint OP_COMMA table_constraint_list  {\n\t\t$$ = new TableConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->table_constraint_ = $1;\n\t\t$$->table_constraint_list_ = $3;\n\t\t\n\t}\n  ;\n\ntable_constraint:\n\tconstraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->indexed_column_list_ = $5;\n\t\t\n\t}\n   |\tconstraint_name UNIQUE OP_LP indexed_column_list OP_RP  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->indexed_column_list_ = $4;\n\t\t\n\t}\n   |\tconstraint_name CHECK OP_LP expr OP_RP opt_enforced  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->expr_ = $4;\n\t\t$$->opt_enforced_ = $6;\n\t\t\n\t}\n   |\tconstraint_name FOREIGN KEY OP_LP column_name_list OP_RP reference_clause  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->column_name_list_ = $5;\n\t\t$$->reference_clause_ = $7;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_list_; \n\t\t\twhile(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->identifier_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\ttmp3->data_type_ = kDataColumnName; \n\t\t\t\t\t\ttmp3->scope_ = 2; \n\t\t\t\t\t\ttmp3->data_flag_ =(DATAFLAG)8; \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp1 = tmp1->column_name_list_;\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_enforced:\n\tENFORCED  {\n\t\t$$ = new OptEnforced();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tNOT ENFORCED  {\n\t\t$$ = new OptEnforced();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptEnforced();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\n%%\n"
  },
  {
    "path": "srcs/internal/mysql/parser/bison_parser.cpp",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison implementation for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* C LALR(1) parser skeleton written by Richard Stallman, by\n   simplifying the original so-called \"semantic\" parser.  */\n\n/* All symbols defined below should begin with yy or YY, to avoid\n   infringing on user name space.  This should be done even for local\n   variables, as they might otherwise be expanded by user macros.\n   There are some unavoidable exceptions within include files to\n   define necessary library symbols; they are noted \"INFRINGES ON\n   USER NAME SPACE\" below.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n/* Identify Bison output.  */\n#define YYBISON 1\n\n/* Bison version.  */\n#define YYBISON_VERSION \"3.3.2\"\n\n/* Skeleton name.  */\n#define YYSKELETON_NAME \"yacc.c\"\n\n/* Pure parsers.  */\n#define YYPURE 2\n\n/* Push parsers.  */\n#define YYPUSH 0\n\n/* Pull parsers.  */\n#define YYPULL 1\n\n/* Substitute the type names.  */\n#define YYSTYPE FF_STYPE\n#define YYLTYPE FF_LTYPE\n/* Substitute the variable and function names.  */\n#define yyparse ff_parse\n#define yylex ff_lex\n#define yyerror ff_error\n#define yydebug ff_debug\n#define yynerrs ff_nerrs\n\n/* First part of user prologue.  */\n#line 1 \"bison.y\" /* yacc.c:337  */\n\n#include \"bison_parser.h\"\n\n#include <stdio.h>\n#include <string.h>\n\n#include \"flex_lexer.h\"\nint yyerror(YYLTYPE *llocp, Program *result, yyscan_t scanner,\n            const char *msg) {\n  return 0;\n}\n\n#line 86 \"bison_parser.cpp\" /* yacc.c:337  */\n#ifndef YY_NULLPTR\n#if defined __cplusplus\n#if 201103L <= __cplusplus\n#define YY_NULLPTR nullptr\n#else\n#define YY_NULLPTR 0\n#endif\n#else\n#define YY_NULLPTR ((void *)0)\n#endif\n#endif\n\n/* Enabling verbose error messages.  */\n#ifdef YYERROR_VERBOSE\n#undef YYERROR_VERBOSE\n#define YYERROR_VERBOSE 1\n#else\n#define YYERROR_VERBOSE 1\n#endif\n\n/* In a future release of Bison, this section will be replaced\n   by #include \"bison_parser.h\".  */\n#ifndef YY_FF_BISON_PARSER_H_INCLUDED\n#define YY_FF_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef FF_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define FF_DEBUG 1\n#else\n#define FF_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define FF_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined FF_DEBUG */\n#if FF_DEBUG\nextern int ff_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 8 \"bison.y\" /* yacc.c:352  */\n\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n\n#line 132 \"bison_parser.cpp\" /* yacc.c:352  */\n\n/* Token type.  */\n#ifndef FF_TOKENTYPE\n#define FF_TOKENTYPE\nenum ff_tokentype {\n  SQL_OP_NOTEQUAL = 258,\n  SQL_ENABLE = 259,\n  SQL_SIMPLE = 260,\n  SQL_TEXT = 261,\n  SQL_OVER = 262,\n  SQL_YEAR = 263,\n  SQL_INSERT_METHOD = 264,\n  SQL_OP_SEMI = 265,\n  SQL_BIGINT = 266,\n  SQL_LIMIT = 267,\n  SQL_OP_GREATERTHAN = 268,\n  SQL_WITH = 269,\n  SQL_ORDER = 270,\n  SQL_OPTION = 271,\n  SQL_LAST = 272,\n  SQL_UNBOUNDED = 273,\n  SQL_PRECEDING = 274,\n  SQL_EXCEPT = 275,\n  SQL_NUMERIC = 276,\n  SQL_OP_LESSTHAN = 277,\n  SQL_ACTION = 278,\n  SQL_BEFORE = 279,\n  SQL_OP_GREATEREQ = 280,\n  SQL_CHECK = 281,\n  SQL_COMPACT = 282,\n  SQL_FULL = 283,\n  SQL_NATURAL = 284,\n  SQL_BINARY = 285,\n  SQL_NATIONAL = 286,\n  SQL_ENUM = 287,\n  SQL_REDUNDANT = 288,\n  SQL_OP_ADD = 289,\n  SQL_CURRENT = 290,\n  SQL_MERGE = 291,\n  SQL_TRIGGER = 292,\n  SQL_COMPRESSED = 293,\n  SQL_OP_SUB = 294,\n  SQL_FALSE = 295,\n  SQL_UNIQUE = 296,\n  SQL_WHERE = 297,\n  SQL_MINUTE = 298,\n  SQL_FIRST = 299,\n  SQL_ON = 300,\n  SQL_PARTIAL = 301,\n  SQL_DOUBLE = 302,\n  SQL_AFTER = 303,\n  SQL_PRIMARY = 304,\n  SQL_MONTH = 305,\n  SQL_DEFERRED = 306,\n  SQL_VALUES = 307,\n  SQL_LONGTEXT = 308,\n  SQL_SQL = 309,\n  SQL_SHARED = 310,\n  SQL_VALIDATION = 311,\n  SQL_OR = 312,\n  SQL_VIEW = 313,\n  SQL_INDEX = 314,\n  SQL_GROUP = 315,\n  SQL_OP_MUL = 316,\n  SQL_INPLACE = 317,\n  SQL_FOREIGN = 318,\n  SQL_RESTRICT = 319,\n  SQL_SPATIAL = 320,\n  SQL_FOLLOWING = 321,\n  SQL_DEC = 322,\n  SQL_SELECT = 323,\n  SQL_NONE = 324,\n  SQL_DISTINCT = 325,\n  SQL_TRUE = 326,\n  SQL_DYNAMIC = 327,\n  SQL_BY = 328,\n  SQL_OP_MOD = 329,\n  SQL_INTEGER = 330,\n  SQL_SECURITY = 331,\n  SQL_IS = 332,\n  SQL_DEFINER = 333,\n  SQL_ROW = 334,\n  SQL_ENFORCED = 335,\n  SQL_END = 336,\n  SQL_RECURSIVE = 337,\n  SQL_FOR = 338,\n  SQL_TEMPTABLE = 339,\n  SQL_UNION = 340,\n  SQL_NULLS = 341,\n  SQL_UPDATE = 342,\n  SQL_ELSE = 343,\n  SQL_RANGE = 344,\n  SQL_SET = 345,\n  SQL_INVOKER = 346,\n  SQL_OFFSET = 347,\n  SQL_INDEXED = 348,\n  SQL_FORCE = 349,\n  SQL_NCHAR = 350,\n  SQL_AND = 351,\n  SQL_INITIALLY = 352,\n  SQL_PRECISION = 353,\n  SQL_FILTER = 354,\n  SQL_WITHOUT = 355,\n  SQL_NOT = 356,\n  SQL_DELETE = 357,\n  SQL_DEFFERRABLE = 358,\n  SQL_REAL = 359,\n  SQL_THEN = 360,\n  SQL_UNDEFINED = 361,\n  SQL_DEFAULT = 362,\n  SQL_CROSS = 363,\n  SQL_CHAR = 364,\n  SQL_REFERENCES = 365,\n  SQL_OP_XOR = 366,\n  SQL_CASE = 367,\n  SQL_FIXED = 368,\n  SQL_HOUR = 369,\n  SQL_NO = 370,\n  SQL_COLUMN = 371,\n  SQL_LOCAL = 372,\n  SQL_DROP = 373,\n  SQL_REPLACE = 374,\n  SQL_ASC = 375,\n  SQL_OP_COMMA = 376,\n  SQL_DISABLE = 377,\n  SQL_TABLE = 378,\n  SQL_ARRAY = 379,\n  SQL_IF = 380,\n  SQL_EXTRACT = 381,\n  SQL_LEFT = 382,\n  SQL_FULLTEXT = 383,\n  SQL_HASH = 384,\n  SQL_ALGORITHM = 385,\n  SQL_LOCK = 386,\n  SQL_DECIMAL = 387,\n  SQL_PARTITION = 388,\n  SQL_CASCADE = 389,\n  SQL_ADD = 390,\n  SQL_BETWEEN = 391,\n  SQL_OP_LESSEQ = 392,\n  SQL_MATCH = 393,\n  SQL_ALL = 394,\n  SQL_ROWS = 395,\n  SQL_JOIN = 396,\n  SQL_LIKE = 397,\n  SQL_OP_RP = 398,\n  SQL_IGNORE = 399,\n  SQL_INT = 400,\n  SQL_MEDIUMTEXT = 401,\n  SQL_BOOLEAN = 402,\n  SQL_KEY = 403,\n  SQL_EACH = 404,\n  SQL_USING = 405,\n  SQL_RENAME = 406,\n  SQL_DO = 407,\n  SQL_OP_LP = 408,\n  SQL_CHARACTER = 409,\n  SQL_UMINUS = 410,\n  SQL_CAST = 411,\n  SQL_GROUPS = 412,\n  SQL_OUTER = 413,\n  SQL_NULL = 414,\n  SQL_SMALLINT = 415,\n  SQL_EXCLUSIVE = 416,\n  SQL_TEMPORARY = 417,\n  SQL_CONSTRAINT = 418,\n  SQL_CREATE = 419,\n  SQL_OP_LBRACKET = 420,\n  SQL_WHEN = 421,\n  SQL_IMMEDIATE = 422,\n  SQL_TO = 423,\n  SQL_BTREE = 424,\n  SQL_DAY = 425,\n  SQL_CONFLICT = 426,\n  SQL_ROW_FORMAT = 427,\n  SQL_OP_RBRACKET = 428,\n  SQL_EXISTS = 429,\n  SQL_INSERT = 430,\n  SQL_KEYS = 431,\n  SQL_INTO = 432,\n  SQL_OP_DIVIDE = 433,\n  SQL_CASCADED = 434,\n  SQL_ISNULL = 435,\n  SQL_AS = 436,\n  SQL_INNER = 437,\n  SQL_INTERSECT = 438,\n  SQL_IN = 439,\n  SQL_OP_EQUAL = 440,\n  SQL_VARCHAR = 441,\n  SQL_COPY = 442,\n  SQL_ALTER = 443,\n  SQL_DESC = 444,\n  SQL_FROM = 445,\n  SQL_TINYTEXT = 446,\n  SQL_FLOAT = 447,\n  SQL_SECOND = 448,\n  SQL_WINDOW = 449,\n  SQL_NOTHING = 450,\n  SQL_HAVING = 451,\n  SQL_INTLITERAL = 452,\n  SQL_FLOATLITERAL = 453,\n  SQL_IDENTIFIER = 454,\n  SQL_STRINGLITERAL = 455\n};\n#endif\n\n/* Value type.  */\n#if !defined FF_STYPE && !defined FF_STYPE_IS_DECLARED\n#line 30 \"bison.y\" /* yacc.c:352  */\nunion FF_STYPE {\n#line 30 \"bison.y\" /* yacc.c:352  */\n\n  long ival;\n  char *sval;\n  double fval;\n  Program *program_t;\n  Stmtlist *stmtlist_t;\n  Stmt *stmt_t;\n  CreateStmt *create_stmt_t;\n  DropStmt *drop_stmt_t;\n  AlterStmt *alter_stmt_t;\n  SelectStmt *select_stmt_t;\n  SelectWithParens *select_with_parens_t;\n  SelectNoParens *select_no_parens_t;\n  SelectClauseList *select_clause_list_t;\n  SelectClause *select_clause_t;\n  CombineClause *combine_clause_t;\n  OptFromClause *opt_from_clause_t;\n  SelectTarget *select_target_t;\n  OptWindowClause *opt_window_clause_t;\n  WindowClause *window_clause_t;\n  WindowDefList *window_def_list_t;\n  WindowDef *window_def_t;\n  WindowName *window_name_t;\n  Window *window_t;\n  OptPartition *opt_partition_t;\n  OptFrameClause *opt_frame_clause_t;\n  RangeOrRows *range_or_rows_t;\n  FrameBoundStart *frame_bound_start_t;\n  FrameBoundEnd *frame_bound_end_t;\n  FrameBound *frame_bound_t;\n  OptExistWindowName *opt_exist_window_name_t;\n  OptGroupClause *opt_group_clause_t;\n  OptHavingClause *opt_having_clause_t;\n  OptWhereClause *opt_where_clause_t;\n  WhereClause *where_clause_t;\n  FromClause *from_clause_t;\n  TableRef *table_ref_t;\n  OptIndex *opt_index_t;\n  OptOn *opt_on_t;\n  OptUsing *opt_using_t;\n  ColumnNameList *column_name_list_t;\n  OptTablePrefix *opt_table_prefix_t;\n  JoinOp *join_op_t;\n  OptJoinType *opt_join_type_t;\n  ExprList *expr_list_t;\n  OptLimitClause *opt_limit_clause_t;\n  LimitClause *limit_clause_t;\n  OptLimitRowCount *opt_limit_row_count_t;\n  OptOrderClause *opt_order_clause_t;\n  OptOrderNulls *opt_order_nulls_t;\n  OrderItemList *order_item_list_t;\n  OrderItem *order_item_t;\n  OptOrderBehavior *opt_order_behavior_t;\n  OptWithClause *opt_with_clause_t;\n  CteTableList *cte_table_list_t;\n  CteTable *cte_table_t;\n  CteTableName *cte_table_name_t;\n  OptAllOrDistinct *opt_all_or_distinct_t;\n  CreateTableStmt *create_table_stmt_t;\n  CreateIndexStmt *create_index_stmt_t;\n  CreateTriggerStmt *create_trigger_stmt_t;\n  CreateViewStmt *create_view_stmt_t;\n  OptTableOptionList *opt_table_option_list_t;\n  TableOptionList *table_option_list_t;\n  TableOption *table_option_t;\n  OptOpComma *opt_op_comma_t;\n  OptIgnoreOrReplace *opt_ignore_or_replace_t;\n  OptViewAlgorithm *opt_view_algorithm_t;\n  OptSqlSecurity *opt_sql_security_t;\n  OptIndexOption *opt_index_option_t;\n  OptExtraOption *opt_extra_option_t;\n  IndexAlgorithmOption *index_algorithm_option_t;\n  LockOption *lock_option_t;\n  OptOpEqual *opt_op_equal_t;\n  TriggerEvents *trigger_events_t;\n  TriggerName *trigger_name_t;\n  TriggerActionTime *trigger_action_time_t;\n  DropIndexStmt *drop_index_stmt_t;\n  DropTableStmt *drop_table_stmt_t;\n  OptRestrictOrCascade *opt_restrict_or_cascade_t;\n  DropTriggerStmt *drop_trigger_stmt_t;\n  DropViewStmt *drop_view_stmt_t;\n  InsertStmt *insert_stmt_t;\n  InsertRest *insert_rest_t;\n  SuperValuesList *super_values_list_t;\n  ValuesList *values_list_t;\n  OptOnConflict *opt_on_conflict_t;\n  OptConflictExpr *opt_conflict_expr_t;\n  IndexedColumnList *indexed_column_list_t;\n  IndexedColumn *indexed_column_t;\n  UpdateStmt *update_stmt_t;\n  AlterAction *alter_action_t;\n  AlterConstantAction *alter_constant_action_t;\n  ColumnDefList *column_def_list_t;\n  ColumnDef *column_def_t;\n  OptColumnConstraintList *opt_column_constraint_list_t;\n  ColumnConstraintList *column_constraint_list_t;\n  ColumnConstraint *column_constraint_t;\n  OptReferenceClause *opt_reference_clause_t;\n  OptCheck *opt_check_t;\n  ConstraintType *constraint_type_t;\n  ReferenceClause *reference_clause_t;\n  OptForeignKey *opt_foreign_key_t;\n  OptForeignKeyActions *opt_foreign_key_actions_t;\n  ForeignKeyActions *foreign_key_actions_t;\n  KeyActions *key_actions_t;\n  OptConstraintAttributeSpec *opt_constraint_attribute_spec_t;\n  OptInitialTime *opt_initial_time_t;\n  ConstraintName *constraint_name_t;\n  OptTemp *opt_temp_t;\n  OptCheckOption *opt_check_option_t;\n  OptColumnNameListP *opt_column_name_list_p_t;\n  SetClauseList *set_clause_list_t;\n  SetClause *set_clause_t;\n  OptAsAlias *opt_as_alias_t;\n  Expr *expr_t;\n  Operand *operand_t;\n  CastExpr *cast_expr_t;\n  ScalarExpr *scalar_expr_t;\n  UnaryExpr *unary_expr_t;\n  BinaryExpr *binary_expr_t;\n  LogicExpr *logic_expr_t;\n  InExpr *in_expr_t;\n  CaseExpr *case_expr_t;\n  BetweenExpr *between_expr_t;\n  ExistsExpr *exists_expr_t;\n  FunctionExpr *function_expr_t;\n  OptDistinct *opt_distinct_t;\n  OptFilterClause *opt_filter_clause_t;\n  OptOverClause *opt_over_clause_t;\n  CaseList *case_list_t;\n  CaseClause *case_clause_t;\n  CompExpr *comp_expr_t;\n  ExtractExpr *extract_expr_t;\n  DatetimeField *datetime_field_t;\n  ArrayExpr *array_expr_t;\n  ArrayIndex *array_index_t;\n  Literal *literal_t;\n  StringLiteral *string_literal_t;\n  BoolLiteral *bool_literal_t;\n  NumLiteral *num_literal_t;\n  IntLiteral *int_literal_t;\n  FloatLiteral *float_literal_t;\n  OptColumn *opt_column_t;\n  TriggerBody *trigger_body_t;\n  OptIfNotExist *opt_if_not_exist_t;\n  OptIfExist *opt_if_exist_t;\n  Identifier *identifier_t;\n  AsAlias *as_alias_t;\n  TableName *table_name_t;\n  ColumnName *column_name_t;\n  OptIndexKeyword *opt_index_keyword_t;\n  ViewName *view_name_t;\n  FunctionName *function_name_t;\n  BinaryOp *binary_op_t;\n  OptNot *opt_not_t;\n  Name *name_t;\n  TypeName *type_name_t;\n  CharacterType *character_type_t;\n  CharacterWithLength *character_with_length_t;\n  CharacterWithoutLength *character_without_length_t;\n  CharacterConflicta *character_conflicta_t;\n  NumericType *numeric_type_t;\n  OptTableConstraintList *opt_table_constraint_list_t;\n  TableConstraintList *table_constraint_list_t;\n  TableConstraint *table_constraint_t;\n  OptEnforced *opt_enforced_t;\n\n#line 514 \"bison_parser.cpp\" /* yacc.c:352  */\n};\n#line 30 \"bison.y\" /* yacc.c:352  */\ntypedef union FF_STYPE FF_STYPE;\n#define FF_STYPE_IS_TRIVIAL 1\n#define FF_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined FF_LTYPE && !defined FF_LTYPE_IS_DECLARED\ntypedef struct FF_LTYPE FF_LTYPE;\nstruct FF_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define FF_LTYPE_IS_DECLARED 1\n#define FF_LTYPE_IS_TRIVIAL 1\n#endif\n\nint ff_parse(Program *result, yyscan_t scanner);\n\n#endif /* !YY_FF_BISON_PARSER_H_INCLUDED  */\n\n#ifdef short\n#undef short\n#endif\n\n#ifdef YYTYPE_UINT8\ntypedef YYTYPE_UINT8 yytype_uint8;\n#else\ntypedef unsigned char yytype_uint8;\n#endif\n\n#ifdef YYTYPE_INT8\ntypedef YYTYPE_INT8 yytype_int8;\n#else\ntypedef signed char yytype_int8;\n#endif\n\n#ifdef YYTYPE_UINT16\ntypedef YYTYPE_UINT16 yytype_uint16;\n#else\ntypedef unsigned short yytype_uint16;\n#endif\n\n#ifdef YYTYPE_INT16\ntypedef YYTYPE_INT16 yytype_int16;\n#else\ntypedef short yytype_int16;\n#endif\n\n#ifndef YYSIZE_T\n#ifdef __SIZE_TYPE__\n#define YYSIZE_T __SIZE_TYPE__\n#elif defined size_t\n#define YYSIZE_T size_t\n#elif !defined YYSIZE_T\n#include <stddef.h> /* INFRINGES ON USER NAME SPACE */\n#define YYSIZE_T size_t\n#else\n#define YYSIZE_T unsigned\n#endif\n#endif\n\n#define YYSIZE_MAXIMUM ((YYSIZE_T)-1)\n\n#ifndef YY_\n#if defined YYENABLE_NLS && YYENABLE_NLS\n#if ENABLE_NLS\n#include <libintl.h> /* INFRINGES ON USER NAME SPACE */\n#define YY_(Msgid) dgettext(\"bison-runtime\", Msgid)\n#endif\n#endif\n#ifndef YY_\n#define YY_(Msgid) Msgid\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE\n#if (defined __GNUC__ &&                                           \\\n     (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) || \\\n    defined __SUNPRO_C && 0x5110 <= __SUNPRO_C\n#define YY_ATTRIBUTE(Spec) __attribute__(Spec)\n#else\n#define YY_ATTRIBUTE(Spec) /* empty */\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE_PURE\n#define YY_ATTRIBUTE_PURE YY_ATTRIBUTE((__pure__))\n#endif\n\n#ifndef YY_ATTRIBUTE_UNUSED\n#define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE((__unused__))\n#endif\n\n/* Suppress unused-variable warnings by \"using\" E.  */\n#if !defined lint || defined __GNUC__\n#define YYUSE(E) ((void)(E))\n#else\n#define YYUSE(E) /* empty */\n#endif\n\n#if defined __GNUC__ && !defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__\n/* Suppress an incorrect diagnostic about yylval being uninitialized.  */\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                 \\\n  _Pragma(\"GCC diagnostic push\")                            \\\n      _Pragma(\"GCC diagnostic ignored \\\"-Wuninitialized\\\"\") \\\n          _Pragma(\"GCC diagnostic ignored \\\"-Wmaybe-uninitialized\\\"\")\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END _Pragma(\"GCC diagnostic pop\")\n#else\n#define YY_INITIAL_VALUE(Value) Value\n#endif\n#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END\n#endif\n#ifndef YY_INITIAL_VALUE\n#define YY_INITIAL_VALUE(Value) /* Nothing. */\n#endif\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n\n/* The parser invokes alloca or malloc; define the necessary symbols.  */\n\n#ifdef YYSTACK_USE_ALLOCA\n#if YYSTACK_USE_ALLOCA\n#ifdef __GNUC__\n#define YYSTACK_ALLOC __builtin_alloca\n#elif defined __BUILTIN_VA_ARG_INCR\n#include <alloca.h> /* INFRINGES ON USER NAME SPACE */\n#elif defined _AIX\n#define YYSTACK_ALLOC __alloca\n#elif defined _MSC_VER\n#include <malloc.h> /* INFRINGES ON USER NAME SPACE */\n#define alloca _alloca\n#else\n#define YYSTACK_ALLOC alloca\n#if !defined _ALLOCA_H && !defined EXIT_SUCCESS\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n/* Use EXIT_SUCCESS as a witness for stdlib.h.  */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#endif\n#endif\n#endif\n\n#ifdef YYSTACK_ALLOC\n/* Pacify GCC's 'empty if-body' warning.  */\n#define YYSTACK_FREE(Ptr) \\\n  do { /* empty */        \\\n    ;                     \\\n  } while (0)\n#ifndef YYSTACK_ALLOC_MAXIMUM\n/* The OS might guarantee only one guard page at the bottom of the stack,\n   and a page size can be as small as 4096 bytes.  So we cannot safely\n   invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number\n   to allow for a few compiler-allocated temporary stack slots.  */\n#define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */\n#endif\n#else\n#define YYSTACK_ALLOC YYMALLOC\n#define YYSTACK_FREE YYFREE\n#ifndef YYSTACK_ALLOC_MAXIMUM\n#define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM\n#endif\n#if (defined __cplusplus && !defined EXIT_SUCCESS && \\\n     !((defined YYMALLOC || defined malloc) &&       \\\n       (defined YYFREE || defined free)))\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#ifndef YYMALLOC\n#define YYMALLOC malloc\n#if !defined malloc && !defined EXIT_SUCCESS\nvoid *malloc(YYSIZE_T); /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#ifndef YYFREE\n#define YYFREE free\n#if !defined free && !defined EXIT_SUCCESS\nvoid free(void *);      /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#endif\n#endif /* ! defined yyoverflow || YYERROR_VERBOSE */\n\n#if (!defined yyoverflow &&                                  \\\n     (!defined __cplusplus ||                                \\\n      (defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL && \\\n       defined FF_STYPE_IS_TRIVIAL && FF_STYPE_IS_TRIVIAL)))\n\n/* A type that is properly aligned for any stack member.  */\nunion yyalloc {\n  yytype_int16 yyss_alloc;\n  YYSTYPE yyvs_alloc;\n  YYLTYPE yyls_alloc;\n};\n\n/* The size of the maximum gap between one aligned stack and the next.  */\n#define YYSTACK_GAP_MAXIMUM (sizeof(union yyalloc) - 1)\n\n/* The size of an array large to enough to hold all stacks, each with\n   N elements.  */\n#define YYSTACK_BYTES(N)                                              \\\n  ((N) * (sizeof(yytype_int16) + sizeof(YYSTYPE) + sizeof(YYLTYPE)) + \\\n   2 * YYSTACK_GAP_MAXIMUM)\n\n#define YYCOPY_NEEDED 1\n\n/* Relocate STACK from its old location to the new one.  The\n   local variables YYSIZE and YYSTACKSIZE give the old and new number of\n   elements in the stack, and YYPTR gives the new location of the\n   stack.  Advance YYPTR to a properly aligned location for the next\n   stack.  */\n#define YYSTACK_RELOCATE(Stack_alloc, Stack)                         \\\n  do {                                                               \\\n    YYSIZE_T yynewbytes;                                             \\\n    YYCOPY(&yyptr->Stack_alloc, Stack, yysize);                      \\\n    Stack = &yyptr->Stack_alloc;                                     \\\n    yynewbytes = yystacksize * sizeof(*Stack) + YYSTACK_GAP_MAXIMUM; \\\n    yyptr += yynewbytes / sizeof(*yyptr);                            \\\n  } while (0)\n\n#endif\n\n#if defined YYCOPY_NEEDED && YYCOPY_NEEDED\n/* Copy COUNT objects from SRC to DST.  The source and destination do\n   not overlap.  */\n#ifndef YYCOPY\n#if defined __GNUC__ && 1 < __GNUC__\n#define YYCOPY(Dst, Src, Count) \\\n  __builtin_memcpy(Dst, Src, (Count) * sizeof(*(Src)))\n#else\n#define YYCOPY(Dst, Src, Count)                                  \\\n  do {                                                           \\\n    YYSIZE_T yyi;                                                \\\n    for (yyi = 0; yyi < (Count); yyi++) (Dst)[yyi] = (Src)[yyi]; \\\n  } while (0)\n#endif\n#endif\n#endif /* !YYCOPY_NEEDED */\n\n/* YYFINAL -- State number of the termination state.  */\n#define YYFINAL 54\n/* YYLAST -- Last index in YYTABLE.  */\n#define YYLAST 1047\n\n/* YYNTOKENS -- Number of terminals.  */\n#define YYNTOKENS 201\n/* YYNNTS -- Number of nonterminals.  */\n#define YYNNTS 164\n/* YYNRULES -- Number of rules.  */\n#define YYNRULES 409\n/* YYNSTATES -- Number of states.  */\n#define YYNSTATES 721\n\n#define YYUNDEFTOK 2\n#define YYMAXUTOK 455\n\n/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex, with out-of-bounds checking.  */\n#define YYTRANSLATE(YYX) \\\n  ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)\n\n/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex.  */\nstatic const yytype_uint8 yytranslate[] = {\n    0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,\n    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,\n    30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,\n    45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,\n    60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,\n    75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,\n    90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,\n    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,\n    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,\n    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,\n    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,\n    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,\n    195, 196, 197, 198, 199, 200};\n\n#if FF_DEBUG\n/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */\nstatic const yytype_uint16 yyrline[] = {\n    0,    425,  425,  435,  442,  451,  457,  463,  469,  475,  481,  490,\n    496,  502,  508,  517,  523,  529,  535,  544,  554,  560,  569,  575,\n    584,  596,  602,  613,  627,  632,  637,  645,  651,  659,  668,  674,\n    682,  691,  697,  707,  729,  738,  750,  756,  764,  771,  779,  787,\n    792,  797,  805,  811,  819,  825,  833,  839,  845,  853,  868,  876,\n    883,  891,  897,  905,  911,  919,  928,  937,  948,  959,  969,  982,\n    988,  993,  1001, 1007, 1015, 1021, 1029, 1035, 1045, 1052, 1060, 1065,\n    1070, 1079, 1084, 1089, 1094, 1099, 1107, 1115, 1125, 1131, 1139, 1145,\n    1152, 1162, 1168, 1176, 1182, 1190, 1195, 1200, 1208, 1214, 1224, 1235,\n    1240, 1245, 1253, 1259, 1265, 1273, 1279, 1289, 1299, 1309, 1314, 1319,\n    1327, 1350, 1392, 1430, 1467, 1509, 1554, 1560, 1568, 1574, 1585, 1591,\n    1597, 1603, 1609, 1615, 1621, 1627, 1633, 1642, 1647, 1655, 1660, 1665,\n    1673, 1678, 1683, 1688, 1696, 1701, 1706, 1714, 1719, 1724, 1732, 1738,\n    1744, 1752, 1758, 1764, 1773, 1779, 1785, 1791, 1800, 1805, 1813, 1818,\n    1823, 1831, 1840, 1845, 1853, 1875, 1899, 1904, 1909, 1917, 1939, 1962,\n    1975, 1982, 1988, 1998, 2004, 2014, 2023, 2029, 2037, 2045, 2052, 2060,\n    2066, 2076, 2086, 2097, 2111, 2129, 2161, 2180, 2199, 2208, 2213, 2218,\n    2223, 2228, 2234, 2239, 2247, 2253, 2263, 2283, 2291, 2299, 2305, 2315,\n    2324, 2331, 2339, 2346, 2354, 2359, 2364, 2372, 2415, 2420, 2428, 2434,\n    2442, 2447, 2452, 2457, 2463, 2472, 2477, 2482, 2487, 2492, 2500, 2506,\n    2512, 2520, 2525, 2530, 2538, 2547, 2552, 2560, 2565, 2570, 2575, 2583,\n    2589, 2597, 2603, 2613, 2620, 2630, 2636, 2644, 2650, 2656, 2662, 2668,\n    2674, 2683, 2689, 2695, 2701, 2707, 2713, 2719, 2725, 2731, 2737, 2746,\n    2756, 2762, 2771, 2777, 2783, 2789, 2795, 2801, 2806, 2814, 2820, 2828,\n    2835, 2845, 2852, 2862, 2870, 2878, 2889, 2896, 2902, 2910, 2920, 2928,\n    2939, 2949, 2957, 2970, 2975, 2983, 2989, 2997, 3003, 3009, 3017, 3023,\n    3033, 3043, 3050, 3057, 3064, 3071, 3078, 3088, 3098, 3103, 3108, 3113,\n    3118, 3123, 3131, 3140, 3150, 3156, 3162, 3171, 3180, 3185, 3193, 3199,\n    3208, 3216, 3224, 3229, 3237, 3243, 3249, 3255, 3264, 3269, 3277, 3282,\n    3290, 3299, 3317, 3335, 3353, 3358, 3363, 3368, 3376, 3385, 3403, 3408,\n    3413, 3418, 3423, 3428, 3436, 3441, 3449, 3458, 3464, 3473, 3479, 3488,\n    3498, 3504, 3509, 3514, 3522, 3527, 3532, 3537, 3542, 3547, 3552, 3557,\n    3562, 3567, 3575, 3580, 3585, 3590, 3595, 3600, 3605, 3610, 3615, 3620,\n    3625, 3630, 3635, 3643, 3649, 3657, 3663, 3673, 3680, 3687, 3695, 3722,\n    3727, 3732};\n#endif\n\n#if FF_DEBUG || YYERROR_VERBOSE || 1\n/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.\n   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */\nstatic const char *const yytname[] = {\"$end\",\n                                      \"error\",\n                                      \"$undefined\",\n                                      \"OP_NOTEQUAL\",\n                                      \"ENABLE\",\n                                      \"SIMPLE\",\n                                      \"TEXT\",\n                                      \"OVER\",\n                                      \"YEAR\",\n                                      \"INSERT_METHOD\",\n                                      \"OP_SEMI\",\n                                      \"BIGINT\",\n                                      \"LIMIT\",\n                                      \"OP_GREATERTHAN\",\n                                      \"WITH\",\n                                      \"ORDER\",\n                                      \"OPTION\",\n                                      \"LAST\",\n                                      \"UNBOUNDED\",\n                                      \"PRECEDING\",\n                                      \"EXCEPT\",\n                                      \"NUMERIC\",\n                                      \"OP_LESSTHAN\",\n                                      \"ACTION\",\n                                      \"BEFORE\",\n                                      \"OP_GREATEREQ\",\n                                      \"CHECK\",\n                                      \"COMPACT\",\n                                      \"FULL\",\n                                      \"NATURAL\",\n                                      \"BINARY\",\n                                      \"NATIONAL\",\n                                      \"ENUM\",\n                                      \"REDUNDANT\",\n                                      \"OP_ADD\",\n                                      \"CURRENT\",\n                                      \"MERGE\",\n                                      \"TRIGGER\",\n                                      \"COMPRESSED\",\n                                      \"OP_SUB\",\n                                      \"FALSE\",\n                                      \"UNIQUE\",\n                                      \"WHERE\",\n                                      \"MINUTE\",\n                                      \"FIRST\",\n                                      \"ON\",\n                                      \"PARTIAL\",\n                                      \"DOUBLE\",\n                                      \"AFTER\",\n                                      \"PRIMARY\",\n                                      \"MONTH\",\n                                      \"DEFERRED\",\n                                      \"VALUES\",\n                                      \"LONGTEXT\",\n                                      \"SQL\",\n                                      \"SHARED\",\n                                      \"VALIDATION\",\n                                      \"OR\",\n                                      \"VIEW\",\n                                      \"INDEX\",\n                                      \"GROUP\",\n                                      \"OP_MUL\",\n                                      \"INPLACE\",\n                                      \"FOREIGN\",\n                                      \"RESTRICT\",\n                                      \"SPATIAL\",\n                                      \"FOLLOWING\",\n                                      \"DEC\",\n                                      \"SELECT\",\n                                      \"NONE\",\n                                      \"DISTINCT\",\n                                      \"TRUE\",\n                                      \"DYNAMIC\",\n                                      \"BY\",\n                                      \"OP_MOD\",\n                                      \"INTEGER\",\n                                      \"SECURITY\",\n                                      \"IS\",\n                                      \"DEFINER\",\n                                      \"ROW\",\n                                      \"ENFORCED\",\n                                      \"END\",\n                                      \"RECURSIVE\",\n                                      \"FOR\",\n                                      \"TEMPTABLE\",\n                                      \"UNION\",\n                                      \"NULLS\",\n                                      \"UPDATE\",\n                                      \"ELSE\",\n                                      \"RANGE\",\n                                      \"SET\",\n                                      \"INVOKER\",\n                                      \"OFFSET\",\n                                      \"INDEXED\",\n                                      \"FORCE\",\n                                      \"NCHAR\",\n                                      \"AND\",\n                                      \"INITIALLY\",\n                                      \"PRECISION\",\n                                      \"FILTER\",\n                                      \"WITHOUT\",\n                                      \"NOT\",\n                                      \"DELETE\",\n                                      \"DEFFERRABLE\",\n                                      \"REAL\",\n                                      \"THEN\",\n                                      \"UNDEFINED\",\n                                      \"DEFAULT\",\n                                      \"CROSS\",\n                                      \"CHAR\",\n                                      \"REFERENCES\",\n                                      \"OP_XOR\",\n                                      \"CASE\",\n                                      \"FIXED\",\n                                      \"HOUR\",\n                                      \"NO\",\n                                      \"COLUMN\",\n                                      \"LOCAL\",\n                                      \"DROP\",\n                                      \"REPLACE\",\n                                      \"ASC\",\n                                      \"OP_COMMA\",\n                                      \"DISABLE\",\n                                      \"TABLE\",\n                                      \"ARRAY\",\n                                      \"IF\",\n                                      \"EXTRACT\",\n                                      \"LEFT\",\n                                      \"FULLTEXT\",\n                                      \"HASH\",\n                                      \"ALGORITHM\",\n                                      \"LOCK\",\n                                      \"DECIMAL\",\n                                      \"PARTITION\",\n                                      \"CASCADE\",\n                                      \"ADD\",\n                                      \"BETWEEN\",\n                                      \"OP_LESSEQ\",\n                                      \"MATCH\",\n                                      \"ALL\",\n                                      \"ROWS\",\n                                      \"JOIN\",\n                                      \"LIKE\",\n                                      \"OP_RP\",\n                                      \"IGNORE\",\n                                      \"INT\",\n                                      \"MEDIUMTEXT\",\n                                      \"BOOLEAN\",\n                                      \"KEY\",\n                                      \"EACH\",\n                                      \"USING\",\n                                      \"RENAME\",\n                                      \"DO\",\n                                      \"OP_LP\",\n                                      \"CHARACTER\",\n                                      \"UMINUS\",\n                                      \"CAST\",\n                                      \"GROUPS\",\n                                      \"OUTER\",\n                                      \"NULL\",\n                                      \"SMALLINT\",\n                                      \"EXCLUSIVE\",\n                                      \"TEMPORARY\",\n                                      \"CONSTRAINT\",\n                                      \"CREATE\",\n                                      \"OP_LBRACKET\",\n                                      \"WHEN\",\n                                      \"IMMEDIATE\",\n                                      \"TO\",\n                                      \"BTREE\",\n                                      \"DAY\",\n                                      \"CONFLICT\",\n                                      \"ROW_FORMAT\",\n                                      \"OP_RBRACKET\",\n                                      \"EXISTS\",\n                                      \"INSERT\",\n                                      \"KEYS\",\n                                      \"INTO\",\n                                      \"OP_DIVIDE\",\n                                      \"CASCADED\",\n                                      \"ISNULL\",\n                                      \"AS\",\n                                      \"INNER\",\n                                      \"INTERSECT\",\n                                      \"IN\",\n                                      \"OP_EQUAL\",\n                                      \"VARCHAR\",\n                                      \"COPY\",\n                                      \"ALTER\",\n                                      \"DESC\",\n                                      \"FROM\",\n                                      \"TINYTEXT\",\n                                      \"FLOAT\",\n                                      \"SECOND\",\n                                      \"WINDOW\",\n                                      \"NOTHING\",\n                                      \"HAVING\",\n                                      \"INTLITERAL\",\n                                      \"FLOATLITERAL\",\n                                      \"IDENTIFIER\",\n                                      \"STRINGLITERAL\",\n                                      \"$accept\",\n                                      \"program\",\n                                      \"stmtlist\",\n                                      \"stmt\",\n                                      \"create_stmt\",\n                                      \"drop_stmt\",\n                                      \"alter_stmt\",\n                                      \"select_stmt\",\n                                      \"select_with_parens\",\n                                      \"select_no_parens\",\n                                      \"select_clause_list\",\n                                      \"select_clause\",\n                                      \"combine_clause\",\n                                      \"opt_from_clause\",\n                                      \"select_target\",\n                                      \"opt_window_clause\",\n                                      \"window_clause\",\n                                      \"window_def_list\",\n                                      \"window_def\",\n                                      \"window_name\",\n                                      \"window\",\n                                      \"opt_partition\",\n                                      \"opt_frame_clause\",\n                                      \"range_or_rows\",\n                                      \"frame_bound_start\",\n                                      \"frame_bound_end\",\n                                      \"frame_bound\",\n                                      \"opt_exist_window_name\",\n                                      \"opt_group_clause\",\n                                      \"opt_having_clause\",\n                                      \"opt_where_clause\",\n                                      \"where_clause\",\n                                      \"from_clause\",\n                                      \"table_ref\",\n                                      \"opt_index\",\n                                      \"opt_on\",\n                                      \"opt_using\",\n                                      \"column_name_list\",\n                                      \"opt_table_prefix\",\n                                      \"join_op\",\n                                      \"opt_join_type\",\n                                      \"expr_list\",\n                                      \"opt_limit_clause\",\n                                      \"limit_clause\",\n                                      \"opt_limit_row_count\",\n                                      \"opt_order_clause\",\n                                      \"opt_order_nulls\",\n                                      \"order_item_list\",\n                                      \"order_item\",\n                                      \"opt_order_behavior\",\n                                      \"opt_with_clause\",\n                                      \"cte_table_list\",\n                                      \"cte_table\",\n                                      \"cte_table_name\",\n                                      \"opt_all_or_distinct\",\n                                      \"create_table_stmt\",\n                                      \"create_index_stmt\",\n                                      \"create_trigger_stmt\",\n                                      \"create_view_stmt\",\n                                      \"opt_table_option_list\",\n                                      \"table_option_list\",\n                                      \"table_option\",\n                                      \"opt_op_comma\",\n                                      \"opt_ignore_or_replace\",\n                                      \"opt_view_algorithm\",\n                                      \"opt_sql_security\",\n                                      \"opt_index_option\",\n                                      \"opt_extra_option\",\n                                      \"index_algorithm_option\",\n                                      \"lock_option\",\n                                      \"opt_op_equal\",\n                                      \"trigger_events\",\n                                      \"trigger_name\",\n                                      \"trigger_action_time\",\n                                      \"drop_index_stmt\",\n                                      \"drop_table_stmt\",\n                                      \"opt_restrict_or_cascade\",\n                                      \"drop_trigger_stmt\",\n                                      \"drop_view_stmt\",\n                                      \"insert_stmt\",\n                                      \"insert_rest\",\n                                      \"super_values_list\",\n                                      \"values_list\",\n                                      \"opt_on_conflict\",\n                                      \"opt_conflict_expr\",\n                                      \"indexed_column_list\",\n                                      \"indexed_column\",\n                                      \"update_stmt\",\n                                      \"alter_action\",\n                                      \"alter_constant_action\",\n                                      \"column_def_list\",\n                                      \"column_def\",\n                                      \"opt_column_constraint_list\",\n                                      \"column_constraint_list\",\n                                      \"column_constraint\",\n                                      \"opt_reference_clause\",\n                                      \"opt_check\",\n                                      \"constraint_type\",\n                                      \"reference_clause\",\n                                      \"opt_foreign_key\",\n                                      \"opt_foreign_key_actions\",\n                                      \"foreign_key_actions\",\n                                      \"key_actions\",\n                                      \"opt_constraint_attribute_spec\",\n                                      \"opt_initial_time\",\n                                      \"constraint_name\",\n                                      \"opt_temp\",\n                                      \"opt_check_option\",\n                                      \"opt_column_name_list_p\",\n                                      \"set_clause_list\",\n                                      \"set_clause\",\n                                      \"opt_as_alias\",\n                                      \"expr\",\n                                      \"operand\",\n                                      \"cast_expr\",\n                                      \"scalar_expr\",\n                                      \"unary_expr\",\n                                      \"binary_expr\",\n                                      \"logic_expr\",\n                                      \"in_expr\",\n                                      \"case_expr\",\n                                      \"between_expr\",\n                                      \"exists_expr\",\n                                      \"function_expr\",\n                                      \"opt_distinct\",\n                                      \"opt_filter_clause\",\n                                      \"opt_over_clause\",\n                                      \"case_list\",\n                                      \"case_clause\",\n                                      \"comp_expr\",\n                                      \"extract_expr\",\n                                      \"datetime_field\",\n                                      \"array_expr\",\n                                      \"array_index\",\n                                      \"literal\",\n                                      \"string_literal\",\n                                      \"bool_literal\",\n                                      \"num_literal\",\n                                      \"int_literal\",\n                                      \"float_literal\",\n                                      \"opt_column\",\n                                      \"trigger_body\",\n                                      \"opt_if_not_exist\",\n                                      \"opt_if_exist\",\n                                      \"identifier\",\n                                      \"as_alias\",\n                                      \"table_name\",\n                                      \"column_name\",\n                                      \"opt_index_keyword\",\n                                      \"view_name\",\n                                      \"function_name\",\n                                      \"binary_op\",\n                                      \"opt_not\",\n                                      \"name\",\n                                      \"type_name\",\n                                      \"character_type\",\n                                      \"character_with_length\",\n                                      \"character_without_length\",\n                                      \"character_conflicta\",\n                                      \"numeric_type\",\n                                      \"opt_table_constraint_list\",\n                                      \"table_constraint_list\",\n                                      \"table_constraint\",\n                                      \"opt_enforced\",\n                                      YY_NULLPTR};\n#endif\n\n#ifdef YYPRINT\n/* YYTOKNUM[NUM] -- (External) token number corresponding to the\n   (internal) symbol number NUM (which must be that of a token).  */\nstatic const yytype_uint16 yytoknum[] = {\n    0,   256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,\n    270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,\n    285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,\n    300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,\n    315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,\n    330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,\n    345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,\n    360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,\n    375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,\n    390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,\n    405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,\n    420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,\n    435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,\n    450, 451, 452, 453, 454, 455};\n#endif\n\n#define YYPACT_NINF -338\n\n#define yypact_value_is_default(Yystate) (!!((Yystate) == (-338)))\n\n#define YYTABLE_NINF -366\n\n#define yytable_value_is_error(Yytable_value) (!!((Yytable_value) == (-366)))\n\n/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing\n   STATE-NUM.  */\nstatic const yytype_int16 yypact[] = {\n    13,   -54,  -89,  27,   17,   114,  -70,  67,   -338, 195,  -338, -338,\n    -338, -338, -338, -338, -7,   -338, -338, -338, -338, -338, -338, -338,\n    -338, -338, -338, 66,   -338, -338, 160,  129,  -338, 169,  66,   146,\n    207,  207,  66,   -338, 221,  268,  272,  344,  66,   -338, 301,  -338,\n    -338, 231,  363,  296,  362,  66,   -338, 16,   -30,  245,  410,  -2,\n    -338, 66,   273,  66,   -338, 146,  66,   341,  -338, 259,  66,   66,\n    274,  207,  -338, -338, 297,  -338, 302,  217,  359,  379,  314,  66,\n    128,  -338, -338, -338, 838,  66,   365,  428,  -338, -338, -338, 344,\n    -338, 17,   303,  -338, 320,  353,  -338, -121, -338, -338, -338, 40,\n    260,  260,  -338, -338, -338, 66,   -338, -338, -29,  363,  -338, -338,\n    -338, 298,  66,   343,  66,   402,  278,  393,  -338, 394,  62,   280,\n    336,  96,   -338, -338, -338, 847,  -338, -338, -338, 847,  804,  292,\n    306,  461,  308,  -338, -338, -338, -338, 275,  -338, -21,  459,  -338,\n    -338, -338, -338, -338, -338, -338, -338, -338, -338, -338, -338, -338,\n    -338, -338, -338, -338, -338, -338, -338, 310,  -338, 317,  293,  146,\n    838,  838,  -338, -338, -338, 328,  -338, 66,   -121, 66,   434,  356,\n    295,  -338, -338, -338, -338, 15,   185,  40,   -338, -338, -338, 433,\n    421,  -338, -338, 169,  309,  11,   66,   -338, -338, -338, 337,  -338,\n    66,   -338, 66,   66,   66,   847,  178,  718,  838,  44,   313,  323,\n    838,  6,    349,  351,  838,  -338, 434,  -338, 838,  838,  369,  847,\n    847,  847,  847,  -338, -338, -338, -338, -51,  271,  -338, 847,  847,\n    847,  305,  -338, -338, 847,  847,  319,  -24,  352,  169,  -338, 376,\n    -33,  177,  -338, -338, 434,  364,  838,  410,  -338, -121, 838,  -338,\n    -338, -338, -338, -338, -338, -338, -338, 66,   66,   325,  -338, 260,\n    66,   260,  220,  -338, 12,   355,  -338, -338, -338, 282,  -338, 342,\n    367,  204,  318,  -338, 838,  -338, 339,  -338, -338, -338, -338, -338,\n    -338, 321,  -338, -338, -16,  130,  -106, 454,  419,  -338, 838,  742,\n    286,  286,  286,  360,  -338, 847,  847,  568,  286,  742,  345,  742,\n    178,  -102, -338, 422,  838,  509,  479,  65,   838,  -338, -338, 439,\n    838,  838,  410,  346,  19,   515,  -338, 19,   445,  169,  17,   28,\n    366,  409,  258,  -338, -338, 354,  -338, 10,   838,  -338, -338, -338,\n    -338, 89,   -338, 440,  -338, -338, -338, -338, -338, -338, -338, -338,\n    -338, -338, -338, -338, -338, -338, -338, -338, -338, 25,   -338, -338,\n    -338, 384,  -338, 66,   838,  -338, 838,  294,  -338, 838,  282,  98,\n    -338, -338, -338, 180,  310,  146,  386,  467,  348,  -338, -338, 643,\n    742,  847,  -338, 461,  -338, 390,  537,  403,  404,  374,  -338, 395,\n    497,  -338, -338, 338,  -338, 19,   19,   515,  838,  838,  -338, 401,\n    370,  538,  -338, -338, -338, 66,   347,  411,  -338, 432,  66,   -338,\n    -338, -338, -338, -338, -338, 17,   -338, 412,  437,  -33,  -338, -338,\n    -338, -338, 413,  400,  -338, 539,  25,   -338, 305,  -338, 19,   304,\n    -338, 159,  420,  -338, 406,  -338, 426,  425,  115,  -12,  838,  838,\n    66,   -338, -338, 847,  689,  429,  431,  527,  163,  -338, 422,  -338,\n    423,  838,  -338, 456,  -338, -338, -338, -338, 19,   19,   496,  17,\n    -4,   -338, -338, -338, 430,  435,  438,  441,  10,   366,  -338, -338,\n    444,  838,  -338, -338, -338, 447,  227,  -338, 436,  -338, -338, -338,\n    -338, -338, 146,  146,  505,  489,  552,  455,  407,  -338, 483,  424,\n    -338, 689,  -338, -338, 838,  66,   -338, 537,  838,  457,  463,  395,\n    9,    538,  592,  585,  586,  838,  838,  460,  465,  -338, -338, 78,\n    274,  -338, 838,  468,  -338, 512,  -338, 552,  552,  66,   -338, 838,\n    469,  146,  838,  -338, 66,   472,  164,  484,  493,  -338, -338, 485,\n    18,   -338, -338, -338, -338, 458,  -338, -338, -338, -338, -338, 614,\n    615,  172,  491,  838,  66,   -338, -338, -338, 181,  -338, 66,   -338,\n    469,  469,  -338, 19,   487,  -338, 552,  19,   -338, 66,   -338, -338,\n    574,  410,  434,  -121, -338, -338, -338, 161,  -338, 498,  506,  161,\n    169,  -338, -338, 66,   469,  508,  838,  -41,  -338, 434,  -338, 572,\n    -338, -338, 512,  -338, -3,   511,  -338, -338, -338, -338, -338, -338,\n    -338, 635,  -338, -338, -338, 300,  203,  277,  -338, -338, 629,  576,\n    648,  -338, -338, 238,  269,  269,  -338, -338, -338, 554,  565,  -338,\n    -338, -338, 567,  -338, -338, -338, 138,  644,  -338, -338, -338, 565,\n    -26,  -338, 738,  -338, -338, -338, -338, -338, -338, 605,  -338, -338,\n    -338};\n\n/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.\n   Performed when YYTABLE does not specify something else to do.  Zero\n   means the default is an error.  */\nstatic const yytype_uint16 yydefact[] = {\n    112, 0,   0,   246, 112, 147, 0,   0,   2,   0,   5,   6,   10,  7,   21,\n    20,  0,   11,  12,  13,  14,  15,  16,  17,  18,  9,   8,   0,   348, 110,\n    113, 0,   350, 252, 0,   258, 347, 347, 0,   245, 0,   0,   0,   0,   0,\n    352, 0,   354, 353, 0,   150, 0,   0,   0,   1,   112, 119, 0,   100, 25,\n    111, 0,   0,   0,   116, 258, 0,   0,   257, 0,   0,   0,   156, 347, 23,\n    22,  0,   169, 147, 0,   0,   0,   345, 0,   0,   3,   118, 117, 365, 0,\n    0,   93,  30,  28,  29,  0,   114, 112, 0,   351, 78,  0,   349, 0,   346,\n    177, 356, 176, 165, 165, 172, 154, 155, 0,   170, 171, 0,   150, 145, 146,\n    144, 0,   0,   0,   0,   0,   0,   0,   202, 0,   339, 0,   339, 339, 205,\n    19,  200, 0,   333, 284, 332, 364, 365, 0,   0,   112, 0,   283, 336, 337,\n    331, 32,  33,  258, 259, 263, 267, 268, 269, 264, 262, 270, 260, 261, 273,\n    285, 271, 272, 266, 277, 328, 329, 330, 334, 335, 351, 276, 0,   0,   258,\n    365, 365, 24,  92,  26,  0,   251, 0,   0,   0,   64,  253, 0,   174, 175,\n    178, 164, 0,   0,   176, 168, 166, 167, 0,   0,   148, 149, 252, 0,   127,\n    0,   204, 206, 207, 0,   338, 0,   203, 0,   0,   0,   0,   278, 279, 365,\n    0,   0,   310, 365, 0,   0,   0,   365, 81,  64,  31,  365, 365, 91,  0,\n    0,   0,   0,   358, 359, 362, 361, 0,   364, 363, 0,   0,   0,   0,   360,\n    280, 0,   0,   0,   304, 0,   252, 99,  104, 109, 94,  115, 79,  64,  0,\n    365, 100, 63,  0,   365, 158, 157, 159, 162, 161, 160, 163, 173, 0,   0,\n    0,   344, 165, 0,   165, 143, 126, 128, 0,   201, 199, 198, 0,   196, 0,\n    0,   0,   0,   295, 365, 311, 0,   325, 321, 324, 322, 323, 320, 0,   274,\n    265, 0,   66,  0,   60,  290, 289, 365, 314, 315, 316, 318, 0,   281, 0,\n    0,   0,   317, 287, 0,   313, 286, 0,   303, 306, 365, 112, 188, 112, 365,\n    107, 108, 103, 365, 365, 100, 0,   65,  98,  254, 255, 0,   252, 112, 0,\n    400, 208, 0,   142, 141, 0,   139, 0,   365, 379, 389, 397, 375, 0,   374,\n    393, 382, 396, 387, 373, 385, 390, 377, 392, 395, 386, 381, 398, 376, 388,\n    378, 380, 391, 212, 368, 369, 370, 372, 367, 0,   365, 294, 365, 0,   326,\n    365, 0,   89,  82,  83,  80,  81,  350, 258, 0,   0,   35,  90,  282, 0,\n    288, 0,   327, 112, 293, 0,   309, 0,   0,   0,   179, 0,   0,   180, 105,\n    0,   106, 95,  96,  98,  365, 365, 195, 0,   0,   250, 132, 131, 130, 0,\n    0,   0,   399, 401, 0,   138, 137, 136, 134, 133, 135, 112, 129, 0,   191,\n    109, 384, 383, 394, 222, 0,   0,   210, 219, 213, 215, 0,   197, 312, 0,\n    297, 0,   0,   88,  85,  87,  0,   0,   0,   73,  365, 365, 0,   27,  34,\n    0,   298, 0,   0,   0,   0,   301, 306, 300, 190, 365, 182, 183, 181, 102,\n    101, 194, 256, 97,  0,   112, 0,   124, 366, 244, 0,   0,   0,   0,   127,\n    0,   209, 120, 153, 365, 193, 220, 221, 0,   217, 214, 0,   296, 319, 275,\n    86,  84,  258, 258, 0,   0,   75,  0,   62,  36,  37,  0,   40,  299, 291,\n    292, 365, 58,  308, 309, 365, 0,   0,   0,   112, 250, 0,   0,   0,   365,\n    365, 0,   0,   121, 402, 0,   156, 192, 365, 0,   211, 0,   371, 75,  75,\n    0,   72,  365, 77,  258, 365, 59,  0,   0,   0,   0,   43,  57,  302, 0,\n    0,   185, 184, 340, 343, 0,   342, 341, 123, 125, 247, 0,   0,   0,   0,\n    365, 0,   152, 151, 122, 0,   224, 0,   216, 77,  77,  71,  74,  0,   67,\n    75,  61,  38,  58,  305, 307, 0,   100, 0,   0,   186, 249, 248, 409, 404,\n    0,   0,   409, 252, 69,  70,  0,   77,  0,   365, 46,  189, 0,   407, 0,\n    405, 403, 0,   218, 227, 0,   68,  39,  42,  47,  48,  49,  41,  365, 187,\n    408, 406, 0,   0,   240, 226, 76,  0,   0,   365, 44,  50,  0,   0,   0,\n    230, 228, 229, 0,   243, 223, 51,  56,  0,   54,  55,  236, 0,   0,   235,\n    231, 232, 243, 0,   238, 365, 234, 233, 237, 239, 241, 242, 0,   45,  52,\n    53};\n\n/* YYPGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yypgoto[] = {\n    -338, -338, 617,  -338, -338, 109,  112,  -91,  674,  7,    589,  -338,\n    -338, -338, -338, -338, -338, 88,   -338, 186,  48,   -338, -338, -338,\n    5,    -338, -25,  -338, -338, -338, -44,  -264, -338, 279,  -338, -278,\n    -283, -182, -338, -338, -338, -137, -338, -338, 252,  -258, -338, 350,\n    -338, 228,  2,    205,  -338, -338, -338, -338, -338, -338, -338, 171,\n    330,  -338, -338, -338, 620,  582,  -338, 124,  -338, 619,  -94,  -338,\n    631,  -338, -338, -338, 513,  -338, -338, 143,  -338, 145,  -338, -338,\n    -338, -337, -338, 149,  -338, -338, 261,  500,  -338, 242,  -338, -338,\n    -338, -338, 60,   -338, -338, -338, 35,   -338, 20,   -338, 720,  165,\n    -190, -179, -338, -55,  -74,  -103, -338, -338, -338, -338, -338, -338,\n    -338, -338, -338, -338, -338, 224,  170,  156,  -338, -338, -338, -338,\n    -338, -338, -338, -338, -338, -338, -241, -338, 276,  -338, -338, 22,\n    -1,   -338, 1,    -59,  -338, -93,  414,  -338, 580,  -338, 329,  -338,\n    -338, -338, -338, -338, -338, 212,  -338, 91};\n\n/* YYDEFGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yydefgoto[] = {\n    -1,  7,   8,   9,   10,  11,  12,  13,  14,  15,  58,  59,  95,  234, 151,\n    493, 494, 549, 550, 551, 595, 637, 672, 673, 685, 718, 686, 596, 416, 591,\n    271, 272, 235, 317, 546, 588, 629, 98,  318, 410, 486, 152, 182, 183, 442,\n    91,  436, 262, 263, 347, 43,  29,  30,  31,  88,  17,  18,  19,  20,  290,\n    291, 292, 367, 365, 50,  81,  576, 110, 111, 112, 197, 203, 76,  116, 21,\n    22,  195, 23,  24,  25,  342, 506, 507, 430, 561, 463, 464, 26,  135, 136,\n    360, 361, 472, 473, 474, 580, 534, 475, 623, 581, 679, 680, 705, 695, 709,\n    450, 40,  517, 64,  190, 191, 67,  153, 154, 155, 156, 157, 158, 159, 160,\n    161, 162, 163, 164, 340, 426, 501, 226, 227, 165, 166, 313, 167, 168, 169,\n    170, 171, 172, 173, 174, 216, 608, 124, 70,  175, 68,  33,  176, 52,  107,\n    177, 257, 178, 519, 393, 394, 395, 396, 397, 398, 451, 452, 453, 660};\n\n/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If\n   positive, shift that token.  If negative, reduce the rule whose\n   number is the opposite.  If YYTABLE_NINF, syntax error.  */\nstatic const yytype_int16 yytable[] = {\n    32,   32,   16,   35,   100,  267, 185,  269,  231,  268,  101, 42,   334,\n    353,  307,  198,  -4,   285,  92,  287,  287,  -140, 566,  1,   236,  715,\n    32,   1,    27,   207,  1,    1,   189,  32,   222,  65,   236, 32,   223,\n    72,   86,   236,  677,  77,   192, 446,  338,  411,  669,  308, 327,  423,\n    32,   53,   84,   34,   309,  16,  200,  71,   32,   56,   99,  237,  36,\n    102,  469,  54,   225,  77,   106, 343,  447,  201,  470,  237, 236,  275,\n    28,   1,    237,  544,  32,   93,  125,  37,   38,   345,  32,  545,  179,\n    306,  439,  28,   354,  113,  2,   28,   238,  670,  2,    236, 99,   2,\n    193,  639,  264,  265,  328,  87,  28,   214,  32,   567,  199, 237,  671,\n    431,  223,  339,  310,  106,  276, 32,   261,  209,  471,  3,   100,  192,\n    100,  3,    126,  366,  3,    678, 323,  324,  325,  326,  237, 716,  127,\n    448,  407,  28,   202,  331,  332, 333,  301,  44,   230,  335, 336,  45,\n    346,  295,  316,  407,  66,   299, 320,  321,  288,  406,  4,   444,  57,\n    4,    4,    46,   432,  -355, 194, 568,  311,  5,    215,  47,  5,    94,\n    289,  289,  -140, 417,  99,   99,  99,   39,   319,  357,  577, 359,  1,\n    362,  352,  6,    466,  312,  355, 6,    277,  427,  6,    55,  483,  617,\n    690,  32,   224,  293,  215,  640, 192,  99,   236,  297,  32,  99,   298,\n    236,  128,  599,  350,  484,  419, 420,  129,  236,  403,  691, 60,   614,\n    236,  536,  408,  -246, 236,  245, 278,  658,  48,   467,  49,  711,  130,\n    618,  -112, 692,  131,  408,  246, 118,  279,  237,  409,  699, 543,  109,\n    237,  236,  659,  132,  219,  28,  96,   445,  237,  348,  264, 409,  99,\n    237,  437,  438,  39,   237,  645, 133,  485,  61,   32,   106, 356,  455,\n    498,  297,  369,  249,  579,  456, 280,  370,  465,  236,  457, 712,  349,\n    -366, 237,  119,  538,  371,  700, 624,  625,  634,  -366, 400, 62,   -366,\n    372,  373,  374,  643,  557,  412, 496,  413,  243,  114,  63,  120,  647,\n    244,  478,  66,   479,  375,  458, 481,  69,   701,  237,  376, 32,   -225,\n    424,  363,  477,  649,  650,  253, 73,   115,  281,  245,  428, 377,  433,\n    236,  652,  547,  548,  509,  254, 378,  489,  702,  246,  236, 28,   247,\n    364,  459,  512,  513,  562,  666, 527,  460,  379,  520,  656, 480,  205,\n    380,  693,  655,  694,  302,  510, 305,  703,  537,  381,  688, 521,  206,\n    237,  382,  553,  674,  303,  383, 522,  249,  99,   401,  237, 304,  689,\n    704,  108,  109,  402,  329,  218, 220,  523,  74,   56,   330, 384,  75,\n    79,   80,   487,  82,   78,   83,  89,   -366, 565,  90,   97,  385,  386,\n    387,  497,  103,  49,   104,  646, 121,  388,  122,  180,  123, 181,  187,\n    389,  188,  208,  196,  186,  210, 518,  212,  213,  253,  215, 297,  211,\n    465,  217,  228,  664,  229,  657, 232,  239,  -357, 254,  233, 255,  260,\n    390,  665,  259,  266,  240,  391, 392,  1,    270,  273,  283, 284,  274,\n    241,  594,  286,  242,  294,  465, 583,  584,  224,  322,  552, 314,  243,\n    315,  613,  465,  344,  244,  552, 137,  138,  148,  337,  620, 341,  358,\n    351,  368,  330,  399,  405,  404, 627,  415,  237,  631,  668, 422,  418,\n    245,  425,  139,  1,    429,  435, 626,  441,  443,  449,  454, 440,  140,\n    246,  630,  461,  247,  476,  468, 490,  491,  465,  492,  499, 500,  504,\n    502,  503,  505,  508,  514,  515, 516,  525,  524,  528,  597, 100,  529,\n    532,  248,  531,  141,  539,  540, 533,  605,  541,  542,  556, 249,  239,\n    554,  142,  555,  564,  560,  563, 585,  582,  192,  240,  586, 569,  99,\n    143,  571,  144,  570,  572,  241, 552,  100,  242,  575,  250, 251,  587,\n    589,  687,  578,  252,  243,  590, 592,  593,  601,  244,  610, 600,  687,\n    611,  612,  615,  145,  99,   621, 146,  616,  628,  147,  32,  622,  648,\n    253,  633,  636,  635,  638,  245, 641,  642,  597,  57,   644, -365, 687,\n    254,  99,   255,  651,  661,  246, -365, 256,  247,  239,  654, 696,  662,\n    99,   667,  675,  682,  681,  697, 240,  707,  148,  149,  28,  150,  708,\n    710,  421,  241,  682,  713,  242, 300,  683,  720,  85,   603, 137,  138,\n    604,  243,  41,   249,  632,  653, 244,  683,  184,  719,  558, 137,  138,\n    698,  488,  511,  239,  530,  434, 573,  139,  462,  117,  204, 619,  105,\n    240,  134,  245,  251,  140,  606, 602,  139,  252,  241,  282, 607,  242,\n    526,  535,  246,  296,  140,  247, 239,  676,  243,  706,  51,  559,  714,\n    244,  598,  609,  240,  414,  253, 258,  482,  141,  574,  663, 495,  241,\n    0,    0,    242,  300,  -366, 254, 142,  255,  141,  245,  0,   243,  256,\n    249,  240,  717,  244,  0,    143, 142,  144,  0,    246,  241, 0,    247,\n    242,  0,    0,    0,    684,  143, 683,  144,  0,    243,  137, 138,  245,\n    251,  244,  0,    0,    0,    252, 0,    0,    145,  0,    300, 146,  246,\n    0,    147,  247,  0,    0,    0,   139,  249,  145,  0,    245, 146,  0,\n    0,    147,  253,  140,  0,    0,   0,    0,    0,    0,    246, 0,    0,\n    247,  0,    254,  0,    255,  0,   0,    251,  0,    256,  249, 0,    252,\n    148,  149,  28,   150,  0,    0,   0,    141,  0,    0,    0,   137,  138,\n    148,  149,  28,   150,  0,    142, 0,    0,    249,  253,  251, 0,    0,\n    0,    0,    252,  0,    143,  0,   144,  139,  0,    254,  0,   255,  0,\n    0,    0,    0,    256,  140,  0,   137,  138,  251,  0,    0,   0,    253,\n    -366, 0,    137,  138,  0,    0,   0,    145,  0,    0,    146, 0,    254,\n    147,  255,  139,  0,    0,    0,   256,  0,    141,  0,    253, 139,  140,\n    0,    0,    0,    0,    0,    0,   142,  0,    140,  0,    254, 0,    255,\n    0,    0,    0,    0,    -366, 143, 0,    144,  0,    0,    0,   0,    148,\n    149,  28,   150,  141,  0,    0,   0,    0,    0,    0,    0,   0,    221,\n    0,    142,  0,    0,    0,    0,   0,    0,    145,  0,    142, 146,  0,\n    143,  147,  144,  0,    0,    0,   0,    0,    224,  143,  0,   144,  0,\n    0,    0,    0,    0,    0,    0,   0,    0,    0,    0,    0,   0,    0,\n    0,    0,    0,    145,  0,    0,   146,  0,    0,    147,  0,   0,    145,\n    148,  149,  28,   150,  0,    147, 0,    0,    0,    0,    0,   0,    0,\n    0,    0,    0,    0,    0,    0,   0,    0,    0,    0,    0,   0,    0,\n    0,    0,    0,    0,    0,    0,   0,    0,    148,  149,  28,  150,  0,\n    0,    0,    0,    0,    148,  149, 28,   150};\n\nstatic const yytype_int16 yycheck[] = {\n    1,   2,   0,   2,   63,  187, 97,  189, 145, 188, 65,  4,   253, 271, 8,\n    109, 0,   207, 20,  9,   9,   9,   26,  14,  57,  51,  27,  14,  82,  122,\n    14,  14,  153, 34,  137, 34,  57,  38,  141, 38,  70,  57,  45,  44,  103,\n    17,  70,  153, 89,  43,  101, 153, 53,  123, 53,  144, 50,  55,  87,  37,\n    61,  68,  63,  96,  37,  66,  41,  0,   142, 70,  71,  261, 44,  102, 49,\n    96,  57,  62,  199, 14,  96,  93,  83,  85,  83,  58,  59,  120, 89,  101,\n    89,  228, 350, 199, 273, 73,  87,  199, 153, 140, 87,  57,  103, 87,  64,\n    87,  180, 181, 159, 139, 199, 49,  113, 117, 113, 96,  157, 52,  221, 143,\n    114, 122, 107, 124, 179, 124, 101, 118, 187, 188, 189, 118, 4,   121, 118,\n    138, 239, 240, 241, 242, 96,  167, 14,  115, 29,  199, 175, 250, 251, 252,\n    224, 37,  145, 256, 257, 41,  189, 216, 232, 29,  181, 220, 236, 237, 153,\n    181, 153, 357, 175, 153, 153, 57,  107, 59,  134, 179, 170, 164, 116, 65,\n    164, 183, 172, 172, 172, 322, 187, 188, 189, 162, 234, 284, 529, 287, 14,\n    289, 270, 188, 109, 193, 274, 188, 187, 340, 188, 10,  108, 129, 5,   210,\n    166, 210, 116, 195, 273, 216, 57,  218, 219, 220, 219, 57,  94,  560, 268,\n    127, 329, 330, 100, 57,  304, 28,  27,  570, 57,  476, 121, 123, 57,  61,\n    55,  80,  128, 154, 130, 107, 118, 169, 68,  46,  122, 121, 74,  36,  69,\n    96,  141, 19,  143, 131, 96,  57,  101, 135, 168, 199, 61,  358, 96,  92,\n    344, 141, 273, 96,  348, 349, 162, 96,  615, 151, 182, 121, 283, 284, 283,\n    27,  423, 288, 6,   111, 63,  33,  107, 11,  368, 57,  38,  159, 121, 13,\n    96,  84,  143, 21,  66,  583, 584, 143, 22,  105, 181, 25,  30,  31,  32,\n    143, 153, 318, 421, 318, 34,  24,  153, 106, 143, 39,  400, 181, 402, 47,\n    72,  405, 125, 64,  96,  53,  337, 110, 337, 119, 399, 624, 625, 165, 123,\n    48,  161, 61,  341, 67,  343, 57,  630, 490, 491, 17,  178, 75,  413, 90,\n    74,  57,  199, 77,  144, 107, 440, 441, 505, 652, 461, 113, 90,  26,  638,\n    81,  78,  95,  101, 637, 103, 225, 44,  227, 115, 81,  104, 87,  41,  91,\n    96,  109, 495, 657, 81,  113, 49,  111, 399, 81,  96,  88,  102, 134, 130,\n    131, 88,  136, 132, 133, 63,  143, 68,  142, 132, 143, 185, 54,  411, 123,\n    119, 59,  177, 137, 515, 15,  153, 145, 146, 147, 423, 90,  130, 174, 616,\n    76,  154, 58,  73,  125, 12,  121, 160, 90,  101, 185, 143, 45,  449, 56,\n    56,  165, 116, 454, 176, 529, 176, 165, 648, 153, 639, 153, 3,   153, 178,\n    190, 180, 174, 186, 651, 153, 143, 13,  191, 192, 14,  42,  121, 45,  58,\n    185, 22,  556, 174, 25,  148, 560, 542, 543, 166, 121, 492, 143, 34,  143,\n    569, 570, 121, 39,  500, 39,  40,  197, 184, 578, 153, 181, 143, 153, 142,\n    168, 190, 173, 587, 60,  96,  590, 654, 173, 159, 61,  99,  61,  14,  45,\n    86,  585, 12,  83,  163, 121, 185, 71,  74,  589, 181, 77,  153, 98,  153,\n    73,  615, 194, 153, 7,   171, 143, 143, 153, 52,  149, 181, 14,  121, 143,\n    143, 557, 616, 121, 159, 101, 148, 101, 143, 158, 26,  564, 141, 143, 42,\n    111, 3,   143, 112, 143, 79,  153, 121, 73,  143, 639, 13,  93,  153, 585,\n    124, 148, 126, 153, 148, 22,  592, 651, 25,  150, 136, 137, 45,  143, 673,\n    153, 142, 34,  196, 121, 181, 143, 39,  16,  152, 684, 26,  26,  153, 153,\n    616, 148, 156, 153, 150, 159, 622, 110, 622, 165, 153, 133, 143, 143, 61,\n    16,  16,  633, 175, 143, 174, 710, 178, 639, 180, 153, 143, 74,  184, 185,\n    77,  3,   73,  19,  143, 651, 143, 80,  18,  143, 79,  13,  103, 197, 198,\n    199, 200, 97,  96,  96,  22,  18,  23,  25,  101, 35,  66,  55,  564, 39,\n    40,  564, 34,  4,   111, 592, 633, 39,  35,  95,  710, 500, 39,  40,  684,\n    411, 439, 3,   465, 344, 524, 61,  367, 78,  117, 576, 70,  13,  84,  61,\n    137, 71,  564, 563, 61,  142, 22,  199, 564, 25,  454, 474, 74,  218, 71,\n    77,  3,   662, 34,  689, 5,   502, 707, 39,  559, 565, 13,  318, 165, 154,\n    406, 101, 525, 647, 96,  22,  -1,  -1,  25,  101, 3,   178, 112, 180, 101,\n    61,  -1,  34,  185, 111, 13,  18,  39,  -1,  124, 112, 126, -1,  74,  22,\n    -1,  77,  25,  -1,  -1,  -1,  136, 124, 35,  126, -1,  34,  39,  40,  61,\n    137, 39,  -1,  -1,  -1,  142, -1,  -1,  153, -1,  101, 156, 74,  -1,  159,\n    77,  -1,  -1,  -1,  61,  111, 153, -1,  61,  156, -1,  -1,  159, 165, 71,\n    -1,  -1,  -1,  -1,  -1,  -1,  74,  -1,  -1,  77,  -1,  178, -1,  180, -1,\n    -1,  137, -1,  185, 111, -1,  142, 197, 198, 199, 200, -1,  -1,  -1,  101,\n    -1,  -1,  -1,  39,  40,  197, 198, 199, 200, -1,  112, -1,  -1,  111, 165,\n    137, -1,  -1,  -1,  -1,  142, -1,  124, -1,  126, 61,  -1,  178, -1,  180,\n    -1,  -1,  -1,  -1,  185, 71,  -1,  39,  40,  137, -1,  -1,  -1,  165, 142,\n    -1,  39,  40,  -1,  -1,  -1,  153, -1,  -1,  156, -1,  178, 159, 180, 61,\n    -1,  -1,  -1,  185, -1,  101, -1,  165, 61,  71,  -1,  -1,  -1,  -1,  -1,\n    -1,  112, -1,  71,  -1,  178, -1,  180, -1,  -1,  -1,  -1,  185, 124, -1,\n    126, -1,  -1,  -1,  -1,  197, 198, 199, 200, 101, -1,  -1,  -1,  -1,  -1,\n    -1,  -1,  -1,  101, -1,  112, -1,  -1,  -1,  -1,  -1,  -1,  153, -1,  112,\n    156, -1,  124, 159, 126, -1,  -1,  -1,  -1,  -1,  166, 124, -1,  126, -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,\n    -1,  153, -1,  -1,  156, -1,  -1,  159, -1,  -1,  153, 197, 198, 199, 200,\n    -1,  159, -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,\n    197, 198, 199, 200, -1,  -1,  -1,  -1,  -1,  197, 198, 199, 200};\n\n/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing\n   symbol of state STATE-NUM.  */\nstatic const yytype_uint16 yystos[] = {\n    0,   14,  87,  118, 153, 164, 188, 202, 203, 204, 205, 206, 207, 208, 209,\n    210, 251, 256, 257, 258, 259, 275, 276, 278, 279, 280, 288, 82,  199, 252,\n    253, 254, 345, 347, 144, 347, 37,  58,  59,  162, 307, 209, 210, 251, 37,\n    41,  57,  65,  128, 130, 265, 307, 349, 123, 0,   10,  68,  175, 211, 212,\n    252, 121, 181, 153, 309, 347, 181, 312, 346, 125, 344, 344, 347, 123, 143,\n    143, 273, 345, 119, 185, 54,  266, 123, 59,  347, 203, 70,  139, 255, 177,\n    15,  246, 20,  85,  183, 213, 252, 153, 238, 345, 348, 312, 345, 90,  174,\n    273, 345, 350, 130, 131, 268, 269, 270, 344, 24,  48,  274, 265, 36,  84,\n    106, 76,  58,  125, 343, 347, 4,   14,  94,  100, 118, 122, 135, 151, 270,\n    289, 290, 39,  40,  61,  71,  101, 112, 124, 126, 153, 156, 159, 197, 198,\n    200, 215, 242, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,\n    330, 331, 333, 334, 335, 336, 337, 338, 339, 340, 345, 348, 351, 353, 347,\n    73,  12,  243, 244, 211, 208, 143, 121, 90,  153, 310, 311, 348, 64,  134,\n    277, 185, 271, 271, 347, 87,  102, 175, 272, 266, 78,  91,  350, 101, 347,\n    45,  176, 56,  56,  49,  116, 341, 176, 341, 168, 341, 101, 314, 314, 166,\n    313, 328, 329, 165, 153, 210, 242, 153, 190, 214, 233, 57,  96,  312, 3,\n    13,  22,  25,  34,  39,  61,  74,  77,  101, 111, 136, 137, 142, 165, 178,\n    180, 185, 352, 353, 153, 174, 312, 248, 249, 313, 313, 143, 238, 310, 238,\n    42,  231, 232, 121, 185, 62,  107, 187, 55,  69,  107, 161, 277, 45,  58,\n    309, 174, 9,   153, 172, 260, 261, 262, 347, 148, 348, 292, 345, 347, 348,\n    101, 313, 328, 81,  88,  328, 242, 8,   43,  50,  114, 170, 193, 332, 143,\n    143, 313, 234, 239, 231, 313, 313, 121, 314, 314, 314, 314, 101, 159, 136,\n    142, 314, 314, 314, 339, 314, 314, 184, 70,  143, 325, 153, 281, 309, 121,\n    120, 189, 250, 92,  121, 231, 143, 313, 246, 310, 313, 347, 350, 181, 271,\n    291, 292, 271, 119, 144, 264, 121, 263, 153, 6,   11,  21,  30,  31,  32,\n    47,  53,  67,  75,  90,  95,  104, 109, 113, 132, 145, 146, 147, 154, 160,\n    186, 191, 192, 355, 356, 357, 358, 359, 360, 168, 105, 81,  88,  313, 173,\n    190, 181, 29,  121, 141, 240, 153, 345, 347, 351, 60,  229, 242, 159, 314,\n    314, 96,  173, 153, 347, 99,  326, 242, 210, 45,  284, 52,  107, 210, 248,\n    86,  247, 313, 313, 246, 185, 12,  245, 83,  309, 208, 17,  44,  115, 163,\n    306, 361, 362, 363, 121, 27,  33,  38,  72,  107, 113, 181, 261, 286, 287,\n    313, 109, 154, 98,  41,  49,  101, 293, 294, 295, 298, 153, 348, 313, 313,\n    81,  313, 355, 108, 127, 182, 241, 210, 234, 312, 153, 73,  194, 216, 217,\n    96,  314, 210, 242, 153, 7,   327, 143, 143, 171, 153, 282, 283, 52,  17,\n    44,  245, 313, 313, 149, 181, 14,  308, 345, 354, 26,  41,  49,  63,  143,\n    121, 291, 208, 143, 121, 250, 148, 159, 26,  297, 294, 339, 81,  143, 143,\n    158, 141, 143, 143, 93,  101, 235, 242, 242, 218, 219, 220, 345, 314, 143,\n    143, 42,  153, 220, 326, 153, 285, 242, 121, 79,  208, 26,  117, 179, 153,\n    153, 148, 148, 260, 362, 150, 267, 286, 153, 63,  296, 300, 143, 312, 312,\n    73,  93,  45,  236, 143, 196, 230, 121, 181, 313, 221, 228, 345, 327, 286,\n    152, 143, 282, 206, 207, 251, 280, 288, 342, 308, 16,  26,  26,  313, 286,\n    153, 153, 129, 169, 268, 313, 148, 110, 299, 236, 236, 348, 313, 150, 237,\n    312, 313, 218, 153, 143, 143, 133, 222, 143, 87,  195, 16,  16,  143, 143,\n    286, 238, 143, 347, 237, 237, 153, 236, 221, 73,  246, 232, 310, 80,  101,\n    364, 143, 143, 364, 309, 238, 237, 143, 242, 89,  140, 157, 223, 224, 232,\n    80,  299, 45,  138, 301, 302, 143, 18,  35,  136, 225, 227, 313, 87,  102,\n    5,   28,  46,  101, 103, 304, 19,  79,  225, 19,  66,  64,  90,  115, 134,\n    303, 303, 103, 97,  305, 96,  107, 159, 23,  305, 51,  167, 18,  226, 227,\n    66};\n\n/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */\nstatic const yytype_uint16 yyr1[] = {\n    0,   201, 202, 203, 203, 204, 204, 204, 204, 204, 204, 205, 205, 205, 205,\n    206, 206, 206, 206, 207, 208, 208, 209, 209, 210, 211, 211, 212, 213, 213,\n    213, 214, 214, 215, 216, 216, 217, 218, 218, 219, 220, 221, 222, 222, 223,\n    223, 223, 224, 224, 224, 225, 225, 226, 226, 227, 227, 227, 228, 228, 229,\n    229, 230, 230, 231, 231, 232, 233, 234, 234, 234, 234, 235, 235, 235, 236,\n    236, 237, 237, 238, 238, 239, 239, 240, 240, 240, 241, 241, 241, 241, 241,\n    242, 242, 243, 243, 244, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248,\n    248, 249, 250, 250, 250, 251, 251, 251, 252, 252, 253, 254, 255, 255, 255,\n    256, 256, 257, 258, 259, 259, 260, 260, 261, 261, 262, 262, 262, 262, 262,\n    262, 262, 262, 262, 263, 263, 264, 264, 264, 265, 265, 265, 265, 266, 266,\n    266, 267, 267, 267, 268, 268, 268, 269, 269, 269, 270, 270, 270, 270, 271,\n    271, 272, 272, 272, 273, 274, 274, 275, 276, 277, 277, 277, 278, 279, 280,\n    281, 281, 281, 282, 282, 283, 284, 284, 284, 285, 285, 286, 286, 287, 288,\n    288, 289, 289, 289, 289, 289, 290, 290, 290, 290, 290, 290, 290, 291, 291,\n    292, 293, 293, 294, 294, 295, 296, 296, 297, 297, 298, 298, 298, 299, 300,\n    300, 301, 301, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 304, 304,\n    304, 305, 305, 305, 306, 307, 307, 308, 308, 308, 308, 309, 309, 310, 310,\n    311, 311, 312, 312, 313, 313, 313, 313, 313, 313, 314, 314, 314, 314, 314,\n    314, 314, 314, 314, 314, 315, 316, 316, 317, 317, 317, 317, 317, 317, 317,\n    318, 318, 318, 318, 319, 319, 320, 320, 320, 321, 321, 321, 321, 322, 322,\n    323, 324, 324, 325, 325, 326, 326, 327, 327, 327, 328, 328, 329, 330, 330,\n    330, 330, 330, 330, 331, 332, 332, 332, 332, 332, 332, 333, 334, 335, 335,\n    335, 336, 337, 337, 338, 338, 339, 340, 341, 341, 342, 342, 342, 342, 343,\n    343, 344, 344, 345, 346, 347, 348, 349, 349, 349, 349, 350, 351, 352, 352,\n    352, 352, 352, 352, 353, 353, 354, 355, 355, 356, 356, 357, 358, 358, 358,\n    358, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 360, 360, 360, 360,\n    360, 360, 360, 360, 360, 360, 360, 360, 360, 361, 361, 362, 362, 363, 363,\n    363, 363, 364, 364, 364};\n\n/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */\nstatic const yytype_uint8 yyr2[] = {\n    0, 2, 1, 3, 2, 1, 1,  1,  1,  1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 3,\n    3, 4, 1, 3, 7, 1, 1,  1,  1,  0, 1,  1, 0, 2, 1, 3, 5, 1, 4, 3, 0, 2, 5,\n    0, 1, 1, 1, 1, 2, 1,  2,  2,  2, 2,  1, 0, 4, 0, 2, 0, 1, 0, 2, 2, 6, 8,\n    7, 7, 3, 2, 0, 2, 0,  4,  0,  1, 3,  2, 0, 1, 1, 3, 1, 2, 1, 1, 0, 4, 2,\n    1, 0, 2, 4, 4, 2, 0,  3,  0,  2, 2,  0, 1, 3, 3, 1, 1, 0, 2, 3, 0, 1, 3,\n    5, 2, 1, 1, 0, 9, 10, 11, 11, 9, 11, 1, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n    3, 1, 0, 1, 1, 0, 3,  3,  3,  0, 3,  3, 0, 2, 2, 0, 1, 1, 0, 3, 3, 3, 3,\n    3, 3, 3, 1, 0, 1, 1,  1,  1,  1, 1,  4, 6, 1, 1, 0, 4, 5, 7, 2, 3, 3, 1,\n    3, 3, 5, 7, 0, 4, 0,  1,  3,  2, 9,  8, 3, 5, 3, 3, 1, 3, 1, 2, 2, 1, 2,\n    2, 1, 3, 3, 3, 0, 1,  2,  1,  2, 0,  5, 0, 2, 2, 1, 5, 2, 0, 1, 0, 2, 2,\n    2, 3, 3, 2, 2, 1, 1,  2,  2,  3, 0,  2, 2, 0, 2, 1, 0, 3, 4, 4, 0, 3, 0,\n    1, 3, 3, 5, 1, 0, 1,  1,  1,  1, 1,  1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 6,\n    1, 1, 2, 2, 2, 3, 4,  1,  1,  1, 3,  3, 4, 3, 3, 6, 6, 4, 4, 3, 6, 5, 5,\n    6, 5, 5, 7, 1, 0, 5,  0,  4,  2, 0,  1, 2, 4, 3, 3, 3, 3, 3, 3, 6, 1, 1,\n    1, 1, 1, 1, 4, 4, 1,  1,  1,  1, 1,  1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 3,\n    0, 2, 0, 1, 2, 1, 1,  1,  1,  1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n    1, 1, 1, 4, 1, 1, 1,  1,  1,  1, 1,  1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 2, 1, 1, 1,  1,  1,  0, 1,  3, 6, 5, 6, 7, 1, 2, 0};\n\n#define yyerrok (yyerrstatus = 0)\n#define yyclearin (yychar = YYEMPTY)\n#define YYEMPTY (-2)\n#define YYEOF 0\n\n#define YYACCEPT goto yyacceptlab\n#define YYABORT goto yyabortlab\n#define YYERROR goto yyerrorlab\n\n#define YYRECOVERING() (!!yyerrstatus)\n\n#define YYBACKUP(Token, Value)                                                \\\n  do                                                                          \\\n    if (yychar == YYEMPTY) {                                                  \\\n      yychar = (Token);                                                       \\\n      yylval = (Value);                                                       \\\n      YYPOPSTACK(yylen);                                                      \\\n      yystate = *yyssp;                                                       \\\n      goto yybackup;                                                          \\\n    } else {                                                                  \\\n      yyerror(&yylloc, result, scanner, YY_(\"syntax error: cannot back up\")); \\\n      YYERROR;                                                                \\\n    }                                                                         \\\n  while (0)\n\n/* Error token number */\n#define YYTERROR 1\n#define YYERRCODE 256\n\n/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].\n   If N is 0, then set CURRENT to the empty location which ends\n   the previous symbol: RHS[0] (always defined).  */\n\n#ifndef YYLLOC_DEFAULT\n#define YYLLOC_DEFAULT(Current, Rhs, N)                                        \\\n  do                                                                           \\\n    if (N) {                                                                   \\\n      (Current).first_line = YYRHSLOC(Rhs, 1).first_line;                      \\\n      (Current).first_column = YYRHSLOC(Rhs, 1).first_column;                  \\\n      (Current).last_line = YYRHSLOC(Rhs, N).last_line;                        \\\n      (Current).last_column = YYRHSLOC(Rhs, N).last_column;                    \\\n    } else {                                                                   \\\n      (Current).first_line = (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \\\n      (Current).first_column = (Current).last_column =                         \\\n          YYRHSLOC(Rhs, 0).last_column;                                        \\\n    }                                                                          \\\n  while (0)\n#endif\n\n#define YYRHSLOC(Rhs, K) ((Rhs)[K])\n\n/* Enable debugging if requested.  */\n#if FF_DEBUG\n\n#ifndef YYFPRINTF\n#include <stdio.h> /* INFRINGES ON USER NAME SPACE */\n#define YYFPRINTF fprintf\n#endif\n\n#define YYDPRINTF(Args)          \\\n  do {                           \\\n    if (yydebug) YYFPRINTF Args; \\\n  } while (0)\n\n/* YY_LOCATION_PRINT -- Print the location on the stream.\n   This macro was not mandated originally: define only if we know\n   we won't break user code: when these are the locations we know.  */\n\n#ifndef YY_LOCATION_PRINT\n#if defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL\n\n/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */\n\nYY_ATTRIBUTE_UNUSED\nstatic int yy_location_print_(FILE *yyo, YYLTYPE const *const yylocp) {\n  int res = 0;\n  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;\n  if (0 <= yylocp->first_line) {\n    res += YYFPRINTF(yyo, \"%d\", yylocp->first_line);\n    if (0 <= yylocp->first_column)\n      res += YYFPRINTF(yyo, \".%d\", yylocp->first_column);\n  }\n  if (0 <= yylocp->last_line) {\n    if (yylocp->first_line < yylocp->last_line) {\n      res += YYFPRINTF(yyo, \"-%d\", yylocp->last_line);\n      if (0 <= end_col) res += YYFPRINTF(yyo, \".%d\", end_col);\n    } else if (0 <= end_col && yylocp->first_column < end_col)\n      res += YYFPRINTF(yyo, \"-%d\", end_col);\n  }\n  return res;\n}\n\n#define YY_LOCATION_PRINT(File, Loc) yy_location_print_(File, &(Loc))\n\n#else\n#define YY_LOCATION_PRINT(File, Loc) ((void)0)\n#endif\n#endif\n\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)                  \\\n  do {                                                                 \\\n    if (yydebug) {                                                     \\\n      YYFPRINTF(stderr, \"%s \", Title);                                 \\\n      yy_symbol_print(stderr, Type, Value, Location, result, scanner); \\\n      YYFPRINTF(stderr, \"\\n\");                                         \\\n    }                                                                  \\\n  } while (0)\n\n/*-----------------------------------.\n| Print this symbol's value on YYO.  |\n`-----------------------------------*/\n\nstatic void yy_symbol_value_print(FILE *yyo, int yytype,\n                                  YYSTYPE const *const yyvaluep,\n                                  YYLTYPE const *const yylocationp,\n                                  Program *result, yyscan_t scanner) {\n  FILE *yyoutput = yyo;\n  YYUSE(yyoutput);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yyvaluep) return;\n#ifdef YYPRINT\n  if (yytype < YYNTOKENS) YYPRINT(yyo, yytoknum[yytype], *yyvaluep);\n#endif\n  YYUSE(yytype);\n}\n\n/*---------------------------.\n| Print this symbol on YYO.  |\n`---------------------------*/\n\nstatic void yy_symbol_print(FILE *yyo, int yytype,\n                            YYSTYPE const *const yyvaluep,\n                            YYLTYPE const *const yylocationp, Program *result,\n                            yyscan_t scanner) {\n  YYFPRINTF(yyo, \"%s %s (\", yytype < YYNTOKENS ? \"token\" : \"nterm\",\n            yytname[yytype]);\n\n  YY_LOCATION_PRINT(yyo, *yylocationp);\n  YYFPRINTF(yyo, \": \");\n  yy_symbol_value_print(yyo, yytype, yyvaluep, yylocationp, result, scanner);\n  YYFPRINTF(yyo, \")\");\n}\n\n/*------------------------------------------------------------------.\n| yy_stack_print -- Print the state stack from its BOTTOM up to its |\n| TOP (included).                                                   |\n`------------------------------------------------------------------*/\n\nstatic void yy_stack_print(yytype_int16 *yybottom, yytype_int16 *yytop) {\n  YYFPRINTF(stderr, \"Stack now\");\n  for (; yybottom <= yytop; yybottom++) {\n    int yybot = *yybottom;\n    YYFPRINTF(stderr, \" %d\", yybot);\n  }\n  YYFPRINTF(stderr, \"\\n\");\n}\n\n#define YY_STACK_PRINT(Bottom, Top)               \\\n  do {                                            \\\n    if (yydebug) yy_stack_print((Bottom), (Top)); \\\n  } while (0)\n\n/*------------------------------------------------.\n| Report that the YYRULE is going to be reduced.  |\n`------------------------------------------------*/\n\nstatic void yy_reduce_print(yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,\n                            int yyrule, Program *result, yyscan_t scanner) {\n  unsigned long yylno = yyrline[yyrule];\n  int yynrhs = yyr2[yyrule];\n  int yyi;\n  YYFPRINTF(stderr, \"Reducing stack by rule %d (line %lu):\\n\", yyrule - 1,\n            yylno);\n  /* The symbols being reduced.  */\n  for (yyi = 0; yyi < yynrhs; yyi++) {\n    YYFPRINTF(stderr, \"   $%d = \", yyi + 1);\n    yy_symbol_print(stderr, yystos[yyssp[yyi + 1 - yynrhs]],\n                    &yyvsp[(yyi + 1) - (yynrhs)],\n                    &(yylsp[(yyi + 1) - (yynrhs)]), result, scanner);\n    YYFPRINTF(stderr, \"\\n\");\n  }\n}\n\n#define YY_REDUCE_PRINT(Rule)                                                 \\\n  do {                                                                        \\\n    if (yydebug) yy_reduce_print(yyssp, yyvsp, yylsp, Rule, result, scanner); \\\n  } while (0)\n\n/* Nonzero means print parse trace.  It is left uninitialized so that\n   multiple parsers can coexist.  */\nint yydebug;\n#else /* !FF_DEBUG */\n#define YYDPRINTF(Args)\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)\n#define YY_STACK_PRINT(Bottom, Top)\n#define YY_REDUCE_PRINT(Rule)\n#endif /* !FF_DEBUG */\n\n/* YYINITDEPTH -- initial size of the parser's stacks.  */\n#ifndef YYINITDEPTH\n#define YYINITDEPTH 200\n#endif\n\n/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only\n   if the built-in stack extension method is used).\n\n   Do not make this value too large; the results are undefined if\n   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)\n   evaluated with infinite-precision integer arithmetic.  */\n\n#ifndef YYMAXDEPTH\n#define YYMAXDEPTH 10000\n#endif\n\n#if YYERROR_VERBOSE\n\n#ifndef yystrlen\n#if defined __GLIBC__ && defined _STRING_H\n#define yystrlen strlen\n#else\n/* Return the length of YYSTR.  */\nstatic YYSIZE_T yystrlen(const char *yystr) {\n  YYSIZE_T yylen;\n  for (yylen = 0; yystr[yylen]; yylen++) continue;\n  return yylen;\n}\n#endif\n#endif\n\n#ifndef yystpcpy\n#if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE\n#define yystpcpy stpcpy\n#else\n/* Copy YYSRC to YYDEST, returning the address of the terminating '\\0' in\n   YYDEST.  */\nstatic char *yystpcpy(char *yydest, const char *yysrc) {\n  char *yyd = yydest;\n  const char *yys = yysrc;\n\n  while ((*yyd++ = *yys++) != '\\0') continue;\n\n  return yyd - 1;\n}\n#endif\n#endif\n\n#ifndef yytnamerr\n/* Copy to YYRES the contents of YYSTR after stripping away unnecessary\n   quotes and backslashes, so that it's suitable for yyerror.  The\n   heuristic is that double-quoting is unnecessary unless the string\n   contains an apostrophe, a comma, or backslash (other than\n   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is\n   null, do not copy; instead, return the length of what the result\n   would have been.  */\nstatic YYSIZE_T yytnamerr(char *yyres, const char *yystr) {\n  if (*yystr == '\"') {\n    YYSIZE_T yyn = 0;\n    char const *yyp = yystr;\n\n    for (;;) switch (*++yyp) {\n        case '\\'':\n        case ',':\n          goto do_not_strip_quotes;\n\n        case '\\\\':\n          if (*++yyp != '\\\\')\n            goto do_not_strip_quotes;\n          else\n            goto append;\n\n        append:\n        default:\n          if (yyres) yyres[yyn] = *yyp;\n          yyn++;\n          break;\n\n        case '\"':\n          if (yyres) yyres[yyn] = '\\0';\n          return yyn;\n      }\n  do_not_strip_quotes:;\n  }\n\n  if (!yyres) return yystrlen(yystr);\n\n  return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);\n}\n#endif\n\n/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message\n   about the unexpected token YYTOKEN for the state stack whose top is\n   YYSSP.\n\n   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is\n   not large enough to hold the message.  In that case, also set\n   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the\n   required number of bytes is too large to store.  */\nstatic int yysyntax_error(YYSIZE_T *yymsg_alloc, char **yymsg,\n                          yytype_int16 *yyssp, int yytoken) {\n  YYSIZE_T yysize0 = yytnamerr(YY_NULLPTR, yytname[yytoken]);\n  YYSIZE_T yysize = yysize0;\n  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };\n  /* Internationalized format string. */\n  const char *yyformat = YY_NULLPTR;\n  /* Arguments of yyformat. */\n  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];\n  /* Number of reported tokens (one for the \"unexpected\", one per\n     \"expected\"). */\n  int yycount = 0;\n\n  /* There are many possibilities here to consider:\n     - If this state is a consistent state with a default action, then\n       the only way this function was invoked is if the default action\n       is an error action.  In that case, don't check for expected\n       tokens because there are none.\n     - The only way there can be no lookahead present (in yychar) is if\n       this state is a consistent state with a default action.  Thus,\n       detecting the absence of a lookahead is sufficient to determine\n       that there is no unexpected or expected token to report.  In that\n       case, just report a simple \"syntax error\".\n     - Don't assume there isn't a lookahead just because this state is a\n       consistent state with a default action.  There might have been a\n       previous inconsistent state, consistent state with a non-default\n       action, or user semantic action that manipulated yychar.\n     - Of course, the expected token list depends on states to have\n       correct lookahead information, and it depends on the parser not\n       to perform extra reductions after fetching a lookahead from the\n       scanner and before detecting a syntax error.  Thus, state merging\n       (from LALR or IELR) and default reductions corrupt the expected\n       token list.  However, the list is correct for canonical LR with\n       one exception: it will still contain any token that will not be\n       accepted due to an error action in a later state.\n  */\n  if (yytoken != YYEMPTY) {\n    int yyn = yypact[*yyssp];\n    yyarg[yycount++] = yytname[yytoken];\n    if (!yypact_value_is_default(yyn)) {\n      /* Start YYX at -YYN if negative to avoid negative indexes in\n         YYCHECK.  In other words, skip the first -YYN actions for\n         this state because they are default actions.  */\n      int yyxbegin = yyn < 0 ? -yyn : 0;\n      /* Stay within bounds of both yycheck and yytname.  */\n      int yychecklim = YYLAST - yyn + 1;\n      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;\n      int yyx;\n\n      for (yyx = yyxbegin; yyx < yyxend; ++yyx)\n        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR &&\n            !yytable_value_is_error(yytable[yyx + yyn])) {\n          if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) {\n            yycount = 1;\n            yysize = yysize0;\n            break;\n          }\n          yyarg[yycount++] = yytname[yyx];\n          {\n            YYSIZE_T yysize1 = yysize + yytnamerr(YY_NULLPTR, yytname[yyx]);\n            if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n              yysize = yysize1;\n            else\n              return 2;\n          }\n        }\n    }\n  }\n\n  switch (yycount) {\n#define YYCASE_(N, S) \\\n  case N:             \\\n    yyformat = S;     \\\n    break\n    default: /* Avoid compiler warnings. */\n      YYCASE_(0, YY_(\"syntax error\"));\n      YYCASE_(1, YY_(\"syntax error, unexpected %s\"));\n      YYCASE_(2, YY_(\"syntax error, unexpected %s, expecting %s\"));\n      YYCASE_(3, YY_(\"syntax error, unexpected %s, expecting %s or %s\"));\n      YYCASE_(4, YY_(\"syntax error, unexpected %s, expecting %s or %s or %s\"));\n      YYCASE_(\n          5,\n          YY_(\"syntax error, unexpected %s, expecting %s or %s or %s or %s\"));\n#undef YYCASE_\n  }\n\n  {\n    YYSIZE_T yysize1 = yysize + yystrlen(yyformat);\n    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n      yysize = yysize1;\n    else\n      return 2;\n  }\n\n  if (*yymsg_alloc < yysize) {\n    *yymsg_alloc = 2 * yysize;\n    if (!(yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))\n      *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;\n    return 1;\n  }\n\n  /* Avoid sprintf, as that infringes on the user's name space.\n     Don't have undefined behavior even if the translation\n     produced a string with the wrong number of \"%s\"s.  */\n  {\n    char *yyp = *yymsg;\n    int yyi = 0;\n    while ((*yyp = *yyformat) != '\\0')\n      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) {\n        yyp += yytnamerr(yyp, yyarg[yyi++]);\n        yyformat += 2;\n      } else {\n        yyp++;\n        yyformat++;\n      }\n  }\n  return 0;\n}\n#endif /* YYERROR_VERBOSE */\n\n/*-----------------------------------------------.\n| Release the memory associated to this symbol.  |\n`-----------------------------------------------*/\n\nstatic void yydestruct(const char *yymsg, int yytype, YYSTYPE *yyvaluep,\n                       YYLTYPE *yylocationp, Program *result,\n                       yyscan_t scanner) {\n  YYUSE(yyvaluep);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yymsg) yymsg = \"Deleting\";\n  YY_SYMBOL_PRINT(yymsg, yytype, yyvaluep, yylocationp);\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  switch (yytype) {\n    case 197:       /* INTLITERAL  */\n#line 417 \"bison.y\" /* yacc.c:1257  */\n    {\n\n    }\n#line 2117 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 198:       /* FLOATLITERAL  */\n#line 417 \"bison.y\" /* yacc.c:1257  */\n    {\n\n    }\n#line 2125 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 199:       /* IDENTIFIER  */\n#line 413 \"bison.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 2133 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 200:       /* STRINGLITERAL  */\n#line 413 \"bison.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 2141 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 202:       /* program  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).program_t) != NULL)\n        ((*yyvaluep).program_t)->deep_delete();\n    }\n#line 2147 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 203:       /* stmtlist  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).stmtlist_t) != NULL)\n        ((*yyvaluep).stmtlist_t)->deep_delete();\n    }\n#line 2153 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 204:       /* stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).stmt_t) != NULL) ((*yyvaluep).stmt_t)->deep_delete();\n    }\n#line 2159 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 205:       /* create_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_stmt_t) != NULL)\n        ((*yyvaluep).create_stmt_t)->deep_delete();\n    }\n#line 2165 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 206:       /* drop_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_stmt_t) != NULL)\n        ((*yyvaluep).drop_stmt_t)->deep_delete();\n    }\n#line 2171 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 207:       /* alter_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_stmt_t) != NULL)\n        ((*yyvaluep).alter_stmt_t)->deep_delete();\n    }\n#line 2177 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 208:       /* select_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_stmt_t) != NULL)\n        ((*yyvaluep).select_stmt_t)->deep_delete();\n    }\n#line 2183 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 209:       /* select_with_parens  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_with_parens_t) != NULL)\n        ((*yyvaluep).select_with_parens_t)->deep_delete();\n    }\n#line 2189 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 210:       /* select_no_parens  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_no_parens_t) != NULL)\n        ((*yyvaluep).select_no_parens_t)->deep_delete();\n    }\n#line 2195 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 211:       /* select_clause_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_clause_list_t) != NULL)\n        ((*yyvaluep).select_clause_list_t)->deep_delete();\n    }\n#line 2201 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 212:       /* select_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_clause_t) != NULL)\n        ((*yyvaluep).select_clause_t)->deep_delete();\n    }\n#line 2207 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 213:       /* combine_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).combine_clause_t) != NULL)\n        ((*yyvaluep).combine_clause_t)->deep_delete();\n    }\n#line 2213 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 214:       /* opt_from_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_from_clause_t) != NULL)\n        ((*yyvaluep).opt_from_clause_t)->deep_delete();\n    }\n#line 2219 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 215:       /* select_target  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_target_t) != NULL)\n        ((*yyvaluep).select_target_t)->deep_delete();\n    }\n#line 2225 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 216:       /* opt_window_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_window_clause_t) != NULL)\n        ((*yyvaluep).opt_window_clause_t)->deep_delete();\n    }\n#line 2231 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 217:       /* window_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_clause_t) != NULL)\n        ((*yyvaluep).window_clause_t)->deep_delete();\n    }\n#line 2237 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 218:       /* window_def_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_def_list_t) != NULL)\n        ((*yyvaluep).window_def_list_t)->deep_delete();\n    }\n#line 2243 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 219:       /* window_def  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_def_t) != NULL)\n        ((*yyvaluep).window_def_t)->deep_delete();\n    }\n#line 2249 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 220:       /* window_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_name_t) != NULL)\n        ((*yyvaluep).window_name_t)->deep_delete();\n    }\n#line 2255 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 221:       /* window  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_t) != NULL) ((*yyvaluep).window_t)->deep_delete();\n    }\n#line 2261 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 222:       /* opt_partition  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_partition_t) != NULL)\n        ((*yyvaluep).opt_partition_t)->deep_delete();\n    }\n#line 2267 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 223:       /* opt_frame_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_frame_clause_t) != NULL)\n        ((*yyvaluep).opt_frame_clause_t)->deep_delete();\n    }\n#line 2273 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 224:       /* range_or_rows  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).range_or_rows_t) != NULL)\n        ((*yyvaluep).range_or_rows_t)->deep_delete();\n    }\n#line 2279 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 225:       /* frame_bound_start  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_start_t) != NULL)\n        ((*yyvaluep).frame_bound_start_t)->deep_delete();\n    }\n#line 2285 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 226:       /* frame_bound_end  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_end_t) != NULL)\n        ((*yyvaluep).frame_bound_end_t)->deep_delete();\n    }\n#line 2291 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 227:       /* frame_bound  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_t) != NULL)\n        ((*yyvaluep).frame_bound_t)->deep_delete();\n    }\n#line 2297 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 228:       /* opt_exist_window_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_exist_window_name_t) != NULL)\n        ((*yyvaluep).opt_exist_window_name_t)->deep_delete();\n    }\n#line 2303 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 229:       /* opt_group_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_group_clause_t) != NULL)\n        ((*yyvaluep).opt_group_clause_t)->deep_delete();\n    }\n#line 2309 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 230:       /* opt_having_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_having_clause_t) != NULL)\n        ((*yyvaluep).opt_having_clause_t)->deep_delete();\n    }\n#line 2315 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 231:       /* opt_where_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_where_clause_t) != NULL)\n        ((*yyvaluep).opt_where_clause_t)->deep_delete();\n    }\n#line 2321 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 232:       /* where_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).where_clause_t) != NULL)\n        ((*yyvaluep).where_clause_t)->deep_delete();\n    }\n#line 2327 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 233:       /* from_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).from_clause_t) != NULL)\n        ((*yyvaluep).from_clause_t)->deep_delete();\n    }\n#line 2333 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 234:       /* table_ref  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_ref_t) != NULL)\n        ((*yyvaluep).table_ref_t)->deep_delete();\n    }\n#line 2339 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 235:       /* opt_index  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_index_t) != NULL)\n        ((*yyvaluep).opt_index_t)->deep_delete();\n    }\n#line 2345 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 236:       /* opt_on  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_t) != NULL) ((*yyvaluep).opt_on_t)->deep_delete();\n    }\n#line 2351 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 237:       /* opt_using  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_using_t) != NULL)\n        ((*yyvaluep).opt_using_t)->deep_delete();\n    }\n#line 2357 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 238:       /* column_name_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_list_t) != NULL)\n        ((*yyvaluep).column_name_list_t)->deep_delete();\n    }\n#line 2363 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 239:       /* opt_table_prefix  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_table_prefix_t) != NULL)\n        ((*yyvaluep).opt_table_prefix_t)->deep_delete();\n    }\n#line 2369 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 240:       /* join_op  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).join_op_t) != NULL)\n        ((*yyvaluep).join_op_t)->deep_delete();\n    }\n#line 2375 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 241:       /* opt_join_type  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_join_type_t) != NULL)\n        ((*yyvaluep).opt_join_type_t)->deep_delete();\n    }\n#line 2381 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 242:       /* expr_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_list_t) != NULL)\n        ((*yyvaluep).expr_list_t)->deep_delete();\n    }\n#line 2387 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 243:       /* opt_limit_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_limit_clause_t) != NULL)\n        ((*yyvaluep).opt_limit_clause_t)->deep_delete();\n    }\n#line 2393 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 244:       /* limit_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).limit_clause_t) != NULL)\n        ((*yyvaluep).limit_clause_t)->deep_delete();\n    }\n#line 2399 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 245:       /* opt_limit_row_count  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_limit_row_count_t) != NULL)\n        ((*yyvaluep).opt_limit_row_count_t)->deep_delete();\n    }\n#line 2405 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 246:       /* opt_order_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_clause_t) != NULL)\n        ((*yyvaluep).opt_order_clause_t)->deep_delete();\n    }\n#line 2411 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 247:       /* opt_order_nulls  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_nulls_t) != NULL)\n        ((*yyvaluep).opt_order_nulls_t)->deep_delete();\n    }\n#line 2417 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 248:       /* order_item_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_item_list_t) != NULL)\n        ((*yyvaluep).order_item_list_t)->deep_delete();\n    }\n#line 2423 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 249:       /* order_item  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_item_t) != NULL)\n        ((*yyvaluep).order_item_t)->deep_delete();\n    }\n#line 2429 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 250:       /* opt_order_behavior  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_behavior_t) != NULL)\n        ((*yyvaluep).opt_order_behavior_t)->deep_delete();\n    }\n#line 2435 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 251:       /* opt_with_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_with_clause_t) != NULL)\n        ((*yyvaluep).opt_with_clause_t)->deep_delete();\n    }\n#line 2441 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 252:       /* cte_table_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_list_t) != NULL)\n        ((*yyvaluep).cte_table_list_t)->deep_delete();\n    }\n#line 2447 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 253:       /* cte_table  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_t) != NULL)\n        ((*yyvaluep).cte_table_t)->deep_delete();\n    }\n#line 2453 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 254:       /* cte_table_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_name_t) != NULL)\n        ((*yyvaluep).cte_table_name_t)->deep_delete();\n    }\n#line 2459 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 255:       /* opt_all_or_distinct  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_all_or_distinct_t) != NULL)\n        ((*yyvaluep).opt_all_or_distinct_t)->deep_delete();\n    }\n#line 2465 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 256:       /* create_table_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_table_stmt_t) != NULL)\n        ((*yyvaluep).create_table_stmt_t)->deep_delete();\n    }\n#line 2471 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 257:       /* create_index_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_index_stmt_t) != NULL)\n        ((*yyvaluep).create_index_stmt_t)->deep_delete();\n    }\n#line 2477 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 258:       /* create_trigger_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_trigger_stmt_t) != NULL)\n        ((*yyvaluep).create_trigger_stmt_t)->deep_delete();\n    }\n#line 2483 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 259:       /* create_view_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_view_stmt_t) != NULL)\n        ((*yyvaluep).create_view_stmt_t)->deep_delete();\n    }\n#line 2489 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 260:       /* opt_table_option_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_table_option_list_t) != NULL)\n        ((*yyvaluep).opt_table_option_list_t)->deep_delete();\n    }\n#line 2495 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 261:       /* table_option_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_option_list_t) != NULL)\n        ((*yyvaluep).table_option_list_t)->deep_delete();\n    }\n#line 2501 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 262:       /* table_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_option_t) != NULL)\n        ((*yyvaluep).table_option_t)->deep_delete();\n    }\n#line 2507 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 263:       /* opt_op_comma  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_op_comma_t) != NULL)\n        ((*yyvaluep).opt_op_comma_t)->deep_delete();\n    }\n#line 2513 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 264:       /* opt_ignore_or_replace  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_ignore_or_replace_t) != NULL)\n        ((*yyvaluep).opt_ignore_or_replace_t)->deep_delete();\n    }\n#line 2519 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 265:       /* opt_view_algorithm  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_view_algorithm_t) != NULL)\n        ((*yyvaluep).opt_view_algorithm_t)->deep_delete();\n    }\n#line 2525 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 266:       /* opt_sql_security  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_sql_security_t) != NULL)\n        ((*yyvaluep).opt_sql_security_t)->deep_delete();\n    }\n#line 2531 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 267:       /* opt_index_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_index_option_t) != NULL)\n        ((*yyvaluep).opt_index_option_t)->deep_delete();\n    }\n#line 2537 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 268:       /* opt_extra_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_extra_option_t) != NULL)\n        ((*yyvaluep).opt_extra_option_t)->deep_delete();\n    }\n#line 2543 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 269:       /* index_algorithm_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).index_algorithm_option_t) != NULL)\n        ((*yyvaluep).index_algorithm_option_t)->deep_delete();\n    }\n#line 2549 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 270:       /* lock_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).lock_option_t) != NULL)\n        ((*yyvaluep).lock_option_t)->deep_delete();\n    }\n#line 2555 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 271:       /* opt_op_equal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_op_equal_t) != NULL)\n        ((*yyvaluep).opt_op_equal_t)->deep_delete();\n    }\n#line 2561 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 272:       /* trigger_events  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_events_t) != NULL)\n        ((*yyvaluep).trigger_events_t)->deep_delete();\n    }\n#line 2567 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 273:       /* trigger_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_name_t) != NULL)\n        ((*yyvaluep).trigger_name_t)->deep_delete();\n    }\n#line 2573 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 274:       /* trigger_action_time  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_action_time_t) != NULL)\n        ((*yyvaluep).trigger_action_time_t)->deep_delete();\n    }\n#line 2579 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 275:       /* drop_index_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_index_stmt_t) != NULL)\n        ((*yyvaluep).drop_index_stmt_t)->deep_delete();\n    }\n#line 2585 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 276:       /* drop_table_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_table_stmt_t) != NULL)\n        ((*yyvaluep).drop_table_stmt_t)->deep_delete();\n    }\n#line 2591 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 277:       /* opt_restrict_or_cascade  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_restrict_or_cascade_t) != NULL)\n        ((*yyvaluep).opt_restrict_or_cascade_t)->deep_delete();\n    }\n#line 2597 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 278:       /* drop_trigger_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_trigger_stmt_t) != NULL)\n        ((*yyvaluep).drop_trigger_stmt_t)->deep_delete();\n    }\n#line 2603 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 279:       /* drop_view_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_view_stmt_t) != NULL)\n        ((*yyvaluep).drop_view_stmt_t)->deep_delete();\n    }\n#line 2609 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 280:       /* insert_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_stmt_t) != NULL)\n        ((*yyvaluep).insert_stmt_t)->deep_delete();\n    }\n#line 2615 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 281:       /* insert_rest  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_rest_t) != NULL)\n        ((*yyvaluep).insert_rest_t)->deep_delete();\n    }\n#line 2621 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 282:       /* super_values_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).super_values_list_t) != NULL)\n        ((*yyvaluep).super_values_list_t)->deep_delete();\n    }\n#line 2627 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 283:       /* values_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).values_list_t) != NULL)\n        ((*yyvaluep).values_list_t)->deep_delete();\n    }\n#line 2633 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 284:       /* opt_on_conflict  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_conflict_t) != NULL)\n        ((*yyvaluep).opt_on_conflict_t)->deep_delete();\n    }\n#line 2639 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 285:       /* opt_conflict_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_conflict_expr_t) != NULL)\n        ((*yyvaluep).opt_conflict_expr_t)->deep_delete();\n    }\n#line 2645 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 286:       /* indexed_column_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_list_t) != NULL)\n        ((*yyvaluep).indexed_column_list_t)->deep_delete();\n    }\n#line 2651 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 287:       /* indexed_column  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_t) != NULL)\n        ((*yyvaluep).indexed_column_t)->deep_delete();\n    }\n#line 2657 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 288:       /* update_stmt  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).update_stmt_t) != NULL)\n        ((*yyvaluep).update_stmt_t)->deep_delete();\n    }\n#line 2663 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 289:       /* alter_action  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_action_t) != NULL)\n        ((*yyvaluep).alter_action_t)->deep_delete();\n    }\n#line 2669 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 290:       /* alter_constant_action  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_constant_action_t) != NULL)\n        ((*yyvaluep).alter_constant_action_t)->deep_delete();\n    }\n#line 2675 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 291:       /* column_def_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_list_t) != NULL)\n        ((*yyvaluep).column_def_list_t)->deep_delete();\n    }\n#line 2681 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 292:       /* column_def  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_t) != NULL)\n        ((*yyvaluep).column_def_t)->deep_delete();\n    }\n#line 2687 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 293:       /* opt_column_constraint_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_constraint_list_t) != NULL)\n        ((*yyvaluep).opt_column_constraint_list_t)->deep_delete();\n    }\n#line 2693 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 294:       /* column_constraint_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_constraint_list_t) != NULL)\n        ((*yyvaluep).column_constraint_list_t)->deep_delete();\n    }\n#line 2699 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 295:       /* column_constraint  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_constraint_t) != NULL)\n        ((*yyvaluep).column_constraint_t)->deep_delete();\n    }\n#line 2705 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 296:       /* opt_reference_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_reference_clause_t) != NULL)\n        ((*yyvaluep).opt_reference_clause_t)->deep_delete();\n    }\n#line 2711 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 297:       /* opt_check  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_check_t) != NULL)\n        ((*yyvaluep).opt_check_t)->deep_delete();\n    }\n#line 2717 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 298:       /* constraint_type  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).constraint_type_t) != NULL)\n        ((*yyvaluep).constraint_type_t)->deep_delete();\n    }\n#line 2723 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 299:       /* reference_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).reference_clause_t) != NULL)\n        ((*yyvaluep).reference_clause_t)->deep_delete();\n    }\n#line 2729 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 300:       /* opt_foreign_key  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_foreign_key_t) != NULL)\n        ((*yyvaluep).opt_foreign_key_t)->deep_delete();\n    }\n#line 2735 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 301:       /* opt_foreign_key_actions  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_foreign_key_actions_t) != NULL)\n        ((*yyvaluep).opt_foreign_key_actions_t)->deep_delete();\n    }\n#line 2741 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 302:       /* foreign_key_actions  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).foreign_key_actions_t) != NULL)\n        ((*yyvaluep).foreign_key_actions_t)->deep_delete();\n    }\n#line 2747 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 303:       /* key_actions  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).key_actions_t) != NULL)\n        ((*yyvaluep).key_actions_t)->deep_delete();\n    }\n#line 2753 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 304:       /* opt_constraint_attribute_spec  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_constraint_attribute_spec_t) != NULL)\n        ((*yyvaluep).opt_constraint_attribute_spec_t)->deep_delete();\n    }\n#line 2759 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 305:       /* opt_initial_time  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_initial_time_t) != NULL)\n        ((*yyvaluep).opt_initial_time_t)->deep_delete();\n    }\n#line 2765 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 306:       /* constraint_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).constraint_name_t) != NULL)\n        ((*yyvaluep).constraint_name_t)->deep_delete();\n    }\n#line 2771 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 307:       /* opt_temp  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_temp_t) != NULL)\n        ((*yyvaluep).opt_temp_t)->deep_delete();\n    }\n#line 2777 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 308:       /* opt_check_option  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_check_option_t) != NULL)\n        ((*yyvaluep).opt_check_option_t)->deep_delete();\n    }\n#line 2783 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 309:       /* opt_column_name_list_p  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_name_list_p_t) != NULL)\n        ((*yyvaluep).opt_column_name_list_p_t)->deep_delete();\n    }\n#line 2789 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 310:       /* set_clause_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_clause_list_t) != NULL)\n        ((*yyvaluep).set_clause_list_t)->deep_delete();\n    }\n#line 2795 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 311:       /* set_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_clause_t) != NULL)\n        ((*yyvaluep).set_clause_t)->deep_delete();\n    }\n#line 2801 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 312:       /* opt_as_alias  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_as_alias_t) != NULL)\n        ((*yyvaluep).opt_as_alias_t)->deep_delete();\n    }\n#line 2807 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 313:       /* expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_t) != NULL) ((*yyvaluep).expr_t)->deep_delete();\n    }\n#line 2813 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 314:       /* operand  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).operand_t) != NULL)\n        ((*yyvaluep).operand_t)->deep_delete();\n    }\n#line 2819 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 315:       /* cast_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cast_expr_t) != NULL)\n        ((*yyvaluep).cast_expr_t)->deep_delete();\n    }\n#line 2825 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 316:       /* scalar_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).scalar_expr_t) != NULL)\n        ((*yyvaluep).scalar_expr_t)->deep_delete();\n    }\n#line 2831 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 317:       /* unary_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).unary_expr_t) != NULL)\n        ((*yyvaluep).unary_expr_t)->deep_delete();\n    }\n#line 2837 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 318:       /* binary_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).binary_expr_t) != NULL)\n        ((*yyvaluep).binary_expr_t)->deep_delete();\n    }\n#line 2843 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 319:       /* logic_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).logic_expr_t) != NULL)\n        ((*yyvaluep).logic_expr_t)->deep_delete();\n    }\n#line 2849 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 320:       /* in_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).in_expr_t) != NULL)\n        ((*yyvaluep).in_expr_t)->deep_delete();\n    }\n#line 2855 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 321:       /* case_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_expr_t) != NULL)\n        ((*yyvaluep).case_expr_t)->deep_delete();\n    }\n#line 2861 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 322:       /* between_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).between_expr_t) != NULL)\n        ((*yyvaluep).between_expr_t)->deep_delete();\n    }\n#line 2867 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 323:       /* exists_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).exists_expr_t) != NULL)\n        ((*yyvaluep).exists_expr_t)->deep_delete();\n    }\n#line 2873 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 324:       /* function_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).function_expr_t) != NULL)\n        ((*yyvaluep).function_expr_t)->deep_delete();\n    }\n#line 2879 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 325:       /* opt_distinct  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_distinct_t) != NULL)\n        ((*yyvaluep).opt_distinct_t)->deep_delete();\n    }\n#line 2885 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 326:       /* opt_filter_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_filter_clause_t) != NULL)\n        ((*yyvaluep).opt_filter_clause_t)->deep_delete();\n    }\n#line 2891 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 327:       /* opt_over_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_over_clause_t) != NULL)\n        ((*yyvaluep).opt_over_clause_t)->deep_delete();\n    }\n#line 2897 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 328:       /* case_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_list_t) != NULL)\n        ((*yyvaluep).case_list_t)->deep_delete();\n    }\n#line 2903 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 329:       /* case_clause  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_clause_t) != NULL)\n        ((*yyvaluep).case_clause_t)->deep_delete();\n    }\n#line 2909 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 330:       /* comp_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).comp_expr_t) != NULL)\n        ((*yyvaluep).comp_expr_t)->deep_delete();\n    }\n#line 2915 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 331:       /* extract_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).extract_expr_t) != NULL)\n        ((*yyvaluep).extract_expr_t)->deep_delete();\n    }\n#line 2921 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 332:       /* datetime_field  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).datetime_field_t) != NULL)\n        ((*yyvaluep).datetime_field_t)->deep_delete();\n    }\n#line 2927 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 333:       /* array_expr  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).array_expr_t) != NULL)\n        ((*yyvaluep).array_expr_t)->deep_delete();\n    }\n#line 2933 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 334:       /* array_index  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).array_index_t) != NULL)\n        ((*yyvaluep).array_index_t)->deep_delete();\n    }\n#line 2939 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 335:       /* literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).literal_t) != NULL)\n        ((*yyvaluep).literal_t)->deep_delete();\n    }\n#line 2945 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 336:       /* string_literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).string_literal_t) != NULL)\n        ((*yyvaluep).string_literal_t)->deep_delete();\n    }\n#line 2951 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 337:       /* bool_literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).bool_literal_t) != NULL)\n        ((*yyvaluep).bool_literal_t)->deep_delete();\n    }\n#line 2957 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 338:       /* num_literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).num_literal_t) != NULL)\n        ((*yyvaluep).num_literal_t)->deep_delete();\n    }\n#line 2963 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 339:       /* int_literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).int_literal_t) != NULL)\n        ((*yyvaluep).int_literal_t)->deep_delete();\n    }\n#line 2969 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 340:       /* float_literal  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).float_literal_t) != NULL)\n        ((*yyvaluep).float_literal_t)->deep_delete();\n    }\n#line 2975 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 341:       /* opt_column  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_t) != NULL)\n        ((*yyvaluep).opt_column_t)->deep_delete();\n    }\n#line 2981 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 342:       /* trigger_body  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_body_t) != NULL)\n        ((*yyvaluep).trigger_body_t)->deep_delete();\n    }\n#line 2987 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 343:       /* opt_if_not_exist  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_if_not_exist_t) != NULL)\n        ((*yyvaluep).opt_if_not_exist_t)->deep_delete();\n    }\n#line 2993 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 344:       /* opt_if_exist  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_if_exist_t) != NULL)\n        ((*yyvaluep).opt_if_exist_t)->deep_delete();\n    }\n#line 2999 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 345:       /* identifier  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).identifier_t) != NULL)\n        ((*yyvaluep).identifier_t)->deep_delete();\n    }\n#line 3005 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 346:       /* as_alias  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).as_alias_t) != NULL)\n        ((*yyvaluep).as_alias_t)->deep_delete();\n    }\n#line 3011 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 347:       /* table_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_name_t) != NULL)\n        ((*yyvaluep).table_name_t)->deep_delete();\n    }\n#line 3017 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 348:       /* column_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_t) != NULL)\n        ((*yyvaluep).column_name_t)->deep_delete();\n    }\n#line 3023 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 349:       /* opt_index_keyword  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_index_keyword_t) != NULL)\n        ((*yyvaluep).opt_index_keyword_t)->deep_delete();\n    }\n#line 3029 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 350:       /* view_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).view_name_t) != NULL)\n        ((*yyvaluep).view_name_t)->deep_delete();\n    }\n#line 3035 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 351:       /* function_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).function_name_t) != NULL)\n        ((*yyvaluep).function_name_t)->deep_delete();\n    }\n#line 3041 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 352:       /* binary_op  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).binary_op_t) != NULL)\n        ((*yyvaluep).binary_op_t)->deep_delete();\n    }\n#line 3047 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 353:       /* opt_not  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_not_t) != NULL)\n        ((*yyvaluep).opt_not_t)->deep_delete();\n    }\n#line 3053 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 354:       /* name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).name_t) != NULL) ((*yyvaluep).name_t)->deep_delete();\n    }\n#line 3059 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 355:       /* type_name  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).type_name_t) != NULL)\n        ((*yyvaluep).type_name_t)->deep_delete();\n    }\n#line 3065 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 356:       /* character_type  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_type_t) != NULL)\n        ((*yyvaluep).character_type_t)->deep_delete();\n    }\n#line 3071 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 357:       /* character_with_length  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_with_length_t) != NULL)\n        ((*yyvaluep).character_with_length_t)->deep_delete();\n    }\n#line 3077 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 358:       /* character_without_length  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_without_length_t) != NULL)\n        ((*yyvaluep).character_without_length_t)->deep_delete();\n    }\n#line 3083 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 359:       /* character_conflicta  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_conflicta_t) != NULL)\n        ((*yyvaluep).character_conflicta_t)->deep_delete();\n    }\n#line 3089 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 360:       /* numeric_type  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).numeric_type_t) != NULL)\n        ((*yyvaluep).numeric_type_t)->deep_delete();\n    }\n#line 3095 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 361:       /* opt_table_constraint_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_table_constraint_list_t) != NULL)\n        ((*yyvaluep).opt_table_constraint_list_t)->deep_delete();\n    }\n#line 3101 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 362:       /* table_constraint_list  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_constraint_list_t) != NULL)\n        ((*yyvaluep).table_constraint_list_t)->deep_delete();\n    }\n#line 3107 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 363:       /* table_constraint  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_constraint_t) != NULL)\n        ((*yyvaluep).table_constraint_t)->deep_delete();\n    }\n#line 3113 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 364:       /* opt_enforced  */\n#line 421 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_enforced_t) != NULL)\n        ((*yyvaluep).opt_enforced_t)->deep_delete();\n    }\n#line 3119 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    default:\n      break;\n  }\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n}\n\n/*----------.\n| yyparse.  |\n`----------*/\n\nint yyparse(Program *result, yyscan_t scanner) {\n  /* The lookahead symbol.  */\n  int yychar;\n\n  /* The semantic value of the lookahead symbol.  */\n  /* Default value used for initialization, for pacifying older GCCs\n     or non-GCC compilers.  */\n  YY_INITIAL_VALUE(static YYSTYPE yyval_default;)\n  YYSTYPE yylval YY_INITIAL_VALUE(= yyval_default);\n\n  /* Location data for the lookahead symbol.  */\n  static YYLTYPE yyloc_default\n#if defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL\n      = {1, 1, 1, 1}\n#endif\n  ;\n  YYLTYPE yylloc = yyloc_default;\n\n  /* Number of syntax errors so far.  */\n  int yynerrs;\n\n  int yystate;\n  /* Number of tokens to shift before error messages enabled.  */\n  int yyerrstatus;\n\n  /* The stacks and their tools:\n     'yyss': related to states.\n     'yyvs': related to semantic values.\n     'yyls': related to locations.\n\n     Refer to the stacks through separate pointers, to allow yyoverflow\n     to reallocate them elsewhere.  */\n\n  /* The state stack.  */\n  yytype_int16 yyssa[YYINITDEPTH];\n  yytype_int16 *yyss;\n  yytype_int16 *yyssp;\n\n  /* The semantic value stack.  */\n  YYSTYPE yyvsa[YYINITDEPTH];\n  YYSTYPE *yyvs;\n  YYSTYPE *yyvsp;\n\n  /* The location stack.  */\n  YYLTYPE yylsa[YYINITDEPTH];\n  YYLTYPE *yyls;\n  YYLTYPE *yylsp;\n\n  /* The locations where the error started and ended.  */\n  YYLTYPE yyerror_range[3];\n\n  YYSIZE_T yystacksize;\n\n  int yyn;\n  int yyresult;\n  /* Lookahead token as an internal (translated) token number.  */\n  int yytoken = 0;\n  /* The variables used to return semantic value and location from the\n     action routines.  */\n  YYSTYPE yyval;\n  YYLTYPE yyloc;\n\n#if YYERROR_VERBOSE\n  /* Buffer for error messages, and its allocated size.  */\n  char yymsgbuf[128];\n  char *yymsg = yymsgbuf;\n  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;\n#endif\n\n#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))\n\n  /* The number of symbols on the RHS of the reduced rule.\n     Keep to zero when no symbol should be popped.  */\n  int yylen = 0;\n\n  yyssp = yyss = yyssa;\n  yyvsp = yyvs = yyvsa;\n  yylsp = yyls = yylsa;\n  yystacksize = YYINITDEPTH;\n\n  YYDPRINTF((stderr, \"Starting parse\\n\"));\n\n  yystate = 0;\n  yyerrstatus = 0;\n  yynerrs = 0;\n  yychar = YYEMPTY; /* Cause a token to be read.  */\n\n/* User initialization code.  */\n#line 18 \"bison.y\" /* yacc.c:1431  */\n  {\n    // Initialize\n    yylloc.first_column = 0;\n    yylloc.last_column = 0;\n    yylloc.first_line = 0;\n    yylloc.last_line = 0;\n    yylloc.total_column = 0;\n    yylloc.string_length = 0;\n  }\n\n#line 3237 \"bison_parser.cpp\" /* yacc.c:1431  */\n  yylsp[0] = yylloc;\n  goto yysetstate;\n\n/*------------------------------------------------------------.\n| yynewstate -- push a new state, which is found in yystate.  |\n`------------------------------------------------------------*/\nyynewstate:\n  /* In all cases, when you get here, the value and location stacks\n     have just been pushed.  So pushing a state here evens the stacks.  */\n  yyssp++;\n\n/*--------------------------------------------------------------------.\n| yynewstate -- set current state (the top of the stack) to yystate.  |\n`--------------------------------------------------------------------*/\nyysetstate:\n  *yyssp = (yytype_int16)yystate;\n\n  if (yyss + yystacksize - 1 <= yyssp)\n#if !defined yyoverflow && !defined YYSTACK_RELOCATE\n    goto yyexhaustedlab;\n#else\n  {\n    /* Get the current used size of the three stacks, in elements.  */\n    YYSIZE_T yysize = (YYSIZE_T)(yyssp - yyss + 1);\n\n#if defined yyoverflow\n    {\n      /* Give user a chance to reallocate the stack.  Use copies of\n         these so that the &'s don't force the real ones into\n         memory.  */\n      YYSTYPE *yyvs1 = yyvs;\n      yytype_int16 *yyss1 = yyss;\n      YYLTYPE *yyls1 = yyls;\n\n      /* Each stack pointer address is followed by the size of the\n         data in use in that stack, in bytes.  This used to be a\n         conditional around just the two extra args, but that might\n         be undefined if yyoverflow is a macro.  */\n      yyoverflow(YY_(\"memory exhausted\"), &yyss1, yysize * sizeof(*yyssp),\n                 &yyvs1, yysize * sizeof(*yyvsp), &yyls1,\n                 yysize * sizeof(*yylsp), &yystacksize);\n      yyss = yyss1;\n      yyvs = yyvs1;\n      yyls = yyls1;\n    }\n#else /* defined YYSTACK_RELOCATE */\n    /* Extend the stack our own way.  */\n    if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab;\n    yystacksize *= 2;\n    if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH;\n\n    {\n      yytype_int16 *yyss1 = yyss;\n      union yyalloc *yyptr =\n          (union yyalloc *)YYSTACK_ALLOC(YYSTACK_BYTES(yystacksize));\n      if (!yyptr) goto yyexhaustedlab;\n      YYSTACK_RELOCATE(yyss_alloc, yyss);\n      YYSTACK_RELOCATE(yyvs_alloc, yyvs);\n      YYSTACK_RELOCATE(yyls_alloc, yyls);\n#undef YYSTACK_RELOCATE\n      if (yyss1 != yyssa) YYSTACK_FREE(yyss1);\n    }\n#endif\n\n    yyssp = yyss + yysize - 1;\n    yyvsp = yyvs + yysize - 1;\n    yylsp = yyls + yysize - 1;\n\n    YYDPRINTF(\n        (stderr, \"Stack size increased to %lu\\n\", (unsigned long)yystacksize));\n\n    if (yyss + yystacksize - 1 <= yyssp) YYABORT;\n  }\n#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */\n\n  YYDPRINTF((stderr, \"Entering state %d\\n\", yystate));\n\n  if (yystate == YYFINAL) YYACCEPT;\n\n  goto yybackup;\n\n/*-----------.\n| yybackup.  |\n`-----------*/\nyybackup:\n  /* Do appropriate processing given the current state.  Read a\n     lookahead token if we need one and don't already have one.  */\n\n  /* First try to decide what to do without reference to lookahead token.  */\n  yyn = yypact[yystate];\n  if (yypact_value_is_default(yyn)) goto yydefault;\n\n  /* Not known => get a lookahead token if don't already have one.  */\n\n  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */\n  if (yychar == YYEMPTY) {\n    YYDPRINTF((stderr, \"Reading a token: \"));\n    yychar = yylex(&yylval, &yylloc, scanner);\n  }\n\n  if (yychar <= YYEOF) {\n    yychar = yytoken = YYEOF;\n    YYDPRINTF((stderr, \"Now at end of input.\\n\"));\n  } else {\n    yytoken = YYTRANSLATE(yychar);\n    YY_SYMBOL_PRINT(\"Next token is\", yytoken, &yylval, &yylloc);\n  }\n\n  /* If the proper action on seeing token YYTOKEN is to reduce or to\n     detect an error, take that action.  */\n  yyn += yytoken;\n  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault;\n  yyn = yytable[yyn];\n  if (yyn <= 0) {\n    if (yytable_value_is_error(yyn)) goto yyerrlab;\n    yyn = -yyn;\n    goto yyreduce;\n  }\n\n  /* Count tokens shifted since error; after three, turn off error\n     status.  */\n  if (yyerrstatus) yyerrstatus--;\n\n  /* Shift the lookahead token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yytoken, &yylval, &yylloc);\n\n  /* Discard the shifted token.  */\n  yychar = YYEMPTY;\n\n  yystate = yyn;\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n  *++yylsp = yylloc;\n  goto yynewstate;\n\n/*-----------------------------------------------------------.\n| yydefault -- do the default action for the current state.  |\n`-----------------------------------------------------------*/\nyydefault:\n  yyn = yydefact[yystate];\n  if (yyn == 0) goto yyerrlab;\n  goto yyreduce;\n\n/*-----------------------------.\n| yyreduce -- do a reduction.  |\n`-----------------------------*/\nyyreduce:\n  /* yyn is the number of a rule to reduce with.  */\n  yylen = yyr2[yyn];\n\n  /* If YYLEN is nonzero, implement the default value of the action:\n     '$$ = $1'.\n\n     Otherwise, the following line sets YYVAL to garbage.\n     This behavior is undocumented and Bison\n     users should not rely upon it.  Assigning to YYVAL\n     unconditionally makes the parser a bit smaller, and it avoids a\n     GCC warning that YYVAL may be used uninitialized.  */\n  yyval = yyvsp[1 - yylen];\n\n  /* Default location. */\n  YYLLOC_DEFAULT(yyloc, (yylsp - yylen), yylen);\n  yyerror_range[1] = yyloc;\n  YY_REDUCE_PRINT(yyn);\n  switch (yyn) {\n    case 2:\n#line 425 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.program_t) = result;\n      (yyval.program_t)->case_idx_ = CASE0;\n      (yyval.program_t)->stmtlist_ = (yyvsp[0].stmtlist_t);\n      (yyval.program_t) = NULL;\n\n    }\n#line 3437 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 3:\n#line 435 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmtlist_t) = new Stmtlist();\n      (yyval.stmtlist_t)->case_idx_ = CASE0;\n      (yyval.stmtlist_t)->stmt_ = (yyvsp[-2].stmt_t);\n      (yyval.stmtlist_t)->stmtlist_ = (yyvsp[0].stmtlist_t);\n\n    }\n#line 3449 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 4:\n#line 442 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmtlist_t) = new Stmtlist();\n      (yyval.stmtlist_t)->case_idx_ = CASE1;\n      (yyval.stmtlist_t)->stmt_ = (yyvsp[-1].stmt_t);\n\n    }\n#line 3460 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 5:\n#line 451 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE0;\n      (yyval.stmt_t)->create_stmt_ = (yyvsp[0].create_stmt_t);\n\n    }\n#line 3471 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 6:\n#line 457 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE1;\n      (yyval.stmt_t)->drop_stmt_ = (yyvsp[0].drop_stmt_t);\n\n    }\n#line 3482 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 7:\n#line 463 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE2;\n      (yyval.stmt_t)->select_stmt_ = (yyvsp[0].select_stmt_t);\n\n    }\n#line 3493 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 8:\n#line 469 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE3;\n      (yyval.stmt_t)->update_stmt_ = (yyvsp[0].update_stmt_t);\n\n    }\n#line 3504 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 9:\n#line 475 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE4;\n      (yyval.stmt_t)->insert_stmt_ = (yyvsp[0].insert_stmt_t);\n\n    }\n#line 3515 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 10:\n#line 481 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE5;\n      (yyval.stmt_t)->alter_stmt_ = (yyvsp[0].alter_stmt_t);\n\n    }\n#line 3526 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 11:\n#line 490 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_stmt_t)->create_table_stmt_ =\n          (yyvsp[0].create_table_stmt_t);\n\n    }\n#line 3537 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 12:\n#line 496 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_stmt_t)->create_index_stmt_ =\n          (yyvsp[0].create_index_stmt_t);\n\n    }\n#line 3548 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 13:\n#line 502 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE2;\n      (yyval.create_stmt_t)->create_trigger_stmt_ =\n          (yyvsp[0].create_trigger_stmt_t);\n\n    }\n#line 3559 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 14:\n#line 508 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE3;\n      (yyval.create_stmt_t)->create_view_stmt_ = (yyvsp[0].create_view_stmt_t);\n\n    }\n#line 3570 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 15:\n#line 517 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_stmt_t)->drop_index_stmt_ = (yyvsp[0].drop_index_stmt_t);\n\n    }\n#line 3581 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 16:\n#line 523 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE1;\n      (yyval.drop_stmt_t)->drop_table_stmt_ = (yyvsp[0].drop_table_stmt_t);\n\n    }\n#line 3592 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 17:\n#line 529 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE2;\n      (yyval.drop_stmt_t)->drop_trigger_stmt_ = (yyvsp[0].drop_trigger_stmt_t);\n\n    }\n#line 3603 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 18:\n#line 535 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE3;\n      (yyval.drop_stmt_t)->drop_view_stmt_ = (yyvsp[0].drop_view_stmt_t);\n\n    }\n#line 3614 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 19:\n#line 544 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_stmt_t) = new AlterStmt();\n      (yyval.alter_stmt_t)->case_idx_ = CASE0;\n      (yyval.alter_stmt_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.alter_stmt_t)->alter_action_ = (yyvsp[0].alter_action_t);\n\n    }\n#line 3626 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 20:\n#line 554 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_stmt_t) = new SelectStmt();\n      (yyval.select_stmt_t)->case_idx_ = CASE0;\n      (yyval.select_stmt_t)->select_no_parens_ = (yyvsp[0].select_no_parens_t);\n\n    }\n#line 3637 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 21:\n#line 560 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_stmt_t) = new SelectStmt();\n      (yyval.select_stmt_t)->case_idx_ = CASE1;\n      (yyval.select_stmt_t)->select_with_parens_ =\n          (yyvsp[0].select_with_parens_t);\n\n    }\n#line 3648 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 22:\n#line 569 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_parens_t) = new SelectWithParens();\n      (yyval.select_with_parens_t)->case_idx_ = CASE0;\n      (yyval.select_with_parens_t)->select_no_parens_ =\n          (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 3659 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 23:\n#line 575 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_parens_t) = new SelectWithParens();\n      (yyval.select_with_parens_t)->case_idx_ = CASE1;\n      (yyval.select_with_parens_t)->select_with_parens_ =\n          (yyvsp[-1].select_with_parens_t);\n\n    }\n#line 3670 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 24:\n#line 584 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_no_parens_t) = new SelectNoParens();\n      (yyval.select_no_parens_t)->case_idx_ = CASE0;\n      (yyval.select_no_parens_t)->opt_with_clause_ =\n          (yyvsp[-3].opt_with_clause_t);\n      (yyval.select_no_parens_t)->select_clause_list_ =\n          (yyvsp[-2].select_clause_list_t);\n      (yyval.select_no_parens_t)->opt_order_clause_ =\n          (yyvsp[-1].opt_order_clause_t);\n      (yyval.select_no_parens_t)->opt_limit_clause_ =\n          (yyvsp[0].opt_limit_clause_t);\n\n    }\n#line 3684 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 25:\n#line 596 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_list_t) = new SelectClauseList();\n      (yyval.select_clause_list_t)->case_idx_ = CASE0;\n      (yyval.select_clause_list_t)->select_clause_ = (yyvsp[0].select_clause_t);\n\n    }\n#line 3695 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 26:\n#line 602 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_list_t) = new SelectClauseList();\n      (yyval.select_clause_list_t)->case_idx_ = CASE1;\n      (yyval.select_clause_list_t)->select_clause_ =\n          (yyvsp[-2].select_clause_t);\n      (yyval.select_clause_list_t)->combine_clause_ =\n          (yyvsp[-1].combine_clause_t);\n      (yyval.select_clause_list_t)->select_clause_list_ =\n          (yyvsp[0].select_clause_list_t);\n\n    }\n#line 3708 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 27:\n#line 613 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_t) = new SelectClause();\n      (yyval.select_clause_t)->case_idx_ = CASE0;\n      (yyval.select_clause_t)->opt_all_or_distinct_ =\n          (yyvsp[-5].opt_all_or_distinct_t);\n      (yyval.select_clause_t)->select_target_ = (yyvsp[-4].select_target_t);\n      (yyval.select_clause_t)->opt_from_clause_ = (yyvsp[-3].opt_from_clause_t);\n      (yyval.select_clause_t)->opt_where_clause_ =\n          (yyvsp[-2].opt_where_clause_t);\n      (yyval.select_clause_t)->opt_group_clause_ =\n          (yyvsp[-1].opt_group_clause_t);\n      (yyval.select_clause_t)->opt_window_clause_ =\n          (yyvsp[0].opt_window_clause_t);\n\n    }\n#line 3724 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 28:\n#line 627 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE0;\n\n    }\n#line 3734 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 29:\n#line 632 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3744 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 30:\n#line 637 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 3754 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 31:\n#line 645 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_from_clause_t)->from_clause_ = (yyvsp[0].from_clause_t);\n\n    }\n#line 3765 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 32:\n#line 651 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3775 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 33:\n#line 659 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_target_t) = new SelectTarget();\n      (yyval.select_target_t)->case_idx_ = CASE0;\n      (yyval.select_target_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 3786 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 34:\n#line 668 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_window_clause_t) = new OptWindowClause();\n      (yyval.opt_window_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_window_clause_t)->window_clause_ = (yyvsp[0].window_clause_t);\n\n    }\n#line 3797 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 35:\n#line 674 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_window_clause_t) = new OptWindowClause();\n      (yyval.opt_window_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3807 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 36:\n#line 682 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_clause_t) = new WindowClause();\n      (yyval.window_clause_t)->case_idx_ = CASE0;\n      (yyval.window_clause_t)->window_def_list_ = (yyvsp[0].window_def_list_t);\n\n    }\n#line 3818 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 37:\n#line 691 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_list_t) = new WindowDefList();\n      (yyval.window_def_list_t)->case_idx_ = CASE0;\n      (yyval.window_def_list_t)->window_def_ = (yyvsp[0].window_def_t);\n\n    }\n#line 3829 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 38:\n#line 697 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_list_t) = new WindowDefList();\n      (yyval.window_def_list_t)->case_idx_ = CASE1;\n      (yyval.window_def_list_t)->window_def_ = (yyvsp[-2].window_def_t);\n      (yyval.window_def_list_t)->window_def_list_ =\n          (yyvsp[0].window_def_list_t);\n\n    }\n#line 3841 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 39:\n#line 707 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_t) = new WindowDef();\n      (yyval.window_def_t)->case_idx_ = CASE0;\n      (yyval.window_def_t)->window_name_ = (yyvsp[-4].window_name_t);\n      (yyval.window_def_t)->window_ = (yyvsp[-1].window_t);\n      if ((yyval.window_def_t)) {\n        auto tmp1 = (yyval.window_def_t)->window_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataWindowName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n    }\n#line 3865 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 40:\n#line 729 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_name_t) = new WindowName();\n      (yyval.window_name_t)->case_idx_ = CASE0;\n      (yyval.window_name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 3876 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 41:\n#line 738 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_t) = new Window();\n      (yyval.window_t)->case_idx_ = CASE0;\n      (yyval.window_t)->opt_exist_window_name_ =\n          (yyvsp[-3].opt_exist_window_name_t);\n      (yyval.window_t)->opt_partition_ = (yyvsp[-2].opt_partition_t);\n      (yyval.window_t)->opt_order_clause_ = (yyvsp[-1].opt_order_clause_t);\n      (yyval.window_t)->opt_frame_clause_ = (yyvsp[0].opt_frame_clause_t);\n\n    }\n#line 3890 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 42:\n#line 750 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_partition_t) = new OptPartition();\n      (yyval.opt_partition_t)->case_idx_ = CASE0;\n      (yyval.opt_partition_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 3901 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 43:\n#line 756 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_partition_t) = new OptPartition();\n      (yyval.opt_partition_t)->case_idx_ = CASE1;\n\n    }\n#line 3911 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 44:\n#line 764 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_frame_clause_t)->range_or_rows_ = (yyvsp[-1].range_or_rows_t);\n      (yyval.opt_frame_clause_t)->frame_bound_start_ =\n          (yyvsp[0].frame_bound_start_t);\n\n    }\n#line 3923 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 45:\n#line 771 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE1;\n      (yyval.opt_frame_clause_t)->range_or_rows_ = (yyvsp[-4].range_or_rows_t);\n      (yyval.opt_frame_clause_t)->frame_bound_start_ =\n          (yyvsp[-2].frame_bound_start_t);\n      (yyval.opt_frame_clause_t)->frame_bound_end_ =\n          (yyvsp[0].frame_bound_end_t);\n\n    }\n#line 3936 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 46:\n#line 779 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 3946 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 47:\n#line 787 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE0;\n\n    }\n#line 3956 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 48:\n#line 792 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE1;\n\n    }\n#line 3966 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 49:\n#line 797 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE2;\n\n    }\n#line 3976 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 50:\n#line 805 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_start_t) = new FrameBoundStart();\n      (yyval.frame_bound_start_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_start_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n\n    }\n#line 3987 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 51:\n#line 811 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_start_t) = new FrameBoundStart();\n      (yyval.frame_bound_start_t)->case_idx_ = CASE1;\n\n    }\n#line 3997 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 52:\n#line 819 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_end_t) = new FrameBoundEnd();\n      (yyval.frame_bound_end_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_end_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n\n    }\n#line 4008 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 53:\n#line 825 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_end_t) = new FrameBoundEnd();\n      (yyval.frame_bound_end_t)->case_idx_ = CASE1;\n\n    }\n#line 4018 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 54:\n#line 833 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 4029 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 55:\n#line 839 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE1;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 4040 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 56:\n#line 845 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE2;\n\n    }\n#line 4050 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 57:\n#line 853 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exist_window_name_t) = new OptExistWindowName();\n      (yyval.opt_exist_window_name_t)->case_idx_ = CASE0;\n      (yyval.opt_exist_window_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.opt_exist_window_name_t)) {\n        auto tmp1 = (yyval.opt_exist_window_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataWindowName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 4070 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 58:\n#line 868 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exist_window_name_t) = new OptExistWindowName();\n      (yyval.opt_exist_window_name_t)->case_idx_ = CASE1;\n\n    }\n#line 4080 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 59:\n#line 876 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_clause_t) = new OptGroupClause();\n      (yyval.opt_group_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_group_clause_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n      (yyval.opt_group_clause_t)->opt_having_clause_ =\n          (yyvsp[0].opt_having_clause_t);\n\n    }\n#line 4092 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 60:\n#line 883 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_clause_t) = new OptGroupClause();\n      (yyval.opt_group_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4102 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 61:\n#line 891 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_clause_t) = new OptHavingClause();\n      (yyval.opt_having_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_having_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 4113 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 62:\n#line 897 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_clause_t) = new OptHavingClause();\n      (yyval.opt_having_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4123 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 63:\n#line 905 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_clause_t) = new OptWhereClause();\n      (yyval.opt_where_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_where_clause_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 4134 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 64:\n#line 911 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_clause_t) = new OptWhereClause();\n      (yyval.opt_where_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4144 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 65:\n#line 919 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.where_clause_t) = new WhereClause();\n      (yyval.where_clause_t)->case_idx_ = CASE0;\n      (yyval.where_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 4155 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 66:\n#line 928 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.from_clause_t) = new FromClause();\n      (yyval.from_clause_t)->case_idx_ = CASE0;\n      (yyval.from_clause_t)->table_ref_ = (yyvsp[0].table_ref_t);\n\n    }\n#line 4166 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 67:\n#line 937 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE0;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-5].opt_table_prefix_t);\n      (yyval.table_ref_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.table_ref_t)->opt_as_alias_ = (yyvsp[-3].opt_as_alias_t);\n      (yyval.table_ref_t)->opt_index_ = (yyvsp[-2].opt_index_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n\n    }\n#line 4182 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 68:\n#line 948 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE1;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-7].opt_table_prefix_t);\n      (yyval.table_ref_t)->function_name_ = (yyvsp[-6].function_name_t);\n      (yyval.table_ref_t)->expr_list_ = (yyvsp[-4].expr_list_t);\n      (yyval.table_ref_t)->opt_as_alias_ = (yyvsp[-2].opt_as_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n\n    }\n#line 4198 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 69:\n#line 959 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE2;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-6].opt_table_prefix_t);\n      (yyval.table_ref_t)->select_no_parens_ = (yyvsp[-4].select_no_parens_t);\n      (yyval.table_ref_t)->opt_as_alias_ = (yyvsp[-2].opt_as_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n\n    }\n#line 4213 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 70:\n#line 969 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE3;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-6].opt_table_prefix_t);\n      (yyval.table_ref_t)->table_ref_ = (yyvsp[-4].table_ref_t);\n      (yyval.table_ref_t)->opt_as_alias_ = (yyvsp[-2].opt_as_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n\n    }\n#line 4228 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 71:\n#line 982 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->case_idx_ = CASE0;\n      (yyval.opt_index_t)->column_name_ = (yyvsp[0].column_name_t);\n\n    }\n#line 4239 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 72:\n#line 988 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->case_idx_ = CASE1;\n\n    }\n#line 4249 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 73:\n#line 993 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->case_idx_ = CASE2;\n\n    }\n#line 4259 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 74:\n#line 1001 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_t) = new OptOn();\n      (yyval.opt_on_t)->case_idx_ = CASE0;\n      (yyval.opt_on_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 4270 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 75:\n#line 1007 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_t) = new OptOn();\n      (yyval.opt_on_t)->case_idx_ = CASE1;\n\n    }\n#line 4280 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 76:\n#line 1015 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_using_t) = new OptUsing();\n      (yyval.opt_using_t)->case_idx_ = CASE0;\n      (yyval.opt_using_t)->column_name_list_ = (yyvsp[-1].column_name_list_t);\n\n    }\n#line 4291 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 77:\n#line 1021 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_using_t) = new OptUsing();\n      (yyval.opt_using_t)->case_idx_ = CASE1;\n\n    }\n#line 4301 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 78:\n#line 1029 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_list_t) = new ColumnNameList();\n      (yyval.column_name_list_t)->case_idx_ = CASE0;\n      (yyval.column_name_list_t)->column_name_ = (yyvsp[0].column_name_t);\n\n    }\n#line 4312 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 79:\n#line 1035 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_list_t) = new ColumnNameList();\n      (yyval.column_name_list_t)->case_idx_ = CASE1;\n      (yyval.column_name_list_t)->column_name_ = (yyvsp[-2].column_name_t);\n      (yyval.column_name_list_t)->column_name_list_ =\n          (yyvsp[0].column_name_list_t);\n\n    }\n#line 4324 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 80:\n#line 1045 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_prefix_t) = new OptTablePrefix();\n      (yyval.opt_table_prefix_t)->case_idx_ = CASE0;\n      (yyval.opt_table_prefix_t)->table_ref_ = (yyvsp[-1].table_ref_t);\n      (yyval.opt_table_prefix_t)->join_op_ = (yyvsp[0].join_op_t);\n\n    }\n#line 4336 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 81:\n#line 1052 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_prefix_t) = new OptTablePrefix();\n      (yyval.opt_table_prefix_t)->case_idx_ = CASE1;\n\n    }\n#line 4346 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 82:\n#line 1060 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE0;\n\n    }\n#line 4356 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 83:\n#line 1065 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE1;\n\n    }\n#line 4366 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 84:\n#line 1070 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE2;\n      (yyval.join_op_t)->opt_join_type_ = (yyvsp[-1].opt_join_type_t);\n\n    }\n#line 4377 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 85:\n#line 1079 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE0;\n\n    }\n#line 4387 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 86:\n#line 1084 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE1;\n\n    }\n#line 4397 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 87:\n#line 1089 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE2;\n\n    }\n#line 4407 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 88:\n#line 1094 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE3;\n\n    }\n#line 4417 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 89:\n#line 1099 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE4;\n\n    }\n#line 4427 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 90:\n#line 1107 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_list_t) = new ExprList();\n      (yyval.expr_list_t)->case_idx_ = CASE0;\n      (yyval.expr_list_t)->expr_ = (yyvsp[-3].expr_t);\n      (yyval.expr_list_t)->opt_as_alias_ = (yyvsp[-2].opt_as_alias_t);\n      (yyval.expr_list_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 4440 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 91:\n#line 1115 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_list_t) = new ExprList();\n      (yyval.expr_list_t)->case_idx_ = CASE1;\n      (yyval.expr_list_t)->expr_ = (yyvsp[-1].expr_t);\n      (yyval.expr_list_t)->opt_as_alias_ = (yyvsp[0].opt_as_alias_t);\n\n    }\n#line 4452 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 92:\n#line 1125 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_clause_t) = new OptLimitClause();\n      (yyval.opt_limit_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_limit_clause_t)->limit_clause_ = (yyvsp[0].limit_clause_t);\n\n    }\n#line 4463 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 93:\n#line 1131 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_clause_t) = new OptLimitClause();\n      (yyval.opt_limit_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4473 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 94:\n#line 1139 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE0;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[0].expr_t);\n\n    }\n#line 4484 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 95:\n#line 1145 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE1;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.limit_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 4496 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 96:\n#line 1152 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE2;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.limit_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 4508 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 97:\n#line 1162 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_row_count_t) = new OptLimitRowCount();\n      (yyval.opt_limit_row_count_t)->case_idx_ = CASE0;\n      (yyval.opt_limit_row_count_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 4519 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 98:\n#line 1168 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_row_count_t) = new OptLimitRowCount();\n      (yyval.opt_limit_row_count_t)->case_idx_ = CASE1;\n\n    }\n#line 4529 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 99:\n#line 1176 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_clause_t) = new OptOrderClause();\n      (yyval.opt_order_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_order_clause_t)->order_item_list_ =\n          (yyvsp[0].order_item_list_t);\n\n    }\n#line 4540 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 100:\n#line 1182 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_clause_t) = new OptOrderClause();\n      (yyval.opt_order_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4550 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 101:\n#line 1190 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE0;\n\n    }\n#line 4560 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 102:\n#line 1195 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE1;\n\n    }\n#line 4570 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 103:\n#line 1200 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE2;\n\n    }\n#line 4580 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 104:\n#line 1208 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_list_t) = new OrderItemList();\n      (yyval.order_item_list_t)->case_idx_ = CASE0;\n      (yyval.order_item_list_t)->order_item_ = (yyvsp[0].order_item_t);\n\n    }\n#line 4591 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 105:\n#line 1214 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_list_t) = new OrderItemList();\n      (yyval.order_item_list_t)->case_idx_ = CASE1;\n      (yyval.order_item_list_t)->order_item_ = (yyvsp[-2].order_item_t);\n      (yyval.order_item_list_t)->order_item_list_ =\n          (yyvsp[0].order_item_list_t);\n\n    }\n#line 4603 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 106:\n#line 1224 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_t) = new OrderItem();\n      (yyval.order_item_t)->case_idx_ = CASE0;\n      (yyval.order_item_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.order_item_t)->opt_order_behavior_ =\n          (yyvsp[-1].opt_order_behavior_t);\n      (yyval.order_item_t)->opt_order_nulls_ = (yyvsp[0].opt_order_nulls_t);\n\n    }\n#line 4616 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 107:\n#line 1235 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE0;\n\n    }\n#line 4626 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 108:\n#line 1240 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE1;\n\n    }\n#line 4636 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 109:\n#line 1245 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE2;\n\n    }\n#line 4646 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 110:\n#line 1253 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_with_clause_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4657 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 111:\n#line 1259 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE1;\n      (yyval.opt_with_clause_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4668 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 112:\n#line 1265 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 4678 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 113:\n#line 1273 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_list_t) = new CteTableList();\n      (yyval.cte_table_list_t)->case_idx_ = CASE0;\n      (yyval.cte_table_list_t)->cte_table_ = (yyvsp[0].cte_table_t);\n\n    }\n#line 4689 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 114:\n#line 1279 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_list_t) = new CteTableList();\n      (yyval.cte_table_list_t)->case_idx_ = CASE1;\n      (yyval.cte_table_list_t)->cte_table_ = (yyvsp[-2].cte_table_t);\n      (yyval.cte_table_list_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4701 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 115:\n#line 1289 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_t) = new CteTable();\n      (yyval.cte_table_t)->case_idx_ = CASE0;\n      (yyval.cte_table_t)->cte_table_name_ = (yyvsp[-4].cte_table_name_t);\n      (yyval.cte_table_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n\n    }\n#line 4713 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 116:\n#line 1299 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_name_t) = new CteTableName();\n      (yyval.cte_table_name_t)->case_idx_ = CASE0;\n      (yyval.cte_table_name_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.cte_table_name_t)->opt_column_name_list_p_ =\n          (yyvsp[0].opt_column_name_list_p_t);\n\n    }\n#line 4725 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 117:\n#line 1309 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE0;\n\n    }\n#line 4735 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 118:\n#line 1314 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE1;\n\n    }\n#line 4745 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 119:\n#line 1319 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE2;\n\n    }\n#line 4755 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 120:\n#line 1327 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_table_stmt_t) = new CreateTableStmt();\n      (yyval.create_table_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_table_stmt_t)->opt_temp_ = (yyvsp[-7].opt_temp_t);\n      (yyval.create_table_stmt_t)->opt_if_not_exist_ =\n          (yyvsp[-5].opt_if_not_exist_t);\n      (yyval.create_table_stmt_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.create_table_stmt_t)->opt_table_option_list_ =\n          (yyvsp[-3].opt_table_option_list_t);\n      (yyval.create_table_stmt_t)->opt_ignore_or_replace_ =\n          (yyvsp[-2].opt_ignore_or_replace_t);\n      (yyval.create_table_stmt_t)->select_stmt_ = (yyvsp[0].select_stmt_t);\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)128;\n          }\n        }\n      }\n\n    }\n#line 4783 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 121:\n#line 1350 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_table_stmt_t) = new CreateTableStmt();\n      (yyval.create_table_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_table_stmt_t)->opt_temp_ = (yyvsp[-8].opt_temp_t);\n      (yyval.create_table_stmt_t)->opt_if_not_exist_ =\n          (yyvsp[-6].opt_if_not_exist_t);\n      (yyval.create_table_stmt_t)->table_name_ = (yyvsp[-5].table_name_t);\n      (yyval.create_table_stmt_t)->column_def_list_ =\n          (yyvsp[-3].column_def_list_t);\n      (yyval.create_table_stmt_t)->opt_table_constraint_list_ =\n          (yyvsp[-2].opt_table_constraint_list_t);\n      (yyval.create_table_stmt_t)->opt_table_option_list_ =\n          (yyvsp[0].opt_table_option_list_t);\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->column_def_list_;\n        while (tmp1) {\n          auto tmp2 = tmp1->column_def_;\n          if (tmp2) {\n            auto tmp3 = tmp2->identifier_;\n            if (tmp3) {\n              tmp3->data_type_ = kDataColumnName;\n              tmp3->scope_ = 2;\n              tmp3->data_flag_ = (DATAFLAG)1;\n            }\n          }\n          tmp1 = tmp1->column_def_list_;\n        }\n      }\n\n    }\n#line 4827 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 122:\n#line 1392 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_index_stmt_t) = new CreateIndexStmt();\n      (yyval.create_index_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_index_stmt_t)->opt_index_keyword_ =\n          (yyvsp[-9].opt_index_keyword_t);\n      (yyval.create_index_stmt_t)->table_name_1_ = (yyvsp[-7].table_name_t);\n      (yyval.create_index_stmt_t)->table_name_2_ = (yyvsp[-5].table_name_t);\n      (yyval.create_index_stmt_t)->indexed_column_list_ =\n          (yyvsp[-3].indexed_column_list_t);\n      (yyval.create_index_stmt_t)->opt_index_option_ =\n          (yyvsp[-1].opt_index_option_t);\n      (yyval.create_index_stmt_t)->opt_extra_option_ =\n          (yyvsp[0].opt_extra_option_t);\n      if ((yyval.create_index_stmt_t)) {\n        auto tmp1 = (yyval.create_index_stmt_t)->table_name_1_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)128;\n          }\n        }\n      }\n\n      if ((yyval.create_index_stmt_t)) {\n        auto tmp1 = (yyval.create_index_stmt_t)->table_name_2_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n    }\n#line 4867 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 123:\n#line 1430 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_trigger_stmt_t) = new CreateTriggerStmt();\n      (yyval.create_trigger_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_trigger_stmt_t)->trigger_name_ = (yyvsp[-8].trigger_name_t);\n      (yyval.create_trigger_stmt_t)->trigger_action_time_ =\n          (yyvsp[-7].trigger_action_time_t);\n      (yyval.create_trigger_stmt_t)->trigger_events_ =\n          (yyvsp[-6].trigger_events_t);\n      (yyval.create_trigger_stmt_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.create_trigger_stmt_t)->trigger_body_ = (yyvsp[0].trigger_body_t);\n      if ((yyval.create_trigger_stmt_t)) {\n        auto tmp1 = (yyval.create_trigger_stmt_t)->trigger_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTriggerName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_trigger_stmt_t)) {\n        auto tmp1 = (yyval.create_trigger_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n    }\n#line 4906 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 124:\n#line 1467 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_view_stmt_t)->opt_view_algorithm_ =\n          (yyvsp[-7].opt_view_algorithm_t);\n      (yyval.create_view_stmt_t)->opt_sql_security_ =\n          (yyvsp[-6].opt_sql_security_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 4953 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 125:\n#line 1509 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_view_stmt_t)->opt_view_algorithm_ =\n          (yyvsp[-7].opt_view_algorithm_t);\n      (yyval.create_view_stmt_t)->opt_sql_security_ =\n          (yyvsp[-6].opt_sql_security_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 5000 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 126:\n#line 1554 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_option_list_t) = new OptTableOptionList();\n      (yyval.opt_table_option_list_t)->case_idx_ = CASE0;\n      (yyval.opt_table_option_list_t)->table_option_list_ =\n          (yyvsp[0].table_option_list_t);\n\n    }\n#line 5011 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 127:\n#line 1560 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_option_list_t) = new OptTableOptionList();\n      (yyval.opt_table_option_list_t)->case_idx_ = CASE1;\n\n    }\n#line 5021 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 128:\n#line 1568 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_list_t) = new TableOptionList();\n      (yyval.table_option_list_t)->case_idx_ = CASE0;\n      (yyval.table_option_list_t)->table_option_ = (yyvsp[0].table_option_t);\n\n    }\n#line 5032 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 129:\n#line 1574 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_list_t) = new TableOptionList();\n      (yyval.table_option_list_t)->case_idx_ = CASE1;\n      (yyval.table_option_list_t)->table_option_ = (yyvsp[-2].table_option_t);\n      (yyval.table_option_list_t)->opt_op_comma_ = (yyvsp[-1].opt_op_comma_t);\n      (yyval.table_option_list_t)->table_option_list_ =\n          (yyvsp[0].table_option_list_t);\n\n    }\n#line 5045 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 130:\n#line 1585 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE0;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5056 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 131:\n#line 1591 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE1;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5067 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 132:\n#line 1597 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE2;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5078 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 133:\n#line 1603 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE3;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5089 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 134:\n#line 1609 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE4;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5100 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 135:\n#line 1615 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE5;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5111 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 136:\n#line 1621 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE6;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5122 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 137:\n#line 1627 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE7;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5133 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 138:\n#line 1633 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_option_t) = new TableOption();\n      (yyval.table_option_t)->case_idx_ = CASE8;\n      (yyval.table_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5144 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 139:\n#line 1642 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_op_comma_t) = new OptOpComma();\n      (yyval.opt_op_comma_t)->case_idx_ = CASE0;\n\n    }\n#line 5154 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 140:\n#line 1647 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_op_comma_t) = new OptOpComma();\n      (yyval.opt_op_comma_t)->case_idx_ = CASE1;\n\n    }\n#line 5164 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 141:\n#line 1655 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_ignore_or_replace_t) = new OptIgnoreOrReplace();\n      (yyval.opt_ignore_or_replace_t)->case_idx_ = CASE0;\n\n    }\n#line 5174 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 142:\n#line 1660 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_ignore_or_replace_t) = new OptIgnoreOrReplace();\n      (yyval.opt_ignore_or_replace_t)->case_idx_ = CASE1;\n\n    }\n#line 5184 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 143:\n#line 1665 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_ignore_or_replace_t) = new OptIgnoreOrReplace();\n      (yyval.opt_ignore_or_replace_t)->case_idx_ = CASE2;\n\n    }\n#line 5194 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 144:\n#line 1673 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_view_algorithm_t) = new OptViewAlgorithm();\n      (yyval.opt_view_algorithm_t)->case_idx_ = CASE0;\n\n    }\n#line 5204 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 145:\n#line 1678 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_view_algorithm_t) = new OptViewAlgorithm();\n      (yyval.opt_view_algorithm_t)->case_idx_ = CASE1;\n\n    }\n#line 5214 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 146:\n#line 1683 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_view_algorithm_t) = new OptViewAlgorithm();\n      (yyval.opt_view_algorithm_t)->case_idx_ = CASE2;\n\n    }\n#line 5224 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 147:\n#line 1688 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_view_algorithm_t) = new OptViewAlgorithm();\n      (yyval.opt_view_algorithm_t)->case_idx_ = CASE3;\n\n    }\n#line 5234 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 148:\n#line 1696 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_sql_security_t) = new OptSqlSecurity();\n      (yyval.opt_sql_security_t)->case_idx_ = CASE0;\n\n    }\n#line 5244 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 149:\n#line 1701 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_sql_security_t) = new OptSqlSecurity();\n      (yyval.opt_sql_security_t)->case_idx_ = CASE1;\n\n    }\n#line 5254 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 150:\n#line 1706 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_sql_security_t) = new OptSqlSecurity();\n      (yyval.opt_sql_security_t)->case_idx_ = CASE2;\n\n    }\n#line 5264 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 151:\n#line 1714 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_option_t) = new OptIndexOption();\n      (yyval.opt_index_option_t)->case_idx_ = CASE0;\n\n    }\n#line 5274 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 152:\n#line 1719 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_option_t) = new OptIndexOption();\n      (yyval.opt_index_option_t)->case_idx_ = CASE1;\n\n    }\n#line 5284 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 153:\n#line 1724 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_option_t) = new OptIndexOption();\n      (yyval.opt_index_option_t)->case_idx_ = CASE2;\n\n    }\n#line 5294 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 154:\n#line 1732 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_extra_option_t) = new OptExtraOption();\n      (yyval.opt_extra_option_t)->case_idx_ = CASE0;\n      (yyval.opt_extra_option_t)->index_algorithm_option_ =\n          (yyvsp[0].index_algorithm_option_t);\n\n    }\n#line 5305 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 155:\n#line 1738 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_extra_option_t) = new OptExtraOption();\n      (yyval.opt_extra_option_t)->case_idx_ = CASE1;\n      (yyval.opt_extra_option_t)->lock_option_ = (yyvsp[0].lock_option_t);\n\n    }\n#line 5316 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 156:\n#line 1744 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_extra_option_t) = new OptExtraOption();\n      (yyval.opt_extra_option_t)->case_idx_ = CASE2;\n\n    }\n#line 5326 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 157:\n#line 1752 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.index_algorithm_option_t) = new IndexAlgorithmOption();\n      (yyval.index_algorithm_option_t)->case_idx_ = CASE0;\n      (yyval.index_algorithm_option_t)->opt_op_equal_ =\n          (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5337 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 158:\n#line 1758 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.index_algorithm_option_t) = new IndexAlgorithmOption();\n      (yyval.index_algorithm_option_t)->case_idx_ = CASE1;\n      (yyval.index_algorithm_option_t)->opt_op_equal_ =\n          (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5348 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 159:\n#line 1764 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.index_algorithm_option_t) = new IndexAlgorithmOption();\n      (yyval.index_algorithm_option_t)->case_idx_ = CASE2;\n      (yyval.index_algorithm_option_t)->opt_op_equal_ =\n          (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5359 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 160:\n#line 1773 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.lock_option_t) = new LockOption();\n      (yyval.lock_option_t)->case_idx_ = CASE0;\n      (yyval.lock_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5370 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 161:\n#line 1779 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.lock_option_t) = new LockOption();\n      (yyval.lock_option_t)->case_idx_ = CASE1;\n      (yyval.lock_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5381 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 162:\n#line 1785 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.lock_option_t) = new LockOption();\n      (yyval.lock_option_t)->case_idx_ = CASE2;\n      (yyval.lock_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5392 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 163:\n#line 1791 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.lock_option_t) = new LockOption();\n      (yyval.lock_option_t)->case_idx_ = CASE3;\n      (yyval.lock_option_t)->opt_op_equal_ = (yyvsp[-1].opt_op_equal_t);\n\n    }\n#line 5403 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 164:\n#line 1800 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_op_equal_t) = new OptOpEqual();\n      (yyval.opt_op_equal_t)->case_idx_ = CASE0;\n\n    }\n#line 5413 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 165:\n#line 1805 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_op_equal_t) = new OptOpEqual();\n      (yyval.opt_op_equal_t)->case_idx_ = CASE1;\n\n    }\n#line 5423 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 166:\n#line 1813 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_events_t) = new TriggerEvents();\n      (yyval.trigger_events_t)->case_idx_ = CASE0;\n\n    }\n#line 5433 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 167:\n#line 1818 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_events_t) = new TriggerEvents();\n      (yyval.trigger_events_t)->case_idx_ = CASE1;\n\n    }\n#line 5443 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 168:\n#line 1823 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_events_t) = new TriggerEvents();\n      (yyval.trigger_events_t)->case_idx_ = CASE2;\n\n    }\n#line 5453 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 169:\n#line 1831 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_name_t) = new TriggerName();\n      (yyval.trigger_name_t)->case_idx_ = CASE0;\n      (yyval.trigger_name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 5464 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 170:\n#line 1840 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_action_time_t) = new TriggerActionTime();\n      (yyval.trigger_action_time_t)->case_idx_ = CASE0;\n\n    }\n#line 5474 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 171:\n#line 1845 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_action_time_t) = new TriggerActionTime();\n      (yyval.trigger_action_time_t)->case_idx_ = CASE1;\n\n    }\n#line 5484 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 172:\n#line 1853 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_index_stmt_t) = new DropIndexStmt();\n      (yyval.drop_index_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_index_stmt_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.drop_index_stmt_t)->opt_extra_option_ =\n          (yyvsp[0].opt_extra_option_t);\n      if ((yyval.drop_index_stmt_t)) {\n        auto tmp1 = (yyval.drop_index_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 5508 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 173:\n#line 1875 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_table_stmt_t) = new DropTableStmt();\n      (yyval.drop_table_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_table_stmt_t)->opt_temp_ = (yyvsp[-4].opt_temp_t);\n      (yyval.drop_table_stmt_t)->opt_if_exist_ = (yyvsp[-2].opt_if_exist_t);\n      (yyval.drop_table_stmt_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.drop_table_stmt_t)->opt_restrict_or_cascade_ =\n          (yyvsp[0].opt_restrict_or_cascade_t);\n      if ((yyval.drop_table_stmt_t)) {\n        auto tmp1 = (yyval.drop_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 5534 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 174:\n#line 1899 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_restrict_or_cascade_t) = new OptRestrictOrCascade();\n      (yyval.opt_restrict_or_cascade_t)->case_idx_ = CASE0;\n\n    }\n#line 5544 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 175:\n#line 1904 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_restrict_or_cascade_t) = new OptRestrictOrCascade();\n      (yyval.opt_restrict_or_cascade_t)->case_idx_ = CASE1;\n\n    }\n#line 5554 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 176:\n#line 1909 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_restrict_or_cascade_t) = new OptRestrictOrCascade();\n      (yyval.opt_restrict_or_cascade_t)->case_idx_ = CASE2;\n\n    }\n#line 5564 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 177:\n#line 1917 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_trigger_stmt_t) = new DropTriggerStmt();\n      (yyval.drop_trigger_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_trigger_stmt_t)->opt_if_exist_ = (yyvsp[-1].opt_if_exist_t);\n      (yyval.drop_trigger_stmt_t)->trigger_name_ = (yyvsp[0].trigger_name_t);\n      if ((yyval.drop_trigger_stmt_t)) {\n        auto tmp1 = (yyval.drop_trigger_stmt_t)->trigger_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTriggerName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 5588 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 178:\n#line 1939 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_view_stmt_t) = new DropViewStmt();\n      (yyval.drop_view_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_view_stmt_t)->opt_if_exist_ = (yyvsp[-2].opt_if_exist_t);\n      (yyval.drop_view_stmt_t)->view_name_ = (yyvsp[-1].view_name_t);\n      (yyval.drop_view_stmt_t)->opt_restrict_or_cascade_ =\n          (yyvsp[0].opt_restrict_or_cascade_t);\n      if ((yyval.drop_view_stmt_t)) {\n        auto tmp1 = (yyval.drop_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 5613 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 179:\n#line 1962 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_stmt_t) = new InsertStmt();\n      (yyval.insert_stmt_t)->case_idx_ = CASE0;\n      (yyval.insert_stmt_t)->opt_with_clause_ = (yyvsp[-6].opt_with_clause_t);\n      (yyval.insert_stmt_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.insert_stmt_t)->opt_as_alias_ = (yyvsp[-2].opt_as_alias_t);\n      (yyval.insert_stmt_t)->insert_rest_ = (yyvsp[-1].insert_rest_t);\n      (yyval.insert_stmt_t)->opt_on_conflict_ = (yyvsp[0].opt_on_conflict_t);\n\n    }\n#line 5628 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 180:\n#line 1975 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE0;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-1].opt_column_name_list_p_t);\n      (yyval.insert_rest_t)->select_no_parens_ = (yyvsp[0].select_no_parens_t);\n\n    }\n#line 5640 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 181:\n#line 1982 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE1;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n\n    }\n#line 5651 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 182:\n#line 1988 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE2;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n      (yyval.insert_rest_t)->super_values_list_ =\n          (yyvsp[0].super_values_list_t);\n\n    }\n#line 5663 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 183:\n#line 1998 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.super_values_list_t) = new SuperValuesList();\n      (yyval.super_values_list_t)->case_idx_ = CASE0;\n      (yyval.super_values_list_t)->values_list_ = (yyvsp[0].values_list_t);\n\n    }\n#line 5674 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 184:\n#line 2004 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.super_values_list_t) = new SuperValuesList();\n      (yyval.super_values_list_t)->case_idx_ = CASE1;\n      (yyval.super_values_list_t)->values_list_ = (yyvsp[-2].values_list_t);\n      (yyval.super_values_list_t)->super_values_list_ =\n          (yyvsp[0].super_values_list_t);\n\n    }\n#line 5686 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 185:\n#line 2014 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.values_list_t) = new ValuesList();\n      (yyval.values_list_t)->case_idx_ = CASE0;\n      (yyval.values_list_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 5697 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 186:\n#line 2023 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE0;\n      (yyval.opt_on_conflict_t)->opt_conflict_expr_ =\n          (yyvsp[-2].opt_conflict_expr_t);\n\n    }\n#line 5708 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 187:\n#line 2029 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE1;\n      (yyval.opt_on_conflict_t)->opt_conflict_expr_ =\n          (yyvsp[-4].opt_conflict_expr_t);\n      (yyval.opt_on_conflict_t)->set_clause_list_ =\n          (yyvsp[-1].set_clause_list_t);\n      (yyval.opt_on_conflict_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 5721 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 188:\n#line 2037 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE2;\n\n    }\n#line 5731 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 189:\n#line 2045 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_conflict_expr_t) = new OptConflictExpr();\n      (yyval.opt_conflict_expr_t)->case_idx_ = CASE0;\n      (yyval.opt_conflict_expr_t)->indexed_column_list_ =\n          (yyvsp[-2].indexed_column_list_t);\n      (yyval.opt_conflict_expr_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 5743 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 190:\n#line 2052 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_conflict_expr_t) = new OptConflictExpr();\n      (yyval.opt_conflict_expr_t)->case_idx_ = CASE1;\n\n    }\n#line 5753 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 191:\n#line 2060 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_list_t) = new IndexedColumnList();\n      (yyval.indexed_column_list_t)->case_idx_ = CASE0;\n      (yyval.indexed_column_list_t)->indexed_column_ =\n          (yyvsp[0].indexed_column_t);\n\n    }\n#line 5764 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 192:\n#line 2066 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_list_t) = new IndexedColumnList();\n      (yyval.indexed_column_list_t)->case_idx_ = CASE1;\n      (yyval.indexed_column_list_t)->indexed_column_ =\n          (yyvsp[-2].indexed_column_t);\n      (yyval.indexed_column_list_t)->indexed_column_list_ =\n          (yyvsp[0].indexed_column_list_t);\n\n    }\n#line 5776 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 193:\n#line 2076 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_t) = new IndexedColumn();\n      (yyval.indexed_column_t)->case_idx_ = CASE0;\n      (yyval.indexed_column_t)->expr_ = (yyvsp[-1].expr_t);\n      (yyval.indexed_column_t)->opt_order_behavior_ =\n          (yyvsp[0].opt_order_behavior_t);\n\n    }\n#line 5788 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 194:\n#line 2086 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_stmt_t) = new UpdateStmt();\n      (yyval.update_stmt_t)->case_idx_ = CASE0;\n      (yyval.update_stmt_t)->table_name_ = (yyvsp[-6].table_name_t);\n      (yyval.update_stmt_t)->opt_as_alias_ = (yyvsp[-5].opt_as_alias_t);\n      (yyval.update_stmt_t)->set_clause_list_ = (yyvsp[-3].set_clause_list_t);\n      (yyval.update_stmt_t)->opt_where_clause_ = (yyvsp[-2].opt_where_clause_t);\n      (yyval.update_stmt_t)->opt_order_clause_ = (yyvsp[-1].opt_order_clause_t);\n      (yyval.update_stmt_t)->opt_limit_row_count_ =\n          (yyvsp[0].opt_limit_row_count_t);\n\n    }\n#line 5804 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 195:\n#line 2097 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_stmt_t) = new UpdateStmt();\n      (yyval.update_stmt_t)->case_idx_ = CASE1;\n      (yyval.update_stmt_t)->table_name_ = (yyvsp[-6].table_name_t);\n      (yyval.update_stmt_t)->opt_as_alias_ = (yyvsp[-5].opt_as_alias_t);\n      (yyval.update_stmt_t)->set_clause_list_ = (yyvsp[-3].set_clause_list_t);\n      (yyval.update_stmt_t)->opt_where_clause_ = (yyvsp[-2].opt_where_clause_t);\n      (yyval.update_stmt_t)->opt_order_clause_ = (yyvsp[-1].opt_order_clause_t);\n      (yyval.update_stmt_t)->opt_limit_row_count_ =\n          (yyvsp[0].opt_limit_row_count_t);\n\n    }\n#line 5820 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 196:\n#line 2111 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE0;\n      (yyval.alter_action_t)->table_name_ = (yyvsp[0].table_name_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)64;\n          }\n        }\n      }\n\n    }\n#line 5843 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 197:\n#line 2129 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE1;\n      (yyval.alter_action_t)->opt_column_ = (yyvsp[-3].opt_column_t);\n      (yyval.alter_action_t)->column_name_1_ = (yyvsp[-2].column_name_t);\n      (yyval.alter_action_t)->column_name_2_ = (yyvsp[0].column_name_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_name_1_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_name_2_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 3;\n            tmp2->data_flag_ = (DATAFLAG)64;\n          }\n        }\n      }\n\n    }\n#line 5880 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 198:\n#line 2161 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE2;\n      (yyval.alter_action_t)->opt_column_ = (yyvsp[-1].opt_column_t);\n      (yyval.alter_action_t)->column_def_ = (yyvsp[0].column_def_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_def_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n    }\n#line 5904 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 199:\n#line 2180 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE3;\n      (yyval.alter_action_t)->opt_column_ = (yyvsp[-1].opt_column_t);\n      (yyval.alter_action_t)->column_name_1_ = (yyvsp[0].column_name_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_name_1_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 5928 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 200:\n#line 2199 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE4;\n      (yyval.alter_action_t)->alter_constant_action_ =\n          (yyvsp[0].alter_constant_action_t);\n\n    }\n#line 5939 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 201:\n#line 2208 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE0;\n\n    }\n#line 5949 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 202:\n#line 2213 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE1;\n\n    }\n#line 5959 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 203:\n#line 2218 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE2;\n\n    }\n#line 5969 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 204:\n#line 2223 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE3;\n\n    }\n#line 5979 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 205:\n#line 2228 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE4;\n      (yyval.alter_constant_action_t)->lock_option_ = (yyvsp[0].lock_option_t);\n\n    }\n#line 5990 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 206:\n#line 2234 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE5;\n\n    }\n#line 6000 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 207:\n#line 2239 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_constant_action_t) = new AlterConstantAction();\n      (yyval.alter_constant_action_t)->case_idx_ = CASE6;\n\n    }\n#line 6010 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 208:\n#line 2247 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_list_t) = new ColumnDefList();\n      (yyval.column_def_list_t)->case_idx_ = CASE0;\n      (yyval.column_def_list_t)->column_def_ = (yyvsp[0].column_def_t);\n\n    }\n#line 6021 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 209:\n#line 2253 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_list_t) = new ColumnDefList();\n      (yyval.column_def_list_t)->case_idx_ = CASE1;\n      (yyval.column_def_list_t)->column_def_ = (yyvsp[-2].column_def_t);\n      (yyval.column_def_list_t)->column_def_list_ =\n          (yyvsp[0].column_def_list_t);\n\n    }\n#line 6033 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 210:\n#line 2263 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_t) = new ColumnDef();\n      (yyval.column_def_t)->case_idx_ = CASE0;\n      (yyval.column_def_t)->identifier_ = (yyvsp[-2].identifier_t);\n      (yyval.column_def_t)->type_name_ = (yyvsp[-1].type_name_t);\n      (yyval.column_def_t)->opt_column_constraint_list_ =\n          (yyvsp[0].opt_column_constraint_list_t);\n      if ((yyval.column_def_t)) {\n        auto tmp1 = (yyval.column_def_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataColumnName;\n          tmp1->scope_ = 2;\n          tmp1->data_flag_ = (DATAFLAG)1;\n        }\n      }\n\n    }\n#line 6055 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 211:\n#line 2283 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_constraint_list_t) = new OptColumnConstraintList();\n      (yyval.opt_column_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.opt_column_constraint_list_t)->column_constraint_list_ =\n          (yyvsp[-2].column_constraint_list_t);\n      (yyval.opt_column_constraint_list_t)->opt_check_ =\n          (yyvsp[-1].opt_check_t);\n      (yyval.opt_column_constraint_list_t)->opt_reference_clause_ =\n          (yyvsp[0].opt_reference_clause_t);\n\n    }\n#line 6068 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 212:\n#line 2291 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_constraint_list_t) = new OptColumnConstraintList();\n      (yyval.opt_column_constraint_list_t)->case_idx_ = CASE1;\n\n    }\n#line 6078 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 213:\n#line 2299 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_list_t) = new ColumnConstraintList();\n      (yyval.column_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.column_constraint_list_t)->column_constraint_ =\n          (yyvsp[0].column_constraint_t);\n\n    }\n#line 6089 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 214:\n#line 2305 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_list_t) = new ColumnConstraintList();\n      (yyval.column_constraint_list_t)->case_idx_ = CASE1;\n      (yyval.column_constraint_list_t)->column_constraint_ =\n          (yyvsp[-1].column_constraint_t);\n      (yyval.column_constraint_list_t)->column_constraint_list_ =\n          (yyvsp[0].column_constraint_list_t);\n\n    }\n#line 6101 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 215:\n#line 2315 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_t) = new ColumnConstraint();\n      (yyval.column_constraint_t)->case_idx_ = CASE0;\n      (yyval.column_constraint_t)->constraint_type_ =\n          (yyvsp[0].constraint_type_t);\n\n    }\n#line 6112 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 216:\n#line 2324 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_reference_clause_t) = new OptReferenceClause();\n      (yyval.opt_reference_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_reference_clause_t)->opt_foreign_key_ =\n          (yyvsp[-1].opt_foreign_key_t);\n      (yyval.opt_reference_clause_t)->reference_clause_ =\n          (yyvsp[0].reference_clause_t);\n\n    }\n#line 6124 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 217:\n#line 2331 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_reference_clause_t) = new OptReferenceClause();\n      (yyval.opt_reference_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 6134 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 218:\n#line 2339 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_t) = new OptCheck();\n      (yyval.opt_check_t)->case_idx_ = CASE0;\n      (yyval.opt_check_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.opt_check_t)->opt_enforced_ = (yyvsp[0].opt_enforced_t);\n\n    }\n#line 6146 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 219:\n#line 2346 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_t) = new OptCheck();\n      (yyval.opt_check_t)->case_idx_ = CASE1;\n\n    }\n#line 6156 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 220:\n#line 2354 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE0;\n\n    }\n#line 6166 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 221:\n#line 2359 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE1;\n\n    }\n#line 6176 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 222:\n#line 2364 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE2;\n\n    }\n#line 6186 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 223:\n#line 2372 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.reference_clause_t) = new ReferenceClause();\n      (yyval.reference_clause_t)->case_idx_ = CASE0;\n      (yyval.reference_clause_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.reference_clause_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n      (yyval.reference_clause_t)->opt_foreign_key_actions_ =\n          (yyvsp[-1].opt_foreign_key_actions_t);\n      (yyval.reference_clause_t)->opt_constraint_attribute_spec_ =\n          (yyvsp[0].opt_constraint_attribute_spec_t);\n      if ((yyval.reference_clause_t)) {\n        auto tmp1 = (yyval.reference_clause_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 100;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n      if ((yyval.reference_clause_t)) {\n        auto tmp1 = (yyval.reference_clause_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 101;\n                tmp4->data_flag_ = (DATAFLAG)8;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 6231 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 224:\n#line 2415 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_t) = new OptForeignKey();\n      (yyval.opt_foreign_key_t)->case_idx_ = CASE0;\n\n    }\n#line 6241 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 225:\n#line 2420 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_t) = new OptForeignKey();\n      (yyval.opt_foreign_key_t)->case_idx_ = CASE1;\n\n    }\n#line 6251 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 226:\n#line 2428 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_actions_t) = new OptForeignKeyActions();\n      (yyval.opt_foreign_key_actions_t)->case_idx_ = CASE0;\n      (yyval.opt_foreign_key_actions_t)->foreign_key_actions_ =\n          (yyvsp[0].foreign_key_actions_t);\n\n    }\n#line 6262 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 227:\n#line 2434 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_actions_t) = new OptForeignKeyActions();\n      (yyval.opt_foreign_key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 6272 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 228:\n#line 2442 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE0;\n\n    }\n#line 6282 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 229:\n#line 2447 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 6292 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 230:\n#line 2452 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE2;\n\n    }\n#line 6302 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 231:\n#line 2457 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE3;\n      (yyval.foreign_key_actions_t)->key_actions_ = (yyvsp[0].key_actions_t);\n\n    }\n#line 6313 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 232:\n#line 2463 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE4;\n      (yyval.foreign_key_actions_t)->key_actions_ = (yyvsp[0].key_actions_t);\n\n    }\n#line 6324 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 233:\n#line 2472 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE0;\n\n    }\n#line 6334 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 234:\n#line 2477 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 6344 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 235:\n#line 2482 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE2;\n\n    }\n#line 6354 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 236:\n#line 2487 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE3;\n\n    }\n#line 6364 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 237:\n#line 2492 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE4;\n\n    }\n#line 6374 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 238:\n#line 2500 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE0;\n      (yyval.opt_constraint_attribute_spec_t)->opt_initial_time_ =\n          (yyvsp[0].opt_initial_time_t);\n\n    }\n#line 6385 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 239:\n#line 2506 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE1;\n      (yyval.opt_constraint_attribute_spec_t)->opt_initial_time_ =\n          (yyvsp[0].opt_initial_time_t);\n\n    }\n#line 6396 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 240:\n#line 2512 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE2;\n\n    }\n#line 6406 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 241:\n#line 2520 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE0;\n\n    }\n#line 6416 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 242:\n#line 2525 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE1;\n\n    }\n#line 6426 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 243:\n#line 2530 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE2;\n\n    }\n#line 6436 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 244:\n#line 2538 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_name_t) = new ConstraintName();\n      (yyval.constraint_name_t)->case_idx_ = CASE0;\n      (yyval.constraint_name_t)->name_ = (yyvsp[0].name_t);\n\n    }\n#line 6447 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 245:\n#line 2547 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE0;\n\n    }\n#line 6457 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 246:\n#line 2552 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE1;\n\n    }\n#line 6467 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 247:\n#line 2560 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE0;\n\n    }\n#line 6477 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 248:\n#line 2565 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE1;\n\n    }\n#line 6487 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 249:\n#line 2570 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE2;\n\n    }\n#line 6497 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 250:\n#line 2575 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE3;\n\n    }\n#line 6507 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 251:\n#line 2583 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_name_list_p_t) = new OptColumnNameListP();\n      (yyval.opt_column_name_list_p_t)->case_idx_ = CASE0;\n      (yyval.opt_column_name_list_p_t)->column_name_list_ =\n          (yyvsp[-1].column_name_list_t);\n\n    }\n#line 6518 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 252:\n#line 2589 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_name_list_p_t) = new OptColumnNameListP();\n      (yyval.opt_column_name_list_p_t)->case_idx_ = CASE1;\n\n    }\n#line 6528 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 253:\n#line 2597 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_list_t) = new SetClauseList();\n      (yyval.set_clause_list_t)->case_idx_ = CASE0;\n      (yyval.set_clause_list_t)->set_clause_ = (yyvsp[0].set_clause_t);\n\n    }\n#line 6539 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 254:\n#line 2603 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_list_t) = new SetClauseList();\n      (yyval.set_clause_list_t)->case_idx_ = CASE1;\n      (yyval.set_clause_list_t)->set_clause_ = (yyvsp[-2].set_clause_t);\n      (yyval.set_clause_list_t)->set_clause_list_ =\n          (yyvsp[0].set_clause_list_t);\n\n    }\n#line 6551 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 255:\n#line 2613 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_t) = new SetClause();\n      (yyval.set_clause_t)->case_idx_ = CASE0;\n      (yyval.set_clause_t)->column_name_ = (yyvsp[-2].column_name_t);\n      (yyval.set_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 6563 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 256:\n#line 2620 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_t) = new SetClause();\n      (yyval.set_clause_t)->case_idx_ = CASE1;\n      (yyval.set_clause_t)->column_name_list_ = (yyvsp[-3].column_name_list_t);\n      (yyval.set_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 6575 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 257:\n#line 2630 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_as_alias_t) = new OptAsAlias();\n      (yyval.opt_as_alias_t)->case_idx_ = CASE0;\n      (yyval.opt_as_alias_t)->as_alias_ = (yyvsp[0].as_alias_t);\n\n    }\n#line 6586 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 258:\n#line 2636 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_as_alias_t) = new OptAsAlias();\n      (yyval.opt_as_alias_t)->case_idx_ = CASE1;\n\n    }\n#line 6596 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 259:\n#line 2644 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE0;\n      (yyval.expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 6607 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 260:\n#line 2650 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE1;\n      (yyval.expr_t)->between_expr_ = (yyvsp[0].between_expr_t);\n\n    }\n#line 6618 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 261:\n#line 2656 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE2;\n      (yyval.expr_t)->exists_expr_ = (yyvsp[0].exists_expr_t);\n\n    }\n#line 6629 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 262:\n#line 2662 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE3;\n      (yyval.expr_t)->in_expr_ = (yyvsp[0].in_expr_t);\n\n    }\n#line 6640 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 263:\n#line 2668 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE4;\n      (yyval.expr_t)->cast_expr_ = (yyvsp[0].cast_expr_t);\n\n    }\n#line 6651 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 264:\n#line 2674 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE5;\n      (yyval.expr_t)->logic_expr_ = (yyvsp[0].logic_expr_t);\n\n    }\n#line 6662 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 265:\n#line 2683 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE0;\n      (yyval.operand_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 6673 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 266:\n#line 2689 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE1;\n      (yyval.operand_t)->array_index_ = (yyvsp[0].array_index_t);\n\n    }\n#line 6684 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 267:\n#line 2695 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE2;\n      (yyval.operand_t)->scalar_expr_ = (yyvsp[0].scalar_expr_t);\n\n    }\n#line 6695 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 268:\n#line 2701 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE3;\n      (yyval.operand_t)->unary_expr_ = (yyvsp[0].unary_expr_t);\n\n    }\n#line 6706 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 269:\n#line 2707 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE4;\n      (yyval.operand_t)->binary_expr_ = (yyvsp[0].binary_expr_t);\n\n    }\n#line 6717 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 270:\n#line 2713 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE5;\n      (yyval.operand_t)->case_expr_ = (yyvsp[0].case_expr_t);\n\n    }\n#line 6728 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 271:\n#line 2719 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE6;\n      (yyval.operand_t)->extract_expr_ = (yyvsp[0].extract_expr_t);\n\n    }\n#line 6739 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 272:\n#line 2725 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE7;\n      (yyval.operand_t)->array_expr_ = (yyvsp[0].array_expr_t);\n\n    }\n#line 6750 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 273:\n#line 2731 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE8;\n      (yyval.operand_t)->function_expr_ = (yyvsp[0].function_expr_t);\n\n    }\n#line 6761 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 274:\n#line 2737 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE9;\n      (yyval.operand_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 6772 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 275:\n#line 2746 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cast_expr_t) = new CastExpr();\n      (yyval.cast_expr_t)->case_idx_ = CASE0;\n      (yyval.cast_expr_t)->expr_ = (yyvsp[-3].expr_t);\n      (yyval.cast_expr_t)->type_name_ = (yyvsp[-1].type_name_t);\n\n    }\n#line 6784 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 276:\n#line 2756 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->case_idx_ = CASE0;\n      (yyval.scalar_expr_t)->column_name_ = (yyvsp[0].column_name_t);\n\n    }\n#line 6795 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 277:\n#line 2762 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->case_idx_ = CASE1;\n      (yyval.scalar_expr_t)->literal_ = (yyvsp[0].literal_t);\n\n    }\n#line 6806 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 278:\n#line 2771 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE0;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 6817 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 279:\n#line 2777 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE1;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 6828 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 280:\n#line 2783 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE2;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-1].operand_t);\n\n    }\n#line 6839 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 281:\n#line 2789 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE3;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-2].operand_t);\n\n    }\n#line 6850 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 282:\n#line 2795 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE4;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-3].operand_t);\n\n    }\n#line 6861 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 283:\n#line 2801 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE5;\n\n    }\n#line 6871 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 284:\n#line 2806 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE6;\n\n    }\n#line 6881 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 285:\n#line 2814 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE0;\n      (yyval.binary_expr_t)->comp_expr_ = (yyvsp[0].comp_expr_t);\n\n    }\n#line 6892 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 286:\n#line 2820 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE1;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->binary_op_ = (yyvsp[-1].binary_op_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6905 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 287:\n#line 2828 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE2;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6917 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 288:\n#line 2835 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE3;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-3].operand_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6929 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 289:\n#line 2845 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->case_idx_ = CASE0;\n      (yyval.logic_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 6941 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 290:\n#line 2852 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->case_idx_ = CASE1;\n      (yyval.logic_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 6953 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 291:\n#line 2862 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE0;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.in_expr_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 6966 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 292:\n#line 2870 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE1;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.in_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 6979 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 293:\n#line 2878 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE2;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-2].opt_not_t);\n      (yyval.in_expr_t)->table_name_ = (yyvsp[0].table_name_t);\n\n    }\n#line 6992 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 294:\n#line 2889 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE0;\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n\n    }\n#line 7004 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 295:\n#line 2896 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE1;\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n\n    }\n#line 7015 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 296:\n#line 2902 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE2;\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-4].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n      (yyval.case_expr_t)->expr_2_ = (yyvsp[-1].expr_t);\n\n    }\n#line 7028 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 297:\n#line 2910 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE3;\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-1].expr_t);\n\n    }\n#line 7040 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 298:\n#line 2920 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.between_expr_t) = new BetweenExpr();\n      (yyval.between_expr_t)->case_idx_ = CASE0;\n      (yyval.between_expr_t)->operand_1_ = (yyvsp[-4].operand_t);\n      (yyval.between_expr_t)->operand_2_ = (yyvsp[-2].operand_t);\n      (yyval.between_expr_t)->operand_3_ = (yyvsp[0].operand_t);\n\n    }\n#line 7053 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 299:\n#line 2928 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.between_expr_t) = new BetweenExpr();\n      (yyval.between_expr_t)->case_idx_ = CASE1;\n      (yyval.between_expr_t)->operand_1_ = (yyvsp[-5].operand_t);\n      (yyval.between_expr_t)->operand_2_ = (yyvsp[-2].operand_t);\n      (yyval.between_expr_t)->operand_3_ = (yyvsp[0].operand_t);\n\n    }\n#line 7066 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 300:\n#line 2939 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.exists_expr_t) = new ExistsExpr();\n      (yyval.exists_expr_t)->case_idx_ = CASE0;\n      (yyval.exists_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.exists_expr_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 7078 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 301:\n#line 2949 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.function_expr_t) = new FunctionExpr();\n      (yyval.function_expr_t)->case_idx_ = CASE0;\n      (yyval.function_expr_t)->function_name_ = (yyvsp[-4].function_name_t);\n      (yyval.function_expr_t)->opt_filter_clause_ =\n          (yyvsp[-1].opt_filter_clause_t);\n      (yyval.function_expr_t)->opt_over_clause_ = (yyvsp[0].opt_over_clause_t);\n\n    }\n#line 7091 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 302:\n#line 2957 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.function_expr_t) = new FunctionExpr();\n      (yyval.function_expr_t)->case_idx_ = CASE1;\n      (yyval.function_expr_t)->function_name_ = (yyvsp[-6].function_name_t);\n      (yyval.function_expr_t)->opt_distinct_ = (yyvsp[-4].opt_distinct_t);\n      (yyval.function_expr_t)->expr_list_ = (yyvsp[-3].expr_list_t);\n      (yyval.function_expr_t)->opt_filter_clause_ =\n          (yyvsp[-1].opt_filter_clause_t);\n      (yyval.function_expr_t)->opt_over_clause_ = (yyvsp[0].opt_over_clause_t);\n\n    }\n#line 7106 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 303:\n#line 2970 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_distinct_t) = new OptDistinct();\n      (yyval.opt_distinct_t)->case_idx_ = CASE0;\n\n    }\n#line 7116 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 304:\n#line 2975 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_distinct_t) = new OptDistinct();\n      (yyval.opt_distinct_t)->case_idx_ = CASE1;\n\n    }\n#line 7126 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 305:\n#line 2983 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_filter_clause_t) = new OptFilterClause();\n      (yyval.opt_filter_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_filter_clause_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 7137 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 306:\n#line 2989 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_filter_clause_t) = new OptFilterClause();\n      (yyval.opt_filter_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 7147 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 307:\n#line 2997 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_over_clause_t)->window_ = (yyvsp[-1].window_t);\n\n    }\n#line 7158 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 308:\n#line 3003 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->case_idx_ = CASE1;\n      (yyval.opt_over_clause_t)->window_name_ = (yyvsp[0].window_name_t);\n\n    }\n#line 7169 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 309:\n#line 3009 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 7179 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 310:\n#line 3017 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t) = new CaseList();\n      (yyval.case_list_t)->case_idx_ = CASE0;\n      (yyval.case_list_t)->case_clause_ = (yyvsp[0].case_clause_t);\n\n    }\n#line 7190 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 311:\n#line 3023 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t) = new CaseList();\n      (yyval.case_list_t)->case_idx_ = CASE1;\n      (yyval.case_list_t)->case_clause_ = (yyvsp[-1].case_clause_t);\n      (yyval.case_list_t)->case_list_ = (yyvsp[0].case_list_t);\n\n    }\n#line 7202 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 312:\n#line 3033 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_clause_t) = new CaseClause();\n      (yyval.case_clause_t)->case_idx_ = CASE0;\n      (yyval.case_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.case_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 7214 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 313:\n#line 3043 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE0;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7226 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 314:\n#line 3050 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE1;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7238 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 315:\n#line 3057 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE2;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7250 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 316:\n#line 3064 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE3;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7262 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 317:\n#line 3071 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE4;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7274 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 318:\n#line 3078 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE5;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 7286 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 319:\n#line 3088 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.extract_expr_t) = new ExtractExpr();\n      (yyval.extract_expr_t)->case_idx_ = CASE0;\n      (yyval.extract_expr_t)->datetime_field_ = (yyvsp[-3].datetime_field_t);\n      (yyval.extract_expr_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 7298 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 320:\n#line 3098 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE0;\n\n    }\n#line 7308 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 321:\n#line 3103 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE1;\n\n    }\n#line 7318 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 322:\n#line 3108 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE2;\n\n    }\n#line 7328 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 323:\n#line 3113 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE3;\n\n    }\n#line 7338 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 324:\n#line 3118 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE4;\n\n    }\n#line 7348 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 325:\n#line 3123 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE5;\n\n    }\n#line 7358 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 326:\n#line 3131 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.array_expr_t) = new ArrayExpr();\n      (yyval.array_expr_t)->case_idx_ = CASE0;\n      (yyval.array_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 7369 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 327:\n#line 3140 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.array_index_t) = new ArrayIndex();\n      (yyval.array_index_t)->case_idx_ = CASE0;\n      (yyval.array_index_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.array_index_t)->int_literal_ = (yyvsp[-1].int_literal_t);\n\n    }\n#line 7381 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 328:\n#line 3150 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE0;\n      (yyval.literal_t)->string_literal_ = (yyvsp[0].string_literal_t);\n\n    }\n#line 7392 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 329:\n#line 3156 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE1;\n      (yyval.literal_t)->bool_literal_ = (yyvsp[0].bool_literal_t);\n\n    }\n#line 7403 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 330:\n#line 3162 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE2;\n      (yyval.literal_t)->num_literal_ = (yyvsp[0].num_literal_t);\n\n    }\n#line 7414 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 331:\n#line 3171 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.string_literal_t) = new StringLiteral();\n      (yyval.string_literal_t)->string_val_ = (yyvsp[0].sval);\n      free((yyvsp[0].sval));\n\n    }\n#line 7425 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 332:\n#line 3180 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->case_idx_ = CASE0;\n\n    }\n#line 7435 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 333:\n#line 3185 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->case_idx_ = CASE1;\n\n    }\n#line 7445 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 334:\n#line 3193 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->case_idx_ = CASE0;\n      (yyval.num_literal_t)->int_literal_ = (yyvsp[0].int_literal_t);\n\n    }\n#line 7456 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 335:\n#line 3199 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->case_idx_ = CASE1;\n      (yyval.num_literal_t)->float_literal_ = (yyvsp[0].float_literal_t);\n\n    }\n#line 7467 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 336:\n#line 3208 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.int_literal_t) = new IntLiteral();\n      (yyval.int_literal_t)->int_val_ = (yyvsp[0].ival);\n\n    }\n#line 7477 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 337:\n#line 3216 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.float_literal_t) = new FloatLiteral();\n      (yyval.float_literal_t)->float_val_ = (yyvsp[0].fval);\n\n    }\n#line 7487 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 338:\n#line 3224 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->case_idx_ = CASE0;\n\n    }\n#line 7497 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 339:\n#line 3229 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->case_idx_ = CASE1;\n\n    }\n#line 7507 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 340:\n#line 3237 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_body_t) = new TriggerBody();\n      (yyval.trigger_body_t)->case_idx_ = CASE0;\n      (yyval.trigger_body_t)->drop_stmt_ = (yyvsp[0].drop_stmt_t);\n\n    }\n#line 7518 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 341:\n#line 3243 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_body_t) = new TriggerBody();\n      (yyval.trigger_body_t)->case_idx_ = CASE1;\n      (yyval.trigger_body_t)->update_stmt_ = (yyvsp[0].update_stmt_t);\n\n    }\n#line 7529 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 342:\n#line 3249 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_body_t) = new TriggerBody();\n      (yyval.trigger_body_t)->case_idx_ = CASE2;\n      (yyval.trigger_body_t)->insert_stmt_ = (yyvsp[0].insert_stmt_t);\n\n    }\n#line 7540 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 343:\n#line 3255 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_body_t) = new TriggerBody();\n      (yyval.trigger_body_t)->case_idx_ = CASE3;\n      (yyval.trigger_body_t)->alter_stmt_ = (yyvsp[0].alter_stmt_t);\n\n    }\n#line 7551 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 344:\n#line 3264 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_not_exist_t) = new OptIfNotExist();\n      (yyval.opt_if_not_exist_t)->case_idx_ = CASE0;\n\n    }\n#line 7561 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 345:\n#line 3269 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_not_exist_t) = new OptIfNotExist();\n      (yyval.opt_if_not_exist_t)->case_idx_ = CASE1;\n\n    }\n#line 7571 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 346:\n#line 3277 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_exist_t) = new OptIfExist();\n      (yyval.opt_if_exist_t)->case_idx_ = CASE0;\n\n    }\n#line 7581 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 347:\n#line 3282 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_exist_t) = new OptIfExist();\n      (yyval.opt_if_exist_t)->case_idx_ = CASE1;\n\n    }\n#line 7591 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 348:\n#line 3290 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.identifier_t) = new Identifier();\n      (yyval.identifier_t)->string_val_ = (yyvsp[0].sval);\n      free((yyvsp[0].sval));\n\n    }\n#line 7602 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 349:\n#line 3299 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.as_alias_t) = new AsAlias();\n      (yyval.as_alias_t)->case_idx_ = CASE0;\n      (yyval.as_alias_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.as_alias_t)) {\n        auto tmp1 = (yyval.as_alias_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataAliasName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)1;\n        }\n      }\n\n    }\n#line 7622 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 350:\n#line 3317 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_name_t) = new TableName();\n      (yyval.table_name_t)->case_idx_ = CASE0;\n      (yyval.table_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.table_name_t)) {\n        auto tmp1 = (yyval.table_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataTableName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 7642 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 351:\n#line 3335 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->case_idx_ = CASE0;\n      (yyval.column_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.column_name_t)) {\n        auto tmp1 = (yyval.column_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataColumnName;\n          tmp1->scope_ = 2;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 7662 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 352:\n#line 3353 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_keyword_t) = new OptIndexKeyword();\n      (yyval.opt_index_keyword_t)->case_idx_ = CASE0;\n\n    }\n#line 7672 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 353:\n#line 3358 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_keyword_t) = new OptIndexKeyword();\n      (yyval.opt_index_keyword_t)->case_idx_ = CASE1;\n\n    }\n#line 7682 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 354:\n#line 3363 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_keyword_t) = new OptIndexKeyword();\n      (yyval.opt_index_keyword_t)->case_idx_ = CASE2;\n\n    }\n#line 7692 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 355:\n#line 3368 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_keyword_t) = new OptIndexKeyword();\n      (yyval.opt_index_keyword_t)->case_idx_ = CASE3;\n\n    }\n#line 7702 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 356:\n#line 3376 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.view_name_t) = new ViewName();\n      (yyval.view_name_t)->case_idx_ = CASE0;\n      (yyval.view_name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 7713 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 357:\n#line 3385 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.function_name_t) = new FunctionName();\n      (yyval.function_name_t)->case_idx_ = CASE0;\n      (yyval.function_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.function_name_t)) {\n        auto tmp1 = (yyval.function_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataFunctionName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)4;\n        }\n      }\n\n    }\n#line 7733 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 358:\n#line 3403 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE0;\n\n    }\n#line 7743 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 359:\n#line 3408 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE1;\n\n    }\n#line 7753 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 360:\n#line 3413 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE2;\n\n    }\n#line 7763 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 361:\n#line 3418 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE3;\n\n    }\n#line 7773 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 362:\n#line 3423 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE4;\n\n    }\n#line 7783 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 363:\n#line 3428 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE5;\n\n    }\n#line 7793 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 364:\n#line 3436 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_t) = new OptNot();\n      (yyval.opt_not_t)->case_idx_ = CASE0;\n\n    }\n#line 7803 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 365:\n#line 3441 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_t) = new OptNot();\n      (yyval.opt_not_t)->case_idx_ = CASE1;\n\n    }\n#line 7813 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 366:\n#line 3449 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.name_t) = new Name();\n      (yyval.name_t)->case_idx_ = CASE0;\n      (yyval.name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 7824 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 367:\n#line 3458 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.type_name_t) = new TypeName();\n      (yyval.type_name_t)->case_idx_ = CASE0;\n      (yyval.type_name_t)->numeric_type_ = (yyvsp[0].numeric_type_t);\n\n    }\n#line 7835 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 368:\n#line 3464 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.type_name_t) = new TypeName();\n      (yyval.type_name_t)->case_idx_ = CASE1;\n      (yyval.type_name_t)->character_type_ = (yyvsp[0].character_type_t);\n\n    }\n#line 7846 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 369:\n#line 3473 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_type_t) = new CharacterType();\n      (yyval.character_type_t)->case_idx_ = CASE0;\n      (yyval.character_type_t)->character_with_length_ =\n          (yyvsp[0].character_with_length_t);\n\n    }\n#line 7857 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 370:\n#line 3479 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_type_t) = new CharacterType();\n      (yyval.character_type_t)->case_idx_ = CASE1;\n      (yyval.character_type_t)->character_without_length_ =\n          (yyvsp[0].character_without_length_t);\n\n    }\n#line 7868 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 371:\n#line 3488 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_with_length_t) = new CharacterWithLength();\n      (yyval.character_with_length_t)->case_idx_ = CASE0;\n      (yyval.character_with_length_t)->character_conflicta_ =\n          (yyvsp[-3].character_conflicta_t);\n      (yyval.character_with_length_t)->int_literal_ = (yyvsp[-1].int_literal_t);\n\n    }\n#line 7880 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 372:\n#line 3498 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_without_length_t) = new CharacterWithoutLength();\n      (yyval.character_without_length_t)->case_idx_ = CASE0;\n      (yyval.character_without_length_t)->character_conflicta_ =\n          (yyvsp[0].character_conflicta_t);\n\n    }\n#line 7891 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 373:\n#line 3504 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_without_length_t) = new CharacterWithoutLength();\n      (yyval.character_without_length_t)->case_idx_ = CASE1;\n\n    }\n#line 7901 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 374:\n#line 3509 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_without_length_t) = new CharacterWithoutLength();\n      (yyval.character_without_length_t)->case_idx_ = CASE2;\n\n    }\n#line 7911 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 375:\n#line 3514 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_without_length_t) = new CharacterWithoutLength();\n      (yyval.character_without_length_t)->case_idx_ = CASE3;\n\n    }\n#line 7921 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 376:\n#line 3522 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE0;\n\n    }\n#line 7931 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 377:\n#line 3527 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE1;\n\n    }\n#line 7941 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 378:\n#line 3532 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE2;\n\n    }\n#line 7951 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 379:\n#line 3537 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE3;\n\n    }\n#line 7961 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 380:\n#line 3542 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE4;\n\n    }\n#line 7971 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 381:\n#line 3547 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE5;\n\n    }\n#line 7981 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 382:\n#line 3552 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE6;\n\n    }\n#line 7991 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 383:\n#line 3557 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE7;\n\n    }\n#line 8001 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 384:\n#line 3562 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE8;\n\n    }\n#line 8011 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 385:\n#line 3567 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE9;\n\n    }\n#line 8021 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 386:\n#line 3575 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE0;\n\n    }\n#line 8031 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 387:\n#line 3580 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE1;\n\n    }\n#line 8041 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 388:\n#line 3585 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE2;\n\n    }\n#line 8051 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 389:\n#line 3590 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE3;\n\n    }\n#line 8061 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 390:\n#line 3595 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE4;\n\n    }\n#line 8071 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 391:\n#line 3600 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE5;\n\n    }\n#line 8081 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 392:\n#line 3605 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE6;\n\n    }\n#line 8091 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 393:\n#line 3610 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE7;\n\n    }\n#line 8101 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 394:\n#line 3615 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE8;\n\n    }\n#line 8111 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 395:\n#line 3620 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE9;\n\n    }\n#line 8121 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 396:\n#line 3625 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE10;\n\n    }\n#line 8131 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 397:\n#line 3630 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE11;\n\n    }\n#line 8141 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 398:\n#line 3635 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE12;\n\n    }\n#line 8151 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 399:\n#line 3643 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_constraint_list_t) = new OptTableConstraintList();\n      (yyval.opt_table_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.opt_table_constraint_list_t)->table_constraint_list_ =\n          (yyvsp[0].table_constraint_list_t);\n\n    }\n#line 8162 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 400:\n#line 3649 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_constraint_list_t) = new OptTableConstraintList();\n      (yyval.opt_table_constraint_list_t)->case_idx_ = CASE1;\n\n    }\n#line 8172 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 401:\n#line 3657 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_list_t) = new TableConstraintList();\n      (yyval.table_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.table_constraint_list_t)->table_constraint_ =\n          (yyvsp[0].table_constraint_t);\n\n    }\n#line 8183 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 402:\n#line 3663 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_list_t) = new TableConstraintList();\n      (yyval.table_constraint_list_t)->case_idx_ = CASE1;\n      (yyval.table_constraint_list_t)->table_constraint_ =\n          (yyvsp[-2].table_constraint_t);\n      (yyval.table_constraint_list_t)->table_constraint_list_ =\n          (yyvsp[0].table_constraint_list_t);\n\n    }\n#line 8195 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 403:\n#line 3673 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE0;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-5].constraint_name_t);\n      (yyval.table_constraint_t)->indexed_column_list_ =\n          (yyvsp[-1].indexed_column_list_t);\n\n    }\n#line 8207 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 404:\n#line 3680 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE1;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-4].constraint_name_t);\n      (yyval.table_constraint_t)->indexed_column_list_ =\n          (yyvsp[-1].indexed_column_list_t);\n\n    }\n#line 8219 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 405:\n#line 3687 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE2;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-5].constraint_name_t);\n      (yyval.table_constraint_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.table_constraint_t)->opt_enforced_ = (yyvsp[0].opt_enforced_t);\n\n    }\n#line 8232 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 406:\n#line 3695 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE3;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-6].constraint_name_t);\n      (yyval.table_constraint_t)->column_name_list_ =\n          (yyvsp[-2].column_name_list_t);\n      (yyval.table_constraint_t)->reference_clause_ =\n          (yyvsp[0].reference_clause_t);\n      if ((yyval.table_constraint_t)) {\n        auto tmp1 = (yyval.table_constraint_t)->column_name_list_;\n        while (tmp1) {\n          auto tmp2 = tmp1->column_name_;\n          if (tmp2) {\n            auto tmp3 = tmp2->identifier_;\n            if (tmp3) {\n              tmp3->data_type_ = kDataColumnName;\n              tmp3->scope_ = 2;\n              tmp3->data_flag_ = (DATAFLAG)8;\n            }\n          }\n          tmp1 = tmp1->column_name_list_;\n        }\n      }\n\n    }\n#line 8261 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 407:\n#line 3722 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_enforced_t) = new OptEnforced();\n      (yyval.opt_enforced_t)->case_idx_ = CASE0;\n\n    }\n#line 8271 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 408:\n#line 3727 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_enforced_t) = new OptEnforced();\n      (yyval.opt_enforced_t)->case_idx_ = CASE1;\n\n    }\n#line 8281 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 409:\n#line 3732 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_enforced_t) = new OptEnforced();\n      (yyval.opt_enforced_t)->case_idx_ = CASE2;\n\n    }\n#line 8291 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n#line 8295 \"bison_parser.cpp\" /* yacc.c:1652  */\n    default:\n      break;\n  }\n  /* User semantic actions sometimes alter yychar, and that requires\n     that yytoken be updated with the new translation.  We take the\n     approach of translating immediately before every use of yytoken.\n     One alternative is translating here after every semantic action,\n     but that translation would be missed if the semantic action invokes\n     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or\n     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an\n     incorrect destructor might then be invoked immediately.  In the\n     case of YYERROR or YYBACKUP, subsequent parser actions might lead\n     to an incorrect destructor call or verbose syntax error message\n     before the lookahead is translated.  */\n  YY_SYMBOL_PRINT(\"-> $$ =\", yyr1[yyn], &yyval, &yyloc);\n\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n\n  *++yyvsp = yyval;\n  *++yylsp = yyloc;\n\n  /* Now 'shift' the result of the reduction.  Determine what state\n     that goes to, based on the state we popped back to and the rule\n     number reduced by.  */\n  {\n    const int yylhs = yyr1[yyn] - YYNTOKENS;\n    const int yyi = yypgoto[yylhs] + *yyssp;\n    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp\n                   ? yytable[yyi]\n                   : yydefgoto[yylhs]);\n  }\n\n  goto yynewstate;\n\n/*--------------------------------------.\n| yyerrlab -- here on detecting error.  |\n`--------------------------------------*/\nyyerrlab:\n  /* Make sure we have latest lookahead translation.  See comments at\n     user semantic actions for why this is necessary.  */\n  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE(yychar);\n\n  /* If not already recovering from an error, report this error.  */\n  if (!yyerrstatus) {\n    ++yynerrs;\n#if !YYERROR_VERBOSE\n    yyerror(&yylloc, result, scanner, YY_(\"syntax error\"));\n#else\n#define YYSYNTAX_ERROR yysyntax_error(&yymsg_alloc, &yymsg, yyssp, yytoken)\n    {\n      char const *yymsgp = YY_(\"syntax error\");\n      int yysyntax_error_status;\n      yysyntax_error_status = YYSYNTAX_ERROR;\n      if (yysyntax_error_status == 0)\n        yymsgp = yymsg;\n      else if (yysyntax_error_status == 1) {\n        if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n        yymsg = (char *)YYSTACK_ALLOC(yymsg_alloc);\n        if (!yymsg) {\n          yymsg = yymsgbuf;\n          yymsg_alloc = sizeof yymsgbuf;\n          yysyntax_error_status = 2;\n        } else {\n          yysyntax_error_status = YYSYNTAX_ERROR;\n          yymsgp = yymsg;\n        }\n      }\n      yyerror(&yylloc, result, scanner, yymsgp);\n      if (yysyntax_error_status == 2) goto yyexhaustedlab;\n    }\n#undef YYSYNTAX_ERROR\n#endif\n  }\n\n  yyerror_range[1] = yylloc;\n\n  if (yyerrstatus == 3) {\n    /* If just tried and failed to reuse lookahead token after an\n       error, discard it.  */\n\n    if (yychar <= YYEOF) {\n      /* Return failure if at end of input.  */\n      if (yychar == YYEOF) YYABORT;\n    } else {\n      yydestruct(\"Error: discarding\", yytoken, &yylval, &yylloc, result,\n                 scanner);\n      yychar = YYEMPTY;\n    }\n  }\n\n  /* Else will try to reuse lookahead token after shifting the error\n     token.  */\n  goto yyerrlab1;\n\n/*---------------------------------------------------.\n| yyerrorlab -- error raised explicitly by YYERROR.  |\n`---------------------------------------------------*/\nyyerrorlab:\n  /* Pacify compilers when the user code never invokes YYERROR and the\n     label yyerrorlab therefore never appears in user code.  */\n  if (0) YYERROR;\n\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYERROR.  */\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n  yystate = *yyssp;\n  goto yyerrlab1;\n\n/*-------------------------------------------------------------.\n| yyerrlab1 -- common code for both syntax error and YYERROR.  |\n`-------------------------------------------------------------*/\nyyerrlab1:\n  yyerrstatus = 3; /* Each real token shifted decrements this.  */\n\n  for (;;) {\n    yyn = yypact[yystate];\n    if (!yypact_value_is_default(yyn)) {\n      yyn += YYTERROR;\n      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) {\n        yyn = yytable[yyn];\n        if (0 < yyn) break;\n      }\n    }\n\n    /* Pop the current state because it cannot handle the error token.  */\n    if (yyssp == yyss) YYABORT;\n\n    yyerror_range[1] = *yylsp;\n    yydestruct(\"Error: popping\", yystos[yystate], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n    yystate = *yyssp;\n    YY_STACK_PRINT(yyss, yyssp);\n  }\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n\n  yyerror_range[2] = yylloc;\n  /* Using YYLLOC is tempting, but would change the location of\n     the lookahead.  YYLOC is available though.  */\n  YYLLOC_DEFAULT(yyloc, yyerror_range, 2);\n  *++yylsp = yyloc;\n\n  /* Shift the error token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yystos[yyn], yyvsp, yylsp);\n\n  yystate = yyn;\n  goto yynewstate;\n\n/*-------------------------------------.\n| yyacceptlab -- YYACCEPT comes here.  |\n`-------------------------------------*/\nyyacceptlab:\n  yyresult = 0;\n  goto yyreturn;\n\n/*-----------------------------------.\n| yyabortlab -- YYABORT comes here.  |\n`-----------------------------------*/\nyyabortlab:\n  yyresult = 1;\n  goto yyreturn;\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n/*-------------------------------------------------.\n| yyexhaustedlab -- memory exhaustion comes here.  |\n`-------------------------------------------------*/\nyyexhaustedlab:\n  yyerror(&yylloc, result, scanner, YY_(\"memory exhausted\"));\n  yyresult = 2;\n  /* Fall through.  */\n#endif\n\n/*-----------------------------------------------------.\n| yyreturn -- parsing is finished, return the result.  |\n`-----------------------------------------------------*/\nyyreturn:\n  if (yychar != YYEMPTY) {\n    /* Make sure we have latest lookahead translation.  See comments at\n       user semantic actions for why this is necessary.  */\n    yytoken = YYTRANSLATE(yychar);\n    yydestruct(\"Cleanup: discarding lookahead\", yytoken, &yylval, &yylloc,\n               result, scanner);\n  }\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYABORT or YYACCEPT.  */\n  YYPOPSTACK(yylen);\n  YY_STACK_PRINT(yyss, yyssp);\n  while (yyssp != yyss) {\n    yydestruct(\"Cleanup: popping\", yystos[*yyssp], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n  }\n#ifndef yyoverflow\n  if (yyss != yyssa) YYSTACK_FREE(yyss);\n#endif\n#if YYERROR_VERBOSE\n  if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n#endif\n  return yyresult;\n}\n#line 3739 \"bison.y\" /* yacc.c:1918  */\n"
  },
  {
    "path": "srcs/internal/mysql/parser/bison_parser.h",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison interface for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n#ifndef YY_FF_BISON_PARSER_H_INCLUDED\n#define YY_FF_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef FF_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define FF_DEBUG 1\n#else\n#define FF_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define FF_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined FF_DEBUG */\n#if FF_DEBUG\nextern int ff_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 8 \"bison.y\" /* yacc.c:1921  */\n\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n\n#line 61 \"bison_parser.h\" /* yacc.c:1921  */\n\n/* Token type.  */\n#ifndef FF_TOKENTYPE\n#define FF_TOKENTYPE\nenum ff_tokentype {\n  SQL_OP_NOTEQUAL = 258,\n  SQL_ENABLE = 259,\n  SQL_SIMPLE = 260,\n  SQL_TEXT = 261,\n  SQL_OVER = 262,\n  SQL_YEAR = 263,\n  SQL_INSERT_METHOD = 264,\n  SQL_OP_SEMI = 265,\n  SQL_BIGINT = 266,\n  SQL_LIMIT = 267,\n  SQL_OP_GREATERTHAN = 268,\n  SQL_WITH = 269,\n  SQL_ORDER = 270,\n  SQL_OPTION = 271,\n  SQL_LAST = 272,\n  SQL_UNBOUNDED = 273,\n  SQL_PRECEDING = 274,\n  SQL_EXCEPT = 275,\n  SQL_NUMERIC = 276,\n  SQL_OP_LESSTHAN = 277,\n  SQL_ACTION = 278,\n  SQL_BEFORE = 279,\n  SQL_OP_GREATEREQ = 280,\n  SQL_CHECK = 281,\n  SQL_COMPACT = 282,\n  SQL_FULL = 283,\n  SQL_NATURAL = 284,\n  SQL_BINARY = 285,\n  SQL_NATIONAL = 286,\n  SQL_ENUM = 287,\n  SQL_REDUNDANT = 288,\n  SQL_OP_ADD = 289,\n  SQL_CURRENT = 290,\n  SQL_MERGE = 291,\n  SQL_TRIGGER = 292,\n  SQL_COMPRESSED = 293,\n  SQL_OP_SUB = 294,\n  SQL_FALSE = 295,\n  SQL_UNIQUE = 296,\n  SQL_WHERE = 297,\n  SQL_MINUTE = 298,\n  SQL_FIRST = 299,\n  SQL_ON = 300,\n  SQL_PARTIAL = 301,\n  SQL_DOUBLE = 302,\n  SQL_AFTER = 303,\n  SQL_PRIMARY = 304,\n  SQL_MONTH = 305,\n  SQL_DEFERRED = 306,\n  SQL_VALUES = 307,\n  SQL_LONGTEXT = 308,\n  SQL_SQL = 309,\n  SQL_SHARED = 310,\n  SQL_VALIDATION = 311,\n  SQL_OR = 312,\n  SQL_VIEW = 313,\n  SQL_INDEX = 314,\n  SQL_GROUP = 315,\n  SQL_OP_MUL = 316,\n  SQL_INPLACE = 317,\n  SQL_FOREIGN = 318,\n  SQL_RESTRICT = 319,\n  SQL_SPATIAL = 320,\n  SQL_FOLLOWING = 321,\n  SQL_DEC = 322,\n  SQL_SELECT = 323,\n  SQL_NONE = 324,\n  SQL_DISTINCT = 325,\n  SQL_TRUE = 326,\n  SQL_DYNAMIC = 327,\n  SQL_BY = 328,\n  SQL_OP_MOD = 329,\n  SQL_INTEGER = 330,\n  SQL_SECURITY = 331,\n  SQL_IS = 332,\n  SQL_DEFINER = 333,\n  SQL_ROW = 334,\n  SQL_ENFORCED = 335,\n  SQL_END = 336,\n  SQL_RECURSIVE = 337,\n  SQL_FOR = 338,\n  SQL_TEMPTABLE = 339,\n  SQL_UNION = 340,\n  SQL_NULLS = 341,\n  SQL_UPDATE = 342,\n  SQL_ELSE = 343,\n  SQL_RANGE = 344,\n  SQL_SET = 345,\n  SQL_INVOKER = 346,\n  SQL_OFFSET = 347,\n  SQL_INDEXED = 348,\n  SQL_FORCE = 349,\n  SQL_NCHAR = 350,\n  SQL_AND = 351,\n  SQL_INITIALLY = 352,\n  SQL_PRECISION = 353,\n  SQL_FILTER = 354,\n  SQL_WITHOUT = 355,\n  SQL_NOT = 356,\n  SQL_DELETE = 357,\n  SQL_DEFFERRABLE = 358,\n  SQL_REAL = 359,\n  SQL_THEN = 360,\n  SQL_UNDEFINED = 361,\n  SQL_DEFAULT = 362,\n  SQL_CROSS = 363,\n  SQL_CHAR = 364,\n  SQL_REFERENCES = 365,\n  SQL_OP_XOR = 366,\n  SQL_CASE = 367,\n  SQL_FIXED = 368,\n  SQL_HOUR = 369,\n  SQL_NO = 370,\n  SQL_COLUMN = 371,\n  SQL_LOCAL = 372,\n  SQL_DROP = 373,\n  SQL_REPLACE = 374,\n  SQL_ASC = 375,\n  SQL_OP_COMMA = 376,\n  SQL_DISABLE = 377,\n  SQL_TABLE = 378,\n  SQL_ARRAY = 379,\n  SQL_IF = 380,\n  SQL_EXTRACT = 381,\n  SQL_LEFT = 382,\n  SQL_FULLTEXT = 383,\n  SQL_HASH = 384,\n  SQL_ALGORITHM = 385,\n  SQL_LOCK = 386,\n  SQL_DECIMAL = 387,\n  SQL_PARTITION = 388,\n  SQL_CASCADE = 389,\n  SQL_ADD = 390,\n  SQL_BETWEEN = 391,\n  SQL_OP_LESSEQ = 392,\n  SQL_MATCH = 393,\n  SQL_ALL = 394,\n  SQL_ROWS = 395,\n  SQL_JOIN = 396,\n  SQL_LIKE = 397,\n  SQL_OP_RP = 398,\n  SQL_IGNORE = 399,\n  SQL_INT = 400,\n  SQL_MEDIUMTEXT = 401,\n  SQL_BOOLEAN = 402,\n  SQL_KEY = 403,\n  SQL_EACH = 404,\n  SQL_USING = 405,\n  SQL_RENAME = 406,\n  SQL_DO = 407,\n  SQL_OP_LP = 408,\n  SQL_CHARACTER = 409,\n  SQL_UMINUS = 410,\n  SQL_CAST = 411,\n  SQL_GROUPS = 412,\n  SQL_OUTER = 413,\n  SQL_NULL = 414,\n  SQL_SMALLINT = 415,\n  SQL_EXCLUSIVE = 416,\n  SQL_TEMPORARY = 417,\n  SQL_CONSTRAINT = 418,\n  SQL_CREATE = 419,\n  SQL_OP_LBRACKET = 420,\n  SQL_WHEN = 421,\n  SQL_IMMEDIATE = 422,\n  SQL_TO = 423,\n  SQL_BTREE = 424,\n  SQL_DAY = 425,\n  SQL_CONFLICT = 426,\n  SQL_ROW_FORMAT = 427,\n  SQL_OP_RBRACKET = 428,\n  SQL_EXISTS = 429,\n  SQL_INSERT = 430,\n  SQL_KEYS = 431,\n  SQL_INTO = 432,\n  SQL_OP_DIVIDE = 433,\n  SQL_CASCADED = 434,\n  SQL_ISNULL = 435,\n  SQL_AS = 436,\n  SQL_INNER = 437,\n  SQL_INTERSECT = 438,\n  SQL_IN = 439,\n  SQL_OP_EQUAL = 440,\n  SQL_VARCHAR = 441,\n  SQL_COPY = 442,\n  SQL_ALTER = 443,\n  SQL_DESC = 444,\n  SQL_FROM = 445,\n  SQL_TINYTEXT = 446,\n  SQL_FLOAT = 447,\n  SQL_SECOND = 448,\n  SQL_WINDOW = 449,\n  SQL_NOTHING = 450,\n  SQL_HAVING = 451,\n  SQL_INTLITERAL = 452,\n  SQL_FLOATLITERAL = 453,\n  SQL_IDENTIFIER = 454,\n  SQL_STRINGLITERAL = 455\n};\n#endif\n\n/* Value type.  */\n#if !defined FF_STYPE && !defined FF_STYPE_IS_DECLARED\n#line 30 \"bison.y\" /* yacc.c:1921  */\nunion FF_STYPE {\n#line 30 \"bison.y\" /* yacc.c:1921  */\n\n  long ival;\n  char* sval;\n  double fval;\n  Program* program_t;\n  Stmtlist* stmtlist_t;\n  Stmt* stmt_t;\n  CreateStmt* create_stmt_t;\n  DropStmt* drop_stmt_t;\n  AlterStmt* alter_stmt_t;\n  SelectStmt* select_stmt_t;\n  SelectWithParens* select_with_parens_t;\n  SelectNoParens* select_no_parens_t;\n  SelectClauseList* select_clause_list_t;\n  SelectClause* select_clause_t;\n  CombineClause* combine_clause_t;\n  OptFromClause* opt_from_clause_t;\n  SelectTarget* select_target_t;\n  OptWindowClause* opt_window_clause_t;\n  WindowClause* window_clause_t;\n  WindowDefList* window_def_list_t;\n  WindowDef* window_def_t;\n  WindowName* window_name_t;\n  Window* window_t;\n  OptPartition* opt_partition_t;\n  OptFrameClause* opt_frame_clause_t;\n  RangeOrRows* range_or_rows_t;\n  FrameBoundStart* frame_bound_start_t;\n  FrameBoundEnd* frame_bound_end_t;\n  FrameBound* frame_bound_t;\n  OptExistWindowName* opt_exist_window_name_t;\n  OptGroupClause* opt_group_clause_t;\n  OptHavingClause* opt_having_clause_t;\n  OptWhereClause* opt_where_clause_t;\n  WhereClause* where_clause_t;\n  FromClause* from_clause_t;\n  TableRef* table_ref_t;\n  OptIndex* opt_index_t;\n  OptOn* opt_on_t;\n  OptUsing* opt_using_t;\n  ColumnNameList* column_name_list_t;\n  OptTablePrefix* opt_table_prefix_t;\n  JoinOp* join_op_t;\n  OptJoinType* opt_join_type_t;\n  ExprList* expr_list_t;\n  OptLimitClause* opt_limit_clause_t;\n  LimitClause* limit_clause_t;\n  OptLimitRowCount* opt_limit_row_count_t;\n  OptOrderClause* opt_order_clause_t;\n  OptOrderNulls* opt_order_nulls_t;\n  OrderItemList* order_item_list_t;\n  OrderItem* order_item_t;\n  OptOrderBehavior* opt_order_behavior_t;\n  OptWithClause* opt_with_clause_t;\n  CteTableList* cte_table_list_t;\n  CteTable* cte_table_t;\n  CteTableName* cte_table_name_t;\n  OptAllOrDistinct* opt_all_or_distinct_t;\n  CreateTableStmt* create_table_stmt_t;\n  CreateIndexStmt* create_index_stmt_t;\n  CreateTriggerStmt* create_trigger_stmt_t;\n  CreateViewStmt* create_view_stmt_t;\n  OptTableOptionList* opt_table_option_list_t;\n  TableOptionList* table_option_list_t;\n  TableOption* table_option_t;\n  OptOpComma* opt_op_comma_t;\n  OptIgnoreOrReplace* opt_ignore_or_replace_t;\n  OptViewAlgorithm* opt_view_algorithm_t;\n  OptSqlSecurity* opt_sql_security_t;\n  OptIndexOption* opt_index_option_t;\n  OptExtraOption* opt_extra_option_t;\n  IndexAlgorithmOption* index_algorithm_option_t;\n  LockOption* lock_option_t;\n  OptOpEqual* opt_op_equal_t;\n  TriggerEvents* trigger_events_t;\n  TriggerName* trigger_name_t;\n  TriggerActionTime* trigger_action_time_t;\n  DropIndexStmt* drop_index_stmt_t;\n  DropTableStmt* drop_table_stmt_t;\n  OptRestrictOrCascade* opt_restrict_or_cascade_t;\n  DropTriggerStmt* drop_trigger_stmt_t;\n  DropViewStmt* drop_view_stmt_t;\n  InsertStmt* insert_stmt_t;\n  InsertRest* insert_rest_t;\n  SuperValuesList* super_values_list_t;\n  ValuesList* values_list_t;\n  OptOnConflict* opt_on_conflict_t;\n  OptConflictExpr* opt_conflict_expr_t;\n  IndexedColumnList* indexed_column_list_t;\n  IndexedColumn* indexed_column_t;\n  UpdateStmt* update_stmt_t;\n  AlterAction* alter_action_t;\n  AlterConstantAction* alter_constant_action_t;\n  ColumnDefList* column_def_list_t;\n  ColumnDef* column_def_t;\n  OptColumnConstraintList* opt_column_constraint_list_t;\n  ColumnConstraintList* column_constraint_list_t;\n  ColumnConstraint* column_constraint_t;\n  OptReferenceClause* opt_reference_clause_t;\n  OptCheck* opt_check_t;\n  ConstraintType* constraint_type_t;\n  ReferenceClause* reference_clause_t;\n  OptForeignKey* opt_foreign_key_t;\n  OptForeignKeyActions* opt_foreign_key_actions_t;\n  ForeignKeyActions* foreign_key_actions_t;\n  KeyActions* key_actions_t;\n  OptConstraintAttributeSpec* opt_constraint_attribute_spec_t;\n  OptInitialTime* opt_initial_time_t;\n  ConstraintName* constraint_name_t;\n  OptTemp* opt_temp_t;\n  OptCheckOption* opt_check_option_t;\n  OptColumnNameListP* opt_column_name_list_p_t;\n  SetClauseList* set_clause_list_t;\n  SetClause* set_clause_t;\n  OptAsAlias* opt_as_alias_t;\n  Expr* expr_t;\n  Operand* operand_t;\n  CastExpr* cast_expr_t;\n  ScalarExpr* scalar_expr_t;\n  UnaryExpr* unary_expr_t;\n  BinaryExpr* binary_expr_t;\n  LogicExpr* logic_expr_t;\n  InExpr* in_expr_t;\n  CaseExpr* case_expr_t;\n  BetweenExpr* between_expr_t;\n  ExistsExpr* exists_expr_t;\n  FunctionExpr* function_expr_t;\n  OptDistinct* opt_distinct_t;\n  OptFilterClause* opt_filter_clause_t;\n  OptOverClause* opt_over_clause_t;\n  CaseList* case_list_t;\n  CaseClause* case_clause_t;\n  CompExpr* comp_expr_t;\n  ExtractExpr* extract_expr_t;\n  DatetimeField* datetime_field_t;\n  ArrayExpr* array_expr_t;\n  ArrayIndex* array_index_t;\n  Literal* literal_t;\n  StringLiteral* string_literal_t;\n  BoolLiteral* bool_literal_t;\n  NumLiteral* num_literal_t;\n  IntLiteral* int_literal_t;\n  FloatLiteral* float_literal_t;\n  OptColumn* opt_column_t;\n  TriggerBody* trigger_body_t;\n  OptIfNotExist* opt_if_not_exist_t;\n  OptIfExist* opt_if_exist_t;\n  Identifier* identifier_t;\n  AsAlias* as_alias_t;\n  TableName* table_name_t;\n  ColumnName* column_name_t;\n  OptIndexKeyword* opt_index_keyword_t;\n  ViewName* view_name_t;\n  FunctionName* function_name_t;\n  BinaryOp* binary_op_t;\n  OptNot* opt_not_t;\n  Name* name_t;\n  TypeName* type_name_t;\n  CharacterType* character_type_t;\n  CharacterWithLength* character_with_length_t;\n  CharacterWithoutLength* character_without_length_t;\n  CharacterConflicta* character_conflicta_t;\n  NumericType* numeric_type_t;\n  OptTableConstraintList* opt_table_constraint_list_t;\n  TableConstraintList* table_constraint_list_t;\n  TableConstraint* table_constraint_t;\n  OptEnforced* opt_enforced_t;\n\n#line 443 \"bison_parser.h\" /* yacc.c:1921  */\n};\n#line 30 \"bison.y\" /* yacc.c:1921  */\ntypedef union FF_STYPE FF_STYPE;\n#define FF_STYPE_IS_TRIVIAL 1\n#define FF_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined FF_LTYPE && !defined FF_LTYPE_IS_DECLARED\ntypedef struct FF_LTYPE FF_LTYPE;\nstruct FF_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define FF_LTYPE_IS_DECLARED 1\n#define FF_LTYPE_IS_TRIVIAL 1\n#endif\n\nint ff_parse(Program* result, yyscan_t scanner);\n\n#endif /* !YY_FF_BISON_PARSER_H_INCLUDED  */\n"
  },
  {
    "path": "srcs/internal/mysql/parser/bison_parser.output",
    "content": "Grammar\n\n    0 $accept: program $end\n\n    1 program: stmtlist\n\n    2 stmtlist: stmt OP_SEMI stmtlist\n    3         | stmt OP_SEMI\n\n    4 stmt: create_stmt\n    5     | drop_stmt\n    6     | select_stmt\n    7     | update_stmt\n    8     | insert_stmt\n    9     | alter_stmt\n\n   10 create_stmt: create_table_stmt\n   11            | create_index_stmt\n   12            | create_trigger_stmt\n   13            | create_view_stmt\n\n   14 drop_stmt: drop_index_stmt\n   15          | drop_table_stmt\n   16          | drop_trigger_stmt\n   17          | drop_view_stmt\n\n   18 alter_stmt: ALTER TABLE table_name alter_action\n\n   19 select_stmt: select_no_parens\n   20            | select_with_parens\n\n   21 select_with_parens: OP_LP select_no_parens OP_RP\n   22                   | OP_LP select_with_parens OP_RP\n\n   23 select_no_parens: opt_with_clause select_clause_list opt_order_clause opt_limit_clause\n\n   24 select_clause_list: select_clause\n   25                   | select_clause combine_clause select_clause_list\n\n   26 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n   27 combine_clause: UNION\n   28               | INTERSECT\n   29               | EXCEPT\n\n   30 opt_from_clause: from_clause\n   31                | %empty\n\n   32 select_target: expr_list\n\n   33 opt_window_clause: window_clause\n   34                  | %empty\n\n   35 window_clause: WINDOW window_def_list\n\n   36 window_def_list: window_def\n   37                | window_def OP_COMMA window_def_list\n\n   38 window_def: window_name AS OP_LP window OP_RP\n\n   39 window_name: identifier\n\n   40 window: opt_exist_window_name opt_partition opt_order_clause opt_frame_clause\n\n   41 opt_partition: PARTITION BY expr_list\n   42              | %empty\n\n   43 opt_frame_clause: range_or_rows frame_bound_start\n   44                 | range_or_rows BETWEEN frame_bound_start AND frame_bound_end\n   45                 | %empty\n\n   46 range_or_rows: RANGE\n   47              | ROWS\n   48              | GROUPS\n\n   49 frame_bound_start: frame_bound\n   50                  | UNBOUNDED PRECEDING\n\n   51 frame_bound_end: frame_bound\n   52                | UNBOUNDED FOLLOWING\n\n   53 frame_bound: expr PRECEDING\n   54            | expr FOLLOWING\n   55            | CURRENT ROW\n\n   56 opt_exist_window_name: identifier\n   57                      | %empty\n\n   58 opt_group_clause: GROUP BY expr_list opt_having_clause\n   59                 | %empty\n\n   60 opt_having_clause: HAVING expr\n   61                  | %empty\n\n   62 opt_where_clause: where_clause\n   63                 | %empty\n\n   64 where_clause: WHERE expr\n\n   65 from_clause: FROM table_ref\n\n   66 table_ref: opt_table_prefix table_name opt_as_alias opt_index opt_on opt_using\n   67          | opt_table_prefix function_name OP_LP expr_list OP_RP opt_as_alias opt_on opt_using\n   68          | opt_table_prefix OP_LP select_no_parens OP_RP opt_as_alias opt_on opt_using\n   69          | opt_table_prefix OP_LP table_ref OP_RP opt_as_alias opt_on opt_using\n\n   70 opt_index: INDEXED BY column_name\n   71          | NOT INDEXED\n   72          | %empty\n\n   73 opt_on: ON expr\n   74       | %empty\n\n   75 opt_using: USING OP_LP column_name_list OP_RP\n   76          | %empty\n\n   77 column_name_list: column_name\n   78                 | column_name OP_COMMA column_name_list\n\n   79 opt_table_prefix: table_ref join_op\n   80                 | %empty\n\n   81 join_op: OP_COMMA\n   82        | JOIN\n   83        | NATURAL opt_join_type JOIN\n\n   84 opt_join_type: LEFT\n   85              | LEFT OUTER\n   86              | INNER\n   87              | CROSS\n   88              | %empty\n\n   89 expr_list: expr opt_as_alias OP_COMMA expr_list\n   90          | expr opt_as_alias\n\n   91 opt_limit_clause: limit_clause\n   92                 | %empty\n\n   93 limit_clause: LIMIT expr\n   94             | LIMIT expr OFFSET expr\n   95             | LIMIT expr OP_COMMA expr\n\n   96 opt_limit_row_count: LIMIT expr\n   97                    | %empty\n\n   98 opt_order_clause: ORDER BY order_item_list\n   99                 | %empty\n\n  100 opt_order_nulls: NULLS FIRST\n  101                | NULLS LAST\n  102                | %empty\n\n  103 order_item_list: order_item\n  104                | order_item OP_COMMA order_item_list\n\n  105 order_item: expr opt_order_behavior opt_order_nulls\n\n  106 opt_order_behavior: ASC\n  107                   | DESC\n  108                   | %empty\n\n  109 opt_with_clause: WITH cte_table_list\n  110                | WITH RECURSIVE cte_table_list\n  111                | %empty\n\n  112 cte_table_list: cte_table\n  113               | cte_table OP_COMMA cte_table_list\n\n  114 cte_table: cte_table_name AS OP_LP select_stmt OP_RP\n\n  115 cte_table_name: table_name opt_column_name_list_p\n\n  116 opt_all_or_distinct: ALL\n  117                    | DISTINCT\n  118                    | %empty\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n  125 opt_table_option_list: table_option_list\n  126                      | %empty\n\n  127 table_option_list: table_option\n  128                  | table_option opt_op_comma table_option_list\n\n  129 table_option: INSERT_METHOD opt_op_equal NO\n  130             | INSERT_METHOD opt_op_equal FIRST\n  131             | INSERT_METHOD opt_op_equal LAST\n  132             | ROW_FORMAT opt_op_equal DEFAULT\n  133             | ROW_FORMAT opt_op_equal DYNAMIC\n  134             | ROW_FORMAT opt_op_equal FIXED\n  135             | ROW_FORMAT opt_op_equal COMPRESSED\n  136             | ROW_FORMAT opt_op_equal REDUNDANT\n  137             | ROW_FORMAT opt_op_equal COMPACT\n\n  138 opt_op_comma: OP_COMMA\n  139             | %empty\n\n  140 opt_ignore_or_replace: IGNORE\n  141                      | REPLACE\n  142                      | %empty\n\n  143 opt_view_algorithm: ALGORITHM OP_EQUAL UNDEFINED\n  144                   | ALGORITHM OP_EQUAL MERGE\n  145                   | ALGORITHM OP_EQUAL TEMPTABLE\n  146                   | %empty\n\n  147 opt_sql_security: SQL SECURITY DEFINER\n  148                 | SQL SECURITY INVOKER\n  149                 | %empty\n\n  150 opt_index_option: USING BTREE\n  151                 | USING HASH\n  152                 | %empty\n\n  153 opt_extra_option: index_algorithm_option\n  154                 | lock_option\n  155                 | %empty\n\n  156 index_algorithm_option: ALGORITHM opt_op_equal DEFAULT\n  157                       | ALGORITHM opt_op_equal INPLACE\n  158                       | ALGORITHM opt_op_equal COPY\n\n  159 lock_option: LOCK opt_op_equal DEFAULT\n  160            | LOCK opt_op_equal NONE\n  161            | LOCK opt_op_equal SHARED\n  162            | LOCK opt_op_equal EXCLUSIVE\n\n  163 opt_op_equal: OP_EQUAL\n  164             | %empty\n\n  165 trigger_events: DELETE\n  166               | INSERT\n  167               | UPDATE\n\n  168 trigger_name: identifier\n\n  169 trigger_action_time: BEFORE\n  170                    | AFTER\n\n  171 drop_index_stmt: DROP INDEX table_name opt_extra_option\n\n  172 drop_table_stmt: DROP opt_temp TABLE opt_if_exist table_name opt_restrict_or_cascade\n\n  173 opt_restrict_or_cascade: RESTRICT\n  174                        | CASCADE\n  175                        | %empty\n\n  176 drop_trigger_stmt: DROP TRIGGER opt_if_exist trigger_name\n\n  177 drop_view_stmt: DROP VIEW opt_if_exist view_name opt_restrict_or_cascade\n\n  178 insert_stmt: opt_with_clause INSERT INTO table_name opt_as_alias insert_rest opt_on_conflict\n\n  179 insert_rest: opt_column_name_list_p select_no_parens\n  180            | opt_column_name_list_p DEFAULT VALUES\n  181            | opt_column_name_list_p VALUES super_values_list\n\n  182 super_values_list: values_list\n  183                  | values_list OP_COMMA super_values_list\n\n  184 values_list: OP_LP expr_list OP_RP\n\n  185 opt_on_conflict: ON CONFLICT opt_conflict_expr DO NOTHING\n  186                | ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause\n  187                | %empty\n\n  188 opt_conflict_expr: OP_LP indexed_column_list OP_RP where_clause\n  189                  | %empty\n\n  190 indexed_column_list: indexed_column\n  191                    | indexed_column OP_COMMA indexed_column_list\n\n  192 indexed_column: expr opt_order_behavior\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n  194            | UPDATE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n  195 alter_action: RENAME TO table_name\n  196             | RENAME opt_column column_name TO column_name\n  197             | ADD opt_column column_def\n  198             | DROP opt_column column_name\n  199             | alter_constant_action\n\n  200 alter_constant_action: DROP PRIMARY KEY\n  201                      | FORCE\n  202                      | DISABLE KEYS\n  203                      | ENABLE KEYS\n  204                      | lock_option\n  205                      | WITH VALIDATION\n  206                      | WITHOUT VALIDATION\n\n  207 column_def_list: column_def\n  208                | column_def OP_COMMA column_def_list\n\n  209 column_def: identifier type_name opt_column_constraint_list\n\n  210 opt_column_constraint_list: column_constraint_list opt_check opt_reference_clause\n  211                           | %empty\n\n  212 column_constraint_list: column_constraint\n  213                       | column_constraint column_constraint_list\n\n  214 column_constraint: constraint_type\n\n  215 opt_reference_clause: opt_foreign_key reference_clause\n  216                     | %empty\n\n  217 opt_check: CHECK OP_LP expr OP_RP opt_enforced\n  218          | %empty\n\n  219 constraint_type: PRIMARY KEY\n  220                | NOT NULL\n  221                | UNIQUE\n\n  222 reference_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n  223 opt_foreign_key: FOREIGN KEY\n  224                | %empty\n\n  225 opt_foreign_key_actions: foreign_key_actions\n  226                        | %empty\n\n  227 foreign_key_actions: MATCH FULL\n  228                    | MATCH PARTIAL\n  229                    | MATCH SIMPLE\n  230                    | ON UPDATE key_actions\n  231                    | ON DELETE key_actions\n\n  232 key_actions: SET NULL\n  233            | SET DEFAULT\n  234            | CASCADE\n  235            | RESTRICT\n  236            | NO ACTION\n\n  237 opt_constraint_attribute_spec: DEFFERRABLE opt_initial_time\n  238                              | NOT DEFFERRABLE opt_initial_time\n  239                              | %empty\n\n  240 opt_initial_time: INITIALLY DEFERRED\n  241                 | INITIALLY IMMEDIATE\n  242                 | %empty\n\n  243 constraint_name: CONSTRAINT name\n\n  244 opt_temp: TEMPORARY\n  245         | %empty\n\n  246 opt_check_option: WITH CHECK OPTION\n  247                 | WITH CASCADED CHECK OPTION\n  248                 | WITH LOCAL CHECK OPTION\n  249                 | %empty\n\n  250 opt_column_name_list_p: OP_LP column_name_list OP_RP\n  251                       | %empty\n\n  252 set_clause_list: set_clause\n  253                | set_clause OP_COMMA set_clause_list\n\n  254 set_clause: column_name OP_EQUAL expr\n  255           | OP_LP column_name_list OP_RP OP_EQUAL expr\n\n  256 opt_as_alias: as_alias\n  257             | %empty\n\n  258 expr: operand\n  259     | between_expr\n  260     | exists_expr\n  261     | in_expr\n  262     | cast_expr\n  263     | logic_expr\n\n  264 operand: OP_LP expr_list OP_RP\n  265        | array_index\n  266        | scalar_expr\n  267        | unary_expr\n  268        | binary_expr\n  269        | case_expr\n  270        | extract_expr\n  271        | array_expr\n  272        | function_expr\n  273        | OP_LP select_no_parens OP_RP\n\n  274 cast_expr: CAST OP_LP expr AS type_name OP_RP\n\n  275 scalar_expr: column_name\n  276            | literal\n\n  277 unary_expr: OP_SUB operand\n  278           | NOT operand\n  279           | operand ISNULL\n  280           | operand IS NULL\n  281           | operand IS NOT NULL\n  282           | NULL\n  283           | OP_MUL\n\n  284 binary_expr: comp_expr\n  285            | operand binary_op operand\n  286            | operand LIKE operand\n  287            | operand NOT LIKE operand\n\n  288 logic_expr: expr AND expr\n  289           | expr OR expr\n\n  290 in_expr: operand opt_not IN OP_LP select_no_parens OP_RP\n  291        | operand opt_not IN OP_LP expr_list OP_RP\n  292        | operand opt_not IN table_name\n\n  293 case_expr: CASE expr case_list END\n  294          | CASE case_list END\n  295          | CASE expr case_list ELSE expr END\n  296          | CASE case_list ELSE expr END\n\n  297 between_expr: operand BETWEEN operand AND operand\n  298             | operand NOT BETWEEN operand AND operand\n\n  299 exists_expr: opt_not EXISTS OP_LP select_no_parens OP_RP\n\n  300 function_expr: function_name OP_LP OP_RP opt_filter_clause opt_over_clause\n  301              | function_name OP_LP opt_distinct expr_list OP_RP opt_filter_clause opt_over_clause\n\n  302 opt_distinct: DISTINCT\n  303             | %empty\n\n  304 opt_filter_clause: FILTER OP_LP WHERE expr OP_RP\n  305                  | %empty\n\n  306 opt_over_clause: OVER OP_LP window OP_RP\n  307                | OVER window_name\n  308                | %empty\n\n  309 case_list: case_clause\n  310          | case_clause case_list\n\n  311 case_clause: WHEN expr THEN expr\n\n  312 comp_expr: operand OP_EQUAL operand\n  313          | operand OP_NOTEQUAL operand\n  314          | operand OP_GREATERTHAN operand\n  315          | operand OP_LESSTHAN operand\n  316          | operand OP_LESSEQ operand\n  317          | operand OP_GREATEREQ operand\n\n  318 extract_expr: EXTRACT OP_LP datetime_field FROM expr OP_RP\n\n  319 datetime_field: SECOND\n  320               | MINUTE\n  321               | HOUR\n  322               | DAY\n  323               | MONTH\n  324               | YEAR\n\n  325 array_expr: ARRAY OP_LBRACKET expr_list OP_RBRACKET\n\n  326 array_index: operand OP_LBRACKET int_literal OP_RBRACKET\n\n  327 literal: string_literal\n  328        | bool_literal\n  329        | num_literal\n\n  330 string_literal: STRINGLITERAL\n\n  331 bool_literal: TRUE\n  332             | FALSE\n\n  333 num_literal: int_literal\n  334            | float_literal\n\n  335 int_literal: INTLITERAL\n\n  336 float_literal: FLOATLITERAL\n\n  337 opt_column: COLUMN\n  338           | %empty\n\n  339 trigger_body: drop_stmt\n  340             | update_stmt\n  341             | insert_stmt\n  342             | alter_stmt\n\n  343 opt_if_not_exist: IF NOT EXISTS\n  344                 | %empty\n\n  345 opt_if_exist: IF EXISTS\n  346             | %empty\n\n  347 identifier: IDENTIFIER\n\n  348 as_alias: AS identifier\n\n  349 table_name: identifier\n\n  350 column_name: identifier\n\n  351 opt_index_keyword: UNIQUE\n  352                  | FULLTEXT\n  353                  | SPATIAL\n  354                  | %empty\n\n  355 view_name: identifier\n\n  356 function_name: identifier\n\n  357 binary_op: OP_ADD\n  358          | OP_SUB\n  359          | OP_DIVIDE\n  360          | OP_MOD\n  361          | OP_MUL\n  362          | OP_XOR\n\n  363 opt_not: NOT\n  364        | %empty\n\n  365 name: identifier\n\n  366 type_name: numeric_type\n  367          | character_type\n\n  368 character_type: character_with_length\n  369               | character_without_length\n\n  370 character_with_length: character_conflicta OP_LP int_literal OP_RP\n\n  371 character_without_length: character_conflicta\n  372                         | SET\n  373                         | ENUM\n  374                         | BINARY\n\n  375 character_conflicta: CHARACTER\n  376                    | CHAR\n  377                    | VARCHAR\n  378                    | TEXT\n  379                    | TINYTEXT\n  380                    | MEDIUMTEXT\n  381                    | LONGTEXT\n  382                    | NATIONAL CHARACTER\n  383                    | NATIONAL CHAR\n  384                    | NCHAR\n\n  385 numeric_type: INT\n  386             | INTEGER\n  387             | SMALLINT\n  388             | BIGINT\n  389             | REAL\n  390             | FLOAT\n  391             | FIXED\n  392             | DOUBLE\n  393             | DOUBLE PRECISION\n  394             | DECIMAL\n  395             | DEC\n  396             | NUMERIC\n  397             | BOOLEAN\n\n  398 opt_table_constraint_list: table_constraint_list\n  399                          | %empty\n\n  400 table_constraint_list: table_constraint\n  401                      | table_constraint OP_COMMA table_constraint_list\n\n  402 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP\n  403                 | constraint_name UNIQUE OP_LP indexed_column_list OP_RP\n  404                 | constraint_name CHECK OP_LP expr OP_RP opt_enforced\n  405                 | constraint_name FOREIGN KEY OP_LP column_name_list OP_RP reference_clause\n\n  406 opt_enforced: ENFORCED\n  407             | NOT ENFORCED\n  408             | %empty\n\n\nTerminals, with rules where they appear\n\n$end (0) 0\nerror (256)\nOP_NOTEQUAL (258) 313\nENABLE (259) 203\nSIMPLE (260) 229\nTEXT (261) 378\nOVER (262) 306 307\nYEAR (263) 324\nINSERT_METHOD (264) 129 130 131\nOP_SEMI (265) 2 3\nBIGINT (266) 388\nLIMIT (267) 93 94 95 96\nOP_GREATERTHAN (268) 314\nWITH (269) 109 110 205 246 247 248\nORDER (270) 98\nOPTION (271) 246 247 248\nLAST (272) 101 131\nUNBOUNDED (273) 50 52\nPRECEDING (274) 50 53\nEXCEPT (275) 29\nNUMERIC (276) 396\nOP_LESSTHAN (277) 315\nACTION (278) 236\nBEFORE (279) 169\nOP_GREATEREQ (280) 317\nCHECK (281) 217 246 247 248 404\nCOMPACT (282) 137\nFULL (283) 227\nNATURAL (284) 83\nBINARY (285) 374\nNATIONAL (286) 382 383\nENUM (287) 373\nREDUNDANT (288) 136\nOP_ADD (289) 357\nCURRENT (290) 55\nMERGE (291) 144\nTRIGGER (292) 122 176\nCOMPRESSED (293) 135\nOP_SUB (294) 277 358\nFALSE (295) 332\nUNIQUE (296) 221 351 403\nWHERE (297) 64 304\nMINUTE (298) 320\nFIRST (299) 100 130\nON (300) 73 121 122 185 186 230 231\nPARTIAL (301) 228\nDOUBLE (302) 392 393\nAFTER (303) 170\nPRIMARY (304) 200 219 402\nMONTH (305) 323\nDEFERRED (306) 240\nVALUES (307) 180 181\nLONGTEXT (308) 381\nSQL (309) 147 148\nSHARED (310) 161\nVALIDATION (311) 205 206\nOR (312) 124 289\nVIEW (313) 123 124 177\nINDEX (314) 121 171\nGROUP (315) 58\nOP_MUL (316) 283 361\nINPLACE (317) 157\nFOREIGN (318) 223 405\nRESTRICT (319) 173 235\nSPATIAL (320) 353\nFOLLOWING (321) 52 54\nDEC (322) 395\nSELECT (323) 26\nNONE (324) 160\nDISTINCT (325) 117 302\nTRUE (326) 331\nDYNAMIC (327) 133\nBY (328) 41 58 70 98\nOP_MOD (329) 360\nINTEGER (330) 386\nSECURITY (331) 147 148\nIS (332) 280 281\nDEFINER (333) 147\nROW (334) 55 122\nENFORCED (335) 406 407\nEND (336) 293 294 295 296\nRECURSIVE (337) 110\nFOR (338) 122\nTEMPTABLE (339) 145\nUNION (340) 27\nNULLS (341) 100 101\nUPDATE (342) 167 186 193 194 230\nELSE (343) 295 296\nRANGE (344) 46\nSET (345) 193 194 232 233 372\nINVOKER (346) 148\nOFFSET (347) 94\nINDEXED (348) 70 71\nFORCE (349) 201\nNCHAR (350) 384\nAND (351) 44 288 297 298\nINITIALLY (352) 240 241\nPRECISION (353) 393\nFILTER (354) 304\nWITHOUT (355) 206\nNOT (356) 71 220 238 278 281 287 298 343 363 407\nDELETE (357) 165 231\nDEFFERRABLE (358) 237 238\nREAL (359) 389\nTHEN (360) 311\nUNDEFINED (361) 143\nDEFAULT (362) 132 156 159 180 233\nCROSS (363) 87\nCHAR (364) 376 383\nREFERENCES (365) 222\nOP_XOR (366) 362\nCASE (367) 293 294 295 296\nFIXED (368) 134 391\nHOUR (369) 321\nNO (370) 129 236\nCOLUMN (371) 337\nLOCAL (372) 248\nDROP (373) 171 172 176 177 198 200\nREPLACE (374) 124 141\nASC (375) 106\nOP_COMMA (376) 37 78 81 89 95 104 113 138 183 191 208 253 401\nDISABLE (377) 202\nTABLE (378) 18 119 120 172\nARRAY (379) 325\nIF (380) 343 345\nEXTRACT (381) 318\nLEFT (382) 84 85\nFULLTEXT (383) 352\nHASH (384) 151\nALGORITHM (385) 143 144 145 156 157 158\nLOCK (386) 159 160 161 162\nDECIMAL (387) 394\nPARTITION (388) 41\nCASCADE (389) 174 234\nADD (390) 197\nBETWEEN (391) 44 297 298\nOP_LESSEQ (392) 316\nMATCH (393) 227 228 229\nALL (394) 116\nROWS (395) 47\nJOIN (396) 82 83\nLIKE (397) 286 287\nOP_RP (398) 21 22 38 67 68 69 75 114 120 121 184 188 217 250 255 264\n    273 274 290 291 299 300 301 304 306 318 370 402 403 404 405\nIGNORE (399) 140 193\nINT (400) 385\nMEDIUMTEXT (401) 380\nBOOLEAN (402) 397\nKEY (403) 200 219 223 402 405\nEACH (404) 122\nUSING (405) 75 150 151\nRENAME (406) 195 196\nDO (407) 185 186\nOP_LP (408) 21 22 38 67 68 69 75 114 120 121 184 188 217 250 255 264\n    273 274 290 291 299 300 301 304 306 318 370 402 403 404 405\nCHARACTER (409) 375 382\nUMINUS (410)\nCAST (411) 274\nGROUPS (412) 48\nOUTER (413) 85\nNULL (414) 220 232 280 281 282\nSMALLINT (415) 387\nEXCLUSIVE (416) 162\nTEMPORARY (417) 244\nCONSTRAINT (418) 243\nCREATE (419) 119 120 121 122 123 124\nOP_LBRACKET (420) 325 326\nWHEN (421) 311\nIMMEDIATE (422) 241\nTO (423) 195 196\nBTREE (424) 150\nDAY (425) 322\nCONFLICT (426) 185 186\nROW_FORMAT (427) 132 133 134 135 136 137\nOP_RBRACKET (428) 325 326\nEXISTS (429) 299 343 345\nINSERT (430) 166 178\nKEYS (431) 202 203\nINTO (432) 178\nOP_DIVIDE (433) 359\nCASCADED (434) 247\nISNULL (435) 279\nAS (436) 38 114 119 123 124 274 348\nINNER (437) 86\nINTERSECT (438) 28\nIN (439) 290 291 292\nOP_EQUAL (440) 143 144 145 163 254 255 312\nVARCHAR (441) 377\nCOPY (442) 158\nALTER (443) 18\nDESC (444) 107\nFROM (445) 65 318\nTINYTEXT (446) 379\nFLOAT (447) 390\nSECOND (448) 319\nWINDOW (449) 35\nNOTHING (450) 185\nHAVING (451) 60\nINTLITERAL <ival> (452) 335\nFLOATLITERAL <fval> (453) 336\nIDENTIFIER <sval> (454) 347\nSTRINGLITERAL <sval> (455) 330\n\n\nNonterminals, with rules where they appear\n\n$accept (201)\n    on left: 0\nprogram <program_t> (202)\n    on left: 1, on right: 0\nstmtlist <stmtlist_t> (203)\n    on left: 2 3, on right: 1 2\nstmt <stmt_t> (204)\n    on left: 4 5 6 7 8 9, on right: 2 3\ncreate_stmt <create_stmt_t> (205)\n    on left: 10 11 12 13, on right: 4\ndrop_stmt <drop_stmt_t> (206)\n    on left: 14 15 16 17, on right: 5 339\nalter_stmt <alter_stmt_t> (207)\n    on left: 18, on right: 9 342\nselect_stmt <select_stmt_t> (208)\n    on left: 19 20, on right: 6 114 119 123 124\nselect_with_parens <select_with_parens_t> (209)\n    on left: 21 22, on right: 20 22\nselect_no_parens <select_no_parens_t> (210)\n    on left: 23, on right: 19 21 68 179 273 290 299\nselect_clause_list <select_clause_list_t> (211)\n    on left: 24 25, on right: 23 25\nselect_clause <select_clause_t> (212)\n    on left: 26, on right: 24 25\ncombine_clause <combine_clause_t> (213)\n    on left: 27 28 29, on right: 25\nopt_from_clause <opt_from_clause_t> (214)\n    on left: 30 31, on right: 26\nselect_target <select_target_t> (215)\n    on left: 32, on right: 26\nopt_window_clause <opt_window_clause_t> (216)\n    on left: 33 34, on right: 26\nwindow_clause <window_clause_t> (217)\n    on left: 35, on right: 33\nwindow_def_list <window_def_list_t> (218)\n    on left: 36 37, on right: 35 37\nwindow_def <window_def_t> (219)\n    on left: 38, on right: 36 37\nwindow_name <window_name_t> (220)\n    on left: 39, on right: 38 307\nwindow <window_t> (221)\n    on left: 40, on right: 38 306\nopt_partition <opt_partition_t> (222)\n    on left: 41 42, on right: 40\nopt_frame_clause <opt_frame_clause_t> (223)\n    on left: 43 44 45, on right: 40\nrange_or_rows <range_or_rows_t> (224)\n    on left: 46 47 48, on right: 43 44\nframe_bound_start <frame_bound_start_t> (225)\n    on left: 49 50, on right: 43 44\nframe_bound_end <frame_bound_end_t> (226)\n    on left: 51 52, on right: 44\nframe_bound <frame_bound_t> (227)\n    on left: 53 54 55, on right: 49 51\nopt_exist_window_name <opt_exist_window_name_t> (228)\n    on left: 56 57, on right: 40\nopt_group_clause <opt_group_clause_t> (229)\n    on left: 58 59, on right: 26\nopt_having_clause <opt_having_clause_t> (230)\n    on left: 60 61, on right: 58\nopt_where_clause <opt_where_clause_t> (231)\n    on left: 62 63, on right: 26 193 194\nwhere_clause <where_clause_t> (232)\n    on left: 64, on right: 62 186 188\nfrom_clause <from_clause_t> (233)\n    on left: 65, on right: 30\ntable_ref <table_ref_t> (234)\n    on left: 66 67 68 69, on right: 65 69 79\nopt_index <opt_index_t> (235)\n    on left: 70 71 72, on right: 66\nopt_on <opt_on_t> (236)\n    on left: 73 74, on right: 66 67 68 69\nopt_using <opt_using_t> (237)\n    on left: 75 76, on right: 66 67 68 69\ncolumn_name_list <column_name_list_t> (238)\n    on left: 77 78, on right: 75 78 250 255 405\nopt_table_prefix <opt_table_prefix_t> (239)\n    on left: 79 80, on right: 66 67 68 69\njoin_op <join_op_t> (240)\n    on left: 81 82 83, on right: 79\nopt_join_type <opt_join_type_t> (241)\n    on left: 84 85 86 87 88, on right: 83\nexpr_list <expr_list_t> (242)\n    on left: 89 90, on right: 32 41 58 67 89 184 264 291 301 325\nopt_limit_clause <opt_limit_clause_t> (243)\n    on left: 91 92, on right: 23\nlimit_clause <limit_clause_t> (244)\n    on left: 93 94 95, on right: 91\nopt_limit_row_count <opt_limit_row_count_t> (245)\n    on left: 96 97, on right: 193 194\nopt_order_clause <opt_order_clause_t> (246)\n    on left: 98 99, on right: 23 40 193 194\nopt_order_nulls <opt_order_nulls_t> (247)\n    on left: 100 101 102, on right: 105\norder_item_list <order_item_list_t> (248)\n    on left: 103 104, on right: 98 104\norder_item <order_item_t> (249)\n    on left: 105, on right: 103 104\nopt_order_behavior <opt_order_behavior_t> (250)\n    on left: 106 107 108, on right: 105 192\nopt_with_clause <opt_with_clause_t> (251)\n    on left: 109 110 111, on right: 23 178\ncte_table_list <cte_table_list_t> (252)\n    on left: 112 113, on right: 109 110 113\ncte_table <cte_table_t> (253)\n    on left: 114, on right: 112 113\ncte_table_name <cte_table_name_t> (254)\n    on left: 115, on right: 114\nopt_all_or_distinct <opt_all_or_distinct_t> (255)\n    on left: 116 117 118, on right: 26\ncreate_table_stmt <create_table_stmt_t> (256)\n    on left: 119 120, on right: 10\ncreate_index_stmt <create_index_stmt_t> (257)\n    on left: 121, on right: 11\ncreate_trigger_stmt <create_trigger_stmt_t> (258)\n    on left: 122, on right: 12\ncreate_view_stmt <create_view_stmt_t> (259)\n    on left: 123 124, on right: 13\nopt_table_option_list <opt_table_option_list_t> (260)\n    on left: 125 126, on right: 119 120\ntable_option_list <table_option_list_t> (261)\n    on left: 127 128, on right: 125 128\ntable_option <table_option_t> (262)\n    on left: 129 130 131 132 133 134 135 136 137, on right: 127 128\nopt_op_comma <opt_op_comma_t> (263)\n    on left: 138 139, on right: 128\nopt_ignore_or_replace <opt_ignore_or_replace_t> (264)\n    on left: 140 141 142, on right: 119\nopt_view_algorithm <opt_view_algorithm_t> (265)\n    on left: 143 144 145 146, on right: 123 124\nopt_sql_security <opt_sql_security_t> (266)\n    on left: 147 148 149, on right: 123 124\nopt_index_option <opt_index_option_t> (267)\n    on left: 150 151 152, on right: 121\nopt_extra_option <opt_extra_option_t> (268)\n    on left: 153 154 155, on right: 121 171\nindex_algorithm_option <index_algorithm_option_t> (269)\n    on left: 156 157 158, on right: 153\nlock_option <lock_option_t> (270)\n    on left: 159 160 161 162, on right: 154 204\nopt_op_equal <opt_op_equal_t> (271)\n    on left: 163 164, on right: 129 130 131 132 133 134 135 136 137\n    156 157 158 159 160 161 162\ntrigger_events <trigger_events_t> (272)\n    on left: 165 166 167, on right: 122\ntrigger_name <trigger_name_t> (273)\n    on left: 168, on right: 122 176\ntrigger_action_time <trigger_action_time_t> (274)\n    on left: 169 170, on right: 122\ndrop_index_stmt <drop_index_stmt_t> (275)\n    on left: 171, on right: 14\ndrop_table_stmt <drop_table_stmt_t> (276)\n    on left: 172, on right: 15\nopt_restrict_or_cascade <opt_restrict_or_cascade_t> (277)\n    on left: 173 174 175, on right: 172 177\ndrop_trigger_stmt <drop_trigger_stmt_t> (278)\n    on left: 176, on right: 16\ndrop_view_stmt <drop_view_stmt_t> (279)\n    on left: 177, on right: 17\ninsert_stmt <insert_stmt_t> (280)\n    on left: 178, on right: 8 341\ninsert_rest <insert_rest_t> (281)\n    on left: 179 180 181, on right: 178\nsuper_values_list <super_values_list_t> (282)\n    on left: 182 183, on right: 181 183\nvalues_list <values_list_t> (283)\n    on left: 184, on right: 182 183\nopt_on_conflict <opt_on_conflict_t> (284)\n    on left: 185 186 187, on right: 178\nopt_conflict_expr <opt_conflict_expr_t> (285)\n    on left: 188 189, on right: 185 186\nindexed_column_list <indexed_column_list_t> (286)\n    on left: 190 191, on right: 121 188 191 402 403\nindexed_column <indexed_column_t> (287)\n    on left: 192, on right: 190 191\nupdate_stmt <update_stmt_t> (288)\n    on left: 193 194, on right: 7 340\nalter_action <alter_action_t> (289)\n    on left: 195 196 197 198 199, on right: 18\nalter_constant_action <alter_constant_action_t> (290)\n    on left: 200 201 202 203 204 205 206, on right: 199\ncolumn_def_list <column_def_list_t> (291)\n    on left: 207 208, on right: 120 208\ncolumn_def <column_def_t> (292)\n    on left: 209, on right: 197 207 208\nopt_column_constraint_list <opt_column_constraint_list_t> (293)\n    on left: 210 211, on right: 209\ncolumn_constraint_list <column_constraint_list_t> (294)\n    on left: 212 213, on right: 210 213\ncolumn_constraint <column_constraint_t> (295)\n    on left: 214, on right: 212 213\nopt_reference_clause <opt_reference_clause_t> (296)\n    on left: 215 216, on right: 210\nopt_check <opt_check_t> (297)\n    on left: 217 218, on right: 210\nconstraint_type <constraint_type_t> (298)\n    on left: 219 220 221, on right: 214\nreference_clause <reference_clause_t> (299)\n    on left: 222, on right: 215 405\nopt_foreign_key <opt_foreign_key_t> (300)\n    on left: 223 224, on right: 215\nopt_foreign_key_actions <opt_foreign_key_actions_t> (301)\n    on left: 225 226, on right: 222\nforeign_key_actions <foreign_key_actions_t> (302)\n    on left: 227 228 229 230 231, on right: 225\nkey_actions <key_actions_t> (303)\n    on left: 232 233 234 235 236, on right: 230 231\nopt_constraint_attribute_spec <opt_constraint_attribute_spec_t> (304)\n    on left: 237 238 239, on right: 222\nopt_initial_time <opt_initial_time_t> (305)\n    on left: 240 241 242, on right: 237 238\nconstraint_name <constraint_name_t> (306)\n    on left: 243, on right: 402 403 404 405\nopt_temp <opt_temp_t> (307)\n    on left: 244 245, on right: 119 120 172\nopt_check_option <opt_check_option_t> (308)\n    on left: 246 247 248 249, on right: 123 124\nopt_column_name_list_p <opt_column_name_list_p_t> (309)\n    on left: 250 251, on right: 115 123 124 179 180 181 222\nset_clause_list <set_clause_list_t> (310)\n    on left: 252 253, on right: 186 193 194 253\nset_clause <set_clause_t> (311)\n    on left: 254 255, on right: 252 253\nopt_as_alias <opt_as_alias_t> (312)\n    on left: 256 257, on right: 66 67 68 69 89 90 178 193 194\nexpr <expr_t> (313)\n    on left: 258 259 260 261 262 263, on right: 53 54 60 64 73 89 90\n    93 94 95 96 105 192 217 254 255 274 288 289 293 295 296 304 311\n    318 404\noperand <operand_t> (314)\n    on left: 264 265 266 267 268 269 270 271 272 273, on right: 258\n    277 278 279 280 281 285 286 287 290 291 292 297 298 312 313 314\n    315 316 317 326\ncast_expr <cast_expr_t> (315)\n    on left: 274, on right: 262\nscalar_expr <scalar_expr_t> (316)\n    on left: 275 276, on right: 266\nunary_expr <unary_expr_t> (317)\n    on left: 277 278 279 280 281 282 283, on right: 267\nbinary_expr <binary_expr_t> (318)\n    on left: 284 285 286 287, on right: 268\nlogic_expr <logic_expr_t> (319)\n    on left: 288 289, on right: 263\nin_expr <in_expr_t> (320)\n    on left: 290 291 292, on right: 261\ncase_expr <case_expr_t> (321)\n    on left: 293 294 295 296, on right: 269\nbetween_expr <between_expr_t> (322)\n    on left: 297 298, on right: 259\nexists_expr <exists_expr_t> (323)\n    on left: 299, on right: 260\nfunction_expr <function_expr_t> (324)\n    on left: 300 301, on right: 272\nopt_distinct <opt_distinct_t> (325)\n    on left: 302 303, on right: 301\nopt_filter_clause <opt_filter_clause_t> (326)\n    on left: 304 305, on right: 300 301\nopt_over_clause <opt_over_clause_t> (327)\n    on left: 306 307 308, on right: 300 301\ncase_list <case_list_t> (328)\n    on left: 309 310, on right: 293 294 295 296 310\ncase_clause <case_clause_t> (329)\n    on left: 311, on right: 309 310\ncomp_expr <comp_expr_t> (330)\n    on left: 312 313 314 315 316 317, on right: 284\nextract_expr <extract_expr_t> (331)\n    on left: 318, on right: 270\ndatetime_field <datetime_field_t> (332)\n    on left: 319 320 321 322 323 324, on right: 318\narray_expr <array_expr_t> (333)\n    on left: 325, on right: 271\narray_index <array_index_t> (334)\n    on left: 326, on right: 265\nliteral <literal_t> (335)\n    on left: 327 328 329, on right: 276\nstring_literal <string_literal_t> (336)\n    on left: 330, on right: 327\nbool_literal <bool_literal_t> (337)\n    on left: 331 332, on right: 328\nnum_literal <num_literal_t> (338)\n    on left: 333 334, on right: 329\nint_literal <int_literal_t> (339)\n    on left: 335, on right: 326 333 370\nfloat_literal <float_literal_t> (340)\n    on left: 336, on right: 334\nopt_column <opt_column_t> (341)\n    on left: 337 338, on right: 196 197 198\ntrigger_body <trigger_body_t> (342)\n    on left: 339 340 341 342, on right: 122\nopt_if_not_exist <opt_if_not_exist_t> (343)\n    on left: 343 344, on right: 119 120\nopt_if_exist <opt_if_exist_t> (344)\n    on left: 345 346, on right: 172 176 177\nidentifier <identifier_t> (345)\n    on left: 347, on right: 39 56 168 209 348 349 350 355 356 365\nas_alias <as_alias_t> (346)\n    on left: 348, on right: 256\ntable_name <table_name_t> (347)\n    on left: 349, on right: 18 66 115 119 120 121 122 171 172 178 193\n    194 195 222 292\ncolumn_name <column_name_t> (348)\n    on left: 350, on right: 70 77 78 196 198 254 275\nopt_index_keyword <opt_index_keyword_t> (349)\n    on left: 351 352 353 354, on right: 121\nview_name <view_name_t> (350)\n    on left: 355, on right: 123 124 177\nfunction_name <function_name_t> (351)\n    on left: 356, on right: 67 300 301\nbinary_op <binary_op_t> (352)\n    on left: 357 358 359 360 361 362, on right: 285\nopt_not <opt_not_t> (353)\n    on left: 363 364, on right: 290 291 292 299\nname <name_t> (354)\n    on left: 365, on right: 243\ntype_name <type_name_t> (355)\n    on left: 366 367, on right: 209 274\ncharacter_type <character_type_t> (356)\n    on left: 368 369, on right: 367\ncharacter_with_length <character_with_length_t> (357)\n    on left: 370, on right: 368\ncharacter_without_length <character_without_length_t> (358)\n    on left: 371 372 373 374, on right: 369\ncharacter_conflicta <character_conflicta_t> (359)\n    on left: 375 376 377 378 379 380 381 382 383 384, on right: 370\n    371\nnumeric_type <numeric_type_t> (360)\n    on left: 385 386 387 388 389 390 391 392 393 394 395 396 397, on right:\n    366\nopt_table_constraint_list <opt_table_constraint_list_t> (361)\n    on left: 398 399, on right: 120\ntable_constraint_list <table_constraint_list_t> (362)\n    on left: 400 401, on right: 398 401\ntable_constraint <table_constraint_t> (363)\n    on left: 402 403 404 405, on right: 400 401\nopt_enforced <opt_enforced_t> (364)\n    on left: 406 407 408, on right: 217 404\n\n\nState 0\n\n    0 $accept: . program $end\n\n    WITH    shift, and go to state 1\n    UPDATE  shift, and go to state 2\n    DROP    shift, and go to state 3\n    OP_LP   shift, and go to state 4\n    CREATE  shift, and go to state 5\n    ALTER   shift, and go to state 6\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    program              go to state 7\n    stmtlist             go to state 8\n    stmt                 go to state 9\n    create_stmt          go to state 10\n    drop_stmt            go to state 11\n    alter_stmt           go to state 12\n    select_stmt          go to state 13\n    select_with_parens   go to state 14\n    select_no_parens     go to state 15\n    opt_with_clause      go to state 16\n    create_table_stmt    go to state 17\n    create_index_stmt    go to state 18\n    create_trigger_stmt  go to state 19\n    create_view_stmt     go to state 20\n    drop_index_stmt      go to state 21\n    drop_table_stmt      go to state 22\n    drop_trigger_stmt    go to state 23\n    drop_view_stmt       go to state 24\n    insert_stmt          go to state 25\n    update_stmt          go to state 26\n\n\nState 1\n\n  109 opt_with_clause: WITH . cte_table_list\n  110                | WITH . RECURSIVE cte_table_list\n\n    RECURSIVE   shift, and go to state 27\n    IDENTIFIER  shift, and go to state 28\n\n    cte_table_list  go to state 29\n    cte_table       go to state 30\n    cte_table_name  go to state 31\n    identifier      go to state 32\n    table_name      go to state 33\n\n\nState 2\n\n  193 update_stmt: UPDATE . IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n  194            | UPDATE . table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    IGNORE      shift, and go to state 34\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 35\n\n\nState 3\n\n  171 drop_index_stmt: DROP . INDEX table_name opt_extra_option\n  172 drop_table_stmt: DROP . opt_temp TABLE opt_if_exist table_name opt_restrict_or_cascade\n  176 drop_trigger_stmt: DROP . TRIGGER opt_if_exist trigger_name\n  177 drop_view_stmt: DROP . VIEW opt_if_exist view_name opt_restrict_or_cascade\n\n    TRIGGER    shift, and go to state 36\n    VIEW       shift, and go to state 37\n    INDEX      shift, and go to state 38\n    TEMPORARY  shift, and go to state 39\n\n    $default  reduce using rule 245 (opt_temp)\n\n    opt_temp  go to state 40\n\n\nState 4\n\n   21 select_with_parens: OP_LP . select_no_parens OP_RP\n   22                   | OP_LP . select_with_parens OP_RP\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_with_parens  go to state 41\n    select_no_parens    go to state 42\n    opt_with_clause     go to state 43\n\n\nState 5\n\n  119 create_table_stmt: CREATE . opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE . opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n  121 create_index_stmt: CREATE . opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n  122 create_trigger_stmt: CREATE . TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body\n  123 create_view_stmt: CREATE . opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE . OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    TRIGGER    shift, and go to state 44\n    UNIQUE     shift, and go to state 45\n    OR         shift, and go to state 46\n    SPATIAL    shift, and go to state 47\n    FULLTEXT   shift, and go to state 48\n    ALGORITHM  shift, and go to state 49\n    TEMPORARY  shift, and go to state 39\n\n    INDEX     reduce using rule 354 (opt_index_keyword)\n    TABLE     reduce using rule 245 (opt_temp)\n    $default  reduce using rule 146 (opt_view_algorithm)\n\n    opt_view_algorithm  go to state 50\n    opt_temp            go to state 51\n    opt_index_keyword   go to state 52\n\n\nState 6\n\n   18 alter_stmt: ALTER . TABLE table_name alter_action\n\n    TABLE  shift, and go to state 53\n\n\nState 7\n\n    0 $accept: program . $end\n\n    $end  shift, and go to state 54\n\n\nState 8\n\n    1 program: stmtlist .\n\n    $default  reduce using rule 1 (program)\n\n\nState 9\n\n    2 stmtlist: stmt . OP_SEMI stmtlist\n    3         | stmt . OP_SEMI\n\n    OP_SEMI  shift, and go to state 55\n\n\nState 10\n\n    4 stmt: create_stmt .\n\n    $default  reduce using rule 4 (stmt)\n\n\nState 11\n\n    5 stmt: drop_stmt .\n\n    $default  reduce using rule 5 (stmt)\n\n\nState 12\n\n    9 stmt: alter_stmt .\n\n    $default  reduce using rule 9 (stmt)\n\n\nState 13\n\n    6 stmt: select_stmt .\n\n    $default  reduce using rule 6 (stmt)\n\n\nState 14\n\n   20 select_stmt: select_with_parens .\n\n    $default  reduce using rule 20 (select_stmt)\n\n\nState 15\n\n   19 select_stmt: select_no_parens .\n\n    $default  reduce using rule 19 (select_stmt)\n\n\nState 16\n\n   23 select_no_parens: opt_with_clause . select_clause_list opt_order_clause opt_limit_clause\n  178 insert_stmt: opt_with_clause . INSERT INTO table_name opt_as_alias insert_rest opt_on_conflict\n\n    SELECT  shift, and go to state 56\n    INSERT  shift, and go to state 57\n\n    select_clause_list  go to state 58\n    select_clause       go to state 59\n\n\nState 17\n\n   10 create_stmt: create_table_stmt .\n\n    $default  reduce using rule 10 (create_stmt)\n\n\nState 18\n\n   11 create_stmt: create_index_stmt .\n\n    $default  reduce using rule 11 (create_stmt)\n\n\nState 19\n\n   12 create_stmt: create_trigger_stmt .\n\n    $default  reduce using rule 12 (create_stmt)\n\n\nState 20\n\n   13 create_stmt: create_view_stmt .\n\n    $default  reduce using rule 13 (create_stmt)\n\n\nState 21\n\n   14 drop_stmt: drop_index_stmt .\n\n    $default  reduce using rule 14 (drop_stmt)\n\n\nState 22\n\n   15 drop_stmt: drop_table_stmt .\n\n    $default  reduce using rule 15 (drop_stmt)\n\n\nState 23\n\n   16 drop_stmt: drop_trigger_stmt .\n\n    $default  reduce using rule 16 (drop_stmt)\n\n\nState 24\n\n   17 drop_stmt: drop_view_stmt .\n\n    $default  reduce using rule 17 (drop_stmt)\n\n\nState 25\n\n    8 stmt: insert_stmt .\n\n    $default  reduce using rule 8 (stmt)\n\n\nState 26\n\n    7 stmt: update_stmt .\n\n    $default  reduce using rule 7 (stmt)\n\n\nState 27\n\n  110 opt_with_clause: WITH RECURSIVE . cte_table_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    cte_table_list  go to state 60\n    cte_table       go to state 30\n    cte_table_name  go to state 31\n    identifier      go to state 32\n    table_name      go to state 33\n\n\nState 28\n\n  347 identifier: IDENTIFIER .\n\n    $default  reduce using rule 347 (identifier)\n\n\nState 29\n\n  109 opt_with_clause: WITH cte_table_list .\n\n    $default  reduce using rule 109 (opt_with_clause)\n\n\nState 30\n\n  112 cte_table_list: cte_table .\n  113               | cte_table . OP_COMMA cte_table_list\n\n    OP_COMMA  shift, and go to state 61\n\n    $default  reduce using rule 112 (cte_table_list)\n\n\nState 31\n\n  114 cte_table: cte_table_name . AS OP_LP select_stmt OP_RP\n\n    AS  shift, and go to state 62\n\n\nState 32\n\n  349 table_name: identifier .\n\n    $default  reduce using rule 349 (table_name)\n\n\nState 33\n\n  115 cte_table_name: table_name . opt_column_name_list_p\n\n    OP_LP  shift, and go to state 63\n\n    $default  reduce using rule 251 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 64\n\n\nState 34\n\n  193 update_stmt: UPDATE IGNORE . table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 65\n\n\nState 35\n\n  194 update_stmt: UPDATE table_name . opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 67\n    as_alias      go to state 68\n\n\nState 36\n\n  176 drop_trigger_stmt: DROP TRIGGER . opt_if_exist trigger_name\n\n    IF  shift, and go to state 69\n\n    $default  reduce using rule 346 (opt_if_exist)\n\n    opt_if_exist  go to state 70\n\n\nState 37\n\n  177 drop_view_stmt: DROP VIEW . opt_if_exist view_name opt_restrict_or_cascade\n\n    IF  shift, and go to state 69\n\n    $default  reduce using rule 346 (opt_if_exist)\n\n    opt_if_exist  go to state 71\n\n\nState 38\n\n  171 drop_index_stmt: DROP INDEX . table_name opt_extra_option\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 72\n\n\nState 39\n\n  244 opt_temp: TEMPORARY .\n\n    $default  reduce using rule 244 (opt_temp)\n\n\nState 40\n\n  172 drop_table_stmt: DROP opt_temp . TABLE opt_if_exist table_name opt_restrict_or_cascade\n\n    TABLE  shift, and go to state 73\n\n\nState 41\n\n   22 select_with_parens: OP_LP select_with_parens . OP_RP\n\n    OP_RP  shift, and go to state 74\n\n\nState 42\n\n   21 select_with_parens: OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 75\n\n\nState 43\n\n   23 select_no_parens: opt_with_clause . select_clause_list opt_order_clause opt_limit_clause\n\n    SELECT  shift, and go to state 56\n\n    select_clause_list  go to state 58\n    select_clause       go to state 59\n\n\nState 44\n\n  122 create_trigger_stmt: CREATE TRIGGER . trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body\n\n    IDENTIFIER  shift, and go to state 28\n\n    trigger_name  go to state 76\n    identifier    go to state 77\n\n\nState 45\n\n  351 opt_index_keyword: UNIQUE .\n\n    $default  reduce using rule 351 (opt_index_keyword)\n\n\nState 46\n\n  124 create_view_stmt: CREATE OR . REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    REPLACE  shift, and go to state 78\n\n\nState 47\n\n  353 opt_index_keyword: SPATIAL .\n\n    $default  reduce using rule 353 (opt_index_keyword)\n\n\nState 48\n\n  352 opt_index_keyword: FULLTEXT .\n\n    $default  reduce using rule 352 (opt_index_keyword)\n\n\nState 49\n\n  143 opt_view_algorithm: ALGORITHM . OP_EQUAL UNDEFINED\n  144                   | ALGORITHM . OP_EQUAL MERGE\n  145                   | ALGORITHM . OP_EQUAL TEMPTABLE\n\n    OP_EQUAL  shift, and go to state 79\n\n\nState 50\n\n  123 create_view_stmt: CREATE opt_view_algorithm . opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    SQL  shift, and go to state 80\n\n    $default  reduce using rule 149 (opt_sql_security)\n\n    opt_sql_security  go to state 81\n\n\nState 51\n\n  119 create_table_stmt: CREATE opt_temp . TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE opt_temp . TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n    TABLE  shift, and go to state 82\n\n\nState 52\n\n  121 create_index_stmt: CREATE opt_index_keyword . INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    INDEX  shift, and go to state 83\n\n\nState 53\n\n   18 alter_stmt: ALTER TABLE . table_name alter_action\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 84\n\n\nState 54\n\n    0 $accept: program $end .\n\n    $default  accept\n\n\nState 55\n\n    2 stmtlist: stmt OP_SEMI . stmtlist\n    3         | stmt OP_SEMI .\n\n    WITH    shift, and go to state 1\n    UPDATE  shift, and go to state 2\n    DROP    shift, and go to state 3\n    OP_LP   shift, and go to state 4\n    CREATE  shift, and go to state 5\n    ALTER   shift, and go to state 6\n\n    $end      reduce using rule 3 (stmtlist)\n    $default  reduce using rule 111 (opt_with_clause)\n\n    stmtlist             go to state 85\n    stmt                 go to state 9\n    create_stmt          go to state 10\n    drop_stmt            go to state 11\n    alter_stmt           go to state 12\n    select_stmt          go to state 13\n    select_with_parens   go to state 14\n    select_no_parens     go to state 15\n    opt_with_clause      go to state 16\n    create_table_stmt    go to state 17\n    create_index_stmt    go to state 18\n    create_trigger_stmt  go to state 19\n    create_view_stmt     go to state 20\n    drop_index_stmt      go to state 21\n    drop_table_stmt      go to state 22\n    drop_trigger_stmt    go to state 23\n    drop_view_stmt       go to state 24\n    insert_stmt          go to state 25\n    update_stmt          go to state 26\n\n\nState 56\n\n   26 select_clause: SELECT . opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    DISTINCT  shift, and go to state 86\n    ALL       shift, and go to state 87\n\n    $default  reduce using rule 118 (opt_all_or_distinct)\n\n    opt_all_or_distinct  go to state 88\n\n\nState 57\n\n  178 insert_stmt: opt_with_clause INSERT . INTO table_name opt_as_alias insert_rest opt_on_conflict\n\n    INTO  shift, and go to state 89\n\n\nState 58\n\n   23 select_no_parens: opt_with_clause select_clause_list . opt_order_clause opt_limit_clause\n\n    ORDER  shift, and go to state 90\n\n    $default  reduce using rule 99 (opt_order_clause)\n\n    opt_order_clause  go to state 91\n\n\nState 59\n\n   24 select_clause_list: select_clause .\n   25                   | select_clause . combine_clause select_clause_list\n\n    EXCEPT     shift, and go to state 92\n    UNION      shift, and go to state 93\n    INTERSECT  shift, and go to state 94\n\n    $default  reduce using rule 24 (select_clause_list)\n\n    combine_clause  go to state 95\n\n\nState 60\n\n  110 opt_with_clause: WITH RECURSIVE cte_table_list .\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n\nState 61\n\n  113 cte_table_list: cte_table OP_COMMA . cte_table_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    cte_table_list  go to state 96\n    cte_table       go to state 30\n    cte_table_name  go to state 31\n    identifier      go to state 32\n    table_name      go to state 33\n\n\nState 62\n\n  114 cte_table: cte_table_name AS . OP_LP select_stmt OP_RP\n\n    OP_LP  shift, and go to state 97\n\n\nState 63\n\n  250 opt_column_name_list_p: OP_LP . column_name_list OP_RP\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_name_list  go to state 98\n    identifier        go to state 99\n    column_name       go to state 100\n\n\nState 64\n\n  115 cte_table_name: table_name opt_column_name_list_p .\n\n    $default  reduce using rule 115 (cte_table_name)\n\n\nState 65\n\n  193 update_stmt: UPDATE IGNORE table_name . opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 101\n    as_alias      go to state 68\n\n\nState 66\n\n  348 as_alias: AS . identifier\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 102\n\n\nState 67\n\n  194 update_stmt: UPDATE table_name opt_as_alias . SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    SET  shift, and go to state 103\n\n\nState 68\n\n  256 opt_as_alias: as_alias .\n\n    $default  reduce using rule 256 (opt_as_alias)\n\n\nState 69\n\n  345 opt_if_exist: IF . EXISTS\n\n    EXISTS  shift, and go to state 104\n\n\nState 70\n\n  176 drop_trigger_stmt: DROP TRIGGER opt_if_exist . trigger_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    trigger_name  go to state 105\n    identifier    go to state 77\n\n\nState 71\n\n  177 drop_view_stmt: DROP VIEW opt_if_exist . view_name opt_restrict_or_cascade\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 106\n    view_name   go to state 107\n\n\nState 72\n\n  171 drop_index_stmt: DROP INDEX table_name . opt_extra_option\n\n    ALGORITHM  shift, and go to state 108\n    LOCK       shift, and go to state 109\n\n    $default  reduce using rule 155 (opt_extra_option)\n\n    opt_extra_option        go to state 110\n    index_algorithm_option  go to state 111\n    lock_option             go to state 112\n\n\nState 73\n\n  172 drop_table_stmt: DROP opt_temp TABLE . opt_if_exist table_name opt_restrict_or_cascade\n\n    IF  shift, and go to state 69\n\n    $default  reduce using rule 346 (opt_if_exist)\n\n    opt_if_exist  go to state 113\n\n\nState 74\n\n   22 select_with_parens: OP_LP select_with_parens OP_RP .\n\n    $default  reduce using rule 22 (select_with_parens)\n\n\nState 75\n\n   21 select_with_parens: OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 21 (select_with_parens)\n\n\nState 76\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name . trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body\n\n    BEFORE  shift, and go to state 114\n    AFTER   shift, and go to state 115\n\n    trigger_action_time  go to state 116\n\n\nState 77\n\n  168 trigger_name: identifier .\n\n    $default  reduce using rule 168 (trigger_name)\n\n\nState 78\n\n  124 create_view_stmt: CREATE OR REPLACE . opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    ALGORITHM  shift, and go to state 49\n\n    $default  reduce using rule 146 (opt_view_algorithm)\n\n    opt_view_algorithm  go to state 117\n\n\nState 79\n\n  143 opt_view_algorithm: ALGORITHM OP_EQUAL . UNDEFINED\n  144                   | ALGORITHM OP_EQUAL . MERGE\n  145                   | ALGORITHM OP_EQUAL . TEMPTABLE\n\n    MERGE      shift, and go to state 118\n    TEMPTABLE  shift, and go to state 119\n    UNDEFINED  shift, and go to state 120\n\n\nState 80\n\n  147 opt_sql_security: SQL . SECURITY DEFINER\n  148                 | SQL . SECURITY INVOKER\n\n    SECURITY  shift, and go to state 121\n\n\nState 81\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    VIEW  shift, and go to state 122\n\n\nState 82\n\n  119 create_table_stmt: CREATE opt_temp TABLE . opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE opt_temp TABLE . opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n    IF  shift, and go to state 123\n\n    $default  reduce using rule 344 (opt_if_not_exist)\n\n    opt_if_not_exist  go to state 124\n\n\nState 83\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX . table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 125\n\n\nState 84\n\n   18 alter_stmt: ALTER TABLE table_name . alter_action\n\n    ENABLE   shift, and go to state 126\n    WITH     shift, and go to state 127\n    FORCE    shift, and go to state 128\n    WITHOUT  shift, and go to state 129\n    DROP     shift, and go to state 130\n    DISABLE  shift, and go to state 131\n    LOCK     shift, and go to state 109\n    ADD      shift, and go to state 132\n    RENAME   shift, and go to state 133\n\n    lock_option            go to state 134\n    alter_action           go to state 135\n    alter_constant_action  go to state 136\n\n\nState 85\n\n    2 stmtlist: stmt OP_SEMI stmtlist .\n\n    $default  reduce using rule 2 (stmtlist)\n\n\nState 86\n\n  117 opt_all_or_distinct: DISTINCT .\n\n    $default  reduce using rule 117 (opt_all_or_distinct)\n\n\nState 87\n\n  116 opt_all_or_distinct: ALL .\n\n    $default  reduce using rule 116 (opt_all_or_distinct)\n\n\nState 88\n\n   26 select_clause: SELECT opt_all_or_distinct . select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    select_target   go to state 151\n    expr_list       go to state 152\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 89\n\n  178 insert_stmt: opt_with_clause INSERT INTO . table_name opt_as_alias insert_rest opt_on_conflict\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 179\n\n\nState 90\n\n   98 opt_order_clause: ORDER . BY order_item_list\n\n    BY  shift, and go to state 180\n\n\nState 91\n\n   23 select_no_parens: opt_with_clause select_clause_list opt_order_clause . opt_limit_clause\n\n    LIMIT  shift, and go to state 181\n\n    $default  reduce using rule 92 (opt_limit_clause)\n\n    opt_limit_clause  go to state 182\n    limit_clause      go to state 183\n\n\nState 92\n\n   29 combine_clause: EXCEPT .\n\n    $default  reduce using rule 29 (combine_clause)\n\n\nState 93\n\n   27 combine_clause: UNION .\n\n    $default  reduce using rule 27 (combine_clause)\n\n\nState 94\n\n   28 combine_clause: INTERSECT .\n\n    $default  reduce using rule 28 (combine_clause)\n\n\nState 95\n\n   25 select_clause_list: select_clause combine_clause . select_clause_list\n\n    SELECT  shift, and go to state 56\n\n    select_clause_list  go to state 184\n    select_clause       go to state 59\n\n\nState 96\n\n  113 cte_table_list: cte_table OP_COMMA cte_table_list .\n\n    $default  reduce using rule 113 (cte_table_list)\n\n\nState 97\n\n  114 cte_table: cte_table_name AS OP_LP . select_stmt OP_RP\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_stmt         go to state 185\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 43\n\n\nState 98\n\n  250 opt_column_name_list_p: OP_LP column_name_list . OP_RP\n\n    OP_RP  shift, and go to state 186\n\n\nState 99\n\n  350 column_name: identifier .\n\n    $default  reduce using rule 350 (column_name)\n\n\nState 100\n\n   77 column_name_list: column_name .\n   78                 | column_name . OP_COMMA column_name_list\n\n    OP_COMMA  shift, and go to state 187\n\n    $default  reduce using rule 77 (column_name_list)\n\n\nState 101\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias . SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    SET  shift, and go to state 188\n\n\nState 102\n\n  348 as_alias: AS identifier .\n\n    $default  reduce using rule 348 (as_alias)\n\n\nState 103\n\n  194 update_stmt: UPDATE table_name opt_as_alias SET . set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    OP_LP       shift, and go to state 189\n    IDENTIFIER  shift, and go to state 28\n\n    set_clause_list  go to state 190\n    set_clause       go to state 191\n    identifier       go to state 99\n    column_name      go to state 192\n\n\nState 104\n\n  345 opt_if_exist: IF EXISTS .\n\n    $default  reduce using rule 345 (opt_if_exist)\n\n\nState 105\n\n  176 drop_trigger_stmt: DROP TRIGGER opt_if_exist trigger_name .\n\n    $default  reduce using rule 176 (drop_trigger_stmt)\n\n\nState 106\n\n  355 view_name: identifier .\n\n    $default  reduce using rule 355 (view_name)\n\n\nState 107\n\n  177 drop_view_stmt: DROP VIEW opt_if_exist view_name . opt_restrict_or_cascade\n\n    RESTRICT  shift, and go to state 193\n    CASCADE   shift, and go to state 194\n\n    $default  reduce using rule 175 (opt_restrict_or_cascade)\n\n    opt_restrict_or_cascade  go to state 195\n\n\nState 108\n\n  156 index_algorithm_option: ALGORITHM . opt_op_equal DEFAULT\n  157                       | ALGORITHM . opt_op_equal INPLACE\n  158                       | ALGORITHM . opt_op_equal COPY\n\n    OP_EQUAL  shift, and go to state 196\n\n    $default  reduce using rule 164 (opt_op_equal)\n\n    opt_op_equal  go to state 197\n\n\nState 109\n\n  159 lock_option: LOCK . opt_op_equal DEFAULT\n  160            | LOCK . opt_op_equal NONE\n  161            | LOCK . opt_op_equal SHARED\n  162            | LOCK . opt_op_equal EXCLUSIVE\n\n    OP_EQUAL  shift, and go to state 196\n\n    $default  reduce using rule 164 (opt_op_equal)\n\n    opt_op_equal  go to state 198\n\n\nState 110\n\n  171 drop_index_stmt: DROP INDEX table_name opt_extra_option .\n\n    $default  reduce using rule 171 (drop_index_stmt)\n\n\nState 111\n\n  153 opt_extra_option: index_algorithm_option .\n\n    $default  reduce using rule 153 (opt_extra_option)\n\n\nState 112\n\n  154 opt_extra_option: lock_option .\n\n    $default  reduce using rule 154 (opt_extra_option)\n\n\nState 113\n\n  172 drop_table_stmt: DROP opt_temp TABLE opt_if_exist . table_name opt_restrict_or_cascade\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 199\n\n\nState 114\n\n  169 trigger_action_time: BEFORE .\n\n    $default  reduce using rule 169 (trigger_action_time)\n\n\nState 115\n\n  170 trigger_action_time: AFTER .\n\n    $default  reduce using rule 170 (trigger_action_time)\n\n\nState 116\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time . trigger_events ON table_name FOR EACH ROW trigger_body\n\n    UPDATE  shift, and go to state 200\n    DELETE  shift, and go to state 201\n    INSERT  shift, and go to state 202\n\n    trigger_events  go to state 203\n\n\nState 117\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm . opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    SQL  shift, and go to state 80\n\n    $default  reduce using rule 149 (opt_sql_security)\n\n    opt_sql_security  go to state 204\n\n\nState 118\n\n  144 opt_view_algorithm: ALGORITHM OP_EQUAL MERGE .\n\n    $default  reduce using rule 144 (opt_view_algorithm)\n\n\nState 119\n\n  145 opt_view_algorithm: ALGORITHM OP_EQUAL TEMPTABLE .\n\n    $default  reduce using rule 145 (opt_view_algorithm)\n\n\nState 120\n\n  143 opt_view_algorithm: ALGORITHM OP_EQUAL UNDEFINED .\n\n    $default  reduce using rule 143 (opt_view_algorithm)\n\n\nState 121\n\n  147 opt_sql_security: SQL SECURITY . DEFINER\n  148                 | SQL SECURITY . INVOKER\n\n    DEFINER  shift, and go to state 205\n    INVOKER  shift, and go to state 206\n\n\nState 122\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 106\n    view_name   go to state 207\n\n\nState 123\n\n  343 opt_if_not_exist: IF . NOT EXISTS\n\n    NOT  shift, and go to state 208\n\n\nState 124\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist . table_name opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE opt_temp TABLE opt_if_not_exist . table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 209\n\n\nState 125\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name . ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    ON  shift, and go to state 210\n\n\nState 126\n\n  203 alter_constant_action: ENABLE . KEYS\n\n    KEYS  shift, and go to state 211\n\n\nState 127\n\n  205 alter_constant_action: WITH . VALIDATION\n\n    VALIDATION  shift, and go to state 212\n\n\nState 128\n\n  201 alter_constant_action: FORCE .\n\n    $default  reduce using rule 201 (alter_constant_action)\n\n\nState 129\n\n  206 alter_constant_action: WITHOUT . VALIDATION\n\n    VALIDATION  shift, and go to state 213\n\n\nState 130\n\n  198 alter_action: DROP . opt_column column_name\n  200 alter_constant_action: DROP . PRIMARY KEY\n\n    PRIMARY  shift, and go to state 214\n    COLUMN   shift, and go to state 215\n\n    $default  reduce using rule 338 (opt_column)\n\n    opt_column  go to state 216\n\n\nState 131\n\n  202 alter_constant_action: DISABLE . KEYS\n\n    KEYS  shift, and go to state 217\n\n\nState 132\n\n  197 alter_action: ADD . opt_column column_def\n\n    COLUMN  shift, and go to state 215\n\n    $default  reduce using rule 338 (opt_column)\n\n    opt_column  go to state 218\n\n\nState 133\n\n  195 alter_action: RENAME . TO table_name\n  196             | RENAME . opt_column column_name TO column_name\n\n    COLUMN  shift, and go to state 215\n    TO      shift, and go to state 219\n\n    $default  reduce using rule 338 (opt_column)\n\n    opt_column  go to state 220\n\n\nState 134\n\n  204 alter_constant_action: lock_option .\n\n    $default  reduce using rule 204 (alter_constant_action)\n\n\nState 135\n\n   18 alter_stmt: ALTER TABLE table_name alter_action .\n\n    $default  reduce using rule 18 (alter_stmt)\n\n\nState 136\n\n  199 alter_action: alter_constant_action .\n\n    $default  reduce using rule 199 (alter_action)\n\n\nState 137\n\n  277 unary_expr: OP_SUB . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 222\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 138\n\n  332 bool_literal: FALSE .\n\n    $default  reduce using rule 332 (bool_literal)\n\n\nState 139\n\n  283 unary_expr: OP_MUL .\n\n    $default  reduce using rule 283 (unary_expr)\n\n\nState 140\n\n  331 bool_literal: TRUE .\n\n    $default  reduce using rule 331 (bool_literal)\n\n\nState 141\n\n  278 unary_expr: NOT . operand\n  363 opt_not: NOT .\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 363 (opt_not)\n\n    operand         go to state 223\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 142\n\n  293 case_expr: CASE . expr case_list END\n  294          | CASE . case_list END\n  295          | CASE . expr case_list ELSE expr END\n  296          | CASE . case_list ELSE expr END\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    WHEN           shift, and go to state 224\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 225\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    case_list       go to state 226\n    case_clause     go to state 227\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 143\n\n  325 array_expr: ARRAY . OP_LBRACKET expr_list OP_RBRACKET\n\n    OP_LBRACKET  shift, and go to state 228\n\n\nState 144\n\n  318 extract_expr: EXTRACT . OP_LP datetime_field FROM expr OP_RP\n\n    OP_LP  shift, and go to state 229\n\n\nState 145\n\n  264 operand: OP_LP . expr_list OP_RP\n  273        | OP_LP . select_no_parens OP_RP\n\n    WITH           shift, and go to state 1\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    EXISTS    reduce using rule 364 (opt_not)\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_no_parens  go to state 230\n    expr_list         go to state 231\n    opt_with_clause   go to state 43\n    expr              go to state 153\n    operand           go to state 154\n    cast_expr         go to state 155\n    scalar_expr       go to state 156\n    unary_expr        go to state 157\n    binary_expr       go to state 158\n    logic_expr        go to state 159\n    in_expr           go to state 160\n    case_expr         go to state 161\n    between_expr      go to state 162\n    exists_expr       go to state 163\n    function_expr     go to state 164\n    comp_expr         go to state 165\n    extract_expr      go to state 166\n    array_expr        go to state 167\n    array_index       go to state 168\n    literal           go to state 169\n    string_literal    go to state 170\n    bool_literal      go to state 171\n    num_literal       go to state 172\n    int_literal       go to state 173\n    float_literal     go to state 174\n    identifier        go to state 175\n    column_name       go to state 176\n    function_name     go to state 177\n    opt_not           go to state 178\n\n\nState 146\n\n  274 cast_expr: CAST . OP_LP expr AS type_name OP_RP\n\n    OP_LP  shift, and go to state 232\n\n\nState 147\n\n  282 unary_expr: NULL .\n\n    $default  reduce using rule 282 (unary_expr)\n\n\nState 148\n\n  335 int_literal: INTLITERAL .\n\n    $default  reduce using rule 335 (int_literal)\n\n\nState 149\n\n  336 float_literal: FLOATLITERAL .\n\n    $default  reduce using rule 336 (float_literal)\n\n\nState 150\n\n  330 string_literal: STRINGLITERAL .\n\n    $default  reduce using rule 330 (string_literal)\n\n\nState 151\n\n   26 select_clause: SELECT opt_all_or_distinct select_target . opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    FROM  shift, and go to state 233\n\n    $default  reduce using rule 31 (opt_from_clause)\n\n    opt_from_clause  go to state 234\n    from_clause      go to state 235\n\n\nState 152\n\n   32 select_target: expr_list .\n\n    $default  reduce using rule 32 (select_target)\n\n\nState 153\n\n   89 expr_list: expr . opt_as_alias OP_COMMA expr_list\n   90          | expr . opt_as_alias\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n    AS   shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 238\n    as_alias      go to state 68\n\n\nState 154\n\n  258 expr: operand .\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  290 in_expr: operand . opt_not IN OP_LP select_no_parens OP_RP\n  291        | operand . opt_not IN OP_LP expr_list OP_RP\n  292        | operand . opt_not IN table_name\n  297 between_expr: operand . BETWEEN operand AND operand\n  298             | operand . NOT BETWEEN operand AND operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    NOT             shift, and go to state 248\n    OP_XOR          shift, and go to state 249\n    BETWEEN         shift, and go to state 250\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    IN        reduce using rule 364 (opt_not)\n    $default  reduce using rule 258 (expr)\n\n    binary_op  go to state 257\n    opt_not    go to state 258\n\n\nState 155\n\n  262 expr: cast_expr .\n\n    $default  reduce using rule 262 (expr)\n\n\nState 156\n\n  266 operand: scalar_expr .\n\n    $default  reduce using rule 266 (operand)\n\n\nState 157\n\n  267 operand: unary_expr .\n\n    $default  reduce using rule 267 (operand)\n\n\nState 158\n\n  268 operand: binary_expr .\n\n    $default  reduce using rule 268 (operand)\n\n\nState 159\n\n  263 expr: logic_expr .\n\n    $default  reduce using rule 263 (expr)\n\n\nState 160\n\n  261 expr: in_expr .\n\n    $default  reduce using rule 261 (expr)\n\n\nState 161\n\n  269 operand: case_expr .\n\n    $default  reduce using rule 269 (operand)\n\n\nState 162\n\n  259 expr: between_expr .\n\n    $default  reduce using rule 259 (expr)\n\n\nState 163\n\n  260 expr: exists_expr .\n\n    $default  reduce using rule 260 (expr)\n\n\nState 164\n\n  272 operand: function_expr .\n\n    $default  reduce using rule 272 (operand)\n\n\nState 165\n\n  284 binary_expr: comp_expr .\n\n    $default  reduce using rule 284 (binary_expr)\n\n\nState 166\n\n  270 operand: extract_expr .\n\n    $default  reduce using rule 270 (operand)\n\n\nState 167\n\n  271 operand: array_expr .\n\n    $default  reduce using rule 271 (operand)\n\n\nState 168\n\n  265 operand: array_index .\n\n    $default  reduce using rule 265 (operand)\n\n\nState 169\n\n  276 scalar_expr: literal .\n\n    $default  reduce using rule 276 (scalar_expr)\n\n\nState 170\n\n  327 literal: string_literal .\n\n    $default  reduce using rule 327 (literal)\n\n\nState 171\n\n  328 literal: bool_literal .\n\n    $default  reduce using rule 328 (literal)\n\n\nState 172\n\n  329 literal: num_literal .\n\n    $default  reduce using rule 329 (literal)\n\n\nState 173\n\n  333 num_literal: int_literal .\n\n    $default  reduce using rule 333 (num_literal)\n\n\nState 174\n\n  334 num_literal: float_literal .\n\n    $default  reduce using rule 334 (num_literal)\n\n\nState 175\n\n  350 column_name: identifier .\n  356 function_name: identifier .\n\n    OP_LP     reduce using rule 356 (function_name)\n    $default  reduce using rule 350 (column_name)\n\n\nState 176\n\n  275 scalar_expr: column_name .\n\n    $default  reduce using rule 275 (scalar_expr)\n\n\nState 177\n\n  300 function_expr: function_name . OP_LP OP_RP opt_filter_clause opt_over_clause\n  301              | function_name . OP_LP opt_distinct expr_list OP_RP opt_filter_clause opt_over_clause\n\n    OP_LP  shift, and go to state 259\n\n\nState 178\n\n  299 exists_expr: opt_not . EXISTS OP_LP select_no_parens OP_RP\n\n    EXISTS  shift, and go to state 260\n\n\nState 179\n\n  178 insert_stmt: opt_with_clause INSERT INTO table_name . opt_as_alias insert_rest opt_on_conflict\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 261\n    as_alias      go to state 68\n\n\nState 180\n\n   98 opt_order_clause: ORDER BY . order_item_list\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    order_item_list  go to state 262\n    order_item       go to state 263\n    expr             go to state 264\n    operand          go to state 154\n    cast_expr        go to state 155\n    scalar_expr      go to state 156\n    unary_expr       go to state 157\n    binary_expr      go to state 158\n    logic_expr       go to state 159\n    in_expr          go to state 160\n    case_expr        go to state 161\n    between_expr     go to state 162\n    exists_expr      go to state 163\n    function_expr    go to state 164\n    comp_expr        go to state 165\n    extract_expr     go to state 166\n    array_expr       go to state 167\n    array_index      go to state 168\n    literal          go to state 169\n    string_literal   go to state 170\n    bool_literal     go to state 171\n    num_literal      go to state 172\n    int_literal      go to state 173\n    float_literal    go to state 174\n    identifier       go to state 175\n    column_name      go to state 176\n    function_name    go to state 177\n    opt_not          go to state 178\n\n\nState 181\n\n   93 limit_clause: LIMIT . expr\n   94             | LIMIT . expr OFFSET expr\n   95             | LIMIT . expr OP_COMMA expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 265\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 182\n\n   23 select_no_parens: opt_with_clause select_clause_list opt_order_clause opt_limit_clause .\n\n    $default  reduce using rule 23 (select_no_parens)\n\n\nState 183\n\n   91 opt_limit_clause: limit_clause .\n\n    $default  reduce using rule 91 (opt_limit_clause)\n\n\nState 184\n\n   25 select_clause_list: select_clause combine_clause select_clause_list .\n\n    $default  reduce using rule 25 (select_clause_list)\n\n\nState 185\n\n  114 cte_table: cte_table_name AS OP_LP select_stmt . OP_RP\n\n    OP_RP  shift, and go to state 266\n\n\nState 186\n\n  250 opt_column_name_list_p: OP_LP column_name_list OP_RP .\n\n    $default  reduce using rule 250 (opt_column_name_list_p)\n\n\nState 187\n\n   78 column_name_list: column_name OP_COMMA . column_name_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_name_list  go to state 267\n    identifier        go to state 99\n    column_name       go to state 100\n\n\nState 188\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET . set_clause_list opt_where_clause opt_order_clause opt_limit_row_count\n\n    OP_LP       shift, and go to state 189\n    IDENTIFIER  shift, and go to state 28\n\n    set_clause_list  go to state 268\n    set_clause       go to state 191\n    identifier       go to state 99\n    column_name      go to state 192\n\n\nState 189\n\n  255 set_clause: OP_LP . column_name_list OP_RP OP_EQUAL expr\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_name_list  go to state 269\n    identifier        go to state 99\n    column_name       go to state 100\n\n\nState 190\n\n  194 update_stmt: UPDATE table_name opt_as_alias SET set_clause_list . opt_where_clause opt_order_clause opt_limit_row_count\n\n    WHERE  shift, and go to state 270\n\n    $default  reduce using rule 63 (opt_where_clause)\n\n    opt_where_clause  go to state 271\n    where_clause      go to state 272\n\n\nState 191\n\n  252 set_clause_list: set_clause .\n  253                | set_clause . OP_COMMA set_clause_list\n\n    OP_COMMA  shift, and go to state 273\n\n    $default  reduce using rule 252 (set_clause_list)\n\n\nState 192\n\n  254 set_clause: column_name . OP_EQUAL expr\n\n    OP_EQUAL  shift, and go to state 274\n\n\nState 193\n\n  173 opt_restrict_or_cascade: RESTRICT .\n\n    $default  reduce using rule 173 (opt_restrict_or_cascade)\n\n\nState 194\n\n  174 opt_restrict_or_cascade: CASCADE .\n\n    $default  reduce using rule 174 (opt_restrict_or_cascade)\n\n\nState 195\n\n  177 drop_view_stmt: DROP VIEW opt_if_exist view_name opt_restrict_or_cascade .\n\n    $default  reduce using rule 177 (drop_view_stmt)\n\n\nState 196\n\n  163 opt_op_equal: OP_EQUAL .\n\n    $default  reduce using rule 163 (opt_op_equal)\n\n\nState 197\n\n  156 index_algorithm_option: ALGORITHM opt_op_equal . DEFAULT\n  157                       | ALGORITHM opt_op_equal . INPLACE\n  158                       | ALGORITHM opt_op_equal . COPY\n\n    INPLACE  shift, and go to state 275\n    DEFAULT  shift, and go to state 276\n    COPY     shift, and go to state 277\n\n\nState 198\n\n  159 lock_option: LOCK opt_op_equal . DEFAULT\n  160            | LOCK opt_op_equal . NONE\n  161            | LOCK opt_op_equal . SHARED\n  162            | LOCK opt_op_equal . EXCLUSIVE\n\n    SHARED     shift, and go to state 278\n    NONE       shift, and go to state 279\n    DEFAULT    shift, and go to state 280\n    EXCLUSIVE  shift, and go to state 281\n\n\nState 199\n\n  172 drop_table_stmt: DROP opt_temp TABLE opt_if_exist table_name . opt_restrict_or_cascade\n\n    RESTRICT  shift, and go to state 193\n    CASCADE   shift, and go to state 194\n\n    $default  reduce using rule 175 (opt_restrict_or_cascade)\n\n    opt_restrict_or_cascade  go to state 282\n\n\nState 200\n\n  167 trigger_events: UPDATE .\n\n    $default  reduce using rule 167 (trigger_events)\n\n\nState 201\n\n  165 trigger_events: DELETE .\n\n    $default  reduce using rule 165 (trigger_events)\n\n\nState 202\n\n  166 trigger_events: INSERT .\n\n    $default  reduce using rule 166 (trigger_events)\n\n\nState 203\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events . ON table_name FOR EACH ROW trigger_body\n\n    ON  shift, and go to state 283\n\n\nState 204\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    VIEW  shift, and go to state 284\n\n\nState 205\n\n  147 opt_sql_security: SQL SECURITY DEFINER .\n\n    $default  reduce using rule 147 (opt_sql_security)\n\n\nState 206\n\n  148 opt_sql_security: SQL SECURITY INVOKER .\n\n    $default  reduce using rule 148 (opt_sql_security)\n\n\nState 207\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 63\n\n    $default  reduce using rule 251 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 285\n\n\nState 208\n\n  343 opt_if_not_exist: IF NOT . EXISTS\n\n    EXISTS  shift, and go to state 286\n\n\nState 209\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name . opt_table_option_list opt_ignore_or_replace AS select_stmt\n  120                  | CREATE opt_temp TABLE opt_if_not_exist table_name . OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n    INSERT_METHOD  shift, and go to state 287\n    OP_LP          shift, and go to state 288\n    ROW_FORMAT     shift, and go to state 289\n\n    $default  reduce using rule 126 (opt_table_option_list)\n\n    opt_table_option_list  go to state 290\n    table_option_list      go to state 291\n    table_option           go to state 292\n\n\nState 210\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON . table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 293\n\n\nState 211\n\n  203 alter_constant_action: ENABLE KEYS .\n\n    $default  reduce using rule 203 (alter_constant_action)\n\n\nState 212\n\n  205 alter_constant_action: WITH VALIDATION .\n\n    $default  reduce using rule 205 (alter_constant_action)\n\n\nState 213\n\n  206 alter_constant_action: WITHOUT VALIDATION .\n\n    $default  reduce using rule 206 (alter_constant_action)\n\n\nState 214\n\n  200 alter_constant_action: DROP PRIMARY . KEY\n\n    KEY  shift, and go to state 294\n\n\nState 215\n\n  337 opt_column: COLUMN .\n\n    $default  reduce using rule 337 (opt_column)\n\n\nState 216\n\n  198 alter_action: DROP opt_column . column_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier   go to state 99\n    column_name  go to state 295\n\n\nState 217\n\n  202 alter_constant_action: DISABLE KEYS .\n\n    $default  reduce using rule 202 (alter_constant_action)\n\n\nState 218\n\n  197 alter_action: ADD opt_column . column_def\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_def  go to state 296\n    identifier  go to state 297\n\n\nState 219\n\n  195 alter_action: RENAME TO . table_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 298\n\n\nState 220\n\n  196 alter_action: RENAME opt_column . column_name TO column_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier   go to state 99\n    column_name  go to state 299\n\n\nState 221\n\n  278 unary_expr: NOT . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 223\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 222\n\n  277 unary_expr: OP_SUB operand .\n  279           | operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n\n    $default  reduce using rule 277 (unary_expr)\n\n    binary_op  go to state 257\n\n\nState 223\n\n  278 unary_expr: NOT operand .\n  279           | operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    $default  reduce using rule 278 (unary_expr)\n\n    binary_op  go to state 257\n\n\nState 224\n\n  311 case_clause: WHEN . expr THEN expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 301\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 225\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  293 case_expr: CASE expr . case_list END\n  295          | CASE expr . case_list ELSE expr END\n\n    OR    shift, and go to state 236\n    AND   shift, and go to state 237\n    WHEN  shift, and go to state 224\n\n    case_list    go to state 302\n    case_clause  go to state 227\n\n\nState 226\n\n  294 case_expr: CASE case_list . END\n  296          | CASE case_list . ELSE expr END\n\n    END   shift, and go to state 303\n    ELSE  shift, and go to state 304\n\n\nState 227\n\n  309 case_list: case_clause .\n  310          | case_clause . case_list\n\n    WHEN  shift, and go to state 224\n\n    $default  reduce using rule 309 (case_list)\n\n    case_list    go to state 305\n    case_clause  go to state 227\n\n\nState 228\n\n  325 array_expr: ARRAY OP_LBRACKET . expr_list OP_RBRACKET\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 306\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 229\n\n  318 extract_expr: EXTRACT OP_LP . datetime_field FROM expr OP_RP\n\n    YEAR    shift, and go to state 307\n    MINUTE  shift, and go to state 308\n    MONTH   shift, and go to state 309\n    HOUR    shift, and go to state 310\n    DAY     shift, and go to state 311\n    SECOND  shift, and go to state 312\n\n    datetime_field  go to state 313\n\n\nState 230\n\n  273 operand: OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 314\n\n\nState 231\n\n  264 operand: OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 315\n\n\nState 232\n\n  274 cast_expr: CAST OP_LP . expr AS type_name OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 316\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 233\n\n   65 from_clause: FROM . table_ref\n\n    $default  reduce using rule 80 (opt_table_prefix)\n\n    table_ref         go to state 317\n    opt_table_prefix  go to state 318\n\n\nState 234\n\n   26 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause . opt_where_clause opt_group_clause opt_window_clause\n\n    WHERE  shift, and go to state 270\n\n    $default  reduce using rule 63 (opt_where_clause)\n\n    opt_where_clause  go to state 319\n    where_clause      go to state 272\n\n\nState 235\n\n   30 opt_from_clause: from_clause .\n\n    $default  reduce using rule 30 (opt_from_clause)\n\n\nState 236\n\n  289 logic_expr: expr OR . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 320\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 237\n\n  288 logic_expr: expr AND . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 321\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 238\n\n   89 expr_list: expr opt_as_alias . OP_COMMA expr_list\n   90          | expr opt_as_alias .\n\n    OP_COMMA  shift, and go to state 322\n\n    $default  reduce using rule 90 (expr_list)\n\n\nState 239\n\n  313 comp_expr: operand OP_NOTEQUAL . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 323\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 240\n\n  314 comp_expr: operand OP_GREATERTHAN . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 324\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 241\n\n  315 comp_expr: operand OP_LESSTHAN . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 325\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 242\n\n  317 comp_expr: operand OP_GREATEREQ . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 326\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 243\n\n  357 binary_op: OP_ADD .\n\n    $default  reduce using rule 357 (binary_op)\n\n\nState 244\n\n  358 binary_op: OP_SUB .\n\n    $default  reduce using rule 358 (binary_op)\n\n\nState 245\n\n  361 binary_op: OP_MUL .\n\n    $default  reduce using rule 361 (binary_op)\n\n\nState 246\n\n  360 binary_op: OP_MOD .\n\n    $default  reduce using rule 360 (binary_op)\n\n\nState 247\n\n  280 unary_expr: operand IS . NULL\n  281           | operand IS . NOT NULL\n\n    NOT   shift, and go to state 327\n    NULL  shift, and go to state 328\n\n\nState 248\n\n  287 binary_expr: operand NOT . LIKE operand\n  298 between_expr: operand NOT . BETWEEN operand AND operand\n  363 opt_not: NOT .\n\n    BETWEEN  shift, and go to state 329\n    LIKE     shift, and go to state 330\n\n    $default  reduce using rule 363 (opt_not)\n\n\nState 249\n\n  362 binary_op: OP_XOR .\n\n    $default  reduce using rule 362 (binary_op)\n\n\nState 250\n\n  297 between_expr: operand BETWEEN . operand AND operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 331\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 251\n\n  316 comp_expr: operand OP_LESSEQ . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 332\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 252\n\n  286 binary_expr: operand LIKE . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 333\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 253\n\n  326 array_index: operand OP_LBRACKET . int_literal OP_RBRACKET\n\n    INTLITERAL  shift, and go to state 148\n\n    int_literal  go to state 334\n\n\nState 254\n\n  359 binary_op: OP_DIVIDE .\n\n    $default  reduce using rule 359 (binary_op)\n\n\nState 255\n\n  279 unary_expr: operand ISNULL .\n\n    $default  reduce using rule 279 (unary_expr)\n\n\nState 256\n\n  312 comp_expr: operand OP_EQUAL . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 335\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 257\n\n  285 binary_expr: operand binary_op . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 336\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 258\n\n  290 in_expr: operand opt_not . IN OP_LP select_no_parens OP_RP\n  291        | operand opt_not . IN OP_LP expr_list OP_RP\n  292        | operand opt_not . IN table_name\n\n    IN  shift, and go to state 337\n\n\nState 259\n\n  300 function_expr: function_name OP_LP . OP_RP opt_filter_clause opt_over_clause\n  301              | function_name OP_LP . opt_distinct expr_list OP_RP opt_filter_clause opt_over_clause\n\n    DISTINCT  shift, and go to state 338\n    OP_RP     shift, and go to state 339\n\n    $default  reduce using rule 303 (opt_distinct)\n\n    opt_distinct  go to state 340\n\n\nState 260\n\n  299 exists_expr: opt_not EXISTS . OP_LP select_no_parens OP_RP\n\n    OP_LP  shift, and go to state 341\n\n\nState 261\n\n  178 insert_stmt: opt_with_clause INSERT INTO table_name opt_as_alias . insert_rest opt_on_conflict\n\n    OP_LP  shift, and go to state 63\n\n    $default  reduce using rule 251 (opt_column_name_list_p)\n\n    insert_rest             go to state 342\n    opt_column_name_list_p  go to state 343\n\n\nState 262\n\n   98 opt_order_clause: ORDER BY order_item_list .\n\n    $default  reduce using rule 98 (opt_order_clause)\n\n\nState 263\n\n  103 order_item_list: order_item .\n  104                | order_item . OP_COMMA order_item_list\n\n    OP_COMMA  shift, and go to state 344\n\n    $default  reduce using rule 103 (order_item_list)\n\n\nState 264\n\n  105 order_item: expr . opt_order_behavior opt_order_nulls\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR    shift, and go to state 236\n    AND   shift, and go to state 237\n    ASC   shift, and go to state 345\n    DESC  shift, and go to state 346\n\n    $default  reduce using rule 108 (opt_order_behavior)\n\n    opt_order_behavior  go to state 347\n\n\nState 265\n\n   93 limit_clause: LIMIT expr .\n   94             | LIMIT expr . OFFSET expr\n   95             | LIMIT expr . OP_COMMA expr\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR        shift, and go to state 236\n    OFFSET    shift, and go to state 348\n    AND       shift, and go to state 237\n    OP_COMMA  shift, and go to state 349\n\n    $default  reduce using rule 93 (limit_clause)\n\n\nState 266\n\n  114 cte_table: cte_table_name AS OP_LP select_stmt OP_RP .\n\n    $default  reduce using rule 114 (cte_table)\n\n\nState 267\n\n   78 column_name_list: column_name OP_COMMA column_name_list .\n\n    $default  reduce using rule 78 (column_name_list)\n\n\nState 268\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET set_clause_list . opt_where_clause opt_order_clause opt_limit_row_count\n\n    WHERE  shift, and go to state 270\n\n    $default  reduce using rule 63 (opt_where_clause)\n\n    opt_where_clause  go to state 350\n    where_clause      go to state 272\n\n\nState 269\n\n  255 set_clause: OP_LP column_name_list . OP_RP OP_EQUAL expr\n\n    OP_RP  shift, and go to state 351\n\n\nState 270\n\n   64 where_clause: WHERE . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 352\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 271\n\n  194 update_stmt: UPDATE table_name opt_as_alias SET set_clause_list opt_where_clause . opt_order_clause opt_limit_row_count\n\n    ORDER  shift, and go to state 90\n\n    $default  reduce using rule 99 (opt_order_clause)\n\n    opt_order_clause  go to state 353\n\n\nState 272\n\n   62 opt_where_clause: where_clause .\n\n    $default  reduce using rule 62 (opt_where_clause)\n\n\nState 273\n\n  253 set_clause_list: set_clause OP_COMMA . set_clause_list\n\n    OP_LP       shift, and go to state 189\n    IDENTIFIER  shift, and go to state 28\n\n    set_clause_list  go to state 354\n    set_clause       go to state 191\n    identifier       go to state 99\n    column_name      go to state 192\n\n\nState 274\n\n  254 set_clause: column_name OP_EQUAL . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 355\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 275\n\n  157 index_algorithm_option: ALGORITHM opt_op_equal INPLACE .\n\n    $default  reduce using rule 157 (index_algorithm_option)\n\n\nState 276\n\n  156 index_algorithm_option: ALGORITHM opt_op_equal DEFAULT .\n\n    $default  reduce using rule 156 (index_algorithm_option)\n\n\nState 277\n\n  158 index_algorithm_option: ALGORITHM opt_op_equal COPY .\n\n    $default  reduce using rule 158 (index_algorithm_option)\n\n\nState 278\n\n  161 lock_option: LOCK opt_op_equal SHARED .\n\n    $default  reduce using rule 161 (lock_option)\n\n\nState 279\n\n  160 lock_option: LOCK opt_op_equal NONE .\n\n    $default  reduce using rule 160 (lock_option)\n\n\nState 280\n\n  159 lock_option: LOCK opt_op_equal DEFAULT .\n\n    $default  reduce using rule 159 (lock_option)\n\n\nState 281\n\n  162 lock_option: LOCK opt_op_equal EXCLUSIVE .\n\n    $default  reduce using rule 162 (lock_option)\n\n\nState 282\n\n  172 drop_table_stmt: DROP opt_temp TABLE opt_if_exist table_name opt_restrict_or_cascade .\n\n    $default  reduce using rule 172 (drop_table_stmt)\n\n\nState 283\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON . table_name FOR EACH ROW trigger_body\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 356\n\n\nState 284\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 106\n    view_name   go to state 357\n\n\nState 285\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 358\n\n\nState 286\n\n  343 opt_if_not_exist: IF NOT EXISTS .\n\n    $default  reduce using rule 343 (opt_if_not_exist)\n\n\nState 287\n\n  129 table_option: INSERT_METHOD . opt_op_equal NO\n  130             | INSERT_METHOD . opt_op_equal FIRST\n  131             | INSERT_METHOD . opt_op_equal LAST\n\n    OP_EQUAL  shift, and go to state 196\n\n    $default  reduce using rule 164 (opt_op_equal)\n\n    opt_op_equal  go to state 359\n\n\nState 288\n\n  120 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP . column_def_list opt_table_constraint_list OP_RP opt_table_option_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_def_list  go to state 360\n    column_def       go to state 361\n    identifier       go to state 297\n\n\nState 289\n\n  132 table_option: ROW_FORMAT . opt_op_equal DEFAULT\n  133             | ROW_FORMAT . opt_op_equal DYNAMIC\n  134             | ROW_FORMAT . opt_op_equal FIXED\n  135             | ROW_FORMAT . opt_op_equal COMPRESSED\n  136             | ROW_FORMAT . opt_op_equal REDUNDANT\n  137             | ROW_FORMAT . opt_op_equal COMPACT\n\n    OP_EQUAL  shift, and go to state 196\n\n    $default  reduce using rule 164 (opt_op_equal)\n\n    opt_op_equal  go to state 362\n\n\nState 290\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list . opt_ignore_or_replace AS select_stmt\n\n    REPLACE  shift, and go to state 363\n    IGNORE   shift, and go to state 364\n\n    $default  reduce using rule 142 (opt_ignore_or_replace)\n\n    opt_ignore_or_replace  go to state 365\n\n\nState 291\n\n  125 opt_table_option_list: table_option_list .\n\n    $default  reduce using rule 125 (opt_table_option_list)\n\n\nState 292\n\n  127 table_option_list: table_option .\n  128                  | table_option . opt_op_comma table_option_list\n\n    OP_COMMA  shift, and go to state 366\n\n    INSERT_METHOD  reduce using rule 139 (opt_op_comma)\n    ROW_FORMAT     reduce using rule 139 (opt_op_comma)\n    $default       reduce using rule 127 (table_option_list)\n\n    opt_op_comma  go to state 367\n\n\nState 293\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name . OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    OP_LP  shift, and go to state 368\n\n\nState 294\n\n  200 alter_constant_action: DROP PRIMARY KEY .\n\n    $default  reduce using rule 200 (alter_constant_action)\n\n\nState 295\n\n  198 alter_action: DROP opt_column column_name .\n\n    $default  reduce using rule 198 (alter_action)\n\n\nState 296\n\n  197 alter_action: ADD opt_column column_def .\n\n    $default  reduce using rule 197 (alter_action)\n\n\nState 297\n\n  209 column_def: identifier . type_name opt_column_constraint_list\n\n    TEXT        shift, and go to state 369\n    BIGINT      shift, and go to state 370\n    NUMERIC     shift, and go to state 371\n    BINARY      shift, and go to state 372\n    NATIONAL    shift, and go to state 373\n    ENUM        shift, and go to state 374\n    DOUBLE      shift, and go to state 375\n    LONGTEXT    shift, and go to state 376\n    DEC         shift, and go to state 377\n    INTEGER     shift, and go to state 378\n    SET         shift, and go to state 379\n    NCHAR       shift, and go to state 380\n    REAL        shift, and go to state 381\n    CHAR        shift, and go to state 382\n    FIXED       shift, and go to state 383\n    DECIMAL     shift, and go to state 384\n    INT         shift, and go to state 385\n    MEDIUMTEXT  shift, and go to state 386\n    BOOLEAN     shift, and go to state 387\n    CHARACTER   shift, and go to state 388\n    SMALLINT    shift, and go to state 389\n    VARCHAR     shift, and go to state 390\n    TINYTEXT    shift, and go to state 391\n    FLOAT       shift, and go to state 392\n\n    type_name                 go to state 393\n    character_type            go to state 394\n    character_with_length     go to state 395\n    character_without_length  go to state 396\n    character_conflicta       go to state 397\n    numeric_type              go to state 398\n\n\nState 298\n\n  195 alter_action: RENAME TO table_name .\n\n    $default  reduce using rule 195 (alter_action)\n\n\nState 299\n\n  196 alter_action: RENAME opt_column column_name . TO column_name\n\n    TO  shift, and go to state 399\n\n\nState 300\n\n  287 binary_expr: operand NOT . LIKE operand\n\n    LIKE  shift, and go to state 330\n\n\nState 301\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  311 case_clause: WHEN expr . THEN expr\n\n    OR    shift, and go to state 236\n    AND   shift, and go to state 237\n    THEN  shift, and go to state 400\n\n\nState 302\n\n  293 case_expr: CASE expr case_list . END\n  295          | CASE expr case_list . ELSE expr END\n\n    END   shift, and go to state 401\n    ELSE  shift, and go to state 402\n\n\nState 303\n\n  294 case_expr: CASE case_list END .\n\n    $default  reduce using rule 294 (case_expr)\n\n\nState 304\n\n  296 case_expr: CASE case_list ELSE . expr END\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 403\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 305\n\n  310 case_list: case_clause case_list .\n\n    $default  reduce using rule 310 (case_list)\n\n\nState 306\n\n  325 array_expr: ARRAY OP_LBRACKET expr_list . OP_RBRACKET\n\n    OP_RBRACKET  shift, and go to state 404\n\n\nState 307\n\n  324 datetime_field: YEAR .\n\n    $default  reduce using rule 324 (datetime_field)\n\n\nState 308\n\n  320 datetime_field: MINUTE .\n\n    $default  reduce using rule 320 (datetime_field)\n\n\nState 309\n\n  323 datetime_field: MONTH .\n\n    $default  reduce using rule 323 (datetime_field)\n\n\nState 310\n\n  321 datetime_field: HOUR .\n\n    $default  reduce using rule 321 (datetime_field)\n\n\nState 311\n\n  322 datetime_field: DAY .\n\n    $default  reduce using rule 322 (datetime_field)\n\n\nState 312\n\n  319 datetime_field: SECOND .\n\n    $default  reduce using rule 319 (datetime_field)\n\n\nState 313\n\n  318 extract_expr: EXTRACT OP_LP datetime_field . FROM expr OP_RP\n\n    FROM  shift, and go to state 405\n\n\nState 314\n\n  273 operand: OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 273 (operand)\n\n\nState 315\n\n  264 operand: OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 264 (operand)\n\n\nState 316\n\n  274 cast_expr: CAST OP_LP expr . AS type_name OP_RP\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n    AS   shift, and go to state 406\n\n\nState 317\n\n   65 from_clause: FROM table_ref .\n   79 opt_table_prefix: table_ref . join_op\n\n    NATURAL   shift, and go to state 407\n    OP_COMMA  shift, and go to state 408\n    JOIN      shift, and go to state 409\n\n    $default  reduce using rule 65 (from_clause)\n\n    join_op  go to state 410\n\n\nState 318\n\n   66 table_ref: opt_table_prefix . table_name opt_as_alias opt_index opt_on opt_using\n   67          | opt_table_prefix . function_name OP_LP expr_list OP_RP opt_as_alias opt_on opt_using\n   68          | opt_table_prefix . OP_LP select_no_parens OP_RP opt_as_alias opt_on opt_using\n   69          | opt_table_prefix . OP_LP table_ref OP_RP opt_as_alias opt_on opt_using\n\n    OP_LP       shift, and go to state 411\n    IDENTIFIER  shift, and go to state 28\n\n    identifier     go to state 412\n    table_name     go to state 413\n    function_name  go to state 414\n\n\nState 319\n\n   26 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause . opt_group_clause opt_window_clause\n\n    GROUP  shift, and go to state 415\n\n    $default  reduce using rule 59 (opt_group_clause)\n\n    opt_group_clause  go to state 416\n\n\nState 320\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  289           | expr OR expr .\n\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 289 (logic_expr)\n\n\nState 321\n\n  288 logic_expr: expr . AND expr\n  288           | expr AND expr .\n  289           | expr . OR expr\n\n    $default  reduce using rule 288 (logic_expr)\n\n\nState 322\n\n   89 expr_list: expr opt_as_alias OP_COMMA . expr_list\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 417\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 323\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  313          | operand OP_NOTEQUAL operand .\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 313 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 324\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  314          | operand OP_GREATERTHAN operand .\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 243\n    OP_SUB       shift, and go to state 244\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    IS           shift, and go to state 247\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n    ISNULL       shift, and go to state 255\n\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 314 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 325\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  315          | operand OP_LESSTHAN operand .\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 243\n    OP_SUB       shift, and go to state 244\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    IS           shift, and go to state 247\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n    ISNULL       shift, and go to state 255\n\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 315 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 326\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  317          | operand OP_GREATEREQ operand .\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 243\n    OP_SUB       shift, and go to state 244\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    IS           shift, and go to state 247\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n    ISNULL       shift, and go to state 255\n\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 317 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 327\n\n  281 unary_expr: operand IS NOT . NULL\n\n    NULL  shift, and go to state 418\n\n\nState 328\n\n  280 unary_expr: operand IS NULL .\n\n    $default  reduce using rule 280 (unary_expr)\n\n\nState 329\n\n  298 between_expr: operand NOT BETWEEN . operand AND operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 419\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 330\n\n  287 binary_expr: operand NOT LIKE . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 420\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 331\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  297 between_expr: operand BETWEEN operand . AND operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    AND             shift, and go to state 421\n    NOT             shift, and go to state 300\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    binary_op  go to state 257\n\n\nState 332\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  316          | operand OP_LESSEQ operand .\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 243\n    OP_SUB       shift, and go to state 244\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    IS           shift, and go to state 247\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n    ISNULL       shift, and go to state 255\n\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 316 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 333\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  286            | operand LIKE operand .\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 286 (binary_expr)\n\n    binary_op  go to state 257\n\n\nState 334\n\n  326 array_index: operand OP_LBRACKET int_literal . OP_RBRACKET\n\n    OP_RBRACKET  shift, and go to state 422\n\n\nState 335\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  312          | operand OP_EQUAL operand .\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 312 (comp_expr)\n\n    binary_op  go to state 257\n\n\nState 336\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  285            | operand binary_op operand .\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_MUL       shift, and go to state 245\n    OP_MOD       shift, and go to state 246\n    OP_XOR       shift, and go to state 249\n    OP_LBRACKET  shift, and go to state 253\n    OP_DIVIDE    shift, and go to state 254\n\n    $default  reduce using rule 285 (binary_expr)\n\n    binary_op  go to state 257\n\n\nState 337\n\n  290 in_expr: operand opt_not IN . OP_LP select_no_parens OP_RP\n  291        | operand opt_not IN . OP_LP expr_list OP_RP\n  292        | operand opt_not IN . table_name\n\n    OP_LP       shift, and go to state 423\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 424\n\n\nState 338\n\n  302 opt_distinct: DISTINCT .\n\n    $default  reduce using rule 302 (opt_distinct)\n\n\nState 339\n\n  300 function_expr: function_name OP_LP OP_RP . opt_filter_clause opt_over_clause\n\n    FILTER  shift, and go to state 425\n\n    $default  reduce using rule 305 (opt_filter_clause)\n\n    opt_filter_clause  go to state 426\n\n\nState 340\n\n  301 function_expr: function_name OP_LP opt_distinct . expr_list OP_RP opt_filter_clause opt_over_clause\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 427\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 341\n\n  299 exists_expr: opt_not EXISTS OP_LP . select_no_parens OP_RP\n\n    WITH  shift, and go to state 1\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_no_parens  go to state 428\n    opt_with_clause   go to state 43\n\n\nState 342\n\n  178 insert_stmt: opt_with_clause INSERT INTO table_name opt_as_alias insert_rest . opt_on_conflict\n\n    ON  shift, and go to state 429\n\n    $default  reduce using rule 187 (opt_on_conflict)\n\n    opt_on_conflict  go to state 430\n\n\nState 343\n\n  179 insert_rest: opt_column_name_list_p . select_no_parens\n  180            | opt_column_name_list_p . DEFAULT VALUES\n  181            | opt_column_name_list_p . VALUES super_values_list\n\n    WITH     shift, and go to state 1\n    VALUES   shift, and go to state 431\n    DEFAULT  shift, and go to state 432\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_no_parens  go to state 433\n    opt_with_clause   go to state 43\n\n\nState 344\n\n  104 order_item_list: order_item OP_COMMA . order_item_list\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    order_item_list  go to state 434\n    order_item       go to state 263\n    expr             go to state 264\n    operand          go to state 154\n    cast_expr        go to state 155\n    scalar_expr      go to state 156\n    unary_expr       go to state 157\n    binary_expr      go to state 158\n    logic_expr       go to state 159\n    in_expr          go to state 160\n    case_expr        go to state 161\n    between_expr     go to state 162\n    exists_expr      go to state 163\n    function_expr    go to state 164\n    comp_expr        go to state 165\n    extract_expr     go to state 166\n    array_expr       go to state 167\n    array_index      go to state 168\n    literal          go to state 169\n    string_literal   go to state 170\n    bool_literal     go to state 171\n    num_literal      go to state 172\n    int_literal      go to state 173\n    float_literal    go to state 174\n    identifier       go to state 175\n    column_name      go to state 176\n    function_name    go to state 177\n    opt_not          go to state 178\n\n\nState 345\n\n  106 opt_order_behavior: ASC .\n\n    $default  reduce using rule 106 (opt_order_behavior)\n\n\nState 346\n\n  107 opt_order_behavior: DESC .\n\n    $default  reduce using rule 107 (opt_order_behavior)\n\n\nState 347\n\n  105 order_item: expr opt_order_behavior . opt_order_nulls\n\n    NULLS  shift, and go to state 435\n\n    $default  reduce using rule 102 (opt_order_nulls)\n\n    opt_order_nulls  go to state 436\n\n\nState 348\n\n   94 limit_clause: LIMIT expr OFFSET . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 437\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 349\n\n   95 limit_clause: LIMIT expr OP_COMMA . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 438\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 350\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause . opt_order_clause opt_limit_row_count\n\n    ORDER  shift, and go to state 90\n\n    $default  reduce using rule 99 (opt_order_clause)\n\n    opt_order_clause  go to state 439\n\n\nState 351\n\n  255 set_clause: OP_LP column_name_list OP_RP . OP_EQUAL expr\n\n    OP_EQUAL  shift, and go to state 440\n\n\nState 352\n\n   64 where_clause: WHERE expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 64 (where_clause)\n\n\nState 353\n\n  194 update_stmt: UPDATE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause . opt_limit_row_count\n\n    LIMIT  shift, and go to state 441\n\n    $default  reduce using rule 97 (opt_limit_row_count)\n\n    opt_limit_row_count  go to state 442\n\n\nState 354\n\n  253 set_clause_list: set_clause OP_COMMA set_clause_list .\n\n    $default  reduce using rule 253 (set_clause_list)\n\n\nState 355\n\n  254 set_clause: column_name OP_EQUAL expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 254 (set_clause)\n\n\nState 356\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name . FOR EACH ROW trigger_body\n\n    FOR  shift, and go to state 443\n\n\nState 357\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 63\n\n    $default  reduce using rule 251 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 444\n\n\nState 358\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_stmt         go to state 445\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 43\n\n\nState 359\n\n  129 table_option: INSERT_METHOD opt_op_equal . NO\n  130             | INSERT_METHOD opt_op_equal . FIRST\n  131             | INSERT_METHOD opt_op_equal . LAST\n\n    LAST   shift, and go to state 446\n    FIRST  shift, and go to state 447\n    NO     shift, and go to state 448\n\n\nState 360\n\n  120 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list . opt_table_constraint_list OP_RP opt_table_option_list\n\n    CONSTRAINT  shift, and go to state 449\n\n    $default  reduce using rule 399 (opt_table_constraint_list)\n\n    constraint_name            go to state 450\n    opt_table_constraint_list  go to state 451\n    table_constraint_list      go to state 452\n    table_constraint           go to state 453\n\n\nState 361\n\n  207 column_def_list: column_def .\n  208                | column_def . OP_COMMA column_def_list\n\n    OP_COMMA  shift, and go to state 454\n\n    $default  reduce using rule 207 (column_def_list)\n\n\nState 362\n\n  132 table_option: ROW_FORMAT opt_op_equal . DEFAULT\n  133             | ROW_FORMAT opt_op_equal . DYNAMIC\n  134             | ROW_FORMAT opt_op_equal . FIXED\n  135             | ROW_FORMAT opt_op_equal . COMPRESSED\n  136             | ROW_FORMAT opt_op_equal . REDUNDANT\n  137             | ROW_FORMAT opt_op_equal . COMPACT\n\n    COMPACT     shift, and go to state 455\n    REDUNDANT   shift, and go to state 456\n    COMPRESSED  shift, and go to state 457\n    DYNAMIC     shift, and go to state 458\n    DEFAULT     shift, and go to state 459\n    FIXED       shift, and go to state 460\n\n\nState 363\n\n  141 opt_ignore_or_replace: REPLACE .\n\n    $default  reduce using rule 141 (opt_ignore_or_replace)\n\n\nState 364\n\n  140 opt_ignore_or_replace: IGNORE .\n\n    $default  reduce using rule 140 (opt_ignore_or_replace)\n\n\nState 365\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace . AS select_stmt\n\n    AS  shift, and go to state 461\n\n\nState 366\n\n  138 opt_op_comma: OP_COMMA .\n\n    $default  reduce using rule 138 (opt_op_comma)\n\n\nState 367\n\n  128 table_option_list: table_option opt_op_comma . table_option_list\n\n    INSERT_METHOD  shift, and go to state 287\n    ROW_FORMAT     shift, and go to state 289\n\n    table_option_list  go to state 462\n    table_option       go to state 292\n\n\nState 368\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP . indexed_column_list OP_RP opt_index_option opt_extra_option\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    indexed_column_list  go to state 463\n    indexed_column       go to state 464\n    expr                 go to state 465\n    operand              go to state 154\n    cast_expr            go to state 155\n    scalar_expr          go to state 156\n    unary_expr           go to state 157\n    binary_expr          go to state 158\n    logic_expr           go to state 159\n    in_expr              go to state 160\n    case_expr            go to state 161\n    between_expr         go to state 162\n    exists_expr          go to state 163\n    function_expr        go to state 164\n    comp_expr            go to state 165\n    extract_expr         go to state 166\n    array_expr           go to state 167\n    array_index          go to state 168\n    literal              go to state 169\n    string_literal       go to state 170\n    bool_literal         go to state 171\n    num_literal          go to state 172\n    int_literal          go to state 173\n    float_literal        go to state 174\n    identifier           go to state 175\n    column_name          go to state 176\n    function_name        go to state 177\n    opt_not              go to state 178\n\n\nState 369\n\n  378 character_conflicta: TEXT .\n\n    $default  reduce using rule 378 (character_conflicta)\n\n\nState 370\n\n  388 numeric_type: BIGINT .\n\n    $default  reduce using rule 388 (numeric_type)\n\n\nState 371\n\n  396 numeric_type: NUMERIC .\n\n    $default  reduce using rule 396 (numeric_type)\n\n\nState 372\n\n  374 character_without_length: BINARY .\n\n    $default  reduce using rule 374 (character_without_length)\n\n\nState 373\n\n  382 character_conflicta: NATIONAL . CHARACTER\n  383                    | NATIONAL . CHAR\n\n    CHAR       shift, and go to state 466\n    CHARACTER  shift, and go to state 467\n\n\nState 374\n\n  373 character_without_length: ENUM .\n\n    $default  reduce using rule 373 (character_without_length)\n\n\nState 375\n\n  392 numeric_type: DOUBLE .\n  393             | DOUBLE . PRECISION\n\n    PRECISION  shift, and go to state 468\n\n    $default  reduce using rule 392 (numeric_type)\n\n\nState 376\n\n  381 character_conflicta: LONGTEXT .\n\n    $default  reduce using rule 381 (character_conflicta)\n\n\nState 377\n\n  395 numeric_type: DEC .\n\n    $default  reduce using rule 395 (numeric_type)\n\n\nState 378\n\n  386 numeric_type: INTEGER .\n\n    $default  reduce using rule 386 (numeric_type)\n\n\nState 379\n\n  372 character_without_length: SET .\n\n    $default  reduce using rule 372 (character_without_length)\n\n\nState 380\n\n  384 character_conflicta: NCHAR .\n\n    $default  reduce using rule 384 (character_conflicta)\n\n\nState 381\n\n  389 numeric_type: REAL .\n\n    $default  reduce using rule 389 (numeric_type)\n\n\nState 382\n\n  376 character_conflicta: CHAR .\n\n    $default  reduce using rule 376 (character_conflicta)\n\n\nState 383\n\n  391 numeric_type: FIXED .\n\n    $default  reduce using rule 391 (numeric_type)\n\n\nState 384\n\n  394 numeric_type: DECIMAL .\n\n    $default  reduce using rule 394 (numeric_type)\n\n\nState 385\n\n  385 numeric_type: INT .\n\n    $default  reduce using rule 385 (numeric_type)\n\n\nState 386\n\n  380 character_conflicta: MEDIUMTEXT .\n\n    $default  reduce using rule 380 (character_conflicta)\n\n\nState 387\n\n  397 numeric_type: BOOLEAN .\n\n    $default  reduce using rule 397 (numeric_type)\n\n\nState 388\n\n  375 character_conflicta: CHARACTER .\n\n    $default  reduce using rule 375 (character_conflicta)\n\n\nState 389\n\n  387 numeric_type: SMALLINT .\n\n    $default  reduce using rule 387 (numeric_type)\n\n\nState 390\n\n  377 character_conflicta: VARCHAR .\n\n    $default  reduce using rule 377 (character_conflicta)\n\n\nState 391\n\n  379 character_conflicta: TINYTEXT .\n\n    $default  reduce using rule 379 (character_conflicta)\n\n\nState 392\n\n  390 numeric_type: FLOAT .\n\n    $default  reduce using rule 390 (numeric_type)\n\n\nState 393\n\n  209 column_def: identifier type_name . opt_column_constraint_list\n\n    UNIQUE   shift, and go to state 469\n    PRIMARY  shift, and go to state 470\n    NOT      shift, and go to state 471\n\n    $default  reduce using rule 211 (opt_column_constraint_list)\n\n    opt_column_constraint_list  go to state 472\n    column_constraint_list      go to state 473\n    column_constraint           go to state 474\n    constraint_type             go to state 475\n\n\nState 394\n\n  367 type_name: character_type .\n\n    $default  reduce using rule 367 (type_name)\n\n\nState 395\n\n  368 character_type: character_with_length .\n\n    $default  reduce using rule 368 (character_type)\n\n\nState 396\n\n  369 character_type: character_without_length .\n\n    $default  reduce using rule 369 (character_type)\n\n\nState 397\n\n  370 character_with_length: character_conflicta . OP_LP int_literal OP_RP\n  371 character_without_length: character_conflicta .\n\n    OP_LP  shift, and go to state 476\n\n    $default  reduce using rule 371 (character_without_length)\n\n\nState 398\n\n  366 type_name: numeric_type .\n\n    $default  reduce using rule 366 (type_name)\n\n\nState 399\n\n  196 alter_action: RENAME opt_column column_name TO . column_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier   go to state 99\n    column_name  go to state 477\n\n\nState 400\n\n  311 case_clause: WHEN expr THEN . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 478\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 401\n\n  293 case_expr: CASE expr case_list END .\n\n    $default  reduce using rule 293 (case_expr)\n\n\nState 402\n\n  295 case_expr: CASE expr case_list ELSE . expr END\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 479\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 403\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  296 case_expr: CASE case_list ELSE expr . END\n\n    OR   shift, and go to state 236\n    END  shift, and go to state 480\n    AND  shift, and go to state 237\n\n\nState 404\n\n  325 array_expr: ARRAY OP_LBRACKET expr_list OP_RBRACKET .\n\n    $default  reduce using rule 325 (array_expr)\n\n\nState 405\n\n  318 extract_expr: EXTRACT OP_LP datetime_field FROM . expr OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 481\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 406\n\n  274 cast_expr: CAST OP_LP expr AS . type_name OP_RP\n\n    TEXT        shift, and go to state 369\n    BIGINT      shift, and go to state 370\n    NUMERIC     shift, and go to state 371\n    BINARY      shift, and go to state 372\n    NATIONAL    shift, and go to state 373\n    ENUM        shift, and go to state 374\n    DOUBLE      shift, and go to state 375\n    LONGTEXT    shift, and go to state 376\n    DEC         shift, and go to state 377\n    INTEGER     shift, and go to state 378\n    SET         shift, and go to state 379\n    NCHAR       shift, and go to state 380\n    REAL        shift, and go to state 381\n    CHAR        shift, and go to state 382\n    FIXED       shift, and go to state 383\n    DECIMAL     shift, and go to state 384\n    INT         shift, and go to state 385\n    MEDIUMTEXT  shift, and go to state 386\n    BOOLEAN     shift, and go to state 387\n    CHARACTER   shift, and go to state 388\n    SMALLINT    shift, and go to state 389\n    VARCHAR     shift, and go to state 390\n    TINYTEXT    shift, and go to state 391\n    FLOAT       shift, and go to state 392\n\n    type_name                 go to state 482\n    character_type            go to state 394\n    character_with_length     go to state 395\n    character_without_length  go to state 396\n    character_conflicta       go to state 397\n    numeric_type              go to state 398\n\n\nState 407\n\n   83 join_op: NATURAL . opt_join_type JOIN\n\n    CROSS  shift, and go to state 483\n    LEFT   shift, and go to state 484\n    INNER  shift, and go to state 485\n\n    $default  reduce using rule 88 (opt_join_type)\n\n    opt_join_type  go to state 486\n\n\nState 408\n\n   81 join_op: OP_COMMA .\n\n    $default  reduce using rule 81 (join_op)\n\n\nState 409\n\n   82 join_op: JOIN .\n\n    $default  reduce using rule 82 (join_op)\n\n\nState 410\n\n   79 opt_table_prefix: table_ref join_op .\n\n    $default  reduce using rule 79 (opt_table_prefix)\n\n\nState 411\n\n   68 table_ref: opt_table_prefix OP_LP . select_no_parens OP_RP opt_as_alias opt_on opt_using\n   69          | opt_table_prefix OP_LP . table_ref OP_RP opt_as_alias opt_on opt_using\n\n    WITH  shift, and go to state 1\n\n    SELECT    reduce using rule 111 (opt_with_clause)\n    $default  reduce using rule 80 (opt_table_prefix)\n\n    select_no_parens  go to state 487\n    table_ref         go to state 488\n    opt_table_prefix  go to state 318\n    opt_with_clause   go to state 43\n\n\nState 412\n\n  349 table_name: identifier .\n  356 function_name: identifier .\n\n    OP_LP     reduce using rule 356 (function_name)\n    $default  reduce using rule 349 (table_name)\n\n\nState 413\n\n   66 table_ref: opt_table_prefix table_name . opt_as_alias opt_index opt_on opt_using\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 489\n    as_alias      go to state 68\n\n\nState 414\n\n   67 table_ref: opt_table_prefix function_name . OP_LP expr_list OP_RP opt_as_alias opt_on opt_using\n\n    OP_LP  shift, and go to state 490\n\n\nState 415\n\n   58 opt_group_clause: GROUP . BY expr_list opt_having_clause\n\n    BY  shift, and go to state 491\n\n\nState 416\n\n   26 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause . opt_window_clause\n\n    WINDOW  shift, and go to state 492\n\n    $default  reduce using rule 34 (opt_window_clause)\n\n    opt_window_clause  go to state 493\n    window_clause      go to state 494\n\n\nState 417\n\n   89 expr_list: expr opt_as_alias OP_COMMA expr_list .\n\n    $default  reduce using rule 89 (expr_list)\n\n\nState 418\n\n  281 unary_expr: operand IS NOT NULL .\n\n    $default  reduce using rule 281 (unary_expr)\n\n\nState 419\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  298 between_expr: operand NOT BETWEEN operand . AND operand\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    AND             shift, and go to state 495\n    NOT             shift, and go to state 300\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    binary_op  go to state 257\n\n\nState 420\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  287            | operand NOT LIKE operand .\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 287 (binary_expr)\n\n    binary_op  go to state 257\n\n\nState 421\n\n  297 between_expr: operand BETWEEN operand AND . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 496\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 422\n\n  326 array_index: operand OP_LBRACKET int_literal OP_RBRACKET .\n\n    $default  reduce using rule 326 (array_index)\n\n\nState 423\n\n  290 in_expr: operand opt_not IN OP_LP . select_no_parens OP_RP\n  291        | operand opt_not IN OP_LP . expr_list OP_RP\n\n    WITH           shift, and go to state 1\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    EXISTS    reduce using rule 364 (opt_not)\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_no_parens  go to state 497\n    expr_list         go to state 498\n    opt_with_clause   go to state 43\n    expr              go to state 153\n    operand           go to state 154\n    cast_expr         go to state 155\n    scalar_expr       go to state 156\n    unary_expr        go to state 157\n    binary_expr       go to state 158\n    logic_expr        go to state 159\n    in_expr           go to state 160\n    case_expr         go to state 161\n    between_expr      go to state 162\n    exists_expr       go to state 163\n    function_expr     go to state 164\n    comp_expr         go to state 165\n    extract_expr      go to state 166\n    array_expr        go to state 167\n    array_index       go to state 168\n    literal           go to state 169\n    string_literal    go to state 170\n    bool_literal      go to state 171\n    num_literal       go to state 172\n    int_literal       go to state 173\n    float_literal     go to state 174\n    identifier        go to state 175\n    column_name       go to state 176\n    function_name     go to state 177\n    opt_not           go to state 178\n\n\nState 424\n\n  292 in_expr: operand opt_not IN table_name .\n\n    $default  reduce using rule 292 (in_expr)\n\n\nState 425\n\n  304 opt_filter_clause: FILTER . OP_LP WHERE expr OP_RP\n\n    OP_LP  shift, and go to state 499\n\n\nState 426\n\n  300 function_expr: function_name OP_LP OP_RP opt_filter_clause . opt_over_clause\n\n    OVER  shift, and go to state 500\n\n    $default  reduce using rule 308 (opt_over_clause)\n\n    opt_over_clause  go to state 501\n\n\nState 427\n\n  301 function_expr: function_name OP_LP opt_distinct expr_list . OP_RP opt_filter_clause opt_over_clause\n\n    OP_RP  shift, and go to state 502\n\n\nState 428\n\n  299 exists_expr: opt_not EXISTS OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 503\n\n\nState 429\n\n  185 opt_on_conflict: ON . CONFLICT opt_conflict_expr DO NOTHING\n  186                | ON . CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause\n\n    CONFLICT  shift, and go to state 504\n\n\nState 430\n\n  178 insert_stmt: opt_with_clause INSERT INTO table_name opt_as_alias insert_rest opt_on_conflict .\n\n    $default  reduce using rule 178 (insert_stmt)\n\n\nState 431\n\n  181 insert_rest: opt_column_name_list_p VALUES . super_values_list\n\n    OP_LP  shift, and go to state 505\n\n    super_values_list  go to state 506\n    values_list        go to state 507\n\n\nState 432\n\n  180 insert_rest: opt_column_name_list_p DEFAULT . VALUES\n\n    VALUES  shift, and go to state 508\n\n\nState 433\n\n  179 insert_rest: opt_column_name_list_p select_no_parens .\n\n    $default  reduce using rule 179 (insert_rest)\n\n\nState 434\n\n  104 order_item_list: order_item OP_COMMA order_item_list .\n\n    $default  reduce using rule 104 (order_item_list)\n\n\nState 435\n\n  100 opt_order_nulls: NULLS . FIRST\n  101                | NULLS . LAST\n\n    LAST   shift, and go to state 509\n    FIRST  shift, and go to state 510\n\n\nState 436\n\n  105 order_item: expr opt_order_behavior opt_order_nulls .\n\n    $default  reduce using rule 105 (order_item)\n\n\nState 437\n\n   94 limit_clause: LIMIT expr OFFSET expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 94 (limit_clause)\n\n\nState 438\n\n   95 limit_clause: LIMIT expr OP_COMMA expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 95 (limit_clause)\n\n\nState 439\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause . opt_limit_row_count\n\n    LIMIT  shift, and go to state 441\n\n    $default  reduce using rule 97 (opt_limit_row_count)\n\n    opt_limit_row_count  go to state 511\n\n\nState 440\n\n  255 set_clause: OP_LP column_name_list OP_RP OP_EQUAL . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 512\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 441\n\n   96 opt_limit_row_count: LIMIT . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 513\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 442\n\n  194 update_stmt: UPDATE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count .\n\n    $default  reduce using rule 194 (update_stmt)\n\n\nState 443\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR . EACH ROW trigger_body\n\n    EACH  shift, and go to state 514\n\n\nState 444\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 515\n\n\nState 445\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 516\n\n    $default  reduce using rule 249 (opt_check_option)\n\n    opt_check_option  go to state 517\n\n\nState 446\n\n  131 table_option: INSERT_METHOD opt_op_equal LAST .\n\n    $default  reduce using rule 131 (table_option)\n\n\nState 447\n\n  130 table_option: INSERT_METHOD opt_op_equal FIRST .\n\n    $default  reduce using rule 130 (table_option)\n\n\nState 448\n\n  129 table_option: INSERT_METHOD opt_op_equal NO .\n\n    $default  reduce using rule 129 (table_option)\n\n\nState 449\n\n  243 constraint_name: CONSTRAINT . name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 518\n    name        go to state 519\n\n\nState 450\n\n  402 table_constraint: constraint_name . PRIMARY KEY OP_LP indexed_column_list OP_RP\n  403                 | constraint_name . UNIQUE OP_LP indexed_column_list OP_RP\n  404                 | constraint_name . CHECK OP_LP expr OP_RP opt_enforced\n  405                 | constraint_name . FOREIGN KEY OP_LP column_name_list OP_RP reference_clause\n\n    CHECK    shift, and go to state 520\n    UNIQUE   shift, and go to state 521\n    PRIMARY  shift, and go to state 522\n    FOREIGN  shift, and go to state 523\n\n\nState 451\n\n  120 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list . OP_RP opt_table_option_list\n\n    OP_RP  shift, and go to state 524\n\n\nState 452\n\n  398 opt_table_constraint_list: table_constraint_list .\n\n    $default  reduce using rule 398 (opt_table_constraint_list)\n\n\nState 453\n\n  400 table_constraint_list: table_constraint .\n  401                      | table_constraint . OP_COMMA table_constraint_list\n\n    OP_COMMA  shift, and go to state 525\n\n    $default  reduce using rule 400 (table_constraint_list)\n\n\nState 454\n\n  208 column_def_list: column_def OP_COMMA . column_def_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_def_list  go to state 526\n    column_def       go to state 361\n    identifier       go to state 297\n\n\nState 455\n\n  137 table_option: ROW_FORMAT opt_op_equal COMPACT .\n\n    $default  reduce using rule 137 (table_option)\n\n\nState 456\n\n  136 table_option: ROW_FORMAT opt_op_equal REDUNDANT .\n\n    $default  reduce using rule 136 (table_option)\n\n\nState 457\n\n  135 table_option: ROW_FORMAT opt_op_equal COMPRESSED .\n\n    $default  reduce using rule 135 (table_option)\n\n\nState 458\n\n  133 table_option: ROW_FORMAT opt_op_equal DYNAMIC .\n\n    $default  reduce using rule 133 (table_option)\n\n\nState 459\n\n  132 table_option: ROW_FORMAT opt_op_equal DEFAULT .\n\n    $default  reduce using rule 132 (table_option)\n\n\nState 460\n\n  134 table_option: ROW_FORMAT opt_op_equal FIXED .\n\n    $default  reduce using rule 134 (table_option)\n\n\nState 461\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS . select_stmt\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_stmt         go to state 527\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 43\n\n\nState 462\n\n  128 table_option_list: table_option opt_op_comma table_option_list .\n\n    $default  reduce using rule 128 (table_option_list)\n\n\nState 463\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list . OP_RP opt_index_option opt_extra_option\n\n    OP_RP  shift, and go to state 528\n\n\nState 464\n\n  190 indexed_column_list: indexed_column .\n  191                    | indexed_column . OP_COMMA indexed_column_list\n\n    OP_COMMA  shift, and go to state 529\n\n    $default  reduce using rule 190 (indexed_column_list)\n\n\nState 465\n\n  192 indexed_column: expr . opt_order_behavior\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR    shift, and go to state 236\n    AND   shift, and go to state 237\n    ASC   shift, and go to state 345\n    DESC  shift, and go to state 346\n\n    $default  reduce using rule 108 (opt_order_behavior)\n\n    opt_order_behavior  go to state 530\n\n\nState 466\n\n  383 character_conflicta: NATIONAL CHAR .\n\n    $default  reduce using rule 383 (character_conflicta)\n\n\nState 467\n\n  382 character_conflicta: NATIONAL CHARACTER .\n\n    $default  reduce using rule 382 (character_conflicta)\n\n\nState 468\n\n  393 numeric_type: DOUBLE PRECISION .\n\n    $default  reduce using rule 393 (numeric_type)\n\n\nState 469\n\n  221 constraint_type: UNIQUE .\n\n    $default  reduce using rule 221 (constraint_type)\n\n\nState 470\n\n  219 constraint_type: PRIMARY . KEY\n\n    KEY  shift, and go to state 531\n\n\nState 471\n\n  220 constraint_type: NOT . NULL\n\n    NULL  shift, and go to state 532\n\n\nState 472\n\n  209 column_def: identifier type_name opt_column_constraint_list .\n\n    $default  reduce using rule 209 (column_def)\n\n\nState 473\n\n  210 opt_column_constraint_list: column_constraint_list . opt_check opt_reference_clause\n\n    CHECK  shift, and go to state 533\n\n    $default  reduce using rule 218 (opt_check)\n\n    opt_check  go to state 534\n\n\nState 474\n\n  212 column_constraint_list: column_constraint .\n  213                       | column_constraint . column_constraint_list\n\n    UNIQUE   shift, and go to state 469\n    PRIMARY  shift, and go to state 470\n    NOT      shift, and go to state 471\n\n    $default  reduce using rule 212 (column_constraint_list)\n\n    column_constraint_list  go to state 535\n    column_constraint       go to state 474\n    constraint_type         go to state 475\n\n\nState 475\n\n  214 column_constraint: constraint_type .\n\n    $default  reduce using rule 214 (column_constraint)\n\n\nState 476\n\n  370 character_with_length: character_conflicta OP_LP . int_literal OP_RP\n\n    INTLITERAL  shift, and go to state 148\n\n    int_literal  go to state 536\n\n\nState 477\n\n  196 alter_action: RENAME opt_column column_name TO column_name .\n\n    $default  reduce using rule 196 (alter_action)\n\n\nState 478\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  311 case_clause: WHEN expr THEN expr .\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 311 (case_clause)\n\n\nState 479\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  295 case_expr: CASE expr case_list ELSE expr . END\n\n    OR   shift, and go to state 236\n    END  shift, and go to state 537\n    AND  shift, and go to state 237\n\n\nState 480\n\n  296 case_expr: CASE case_list ELSE expr END .\n\n    $default  reduce using rule 296 (case_expr)\n\n\nState 481\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  318 extract_expr: EXTRACT OP_LP datetime_field FROM expr . OP_RP\n\n    OR     shift, and go to state 236\n    AND    shift, and go to state 237\n    OP_RP  shift, and go to state 538\n\n\nState 482\n\n  274 cast_expr: CAST OP_LP expr AS type_name . OP_RP\n\n    OP_RP  shift, and go to state 539\n\n\nState 483\n\n   87 opt_join_type: CROSS .\n\n    $default  reduce using rule 87 (opt_join_type)\n\n\nState 484\n\n   84 opt_join_type: LEFT .\n   85              | LEFT . OUTER\n\n    OUTER  shift, and go to state 540\n\n    $default  reduce using rule 84 (opt_join_type)\n\n\nState 485\n\n   86 opt_join_type: INNER .\n\n    $default  reduce using rule 86 (opt_join_type)\n\n\nState 486\n\n   83 join_op: NATURAL opt_join_type . JOIN\n\n    JOIN  shift, and go to state 541\n\n\nState 487\n\n   68 table_ref: opt_table_prefix OP_LP select_no_parens . OP_RP opt_as_alias opt_on opt_using\n\n    OP_RP  shift, and go to state 542\n\n\nState 488\n\n   69 table_ref: opt_table_prefix OP_LP table_ref . OP_RP opt_as_alias opt_on opt_using\n   79 opt_table_prefix: table_ref . join_op\n\n    NATURAL   shift, and go to state 407\n    OP_COMMA  shift, and go to state 408\n    JOIN      shift, and go to state 409\n    OP_RP     shift, and go to state 543\n\n    join_op  go to state 410\n\n\nState 489\n\n   66 table_ref: opt_table_prefix table_name opt_as_alias . opt_index opt_on opt_using\n\n    INDEXED  shift, and go to state 544\n    NOT      shift, and go to state 545\n\n    $default  reduce using rule 72 (opt_index)\n\n    opt_index  go to state 546\n\n\nState 490\n\n   67 table_ref: opt_table_prefix function_name OP_LP . expr_list OP_RP opt_as_alias opt_on opt_using\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 547\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 491\n\n   58 opt_group_clause: GROUP BY . expr_list opt_having_clause\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 548\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 492\n\n   35 window_clause: WINDOW . window_def_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    window_def_list  go to state 549\n    window_def       go to state 550\n    window_name      go to state 551\n    identifier       go to state 552\n\n\nState 493\n\n   26 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause .\n\n    $default  reduce using rule 26 (select_clause)\n\n\nState 494\n\n   33 opt_window_clause: window_clause .\n\n    $default  reduce using rule 33 (opt_window_clause)\n\n\nState 495\n\n  298 between_expr: operand NOT BETWEEN operand AND . operand\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 221\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    operand         go to state 553\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    case_expr       go to state 161\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n\n\nState 496\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  297 between_expr: operand BETWEEN operand AND operand .\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    NOT             shift, and go to state 300\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    $default  reduce using rule 297 (between_expr)\n\n    binary_op  go to state 257\n\n\nState 497\n\n  290 in_expr: operand opt_not IN OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 554\n\n\nState 498\n\n  291 in_expr: operand opt_not IN OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 555\n\n\nState 499\n\n  304 opt_filter_clause: FILTER OP_LP . WHERE expr OP_RP\n\n    WHERE  shift, and go to state 556\n\n\nState 500\n\n  306 opt_over_clause: OVER . OP_LP window OP_RP\n  307                | OVER . window_name\n\n    OP_LP       shift, and go to state 557\n    IDENTIFIER  shift, and go to state 28\n\n    window_name  go to state 558\n    identifier   go to state 552\n\n\nState 501\n\n  300 function_expr: function_name OP_LP OP_RP opt_filter_clause opt_over_clause .\n\n    $default  reduce using rule 300 (function_expr)\n\n\nState 502\n\n  301 function_expr: function_name OP_LP opt_distinct expr_list OP_RP . opt_filter_clause opt_over_clause\n\n    FILTER  shift, and go to state 425\n\n    $default  reduce using rule 305 (opt_filter_clause)\n\n    opt_filter_clause  go to state 559\n\n\nState 503\n\n  299 exists_expr: opt_not EXISTS OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 299 (exists_expr)\n\n\nState 504\n\n  185 opt_on_conflict: ON CONFLICT . opt_conflict_expr DO NOTHING\n  186                | ON CONFLICT . opt_conflict_expr DO UPDATE set_clause_list where_clause\n\n    OP_LP  shift, and go to state 560\n\n    $default  reduce using rule 189 (opt_conflict_expr)\n\n    opt_conflict_expr  go to state 561\n\n\nState 505\n\n  184 values_list: OP_LP . expr_list OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 562\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 506\n\n  181 insert_rest: opt_column_name_list_p VALUES super_values_list .\n\n    $default  reduce using rule 181 (insert_rest)\n\n\nState 507\n\n  182 super_values_list: values_list .\n  183                  | values_list . OP_COMMA super_values_list\n\n    OP_COMMA  shift, and go to state 563\n\n    $default  reduce using rule 182 (super_values_list)\n\n\nState 508\n\n  180 insert_rest: opt_column_name_list_p DEFAULT VALUES .\n\n    $default  reduce using rule 180 (insert_rest)\n\n\nState 509\n\n  101 opt_order_nulls: NULLS LAST .\n\n    $default  reduce using rule 101 (opt_order_nulls)\n\n\nState 510\n\n  100 opt_order_nulls: NULLS FIRST .\n\n    $default  reduce using rule 100 (opt_order_nulls)\n\n\nState 511\n\n  193 update_stmt: UPDATE IGNORE table_name opt_as_alias SET set_clause_list opt_where_clause opt_order_clause opt_limit_row_count .\n\n    $default  reduce using rule 193 (update_stmt)\n\n\nState 512\n\n  255 set_clause: OP_LP column_name_list OP_RP OP_EQUAL expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 255 (set_clause)\n\n\nState 513\n\n   96 opt_limit_row_count: LIMIT expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 96 (opt_limit_row_count)\n\n\nState 514\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH . ROW trigger_body\n\n    ROW  shift, and go to state 564\n\n\nState 515\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    select_stmt         go to state 565\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 43\n\n\nState 516\n\n  246 opt_check_option: WITH . CHECK OPTION\n  247                 | WITH . CASCADED CHECK OPTION\n  248                 | WITH . LOCAL CHECK OPTION\n\n    CHECK     shift, and go to state 566\n    LOCAL     shift, and go to state 567\n    CASCADED  shift, and go to state 568\n\n\nState 517\n\n  123 create_view_stmt: CREATE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 123 (create_view_stmt)\n\n\nState 518\n\n  365 name: identifier .\n\n    $default  reduce using rule 365 (name)\n\n\nState 519\n\n  243 constraint_name: CONSTRAINT name .\n\n    $default  reduce using rule 243 (constraint_name)\n\n\nState 520\n\n  404 table_constraint: constraint_name CHECK . OP_LP expr OP_RP opt_enforced\n\n    OP_LP  shift, and go to state 569\n\n\nState 521\n\n  403 table_constraint: constraint_name UNIQUE . OP_LP indexed_column_list OP_RP\n\n    OP_LP  shift, and go to state 570\n\n\nState 522\n\n  402 table_constraint: constraint_name PRIMARY . KEY OP_LP indexed_column_list OP_RP\n\n    KEY  shift, and go to state 571\n\n\nState 523\n\n  405 table_constraint: constraint_name FOREIGN . KEY OP_LP column_name_list OP_RP reference_clause\n\n    KEY  shift, and go to state 572\n\n\nState 524\n\n  120 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP . opt_table_option_list\n\n    INSERT_METHOD  shift, and go to state 287\n    ROW_FORMAT     shift, and go to state 289\n\n    $default  reduce using rule 126 (opt_table_option_list)\n\n    opt_table_option_list  go to state 573\n    table_option_list      go to state 291\n    table_option           go to state 292\n\n\nState 525\n\n  401 table_constraint_list: table_constraint OP_COMMA . table_constraint_list\n\n    CONSTRAINT  shift, and go to state 449\n\n    constraint_name        go to state 450\n    table_constraint_list  go to state 574\n    table_constraint       go to state 453\n\n\nState 526\n\n  208 column_def_list: column_def OP_COMMA column_def_list .\n\n    $default  reduce using rule 208 (column_def_list)\n\n\nState 527\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name opt_table_option_list opt_ignore_or_replace AS select_stmt .\n\n    $default  reduce using rule 119 (create_table_stmt)\n\n\nState 528\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP . opt_index_option opt_extra_option\n\n    USING  shift, and go to state 575\n\n    $default  reduce using rule 152 (opt_index_option)\n\n    opt_index_option  go to state 576\n\n\nState 529\n\n  191 indexed_column_list: indexed_column OP_COMMA . indexed_column_list\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    indexed_column_list  go to state 577\n    indexed_column       go to state 464\n    expr                 go to state 465\n    operand              go to state 154\n    cast_expr            go to state 155\n    scalar_expr          go to state 156\n    unary_expr           go to state 157\n    binary_expr          go to state 158\n    logic_expr           go to state 159\n    in_expr              go to state 160\n    case_expr            go to state 161\n    between_expr         go to state 162\n    exists_expr          go to state 163\n    function_expr        go to state 164\n    comp_expr            go to state 165\n    extract_expr         go to state 166\n    array_expr           go to state 167\n    array_index          go to state 168\n    literal              go to state 169\n    string_literal       go to state 170\n    bool_literal         go to state 171\n    num_literal          go to state 172\n    int_literal          go to state 173\n    float_literal        go to state 174\n    identifier           go to state 175\n    column_name          go to state 176\n    function_name        go to state 177\n    opt_not              go to state 178\n\n\nState 530\n\n  192 indexed_column: expr opt_order_behavior .\n\n    $default  reduce using rule 192 (indexed_column)\n\n\nState 531\n\n  219 constraint_type: PRIMARY KEY .\n\n    $default  reduce using rule 219 (constraint_type)\n\n\nState 532\n\n  220 constraint_type: NOT NULL .\n\n    $default  reduce using rule 220 (constraint_type)\n\n\nState 533\n\n  217 opt_check: CHECK . OP_LP expr OP_RP opt_enforced\n\n    OP_LP  shift, and go to state 578\n\n\nState 534\n\n  210 opt_column_constraint_list: column_constraint_list opt_check . opt_reference_clause\n\n    FOREIGN  shift, and go to state 579\n\n    REFERENCES  reduce using rule 224 (opt_foreign_key)\n    $default    reduce using rule 216 (opt_reference_clause)\n\n    opt_reference_clause  go to state 580\n    opt_foreign_key       go to state 581\n\n\nState 535\n\n  213 column_constraint_list: column_constraint column_constraint_list .\n\n    $default  reduce using rule 213 (column_constraint_list)\n\n\nState 536\n\n  370 character_with_length: character_conflicta OP_LP int_literal . OP_RP\n\n    OP_RP  shift, and go to state 582\n\n\nState 537\n\n  295 case_expr: CASE expr case_list ELSE expr END .\n\n    $default  reduce using rule 295 (case_expr)\n\n\nState 538\n\n  318 extract_expr: EXTRACT OP_LP datetime_field FROM expr OP_RP .\n\n    $default  reduce using rule 318 (extract_expr)\n\n\nState 539\n\n  274 cast_expr: CAST OP_LP expr AS type_name OP_RP .\n\n    $default  reduce using rule 274 (cast_expr)\n\n\nState 540\n\n   85 opt_join_type: LEFT OUTER .\n\n    $default  reduce using rule 85 (opt_join_type)\n\n\nState 541\n\n   83 join_op: NATURAL opt_join_type JOIN .\n\n    $default  reduce using rule 83 (join_op)\n\n\nState 542\n\n   68 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP . opt_as_alias opt_on opt_using\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 583\n    as_alias      go to state 68\n\n\nState 543\n\n   69 table_ref: opt_table_prefix OP_LP table_ref OP_RP . opt_as_alias opt_on opt_using\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 584\n    as_alias      go to state 68\n\n\nState 544\n\n   70 opt_index: INDEXED . BY column_name\n\n    BY  shift, and go to state 585\n\n\nState 545\n\n   71 opt_index: NOT . INDEXED\n\n    INDEXED  shift, and go to state 586\n\n\nState 546\n\n   66 table_ref: opt_table_prefix table_name opt_as_alias opt_index . opt_on opt_using\n\n    ON  shift, and go to state 587\n\n    $default  reduce using rule 74 (opt_on)\n\n    opt_on  go to state 588\n\n\nState 547\n\n   67 table_ref: opt_table_prefix function_name OP_LP expr_list . OP_RP opt_as_alias opt_on opt_using\n\n    OP_RP  shift, and go to state 589\n\n\nState 548\n\n   58 opt_group_clause: GROUP BY expr_list . opt_having_clause\n\n    HAVING  shift, and go to state 590\n\n    $default  reduce using rule 61 (opt_having_clause)\n\n    opt_having_clause  go to state 591\n\n\nState 549\n\n   35 window_clause: WINDOW window_def_list .\n\n    $default  reduce using rule 35 (window_clause)\n\n\nState 550\n\n   36 window_def_list: window_def .\n   37                | window_def . OP_COMMA window_def_list\n\n    OP_COMMA  shift, and go to state 592\n\n    $default  reduce using rule 36 (window_def_list)\n\n\nState 551\n\n   38 window_def: window_name . AS OP_LP window OP_RP\n\n    AS  shift, and go to state 593\n\n\nState 552\n\n   39 window_name: identifier .\n\n    $default  reduce using rule 39 (window_name)\n\n\nState 553\n\n  279 unary_expr: operand . ISNULL\n  280           | operand . IS NULL\n  281           | operand . IS NOT NULL\n  285 binary_expr: operand . binary_op operand\n  286            | operand . LIKE operand\n  287            | operand . NOT LIKE operand\n  298 between_expr: operand NOT BETWEEN operand AND operand .\n  312 comp_expr: operand . OP_EQUAL operand\n  313          | operand . OP_NOTEQUAL operand\n  314          | operand . OP_GREATERTHAN operand\n  315          | operand . OP_LESSTHAN operand\n  316          | operand . OP_LESSEQ operand\n  317          | operand . OP_GREATEREQ operand\n  326 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 239\n    OP_GREATERTHAN  shift, and go to state 240\n    OP_LESSTHAN     shift, and go to state 241\n    OP_GREATEREQ    shift, and go to state 242\n    OP_ADD          shift, and go to state 243\n    OP_SUB          shift, and go to state 244\n    OP_MUL          shift, and go to state 245\n    OP_MOD          shift, and go to state 246\n    IS              shift, and go to state 247\n    NOT             shift, and go to state 300\n    OP_XOR          shift, and go to state 249\n    OP_LESSEQ       shift, and go to state 251\n    LIKE            shift, and go to state 252\n    OP_LBRACKET     shift, and go to state 253\n    OP_DIVIDE       shift, and go to state 254\n    ISNULL          shift, and go to state 255\n    OP_EQUAL        shift, and go to state 256\n\n    $default  reduce using rule 298 (between_expr)\n\n    binary_op  go to state 257\n\n\nState 554\n\n  290 in_expr: operand opt_not IN OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 290 (in_expr)\n\n\nState 555\n\n  291 in_expr: operand opt_not IN OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 291 (in_expr)\n\n\nState 556\n\n  304 opt_filter_clause: FILTER OP_LP WHERE . expr OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 594\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 557\n\n  306 opt_over_clause: OVER OP_LP . window OP_RP\n\n    IDENTIFIER  shift, and go to state 28\n\n    $default  reduce using rule 57 (opt_exist_window_name)\n\n    window                 go to state 595\n    opt_exist_window_name  go to state 596\n    identifier             go to state 597\n\n\nState 558\n\n  307 opt_over_clause: OVER window_name .\n\n    $default  reduce using rule 307 (opt_over_clause)\n\n\nState 559\n\n  301 function_expr: function_name OP_LP opt_distinct expr_list OP_RP opt_filter_clause . opt_over_clause\n\n    OVER  shift, and go to state 500\n\n    $default  reduce using rule 308 (opt_over_clause)\n\n    opt_over_clause  go to state 598\n\n\nState 560\n\n  188 opt_conflict_expr: OP_LP . indexed_column_list OP_RP where_clause\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    indexed_column_list  go to state 599\n    indexed_column       go to state 464\n    expr                 go to state 465\n    operand              go to state 154\n    cast_expr            go to state 155\n    scalar_expr          go to state 156\n    unary_expr           go to state 157\n    binary_expr          go to state 158\n    logic_expr           go to state 159\n    in_expr              go to state 160\n    case_expr            go to state 161\n    between_expr         go to state 162\n    exists_expr          go to state 163\n    function_expr        go to state 164\n    comp_expr            go to state 165\n    extract_expr         go to state 166\n    array_expr           go to state 167\n    array_index          go to state 168\n    literal              go to state 169\n    string_literal       go to state 170\n    bool_literal         go to state 171\n    num_literal          go to state 172\n    int_literal          go to state 173\n    float_literal        go to state 174\n    identifier           go to state 175\n    column_name          go to state 176\n    function_name        go to state 177\n    opt_not              go to state 178\n\n\nState 561\n\n  185 opt_on_conflict: ON CONFLICT opt_conflict_expr . DO NOTHING\n  186                | ON CONFLICT opt_conflict_expr . DO UPDATE set_clause_list where_clause\n\n    DO  shift, and go to state 600\n\n\nState 562\n\n  184 values_list: OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 601\n\n\nState 563\n\n  183 super_values_list: values_list OP_COMMA . super_values_list\n\n    OP_LP  shift, and go to state 505\n\n    super_values_list  go to state 602\n    values_list        go to state 507\n\n\nState 564\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW . trigger_body\n\n    WITH    shift, and go to state 1\n    UPDATE  shift, and go to state 2\n    DROP    shift, and go to state 3\n    ALTER   shift, and go to state 6\n\n    $default  reduce using rule 111 (opt_with_clause)\n\n    drop_stmt          go to state 603\n    alter_stmt         go to state 604\n    opt_with_clause    go to state 605\n    drop_index_stmt    go to state 21\n    drop_table_stmt    go to state 22\n    drop_trigger_stmt  go to state 23\n    drop_view_stmt     go to state 24\n    insert_stmt        go to state 606\n    update_stmt        go to state 607\n    trigger_body       go to state 608\n\n\nState 565\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 516\n\n    $default  reduce using rule 249 (opt_check_option)\n\n    opt_check_option  go to state 609\n\n\nState 566\n\n  246 opt_check_option: WITH CHECK . OPTION\n\n    OPTION  shift, and go to state 610\n\n\nState 567\n\n  248 opt_check_option: WITH LOCAL . CHECK OPTION\n\n    CHECK  shift, and go to state 611\n\n\nState 568\n\n  247 opt_check_option: WITH CASCADED . CHECK OPTION\n\n    CHECK  shift, and go to state 612\n\n\nState 569\n\n  404 table_constraint: constraint_name CHECK OP_LP . expr OP_RP opt_enforced\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 613\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 570\n\n  403 table_constraint: constraint_name UNIQUE OP_LP . indexed_column_list OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    indexed_column_list  go to state 614\n    indexed_column       go to state 464\n    expr                 go to state 465\n    operand              go to state 154\n    cast_expr            go to state 155\n    scalar_expr          go to state 156\n    unary_expr           go to state 157\n    binary_expr          go to state 158\n    logic_expr           go to state 159\n    in_expr              go to state 160\n    case_expr            go to state 161\n    between_expr         go to state 162\n    exists_expr          go to state 163\n    function_expr        go to state 164\n    comp_expr            go to state 165\n    extract_expr         go to state 166\n    array_expr           go to state 167\n    array_index          go to state 168\n    literal              go to state 169\n    string_literal       go to state 170\n    bool_literal         go to state 171\n    num_literal          go to state 172\n    int_literal          go to state 173\n    float_literal        go to state 174\n    identifier           go to state 175\n    column_name          go to state 176\n    function_name        go to state 177\n    opt_not              go to state 178\n\n\nState 571\n\n  402 table_constraint: constraint_name PRIMARY KEY . OP_LP indexed_column_list OP_RP\n\n    OP_LP  shift, and go to state 615\n\n\nState 572\n\n  405 table_constraint: constraint_name FOREIGN KEY . OP_LP column_name_list OP_RP reference_clause\n\n    OP_LP  shift, and go to state 616\n\n\nState 573\n\n  120 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP opt_table_option_list .\n\n    $default  reduce using rule 120 (create_table_stmt)\n\n\nState 574\n\n  401 table_constraint_list: table_constraint OP_COMMA table_constraint_list .\n\n    $default  reduce using rule 401 (table_constraint_list)\n\n\nState 575\n\n  150 opt_index_option: USING . BTREE\n  151                 | USING . HASH\n\n    HASH   shift, and go to state 617\n    BTREE  shift, and go to state 618\n\n\nState 576\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option . opt_extra_option\n\n    ALGORITHM  shift, and go to state 108\n    LOCK       shift, and go to state 109\n\n    $default  reduce using rule 155 (opt_extra_option)\n\n    opt_extra_option        go to state 619\n    index_algorithm_option  go to state 111\n    lock_option             go to state 112\n\n\nState 577\n\n  191 indexed_column_list: indexed_column OP_COMMA indexed_column_list .\n\n    $default  reduce using rule 191 (indexed_column_list)\n\n\nState 578\n\n  217 opt_check: CHECK OP_LP . expr OP_RP opt_enforced\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 620\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 579\n\n  223 opt_foreign_key: FOREIGN . KEY\n\n    KEY  shift, and go to state 621\n\n\nState 580\n\n  210 opt_column_constraint_list: column_constraint_list opt_check opt_reference_clause .\n\n    $default  reduce using rule 210 (opt_column_constraint_list)\n\n\nState 581\n\n  215 opt_reference_clause: opt_foreign_key . reference_clause\n\n    REFERENCES  shift, and go to state 622\n\n    reference_clause  go to state 623\n\n\nState 582\n\n  370 character_with_length: character_conflicta OP_LP int_literal OP_RP .\n\n    $default  reduce using rule 370 (character_with_length)\n\n\nState 583\n\n   68 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP opt_as_alias . opt_on opt_using\n\n    ON  shift, and go to state 587\n\n    $default  reduce using rule 74 (opt_on)\n\n    opt_on  go to state 624\n\n\nState 584\n\n   69 table_ref: opt_table_prefix OP_LP table_ref OP_RP opt_as_alias . opt_on opt_using\n\n    ON  shift, and go to state 587\n\n    $default  reduce using rule 74 (opt_on)\n\n    opt_on  go to state 625\n\n\nState 585\n\n   70 opt_index: INDEXED BY . column_name\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier   go to state 99\n    column_name  go to state 626\n\n\nState 586\n\n   71 opt_index: NOT INDEXED .\n\n    $default  reduce using rule 71 (opt_index)\n\n\nState 587\n\n   73 opt_on: ON . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 627\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 588\n\n   66 table_ref: opt_table_prefix table_name opt_as_alias opt_index opt_on . opt_using\n\n    USING  shift, and go to state 628\n\n    $default  reduce using rule 76 (opt_using)\n\n    opt_using  go to state 629\n\n\nState 589\n\n   67 table_ref: opt_table_prefix function_name OP_LP expr_list OP_RP . opt_as_alias opt_on opt_using\n\n    AS  shift, and go to state 66\n\n    $default  reduce using rule 257 (opt_as_alias)\n\n    opt_as_alias  go to state 630\n    as_alias      go to state 68\n\n\nState 590\n\n   60 opt_having_clause: HAVING . expr\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr            go to state 631\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 591\n\n   58 opt_group_clause: GROUP BY expr_list opt_having_clause .\n\n    $default  reduce using rule 58 (opt_group_clause)\n\n\nState 592\n\n   37 window_def_list: window_def OP_COMMA . window_def_list\n\n    IDENTIFIER  shift, and go to state 28\n\n    window_def_list  go to state 632\n    window_def       go to state 550\n    window_name      go to state 551\n    identifier       go to state 552\n\n\nState 593\n\n   38 window_def: window_name AS . OP_LP window OP_RP\n\n    OP_LP  shift, and go to state 633\n\n\nState 594\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  304 opt_filter_clause: FILTER OP_LP WHERE expr . OP_RP\n\n    OR     shift, and go to state 236\n    AND    shift, and go to state 237\n    OP_RP  shift, and go to state 634\n\n\nState 595\n\n  306 opt_over_clause: OVER OP_LP window . OP_RP\n\n    OP_RP  shift, and go to state 635\n\n\nState 596\n\n   40 window: opt_exist_window_name . opt_partition opt_order_clause opt_frame_clause\n\n    PARTITION  shift, and go to state 636\n\n    $default  reduce using rule 42 (opt_partition)\n\n    opt_partition  go to state 637\n\n\nState 597\n\n   56 opt_exist_window_name: identifier .\n\n    $default  reduce using rule 56 (opt_exist_window_name)\n\n\nState 598\n\n  301 function_expr: function_name OP_LP opt_distinct expr_list OP_RP opt_filter_clause opt_over_clause .\n\n    $default  reduce using rule 301 (function_expr)\n\n\nState 599\n\n  188 opt_conflict_expr: OP_LP indexed_column_list . OP_RP where_clause\n\n    OP_RP  shift, and go to state 638\n\n\nState 600\n\n  185 opt_on_conflict: ON CONFLICT opt_conflict_expr DO . NOTHING\n  186                | ON CONFLICT opt_conflict_expr DO . UPDATE set_clause_list where_clause\n\n    UPDATE   shift, and go to state 639\n    NOTHING  shift, and go to state 640\n\n\nState 601\n\n  184 values_list: OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 184 (values_list)\n\n\nState 602\n\n  183 super_values_list: values_list OP_COMMA super_values_list .\n\n    $default  reduce using rule 183 (super_values_list)\n\n\nState 603\n\n  339 trigger_body: drop_stmt .\n\n    $default  reduce using rule 339 (trigger_body)\n\n\nState 604\n\n  342 trigger_body: alter_stmt .\n\n    $default  reduce using rule 342 (trigger_body)\n\n\nState 605\n\n  178 insert_stmt: opt_with_clause . INSERT INTO table_name opt_as_alias insert_rest opt_on_conflict\n\n    INSERT  shift, and go to state 57\n\n\nState 606\n\n  341 trigger_body: insert_stmt .\n\n    $default  reduce using rule 341 (trigger_body)\n\n\nState 607\n\n  340 trigger_body: update_stmt .\n\n    $default  reduce using rule 340 (trigger_body)\n\n\nState 608\n\n  122 create_trigger_stmt: CREATE TRIGGER trigger_name trigger_action_time trigger_events ON table_name FOR EACH ROW trigger_body .\n\n    $default  reduce using rule 122 (create_trigger_stmt)\n\n\nState 609\n\n  124 create_view_stmt: CREATE OR REPLACE opt_view_algorithm opt_sql_security VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 124 (create_view_stmt)\n\n\nState 610\n\n  246 opt_check_option: WITH CHECK OPTION .\n\n    $default  reduce using rule 246 (opt_check_option)\n\n\nState 611\n\n  248 opt_check_option: WITH LOCAL CHECK . OPTION\n\n    OPTION  shift, and go to state 641\n\n\nState 612\n\n  247 opt_check_option: WITH CASCADED CHECK . OPTION\n\n    OPTION  shift, and go to state 642\n\n\nState 613\n\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n  404 table_constraint: constraint_name CHECK OP_LP expr . OP_RP opt_enforced\n\n    OR     shift, and go to state 236\n    AND    shift, and go to state 237\n    OP_RP  shift, and go to state 643\n\n\nState 614\n\n  403 table_constraint: constraint_name UNIQUE OP_LP indexed_column_list . OP_RP\n\n    OP_RP  shift, and go to state 644\n\n\nState 615\n\n  402 table_constraint: constraint_name PRIMARY KEY OP_LP . indexed_column_list OP_RP\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    indexed_column_list  go to state 645\n    indexed_column       go to state 464\n    expr                 go to state 465\n    operand              go to state 154\n    cast_expr            go to state 155\n    scalar_expr          go to state 156\n    unary_expr           go to state 157\n    binary_expr          go to state 158\n    logic_expr           go to state 159\n    in_expr              go to state 160\n    case_expr            go to state 161\n    between_expr         go to state 162\n    exists_expr          go to state 163\n    function_expr        go to state 164\n    comp_expr            go to state 165\n    extract_expr         go to state 166\n    array_expr           go to state 167\n    array_index          go to state 168\n    literal              go to state 169\n    string_literal       go to state 170\n    bool_literal         go to state 171\n    num_literal          go to state 172\n    int_literal          go to state 173\n    float_literal        go to state 174\n    identifier           go to state 175\n    column_name          go to state 176\n    function_name        go to state 177\n    opt_not              go to state 178\n\n\nState 616\n\n  405 table_constraint: constraint_name FOREIGN KEY OP_LP . column_name_list OP_RP reference_clause\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_name_list  go to state 646\n    identifier        go to state 99\n    column_name       go to state 100\n\n\nState 617\n\n  151 opt_index_option: USING HASH .\n\n    $default  reduce using rule 151 (opt_index_option)\n\n\nState 618\n\n  150 opt_index_option: USING BTREE .\n\n    $default  reduce using rule 150 (opt_index_option)\n\n\nState 619\n\n  121 create_index_stmt: CREATE opt_index_keyword INDEX table_name ON table_name OP_LP indexed_column_list OP_RP opt_index_option opt_extra_option .\n\n    $default  reduce using rule 121 (create_index_stmt)\n\n\nState 620\n\n  217 opt_check: CHECK OP_LP expr . OP_RP opt_enforced\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR     shift, and go to state 236\n    AND    shift, and go to state 237\n    OP_RP  shift, and go to state 647\n\n\nState 621\n\n  223 opt_foreign_key: FOREIGN KEY .\n\n    $default  reduce using rule 223 (opt_foreign_key)\n\n\nState 622\n\n  222 reference_clause: REFERENCES . table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n    IDENTIFIER  shift, and go to state 28\n\n    identifier  go to state 32\n    table_name  go to state 648\n\n\nState 623\n\n  215 opt_reference_clause: opt_foreign_key reference_clause .\n\n    $default  reduce using rule 215 (opt_reference_clause)\n\n\nState 624\n\n   68 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP opt_as_alias opt_on . opt_using\n\n    USING  shift, and go to state 628\n\n    $default  reduce using rule 76 (opt_using)\n\n    opt_using  go to state 649\n\n\nState 625\n\n   69 table_ref: opt_table_prefix OP_LP table_ref OP_RP opt_as_alias opt_on . opt_using\n\n    USING  shift, and go to state 628\n\n    $default  reduce using rule 76 (opt_using)\n\n    opt_using  go to state 650\n\n\nState 626\n\n   70 opt_index: INDEXED BY column_name .\n\n    $default  reduce using rule 70 (opt_index)\n\n\nState 627\n\n   73 opt_on: ON expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 73 (opt_on)\n\n\nState 628\n\n   75 opt_using: USING . OP_LP column_name_list OP_RP\n\n    OP_LP  shift, and go to state 651\n\n\nState 629\n\n   66 table_ref: opt_table_prefix table_name opt_as_alias opt_index opt_on opt_using .\n\n    $default  reduce using rule 66 (table_ref)\n\n\nState 630\n\n   67 table_ref: opt_table_prefix function_name OP_LP expr_list OP_RP opt_as_alias . opt_on opt_using\n\n    ON  shift, and go to state 587\n\n    $default  reduce using rule 74 (opt_on)\n\n    opt_on  go to state 652\n\n\nState 631\n\n   60 opt_having_clause: HAVING expr .\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    OR   shift, and go to state 236\n    AND  shift, and go to state 237\n\n    $default  reduce using rule 60 (opt_having_clause)\n\n\nState 632\n\n   37 window_def_list: window_def OP_COMMA window_def_list .\n\n    $default  reduce using rule 37 (window_def_list)\n\n\nState 633\n\n   38 window_def: window_name AS OP_LP . window OP_RP\n\n    IDENTIFIER  shift, and go to state 28\n\n    $default  reduce using rule 57 (opt_exist_window_name)\n\n    window                 go to state 653\n    opt_exist_window_name  go to state 596\n    identifier             go to state 597\n\n\nState 634\n\n  304 opt_filter_clause: FILTER OP_LP WHERE expr OP_RP .\n\n    $default  reduce using rule 304 (opt_filter_clause)\n\n\nState 635\n\n  306 opt_over_clause: OVER OP_LP window OP_RP .\n\n    $default  reduce using rule 306 (opt_over_clause)\n\n\nState 636\n\n   41 opt_partition: PARTITION . BY expr_list\n\n    BY  shift, and go to state 654\n\n\nState 637\n\n   40 window: opt_exist_window_name opt_partition . opt_order_clause opt_frame_clause\n\n    ORDER  shift, and go to state 90\n\n    $default  reduce using rule 99 (opt_order_clause)\n\n    opt_order_clause  go to state 655\n\n\nState 638\n\n  188 opt_conflict_expr: OP_LP indexed_column_list OP_RP . where_clause\n\n    WHERE  shift, and go to state 270\n\n    where_clause  go to state 656\n\n\nState 639\n\n  186 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE . set_clause_list where_clause\n\n    OP_LP       shift, and go to state 189\n    IDENTIFIER  shift, and go to state 28\n\n    set_clause_list  go to state 657\n    set_clause       go to state 191\n    identifier       go to state 99\n    column_name      go to state 192\n\n\nState 640\n\n  185 opt_on_conflict: ON CONFLICT opt_conflict_expr DO NOTHING .\n\n    $default  reduce using rule 185 (opt_on_conflict)\n\n\nState 641\n\n  248 opt_check_option: WITH LOCAL CHECK OPTION .\n\n    $default  reduce using rule 248 (opt_check_option)\n\n\nState 642\n\n  247 opt_check_option: WITH CASCADED CHECK OPTION .\n\n    $default  reduce using rule 247 (opt_check_option)\n\n\nState 643\n\n  404 table_constraint: constraint_name CHECK OP_LP expr OP_RP . opt_enforced\n\n    ENFORCED  shift, and go to state 658\n    NOT       shift, and go to state 659\n\n    $default  reduce using rule 408 (opt_enforced)\n\n    opt_enforced  go to state 660\n\n\nState 644\n\n  403 table_constraint: constraint_name UNIQUE OP_LP indexed_column_list OP_RP .\n\n    $default  reduce using rule 403 (table_constraint)\n\n\nState 645\n\n  402 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list . OP_RP\n\n    OP_RP  shift, and go to state 661\n\n\nState 646\n\n  405 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list . OP_RP reference_clause\n\n    OP_RP  shift, and go to state 662\n\n\nState 647\n\n  217 opt_check: CHECK OP_LP expr OP_RP . opt_enforced\n\n    ENFORCED  shift, and go to state 658\n    NOT       shift, and go to state 659\n\n    $default  reduce using rule 408 (opt_enforced)\n\n    opt_enforced  go to state 663\n\n\nState 648\n\n  222 reference_clause: REFERENCES table_name . opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n    OP_LP  shift, and go to state 63\n\n    $default  reduce using rule 251 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 664\n\n\nState 649\n\n   68 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP opt_as_alias opt_on opt_using .\n\n    $default  reduce using rule 68 (table_ref)\n\n\nState 650\n\n   69 table_ref: opt_table_prefix OP_LP table_ref OP_RP opt_as_alias opt_on opt_using .\n\n    $default  reduce using rule 69 (table_ref)\n\n\nState 651\n\n   75 opt_using: USING OP_LP . column_name_list OP_RP\n\n    IDENTIFIER  shift, and go to state 28\n\n    column_name_list  go to state 665\n    identifier        go to state 99\n    column_name       go to state 100\n\n\nState 652\n\n   67 table_ref: opt_table_prefix function_name OP_LP expr_list OP_RP opt_as_alias opt_on . opt_using\n\n    USING  shift, and go to state 628\n\n    $default  reduce using rule 76 (opt_using)\n\n    opt_using  go to state 666\n\n\nState 653\n\n   38 window_def: window_name AS OP_LP window . OP_RP\n\n    OP_RP  shift, and go to state 667\n\n\nState 654\n\n   41 opt_partition: PARTITION BY . expr_list\n\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    expr_list       go to state 668\n    expr            go to state 153\n    operand         go to state 154\n    cast_expr       go to state 155\n    scalar_expr     go to state 156\n    unary_expr      go to state 157\n    binary_expr     go to state 158\n    logic_expr      go to state 159\n    in_expr         go to state 160\n    case_expr       go to state 161\n    between_expr    go to state 162\n    exists_expr     go to state 163\n    function_expr   go to state 164\n    comp_expr       go to state 165\n    extract_expr    go to state 166\n    array_expr      go to state 167\n    array_index     go to state 168\n    literal         go to state 169\n    string_literal  go to state 170\n    bool_literal    go to state 171\n    num_literal     go to state 172\n    int_literal     go to state 173\n    float_literal   go to state 174\n    identifier      go to state 175\n    column_name     go to state 176\n    function_name   go to state 177\n    opt_not         go to state 178\n\n\nState 655\n\n   40 window: opt_exist_window_name opt_partition opt_order_clause . opt_frame_clause\n\n    RANGE   shift, and go to state 669\n    ROWS    shift, and go to state 670\n    GROUPS  shift, and go to state 671\n\n    $default  reduce using rule 45 (opt_frame_clause)\n\n    opt_frame_clause  go to state 672\n    range_or_rows     go to state 673\n\n\nState 656\n\n  188 opt_conflict_expr: OP_LP indexed_column_list OP_RP where_clause .\n\n    $default  reduce using rule 188 (opt_conflict_expr)\n\n\nState 657\n\n  186 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list . where_clause\n\n    WHERE  shift, and go to state 270\n\n    where_clause  go to state 674\n\n\nState 658\n\n  406 opt_enforced: ENFORCED .\n\n    $default  reduce using rule 406 (opt_enforced)\n\n\nState 659\n\n  407 opt_enforced: NOT . ENFORCED\n\n    ENFORCED  shift, and go to state 675\n\n\nState 660\n\n  404 table_constraint: constraint_name CHECK OP_LP expr OP_RP opt_enforced .\n\n    $default  reduce using rule 404 (table_constraint)\n\n\nState 661\n\n  402 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP .\n\n    $default  reduce using rule 402 (table_constraint)\n\n\nState 662\n\n  405 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list OP_RP . reference_clause\n\n    REFERENCES  shift, and go to state 622\n\n    reference_clause  go to state 676\n\n\nState 663\n\n  217 opt_check: CHECK OP_LP expr OP_RP opt_enforced .\n\n    $default  reduce using rule 217 (opt_check)\n\n\nState 664\n\n  222 reference_clause: REFERENCES table_name opt_column_name_list_p . opt_foreign_key_actions opt_constraint_attribute_spec\n\n    ON     shift, and go to state 677\n    MATCH  shift, and go to state 678\n\n    $default  reduce using rule 226 (opt_foreign_key_actions)\n\n    opt_foreign_key_actions  go to state 679\n    foreign_key_actions      go to state 680\n\n\nState 665\n\n   75 opt_using: USING OP_LP column_name_list . OP_RP\n\n    OP_RP  shift, and go to state 681\n\n\nState 666\n\n   67 table_ref: opt_table_prefix function_name OP_LP expr_list OP_RP opt_as_alias opt_on opt_using .\n\n    $default  reduce using rule 67 (table_ref)\n\n\nState 667\n\n   38 window_def: window_name AS OP_LP window OP_RP .\n\n    $default  reduce using rule 38 (window_def)\n\n\nState 668\n\n   41 opt_partition: PARTITION BY expr_list .\n\n    $default  reduce using rule 41 (opt_partition)\n\n\nState 669\n\n   46 range_or_rows: RANGE .\n\n    $default  reduce using rule 46 (range_or_rows)\n\n\nState 670\n\n   47 range_or_rows: ROWS .\n\n    $default  reduce using rule 47 (range_or_rows)\n\n\nState 671\n\n   48 range_or_rows: GROUPS .\n\n    $default  reduce using rule 48 (range_or_rows)\n\n\nState 672\n\n   40 window: opt_exist_window_name opt_partition opt_order_clause opt_frame_clause .\n\n    $default  reduce using rule 40 (window)\n\n\nState 673\n\n   43 opt_frame_clause: range_or_rows . frame_bound_start\n   44                 | range_or_rows . BETWEEN frame_bound_start AND frame_bound_end\n\n    UNBOUNDED      shift, and go to state 682\n    CURRENT        shift, and go to state 683\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    BETWEEN        shift, and go to state 684\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    frame_bound_start  go to state 685\n    frame_bound        go to state 686\n    expr               go to state 687\n    operand            go to state 154\n    cast_expr          go to state 155\n    scalar_expr        go to state 156\n    unary_expr         go to state 157\n    binary_expr        go to state 158\n    logic_expr         go to state 159\n    in_expr            go to state 160\n    case_expr          go to state 161\n    between_expr       go to state 162\n    exists_expr        go to state 163\n    function_expr      go to state 164\n    comp_expr          go to state 165\n    extract_expr       go to state 166\n    array_expr         go to state 167\n    array_index        go to state 168\n    literal            go to state 169\n    string_literal     go to state 170\n    bool_literal       go to state 171\n    num_literal        go to state 172\n    int_literal        go to state 173\n    float_literal      go to state 174\n    identifier         go to state 175\n    column_name        go to state 176\n    function_name      go to state 177\n    opt_not            go to state 178\n\n\nState 674\n\n  186 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause .\n\n    $default  reduce using rule 186 (opt_on_conflict)\n\n\nState 675\n\n  407 opt_enforced: NOT ENFORCED .\n\n    $default  reduce using rule 407 (opt_enforced)\n\n\nState 676\n\n  405 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list OP_RP reference_clause .\n\n    $default  reduce using rule 405 (table_constraint)\n\n\nState 677\n\n  230 foreign_key_actions: ON . UPDATE key_actions\n  231                    | ON . DELETE key_actions\n\n    UPDATE  shift, and go to state 688\n    DELETE  shift, and go to state 689\n\n\nState 678\n\n  227 foreign_key_actions: MATCH . FULL\n  228                    | MATCH . PARTIAL\n  229                    | MATCH . SIMPLE\n\n    SIMPLE   shift, and go to state 690\n    FULL     shift, and go to state 691\n    PARTIAL  shift, and go to state 692\n\n\nState 679\n\n  222 reference_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions . opt_constraint_attribute_spec\n\n    NOT          shift, and go to state 693\n    DEFFERRABLE  shift, and go to state 694\n\n    $default  reduce using rule 239 (opt_constraint_attribute_spec)\n\n    opt_constraint_attribute_spec  go to state 695\n\n\nState 680\n\n  225 opt_foreign_key_actions: foreign_key_actions .\n\n    $default  reduce using rule 225 (opt_foreign_key_actions)\n\n\nState 681\n\n   75 opt_using: USING OP_LP column_name_list OP_RP .\n\n    $default  reduce using rule 75 (opt_using)\n\n\nState 682\n\n   50 frame_bound_start: UNBOUNDED . PRECEDING\n\n    PRECEDING  shift, and go to state 696\n\n\nState 683\n\n   55 frame_bound: CURRENT . ROW\n\n    ROW  shift, and go to state 697\n\n\nState 684\n\n   44 opt_frame_clause: range_or_rows BETWEEN . frame_bound_start AND frame_bound_end\n\n    UNBOUNDED      shift, and go to state 682\n    CURRENT        shift, and go to state 683\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    frame_bound_start  go to state 698\n    frame_bound        go to state 686\n    expr               go to state 687\n    operand            go to state 154\n    cast_expr          go to state 155\n    scalar_expr        go to state 156\n    unary_expr         go to state 157\n    binary_expr        go to state 158\n    logic_expr         go to state 159\n    in_expr            go to state 160\n    case_expr          go to state 161\n    between_expr       go to state 162\n    exists_expr        go to state 163\n    function_expr      go to state 164\n    comp_expr          go to state 165\n    extract_expr       go to state 166\n    array_expr         go to state 167\n    array_index        go to state 168\n    literal            go to state 169\n    string_literal     go to state 170\n    bool_literal       go to state 171\n    num_literal        go to state 172\n    int_literal        go to state 173\n    float_literal      go to state 174\n    identifier         go to state 175\n    column_name        go to state 176\n    function_name      go to state 177\n    opt_not            go to state 178\n\n\nState 685\n\n   43 opt_frame_clause: range_or_rows frame_bound_start .\n\n    $default  reduce using rule 43 (opt_frame_clause)\n\n\nState 686\n\n   49 frame_bound_start: frame_bound .\n\n    $default  reduce using rule 49 (frame_bound_start)\n\n\nState 687\n\n   53 frame_bound: expr . PRECEDING\n   54            | expr . FOLLOWING\n  288 logic_expr: expr . AND expr\n  289           | expr . OR expr\n\n    PRECEDING  shift, and go to state 699\n    OR         shift, and go to state 236\n    FOLLOWING  shift, and go to state 700\n    AND        shift, and go to state 237\n\n\nState 688\n\n  230 foreign_key_actions: ON UPDATE . key_actions\n\n    RESTRICT  shift, and go to state 701\n    SET       shift, and go to state 702\n    NO        shift, and go to state 703\n    CASCADE   shift, and go to state 704\n\n    key_actions  go to state 705\n\n\nState 689\n\n  231 foreign_key_actions: ON DELETE . key_actions\n\n    RESTRICT  shift, and go to state 701\n    SET       shift, and go to state 702\n    NO        shift, and go to state 703\n    CASCADE   shift, and go to state 704\n\n    key_actions  go to state 706\n\n\nState 690\n\n  229 foreign_key_actions: MATCH SIMPLE .\n\n    $default  reduce using rule 229 (foreign_key_actions)\n\n\nState 691\n\n  227 foreign_key_actions: MATCH FULL .\n\n    $default  reduce using rule 227 (foreign_key_actions)\n\n\nState 692\n\n  228 foreign_key_actions: MATCH PARTIAL .\n\n    $default  reduce using rule 228 (foreign_key_actions)\n\n\nState 693\n\n  238 opt_constraint_attribute_spec: NOT . DEFFERRABLE opt_initial_time\n\n    DEFFERRABLE  shift, and go to state 707\n\n\nState 694\n\n  237 opt_constraint_attribute_spec: DEFFERRABLE . opt_initial_time\n\n    INITIALLY  shift, and go to state 708\n\n    $default  reduce using rule 242 (opt_initial_time)\n\n    opt_initial_time  go to state 709\n\n\nState 695\n\n  222 reference_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec .\n\n    $default  reduce using rule 222 (reference_clause)\n\n\nState 696\n\n   50 frame_bound_start: UNBOUNDED PRECEDING .\n\n    $default  reduce using rule 50 (frame_bound_start)\n\n\nState 697\n\n   55 frame_bound: CURRENT ROW .\n\n    $default  reduce using rule 55 (frame_bound)\n\n\nState 698\n\n   44 opt_frame_clause: range_or_rows BETWEEN frame_bound_start . AND frame_bound_end\n\n    AND  shift, and go to state 710\n\n\nState 699\n\n   53 frame_bound: expr PRECEDING .\n\n    $default  reduce using rule 53 (frame_bound)\n\n\nState 700\n\n   54 frame_bound: expr FOLLOWING .\n\n    $default  reduce using rule 54 (frame_bound)\n\n\nState 701\n\n  235 key_actions: RESTRICT .\n\n    $default  reduce using rule 235 (key_actions)\n\n\nState 702\n\n  232 key_actions: SET . NULL\n  233            | SET . DEFAULT\n\n    DEFAULT  shift, and go to state 711\n    NULL     shift, and go to state 712\n\n\nState 703\n\n  236 key_actions: NO . ACTION\n\n    ACTION  shift, and go to state 713\n\n\nState 704\n\n  234 key_actions: CASCADE .\n\n    $default  reduce using rule 234 (key_actions)\n\n\nState 705\n\n  230 foreign_key_actions: ON UPDATE key_actions .\n\n    $default  reduce using rule 230 (foreign_key_actions)\n\n\nState 706\n\n  231 foreign_key_actions: ON DELETE key_actions .\n\n    $default  reduce using rule 231 (foreign_key_actions)\n\n\nState 707\n\n  238 opt_constraint_attribute_spec: NOT DEFFERRABLE . opt_initial_time\n\n    INITIALLY  shift, and go to state 708\n\n    $default  reduce using rule 242 (opt_initial_time)\n\n    opt_initial_time  go to state 714\n\n\nState 708\n\n  240 opt_initial_time: INITIALLY . DEFERRED\n  241                 | INITIALLY . IMMEDIATE\n\n    DEFERRED   shift, and go to state 715\n    IMMEDIATE  shift, and go to state 716\n\n\nState 709\n\n  237 opt_constraint_attribute_spec: DEFFERRABLE opt_initial_time .\n\n    $default  reduce using rule 237 (opt_constraint_attribute_spec)\n\n\nState 710\n\n   44 opt_frame_clause: range_or_rows BETWEEN frame_bound_start AND . frame_bound_end\n\n    UNBOUNDED      shift, and go to state 717\n    CURRENT        shift, and go to state 683\n    OP_SUB         shift, and go to state 137\n    FALSE          shift, and go to state 138\n    OP_MUL         shift, and go to state 139\n    TRUE           shift, and go to state 140\n    NOT            shift, and go to state 141\n    CASE           shift, and go to state 142\n    ARRAY          shift, and go to state 143\n    EXTRACT        shift, and go to state 144\n    OP_LP          shift, and go to state 145\n    CAST           shift, and go to state 146\n    NULL           shift, and go to state 147\n    INTLITERAL     shift, and go to state 148\n    FLOATLITERAL   shift, and go to state 149\n    IDENTIFIER     shift, and go to state 28\n    STRINGLITERAL  shift, and go to state 150\n\n    $default  reduce using rule 364 (opt_not)\n\n    frame_bound_end  go to state 718\n    frame_bound      go to state 719\n    expr             go to state 687\n    operand          go to state 154\n    cast_expr        go to state 155\n    scalar_expr      go to state 156\n    unary_expr       go to state 157\n    binary_expr      go to state 158\n    logic_expr       go to state 159\n    in_expr          go to state 160\n    case_expr        go to state 161\n    between_expr     go to state 162\n    exists_expr      go to state 163\n    function_expr    go to state 164\n    comp_expr        go to state 165\n    extract_expr     go to state 166\n    array_expr       go to state 167\n    array_index      go to state 168\n    literal          go to state 169\n    string_literal   go to state 170\n    bool_literal     go to state 171\n    num_literal      go to state 172\n    int_literal      go to state 173\n    float_literal    go to state 174\n    identifier       go to state 175\n    column_name      go to state 176\n    function_name    go to state 177\n    opt_not          go to state 178\n\n\nState 711\n\n  233 key_actions: SET DEFAULT .\n\n    $default  reduce using rule 233 (key_actions)\n\n\nState 712\n\n  232 key_actions: SET NULL .\n\n    $default  reduce using rule 232 (key_actions)\n\n\nState 713\n\n  236 key_actions: NO ACTION .\n\n    $default  reduce using rule 236 (key_actions)\n\n\nState 714\n\n  238 opt_constraint_attribute_spec: NOT DEFFERRABLE opt_initial_time .\n\n    $default  reduce using rule 238 (opt_constraint_attribute_spec)\n\n\nState 715\n\n  240 opt_initial_time: INITIALLY DEFERRED .\n\n    $default  reduce using rule 240 (opt_initial_time)\n\n\nState 716\n\n  241 opt_initial_time: INITIALLY IMMEDIATE .\n\n    $default  reduce using rule 241 (opt_initial_time)\n\n\nState 717\n\n   52 frame_bound_end: UNBOUNDED . FOLLOWING\n\n    FOLLOWING  shift, and go to state 720\n\n\nState 718\n\n   44 opt_frame_clause: range_or_rows BETWEEN frame_bound_start AND frame_bound_end .\n\n    $default  reduce using rule 44 (opt_frame_clause)\n\n\nState 719\n\n   51 frame_bound_end: frame_bound .\n\n    $default  reduce using rule 51 (frame_bound_end)\n\n\nState 720\n\n   52 frame_bound_end: UNBOUNDED FOLLOWING .\n\n    $default  reduce using rule 52 (frame_bound_end)\n"
  },
  {
    "path": "srcs/internal/mysql/parser/flex.l",
    "content": "%{\n#include \"bison_parser.h\"\n#include <stdio.h>\n#include <sstream>\n#include <string>\n#include <cstring>\n#define TOKEN(name) { return SQL_##name; }\nstatic thread_local std::stringstream strbuf;\n%}\n\n%option reentrant\n%option bison-bridge\n%option never-interactive\n%option batch\n%option noyywrap\n%option nounput\n%option warn\n%option case-insensitive\n%option bison-locations\n%option header-file=\"flex_lexer.h\"\n%option outfile=\"flex_lexer.cpp\"\n%option prefix=\"ff_\"\n%s COMMENT\n%x singlequotedstring\n\n%%\n\"!=\"\tTOKEN(OP_NOTEQUAL)\nENABLE\tTOKEN(ENABLE)\nSIMPLE\tTOKEN(SIMPLE)\nTEXT\tTOKEN(TEXT)\nOVER\tTOKEN(OVER)\nYEAR\tTOKEN(YEAR)\nINSERT_METHOD\tTOKEN(INSERT_METHOD)\n\";\"\tTOKEN(OP_SEMI)\nBIGINT\tTOKEN(BIGINT)\nLIMIT\tTOKEN(LIMIT)\n\">\"\tTOKEN(OP_GREATERTHAN)\nWITH\tTOKEN(WITH)\nORDER\tTOKEN(ORDER)\nOPTION\tTOKEN(OPTION)\nLAST\tTOKEN(LAST)\nUNBOUNDED\tTOKEN(UNBOUNDED)\nPRECEDING\tTOKEN(PRECEDING)\nEXCEPT\tTOKEN(EXCEPT)\nNUMERIC\tTOKEN(NUMERIC)\n\"<\"\tTOKEN(OP_LESSTHAN)\nACTION\tTOKEN(ACTION)\nBEFORE\tTOKEN(BEFORE)\n\">=\"\tTOKEN(OP_GREATEREQ)\nCHECK\tTOKEN(CHECK)\nCOMPACT\tTOKEN(COMPACT)\nFULL\tTOKEN(FULL)\nNATURAL\tTOKEN(NATURAL)\nBINARY\tTOKEN(BINARY)\nNATIONAL\tTOKEN(NATIONAL)\nENUM\tTOKEN(ENUM)\nREDUNDANT\tTOKEN(REDUNDANT)\n\"+\"\tTOKEN(OP_ADD)\nCURRENT\tTOKEN(CURRENT)\nMERGE\tTOKEN(MERGE)\nTRIGGER\tTOKEN(TRIGGER)\nCOMPRESSED\tTOKEN(COMPRESSED)\n\"-\"\tTOKEN(OP_SUB)\nFALSE\tTOKEN(FALSE)\nUNIQUE\tTOKEN(UNIQUE)\nWHERE\tTOKEN(WHERE)\nMINUTE\tTOKEN(MINUTE)\nFIRST\tTOKEN(FIRST)\nON\tTOKEN(ON)\nPARTIAL\tTOKEN(PARTIAL)\nDOUBLE\tTOKEN(DOUBLE)\nAFTER\tTOKEN(AFTER)\nPRIMARY\tTOKEN(PRIMARY)\nMONTH\tTOKEN(MONTH)\nDEFERRED\tTOKEN(DEFERRED)\nVALUES\tTOKEN(VALUES)\nLONGTEXT\tTOKEN(LONGTEXT)\nSQL\tTOKEN(SQL)\nSHARED\tTOKEN(SHARED)\nVALIDATION\tTOKEN(VALIDATION)\nOR\tTOKEN(OR)\nVIEW\tTOKEN(VIEW)\nINDEX\tTOKEN(INDEX)\nGROUP\tTOKEN(GROUP)\n\"*\"\tTOKEN(OP_MUL)\nINPLACE\tTOKEN(INPLACE)\nFOREIGN\tTOKEN(FOREIGN)\nRESTRICT\tTOKEN(RESTRICT)\nSPATIAL\tTOKEN(SPATIAL)\nFOLLOWING\tTOKEN(FOLLOWING)\nDEC\tTOKEN(DEC)\nSELECT\tTOKEN(SELECT)\nNONE\tTOKEN(NONE)\nDISTINCT\tTOKEN(DISTINCT)\nTRUE\tTOKEN(TRUE)\nDYNAMIC\tTOKEN(DYNAMIC)\nBY\tTOKEN(BY)\n\"%\"\tTOKEN(OP_MOD)\nINTEGER\tTOKEN(INTEGER)\nSECURITY\tTOKEN(SECURITY)\nIS\tTOKEN(IS)\nDEFINER\tTOKEN(DEFINER)\nROW\tTOKEN(ROW)\nENFORCED\tTOKEN(ENFORCED)\nEND\tTOKEN(END)\nRECURSIVE\tTOKEN(RECURSIVE)\nFOR\tTOKEN(FOR)\nTEMPTABLE\tTOKEN(TEMPTABLE)\nUNION\tTOKEN(UNION)\nNULLS\tTOKEN(NULLS)\nUPDATE\tTOKEN(UPDATE)\nELSE\tTOKEN(ELSE)\nRANGE\tTOKEN(RANGE)\nSET\tTOKEN(SET)\nINVOKER\tTOKEN(INVOKER)\nOFFSET\tTOKEN(OFFSET)\nINDEXED\tTOKEN(INDEXED)\nFORCE\tTOKEN(FORCE)\nNCHAR\tTOKEN(NCHAR)\nAND\tTOKEN(AND)\nINITIALLY\tTOKEN(INITIALLY)\nPRECISION\tTOKEN(PRECISION)\nFILTER\tTOKEN(FILTER)\nWITHOUT\tTOKEN(WITHOUT)\nNOT\tTOKEN(NOT)\nDELETE\tTOKEN(DELETE)\nDEFFERRABLE\tTOKEN(DEFFERRABLE)\nREAL\tTOKEN(REAL)\nTHEN\tTOKEN(THEN)\nUNDEFINED\tTOKEN(UNDEFINED)\nDEFAULT\tTOKEN(DEFAULT)\nCROSS\tTOKEN(CROSS)\nCHAR\tTOKEN(CHAR)\nREFERENCES\tTOKEN(REFERENCES)\n\"^\"\tTOKEN(OP_XOR)\nCASE\tTOKEN(CASE)\nFIXED\tTOKEN(FIXED)\nHOUR\tTOKEN(HOUR)\nNO\tTOKEN(NO)\nCOLUMN\tTOKEN(COLUMN)\nLOCAL\tTOKEN(LOCAL)\nDROP\tTOKEN(DROP)\nREPLACE\tTOKEN(REPLACE)\nASC\tTOKEN(ASC)\n\",\"\tTOKEN(OP_COMMA)\nDISABLE\tTOKEN(DISABLE)\nTABLE\tTOKEN(TABLE)\nARRAY\tTOKEN(ARRAY)\nIF\tTOKEN(IF)\nEXTRACT\tTOKEN(EXTRACT)\nLEFT\tTOKEN(LEFT)\nFULLTEXT\tTOKEN(FULLTEXT)\nHASH\tTOKEN(HASH)\nALGORITHM\tTOKEN(ALGORITHM)\nLOCK\tTOKEN(LOCK)\nDECIMAL\tTOKEN(DECIMAL)\nPARTITION\tTOKEN(PARTITION)\nCASCADE\tTOKEN(CASCADE)\nADD\tTOKEN(ADD)\nBETWEEN\tTOKEN(BETWEEN)\n\"<=\"\tTOKEN(OP_LESSEQ)\nMATCH\tTOKEN(MATCH)\nALL\tTOKEN(ALL)\nROWS\tTOKEN(ROWS)\nJOIN\tTOKEN(JOIN)\nLIKE\tTOKEN(LIKE)\n\")\"\tTOKEN(OP_RP)\nIGNORE\tTOKEN(IGNORE)\nINT\tTOKEN(INT)\nMEDIUMTEXT\tTOKEN(MEDIUMTEXT)\nBOOLEAN\tTOKEN(BOOLEAN)\nKEY\tTOKEN(KEY)\nEACH\tTOKEN(EACH)\nUSING\tTOKEN(USING)\nRENAME\tTOKEN(RENAME)\nDO\tTOKEN(DO)\n\"(\"\tTOKEN(OP_LP)\nCHARACTER\tTOKEN(CHARACTER)\nUMINUS\tTOKEN(UMINUS)\nCAST\tTOKEN(CAST)\nGROUPS\tTOKEN(GROUPS)\nOUTER\tTOKEN(OUTER)\nNULL\tTOKEN(NULL)\nSMALLINT\tTOKEN(SMALLINT)\nEXCLUSIVE\tTOKEN(EXCLUSIVE)\nTEMPORARY\tTOKEN(TEMPORARY)\nCONSTRAINT\tTOKEN(CONSTRAINT)\nCREATE\tTOKEN(CREATE)\n\"[\"\tTOKEN(OP_LBRACKET)\nWHEN\tTOKEN(WHEN)\nIMMEDIATE\tTOKEN(IMMEDIATE)\nTO\tTOKEN(TO)\nBTREE\tTOKEN(BTREE)\nDAY\tTOKEN(DAY)\nCONFLICT\tTOKEN(CONFLICT)\nROW_FORMAT\tTOKEN(ROW_FORMAT)\n\"]\"\tTOKEN(OP_RBRACKET)\nEXISTS\tTOKEN(EXISTS)\nINSERT\tTOKEN(INSERT)\nKEYS\tTOKEN(KEYS)\nINTO\tTOKEN(INTO)\n\"/\"\tTOKEN(OP_DIVIDE)\nCASCADED\tTOKEN(CASCADED)\nISNULL\tTOKEN(ISNULL)\nAS\tTOKEN(AS)\nINNER\tTOKEN(INNER)\nINTERSECT\tTOKEN(INTERSECT)\nIN\tTOKEN(IN)\n\"=\"\tTOKEN(OP_EQUAL)\nVARCHAR\tTOKEN(VARCHAR)\nCOPY\tTOKEN(COPY)\nALTER\tTOKEN(ALTER)\nDESC\tTOKEN(DESC)\nFROM\tTOKEN(FROM)\nTINYTEXT\tTOKEN(TINYTEXT)\nFLOAT\tTOKEN(FLOAT)\nSECOND\tTOKEN(SECOND)\nWINDOW\tTOKEN(WINDOW)\nNOTHING\tTOKEN(NOTHING)\nHAVING\tTOKEN(HAVING)\n-?[0-9]+\".\"[0-9]* |\n\".\"[0-9]* {\n\tyylval->fval = atof(yytext);\n\treturn SQL_FLOATLITERAL;\n\t}\n\n-?[0-9]+ {\n\tyylval->ival = atol(yytext);\n\treturn SQL_INTLITERAL;\n\t}\n\n\\\"[^\\\"\\n]+\\\" {\n\tstd::string s(yytext);\n\tyylval->sval = strdup(s.substr(1, s.size()-1).c_str());\n\treturn SQL_STRINGLITERAL;\n\t}\n\n[A-Za-z][A-Za-z0-9_]* {\n\tyylval->sval = strdup(yytext);\n\treturn SQL_IDENTIFIER;\n\t}\n\n\\' {\n\tBEGIN singlequotedstring; strbuf = std::stringstream{}; strbuf << '\\'';\n\t}\n\n<singlequotedstring>\\'\\' {\n\tstrbuf << '\\'';\n\t}\n\n<singlequotedstring>[^']* {\n\tstrbuf << yytext;\n\t}\n\n<singlequotedstring>\\' {\n\tBEGIN 0; \n\tstrbuf << '\\'';\n\tyylval->sval = strdup(strbuf.str().c_str());\n\treturn SQL_STRINGLITERAL;\n\t}\n\n<singlequotedstring><<EOF>> {\n\treturn 0;\n\t}\n\n[ \\t\\n]+ {\n\t}\n\n. {\n\treturn 0;\n\t}\n\n%%\n"
  },
  {
    "path": "srcs/internal/mysql/parser/flex_lexer.cpp",
    "content": "#line 2 \"flex_lexer.cpp\"\n\n#line 4 \"flex_lexer.cpp\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define ff__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer ff__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define ff__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer ff__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define ff__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer ff__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define ff__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string ff__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define ff__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes ff__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define ff__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer ff__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define ff__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer ff__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define ff__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state ff__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define ff__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer ff__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define ff_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state ff_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define ff_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state ff_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define ff_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack ff_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define ff_lex_ALREADY_DEFINED\n#else\n#define yylex ff_lex\n#endif\n\n#ifdef yyrestart\n#define ff_restart_ALREADY_DEFINED\n#else\n#define yyrestart ff_restart\n#endif\n\n#ifdef yylex_init\n#define ff_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init ff_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define ff_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra ff_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define ff_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy ff_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define ff_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug ff_get_debug\n#endif\n\n#ifdef yyset_debug\n#define ff_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug ff_set_debug\n#endif\n\n#ifdef yyget_extra\n#define ff_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra ff_get_extra\n#endif\n\n#ifdef yyset_extra\n#define ff_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra ff_set_extra\n#endif\n\n#ifdef yyget_in\n#define ff_get_in_ALREADY_DEFINED\n#else\n#define yyget_in ff_get_in\n#endif\n\n#ifdef yyset_in\n#define ff_set_in_ALREADY_DEFINED\n#else\n#define yyset_in ff_set_in\n#endif\n\n#ifdef yyget_out\n#define ff_get_out_ALREADY_DEFINED\n#else\n#define yyget_out ff_get_out\n#endif\n\n#ifdef yyset_out\n#define ff_set_out_ALREADY_DEFINED\n#else\n#define yyset_out ff_set_out\n#endif\n\n#ifdef yyget_leng\n#define ff_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng ff_get_leng\n#endif\n\n#ifdef yyget_text\n#define ff_get_text_ALREADY_DEFINED\n#else\n#define yyget_text ff_get_text\n#endif\n\n#ifdef yyget_lineno\n#define ff_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno ff_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define ff_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno ff_set_lineno\n#endif\n\n#ifdef yyget_column\n#define ff_get_column_ALREADY_DEFINED\n#else\n#define yyget_column ff_get_column\n#endif\n\n#ifdef yyset_column\n#define ff_set_column_ALREADY_DEFINED\n#else\n#define yyset_column ff_set_column\n#endif\n\n#ifdef yywrap\n#define ff_wrap_ALREADY_DEFINED\n#else\n#define yywrap ff_wrap\n#endif\n\n#ifdef yyget_lval\n#define ff_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval ff_get_lval\n#endif\n\n#ifdef yyset_lval\n#define ff_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval ff_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define ff_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc ff_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define ff_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc ff_set_lloc\n#endif\n\n#ifdef yyalloc\n#define ff_alloc_ALREADY_DEFINED\n#else\n#define yyalloc ff_alloc\n#endif\n\n#ifdef yyrealloc\n#define ff_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc ff_realloc\n#endif\n\n#ifdef yyfree\n#define ff_free_ALREADY_DEFINED\n#else\n#define yyfree ff_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* Returned upon end-of-file. */\n#define YY_NULL 0\n\n/* Promotes a possibly negative, possibly signed char to an\n *   integer in range [0..255] for use as an array index.\n */\n#define YY_SC_TO_UI(c) ((YY_CHAR)(c))\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Enter a start condition.  This macro really ought to take a parameter,\n * but we do it the disgusting crufty way forced on us by the ()-less\n * definition of BEGIN.\n */\n#define BEGIN yyg->yy_start = 1 + 2 *\n/* Translate the current start state into a value that can be later handed\n * to BEGIN to return to the state.  The YYSTATE alias is for lex\n * compatibility.\n */\n#define YY_START ((yyg->yy_start - 1) / 2)\n#define YYSTATE YY_START\n/* Action number for EOF rule of a given start state. */\n#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)\n/* Special action meaning \"start processing a new file\". */\n#define YY_NEW_FILE yyrestart(yyin, yyscanner)\n#define YY_END_OF_BUFFER_CHAR 0\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n/* The state buf must be large enough to hold one state per character in the\n * main buffer.\n */\n#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#define EOB_ACT_CONTINUE_SCAN 0\n#define EOB_ACT_END_OF_FILE 1\n#define EOB_ACT_LAST_MATCH 2\n\n#define YY_LESS_LINENO(n)\n#define YY_LINENO_REWIND_TO(ptr)\n\n/* Return all but the first \"n\" matched characters back to the input stream. */\n#define yyless(n)                                                     \\\n  do {                                                                \\\n    /* Undo effects of setting up yytext. */                          \\\n    int yyless_macro_arg = (n);                                       \\\n    YY_LESS_LINENO(yyless_macro_arg);                                 \\\n    *yy_cp = yyg->yy_hold_char;                                       \\\n    YY_RESTORE_YY_MORE_OFFSET                                         \\\n    yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\\n    YY_DO_BEFORE_ACTION; /* set up yytext again */                    \\\n  } while (0)\n#define unput(c) yyunput(c, yyg->yytext_ptr, yyscanner)\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n\n#define YY_BUFFER_NEW 0\n#define YY_BUFFER_NORMAL 1\n  /* When an EOF's been seen but there's still some text to process\n   * then we mark the buffer as YY_EOF_PENDING, to indicate that we\n   * shouldn't try reading from the input source any more.  We might\n   * still have a bunch of tokens to match, though, because of\n   * possible backing-up.\n   *\n   * When we actually see the EOF, we change the status to \"new\"\n   * (via yyrestart()), so that the user can continue scanning by\n   * just pointing yyin at a new input file.\n   */\n#define YY_BUFFER_EOF_PENDING 2\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\n/* We provide macros for accessing buffer states in case in the\n * future we want to put the buffer states in a more general\n * \"scanner state\".\n *\n * Returns the top of the stack, or NULL.\n */\n#define YY_CURRENT_BUFFER \\\n  (yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL)\n/* Same as previous macro, but useful when we know that the buffer stack is not\n * NULL or when we need an lvalue. For internal use only.\n */\n#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nstatic void yyensure_buffer_stack(yyscan_t yyscanner);\nstatic void yy_load_buffer_state(yyscan_t yyscanner);\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner);\n#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER, yyscanner)\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n#define yy_new_buffer yy_create_buffer\n#define yy_set_interactive(is_interactive)                        \\\n  {                                                               \\\n    if (!YY_CURRENT_BUFFER) {                                     \\\n      yyensure_buffer_stack(yyscanner);                           \\\n      YY_CURRENT_BUFFER_LVALUE =                                  \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);         \\\n    }                                                             \\\n    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\\n  }\n#define yy_set_bol(at_bol)                                \\\n  {                                                       \\\n    if (!YY_CURRENT_BUFFER) {                             \\\n      yyensure_buffer_stack(yyscanner);                   \\\n      YY_CURRENT_BUFFER_LVALUE =                          \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \\\n    }                                                     \\\n    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol;         \\\n  }\n#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)\n\n/* Begin user sect3 */\n\n#define ff_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\ntypedef flex_uint8_t YY_CHAR;\n\ntypedef int yy_state_type;\n\n#define yytext_ptr yytext_r\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner);\nstatic yy_state_type yy_try_NUL_trans(yy_state_type current_state,\n                                      yyscan_t yyscanner);\nstatic int yy_get_next_buffer(yyscan_t yyscanner);\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner);\n\n/* Done after the current pattern has been matched and before the\n * corresponding action - sets up yytext.\n */\n#define YY_DO_BEFORE_ACTION      \\\n  yyg->yytext_ptr = yy_bp;       \\\n  yyleng = (int)(yy_cp - yy_bp); \\\n  yyg->yy_hold_char = *yy_cp;    \\\n  *yy_cp = '\\0';                 \\\n  yyg->yy_c_buf_p = yy_cp;\n#define YY_NUM_RULES 206\n#define YY_END_OF_BUFFER 207\n/* This struct is not used in this scanner,\n   but its presence is necessary. */\nstruct yy_trans_info {\n  flex_int32_t yy_verify;\n  flex_int32_t yy_nxt;\n};\nstatic const flex_int16_t yy_accept[765] = {\n    0,   0,   0,   0,   0,   202, 202, 207, 205, 204, 204, 205, 205, 72,  200,\n    151, 141, 59,  32,  119, 37,  196, 176, 197, 8,   20,  183, 11,  199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 163, 171, 109, 202, 203, 204, 1,   0,\n    197, 196, 195, 135, 23,  199, 199, 199, 199, 199, 199, 199, 179, 199, 199,\n    199, 199, 71,  199, 199, 199, 199, 199, 199, 199, 199, 150, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,\n\n    199, 123, 199, 199, 182, 75,  199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 113, 199, 199, 43,  199, 55,  199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 166, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 202, 201, 198, 195, 199, 133, 199, 199,\n    137, 199, 94,  199, 118, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 168, 65,  199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 79,  199, 199, 199, 199, 199, 199,\n\n    199, 199, 199, 199, 199, 81,  199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 143, 199, 199, 199, 146, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 99,  199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 77,  199, 199,\n    88,  199, 199, 199, 199, 52,  199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 110, 154,\n\n    107, 199, 199, 199, 199, 199, 185, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 187, 199, 199, 199, 116, 199, 147, 86,  199, 199, 30,  199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 199, 199, 188, 26,  199, 127, 199, 112,\n    199, 199, 199, 199, 199, 199, 199, 199, 175, 199, 199, 139, 174, 15,  125,\n    140, 199, 199, 129, 199, 199, 199, 199, 199, 199, 199, 199, 199, 67,  199,\n    157, 199, 199, 199, 199, 199, 5,   199, 199, 199, 199, 102, 199, 199, 199,\n    199, 199, 199, 138, 199, 199, 199, 199, 199, 199,\n\n    199, 199, 199, 199, 4,   103, 199, 199, 69,  199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 56,  164, 199, 199, 12,  6,   199, 46,  199, 186, 122,\n    199, 199, 199, 199, 199, 167, 199, 199, 24,  199, 199, 199, 199, 199, 199,\n    106, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 38,  199, 42,  111, 190, 199, 92,  199, 199, 58,  199, 199,\n    199, 57,  199, 180, 199, 199, 199, 199, 199, 199, 10,  115, 199, 136, 199,\n    34,  199, 48,  199, 199, 93,  199, 84,  199, 199,\n\n    199, 13,  156, 199, 199, 199, 199, 87,  199, 199, 199, 199, 199, 199, 199,\n    199, 199, 199, 199, 199, 199, 199, 121, 199, 199, 199, 199, 199, 199, 199,\n    83,  199, 199, 148, 199, 199, 199, 40,  199, 199, 21,  199, 22,  199, 9,\n    28,  199, 199, 199, 114, 199, 199, 199, 199, 162, 199, 199, 199, 199, 199,\n    199, 100, 199, 199, 45,  199, 2,   199, 18,  199, 172, 199, 97,  199, 199,\n    199, 155, 194, 142, 199, 199, 199, 199, 173, 199, 199, 199, 178, 199, 199,\n    41,  199, 199, 199, 199, 90,  14,  199, 199, 199,\n\n    199, 199, 199, 199, 199, 149, 199, 199, 199, 191, 199, 66,  53,  3,   199,\n    199, 199, 199, 199, 199, 153, 199, 199, 39,  85,  199, 50,  199, 192, 199,\n    199, 134, 145, 132, 199, 25,  199, 199, 199, 33,  130, 105, 199, 199, 76,\n    120, 199, 70,  199, 199, 124, 199, 61,  199, 199, 91,  199, 60,  199, 73,\n    199, 89,  199, 199, 199, 27,  193, 19,  44,  199, 199, 199, 47,  199, 199,\n    199, 117, 199, 199, 199, 199, 63,  199, 199, 199, 35,  199, 199, 199, 184,\n    98,  199, 177, 199, 199, 169, 199, 49,  199, 68,\n\n    78,  199, 199, 126, 199, 199, 199, 199, 51,  199, 29,  199, 199, 199, 199,\n    199, 199, 62,  199, 74,  158, 199, 199, 189, 199, 199, 199, 128, 152, 199,\n    199, 199, 159, 64,  165, 95,  199, 181, 199, 131, 17,  96,  80,  31,  199,\n    199, 160, 82,  16,  104, 199, 36,  161, 199, 199, 144, 108, 170, 54,  101,\n    199, 199, 7,   0};\n\nstatic const YY_CHAR yy_ec[256] = {\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  5,  1,  1,  6,\n    1,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n    16, 1,  17, 18, 19, 20, 1,  1,  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n    32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1,  48, 49,\n    50, 1,  51, 52, 53, 54,\n\n    55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,\n    74, 75, 46, 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,\n\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};\n\nstatic const YY_CHAR yy_meta[76] = {\n    0, 1, 1, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1,\n    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n    4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,\n    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};\n\nstatic const flex_int16_t yy_base[769] = {\n    0,    0,    0,    0,    0,    323,  320,  319,  1532, 74,   76,   296,\n    0,    1532, 1532, 1532, 1532, 1532, 1532, 1532, 280,  274,  1532, 66,\n    1532, 268,  1532, 209,  60,   56,   67,   118,  116,  173,  49,   68,\n    118,  55,   68,   133,  174,  195,  241,  121,  0,    192,  289,  336,\n    187,  120,  226,  72,   1532, 1532, 1532, 0,    199,  104,  1532, 195,\n    96,   181,  180,  1532, 1532, 0,    60,   80,   96,   231,  116,  108,\n    132,  175,  185,  126,  166,  0,    168,  240,  236,  239,  172,  177,\n    297,  220,  221,  238,  242,  255,  241,  319,  309,  249,  340,  251,\n    301,  286,  292,  293,  338,\n\n    296,  0,    312,  348,  391,  348,  354,  341,  349,  363,  365,  383,\n    352,  385,  365,  371,  381,  396,  398,  408,  408,  0,    397,  418,\n    403,  419,  408,  423,  415,  462,  416,  452,  444,  436,  456,  459,\n    449,  465,  458,  465,  459,  0,    465,  468,  511,  476,  475,  487,\n    483,  484,  503,  491,  0,    1532, 1532, 149,  500,  0,    516,  509,\n    0,    520,  0,    525,  0,    512,  505,  521,  530,  520,  528,  539,\n    516,  533,  516,  522,  546,  515,  540,  527,  530,  0,    540,  579,\n    564,  570,  574,  575,  565,  582,  578,  582,  588,  0,    576,  579,\n    588,  577,  579,  579,\n\n    581,  583,  599,  605,  596,  630,  596,  600,  598,  617,  620,  619,\n    625,  636,  638,  624,  640,  634,  642,  643,  635,  630,  638,  634,\n    634,  636,  652,  651,  661,  654,  661,  657,  661,  648,  659,  676,\n    688,  688,  687,  688,  696,  684,  695,  700,  701,  689,  688,  707,\n    698,  705,  701,  693,  695,  712,  717,  708,  701,  709,  711,  717,\n    0,    706,  713,  733,  729,  0,    741,  739,  737,  746,  736,  756,\n    759,  751,  751,  762,  753,  768,  757,  763,  770,  751,  762,  773,\n    770,  763,  767,  768,  770,  771,  767,  787,  804,  799,  797,  812,\n    815,  820,  0,    0,\n\n    822,  813,  812,  826,  814,  808,  0,    809,  811,  826,  819,  812,\n    816,  831,  823,  818,  0,    838,  832,  830,  0,    833,  0,    0,\n    836,  831,  0,    836,  844,  849,  872,  870,  872,  860,  877,  863,\n    869,  880,  877,  0,    867,  872,  0,    875,  0,    872,  887,  868,\n    884,  876,  895,  879,  891,  0,    889,  889,  0,    0,    0,    0,\n    0,    882,  892,  0,    886,  900,  891,  920,  909,  925,  920,  919,\n    922,  0,    932,  924,  926,  940,  931,  929,  930,  0,    940,  945,\n    950,  947,  0,    935,  942,  939,  945,  959,  943,  0,    956,  950,\n    948,  965,  964,  960,\n\n    973,  980,  988,  980,  0,    0,    977,  994,  0,    982,  983,  999,\n    992,  986,  988,  1002, 1006, 1006, 1004, 0,    0,    1008, 999,  1001,\n    0,    1003, 0,    1009, 0,    0,    1015, 1016, 1002, 999,  1025, 0,\n    1024, 1026, 0,    1018, 1042, 1044, 1044, 1037, 1052, 0,    1046, 1060,\n    1051, 1046, 1047, 1061, 1062, 1056, 1055, 1065, 1062, 1067, 1070, 1054,\n    1057, 1058, 1075, 0,    1062, 0,    0,    0,    1058, 0,    1075, 1079,\n    1067, 1081, 1084, 1083, 1100, 1108, 0,    1110, 1095, 1112, 1101, 1116,\n    1111, 0,    0,    1119, 0,    1112, 0,    1121, 0,    1113, 1127, 0,\n    1115, 0,    1121, 1111,\n\n    1118, 0,    0,    1132, 1130, 1117, 1119, 0,    1119, 1136, 1136, 1137,\n    1141, 1137, 1133, 1145, 1156, 1149, 1169, 1170, 1168, 1179, 0,    1163,\n    1182, 1179, 1180, 1167, 1173, 1179, 0,    1184, 1185, 0,    1190, 1173,\n    1192, 0,    1171, 1175, 0,    1177, 0,    1184, 0,    0,    1186, 1196,\n    1182, 0,    1184, 1187, 1205, 1208, 0,    1192, 1213, 1209, 1228, 1217,\n    1219, 0,    1235, 1238, 0,    1240, 0,    1239, 0,    1236, 0,    1226,\n    0,    1238, 1234, 1225, 0,    0,    0,    1249, 1247, 1240, 1248, 114,\n    1236, 1251, 1239, 0,    1234, 1240, 0,    1260, 1250, 1257, 1263, 0,\n    0,    1256, 1260, 1263,\n\n    1276, 1264, 1284, 1294, 1283, 0,    1295, 1298, 1285, 0,    1284, 0,\n    0,    0,    1291, 1294, 1306, 1306, 1285, 1292, 0,    1307, 1298, 0,\n    0,    1293, 0,    1296, 0,    1296, 1309, 0,    0,    1314, 1315, 0,\n    1302, 1302, 1315, 0,    0,    0,    1322, 1327, 0,    0,    1309, 0,\n    1328, 1323, 0,    1335, 0,    1333, 1335, 0,    1345, 0,    1347, 0,\n    1358, 0,    1343, 1359, 1353, 0,    0,    0,    0,    1351, 1353, 1353,\n    0,    1347, 1356, 1368, 0,    1352, 1360, 1349, 1356, 0,    1359, 1366,\n    1360, 0,    1376, 1377, 1375, 0,    0,    1373, 0,    1370, 1384, 0,\n    1378, 0,    1403, 0,\n\n    0,    1404, 1406, 0,    1410, 1392, 1415, 1401, 0,    1399, 0,    1410,\n    1418, 1412, 1422, 1408, 1424, 0,    1429, 0,    0,    1406, 1427, 0,\n    1429, 1430, 1421, 0,    0,    1433, 1418, 1428, 0,    0,    0,    0,\n    1421, 0,    1422, 0,    0,    0,    0,    0,    1425, 1426, 0,    0,\n    0,    0,    1434, 0,    0,    1444, 1444, 0,    0,    0,    0,    0,\n    1450, 1465, 0,    1532, 1519, 1523, 105,  1527};\n\nstatic const flex_int16_t yy_def[769] = {\n    0,   764, 1,   1,   1,   765, 765, 764, 764, 764, 764, 764, 766, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 764, 764, 764, 768, 764, 764, 764, 766,\n    764, 764, 764, 764, 764, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 768, 764, 764, 764, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,\n    767, 767, 767, 0,   764, 764, 764, 764};\n\nstatic const flex_int16_t yy_nxt[1608] = {\n    0,   8,   9,   10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21,\n    22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,\n    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  44,\n    51,  44,  52,  53,  54,  8,   28,  29,  30,  31,  32,  33,  34,  35,  36,\n    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  44,\n    51,  57,  57,  57,  57,  62,  73,  60,  66,  67,  74,  68,  99,  78,  100,\n    107, 75,  69,  108, 70,  79,  76,  152, 71,  72,  157,\n\n    77,  80,  101, 158, 81,  57,  57,  82,  65,  62,  73,  60,  66,  67,  74,\n    68,  99,  78,  100, 107, 75,  69,  108, 70,  79,  76,  152, 71,  72,  157,\n    77,  80,  101, 158, 81,  159, 89,  82,  83,  163, 148, 127, 84,  102, 103,\n    164, 85,  90,  149, 91,  104, 105, 86,  109, 165, 87,  106, 110, 128, 92,\n    170, 111, 88,  659, 156, 159, 89,  112, 83,  163, 148, 127, 84,  102, 103,\n    164, 85,  90,  149, 91,  104, 105, 86,  109, 165, 87,  106, 110, 128, 92,\n    170, 111, 88,  93,  113, 156, 61,  112, 114, 155,\n\n    166, 94,  115, 171, 95,  154, 172, 96,  116, 181, 97,  168, 129, 98,  167,\n    117, 130, 118, 169, 144, 145, 182, 146, 93,  113, 147, 131, 64,  114, 119,\n    166, 94,  115, 171, 95,  120, 172, 96,  116, 181, 97,  168, 129, 98,  167,\n    117, 130, 118, 169, 144, 145, 182, 146, 150, 151, 147, 131, 160, 187, 119,\n    173, 188, 161, 179, 174, 120, 121, 175, 176, 177, 162, 178, 189, 180, 122,\n    190, 123, 191, 124, 192, 200, 125, 126, 150, 151, 204, 63,  160, 187, 61,\n    173, 188, 161, 179, 174, 60,  121, 175, 176, 177,\n\n    162, 178, 189, 180, 122, 190, 123, 191, 124, 192, 200, 125, 126, 132, 58,\n    204, 133, 134, 764, 183, 207, 135, 184, 208, 136, 137, 56,  209, 185, 56,\n    764, 197, 205, 764, 764, 186, 212, 198, 206, 193, 764, 764, 194, 132, 195,\n    213, 133, 134, 199, 183, 207, 135, 184, 208, 136, 137, 138, 209, 185, 196,\n    139, 197, 205, 140, 141, 186, 212, 198, 206, 193, 142, 201, 194, 143, 195,\n    213, 210, 202, 199, 211, 214, 222, 223, 203, 764, 224, 138, 225, 226, 196,\n    139, 231, 764, 140, 141, 227, 764, 228, 234, 764,\n\n    142, 201, 764, 143, 235, 229, 210, 202, 232, 211, 214, 222, 223, 203, 215,\n    224, 230, 225, 226, 216, 236, 231, 233, 237, 217, 227, 218, 228, 234, 219,\n    220, 238, 221, 242, 235, 229, 243, 239, 232, 240, 241, 244, 245, 246, 215,\n    247, 230, 248, 250, 216, 236, 249, 233, 237, 217, 764, 218, 764, 258, 219,\n    220, 238, 221, 242, 262, 764, 243, 239, 263, 240, 241, 244, 245, 246, 259,\n    247, 264, 248, 250, 265, 266, 249, 251, 260, 252, 253, 267, 254, 258, 270,\n    268, 261, 271, 272, 262, 255, 274, 256, 263, 278,\n\n    257, 269, 764, 279, 259, 273, 264, 282, 283, 265, 266, 286, 251, 260, 252,\n    253, 267, 254, 280, 270, 268, 261, 271, 272, 281, 255, 274, 256, 287, 278,\n    257, 269, 275, 279, 276, 273, 284, 282, 283, 277, 288, 286, 285, 289, 290,\n    291, 292, 293, 280, 294, 295, 296, 297, 301, 281, 302, 303, 304, 287, 307,\n    308, 298, 275, 299, 276, 309, 284, 310, 311, 277, 288, 305, 285, 289, 290,\n    291, 292, 293, 300, 294, 295, 296, 297, 301, 306, 302, 303, 304, 316, 307,\n    308, 298, 317, 299, 318, 309, 320, 310, 311, 312,\n\n    321, 305, 322, 313, 314, 323, 324, 315, 300, 325, 326, 327, 328, 319, 306,\n    330, 331, 332, 316, 329, 333, 334, 317, 335, 318, 336, 320, 337, 340, 312,\n    321, 341, 322, 313, 314, 323, 324, 315, 342, 325, 326, 327, 328, 319, 343,\n    330, 331, 332, 344, 329, 333, 334, 338, 335, 339, 336, 345, 337, 340, 346,\n    347, 341, 348, 349, 350, 351, 352, 353, 342, 355, 356, 357, 358, 359, 343,\n    360, 361, 354, 344, 362, 365, 363, 338, 366, 339, 367, 345, 368, 369, 346,\n    347, 364, 348, 349, 350, 351, 352, 353, 370, 355,\n\n    356, 357, 358, 359, 371, 360, 361, 354, 373, 362, 365, 363, 374, 366, 375,\n    367, 372, 368, 369, 376, 377, 364, 378, 379, 380, 381, 382, 383, 370, 384,\n    385, 386, 387, 388, 371, 389, 390, 391, 373, 392, 393, 398, 374, 399, 375,\n    396, 372, 394, 400, 376, 377, 397, 378, 379, 380, 381, 382, 383, 395, 384,\n    385, 386, 387, 388, 401, 389, 390, 391, 402, 392, 393, 398, 403, 399, 404,\n    396, 405, 394, 400, 406, 407, 397, 408, 409, 410, 411, 412, 413, 415, 414,\n    416, 417, 419, 420, 401, 421, 423, 424, 402, 422,\n\n    425, 426, 403, 418, 404, 427, 405, 428, 429, 406, 407, 430, 408, 409, 410,\n    411, 412, 413, 415, 414, 416, 417, 419, 420, 431, 421, 423, 424, 432, 422,\n    425, 426, 433, 418, 434, 427, 435, 428, 429, 436, 437, 430, 438, 439, 440,\n    443, 441, 444, 445, 446, 447, 448, 449, 450, 431, 451, 452, 453, 432, 454,\n    455, 456, 433, 442, 434, 457, 435, 458, 459, 436, 437, 460, 438, 439, 440,\n    443, 441, 444, 445, 446, 447, 448, 449, 450, 461, 451, 452, 453, 462, 454,\n    455, 456, 463, 442, 464, 457, 465, 458, 459, 466,\n\n    467, 460, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 461,\n    480, 481, 482, 462, 484, 485, 486, 463, 487, 464, 488, 465, 489, 483, 466,\n    467, 490, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 491,\n    480, 481, 482, 492, 484, 485, 486, 493, 487, 494, 488, 495, 489, 483, 496,\n    497, 490, 498, 499, 500, 501, 502, 503, 504, 505, 507, 508, 509, 506, 491,\n    510, 511, 512, 492, 513, 514, 515, 493, 516, 494, 517, 495, 518, 519, 496,\n    497, 520, 498, 499, 500, 501, 502, 503, 504, 505,\n\n    507, 508, 509, 506, 521, 510, 511, 512, 522, 513, 514, 515, 523, 516, 524,\n    517, 526, 518, 519, 525, 527, 520, 528, 529, 530, 531, 532, 533, 534, 535,\n    536, 537, 538, 539, 521, 540, 541, 542, 522, 543, 544, 545, 523, 546, 524,\n    547, 526, 548, 549, 525, 527, 550, 528, 529, 530, 531, 532, 533, 534, 535,\n    536, 537, 538, 539, 551, 540, 541, 542, 552, 543, 544, 545, 553, 546, 554,\n    547, 555, 548, 549, 556, 557, 550, 558, 559, 560, 561, 562, 563, 564, 565,\n    566, 567, 568, 569, 551, 570, 571, 572, 552, 573,\n\n    574, 575, 553, 576, 554, 577, 555, 578, 579, 556, 557, 580, 558, 559, 560,\n    561, 562, 563, 564, 565, 566, 567, 568, 569, 581, 570, 571, 572, 582, 573,\n    574, 575, 583, 576, 584, 577, 585, 578, 579, 586, 587, 580, 588, 589, 590,\n    591, 592, 593, 594, 595, 596, 597, 598, 600, 581, 601, 602, 603, 582, 604,\n    605, 606, 583, 607, 584, 608, 585, 609, 610, 586, 587, 599, 588, 589, 590,\n    591, 592, 593, 594, 595, 596, 597, 598, 600, 611, 601, 602, 603, 612, 604,\n    605, 606, 613, 607, 614, 608, 615, 609, 610, 616,\n\n    617, 599, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 611,\n    630, 631, 632, 612, 633, 634, 635, 613, 636, 614, 637, 615, 638, 639, 616,\n    617, 640, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 641,\n    630, 631, 632, 642, 633, 634, 635, 643, 636, 644, 637, 645, 638, 639, 646,\n    647, 640, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 660, 641,\n    661, 662, 663, 642, 664, 665, 666, 643, 667, 644, 668, 645, 669, 670, 646,\n    647, 671, 648, 649, 650, 651, 652, 653, 654, 655,\n\n    656, 657, 658, 660, 672, 661, 662, 663, 673, 664, 665, 666, 674, 667, 675,\n    668, 676, 669, 670, 677, 678, 671, 679, 680, 681, 682, 683, 684, 685, 686,\n    687, 688, 689, 690, 672, 691, 692, 693, 673, 694, 695, 696, 674, 697, 675,\n    698, 676, 699, 700, 677, 678, 701, 679, 680, 681, 682, 683, 684, 685, 686,\n    687, 688, 689, 690, 702, 691, 692, 693, 703, 694, 695, 696, 704, 697, 705,\n    698, 706, 699, 700, 707, 708, 701, 709, 710, 711, 712, 713, 714, 715, 716,\n    717, 718, 719, 720, 702, 721, 722, 723, 703, 724,\n\n    725, 726, 704, 727, 705, 728, 706, 729, 730, 707, 708, 731, 709, 710, 711,\n    712, 713, 714, 715, 716, 717, 718, 719, 720, 732, 721, 722, 723, 733, 724,\n    725, 726, 734, 727, 735, 728, 736, 729, 730, 737, 738, 731, 739, 740, 741,\n    742, 743, 744, 745, 746, 747, 748, 749, 750, 732, 751, 752, 753, 733, 754,\n    755, 756, 734, 757, 735, 758, 736, 759, 760, 737, 738, 761, 739, 740, 741,\n    742, 743, 744, 745, 746, 747, 748, 749, 750, 762, 751, 752, 753, 763, 754,\n    755, 756, 764, 757, 764, 758, 764, 759, 760, 764,\n\n    764, 761, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 762,\n    764, 764, 764, 763, 55,  55,  55,  55,  59,  764, 59,  59,  153, 153, 764,\n    153, 7,   764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n\n    764, 764, 764, 764, 764, 764, 764};\n\nstatic const flex_int16_t yy_chk[1608] = {\n    0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   9,   9,   10,  10,  23,  29,  23,  28,  28,  29,  28,  34,  30,  35,\n    37,  29,  28,  38,  28,  30,  29,  51,  28,  28,  66,\n\n    29,  30,  35,  67,  30,  57,  57,  30,  767, 60,  29,  60,  28,  28,  29,\n    28,  34,  30,  35,  37,  29,  28,  38,  28,  30,  29,  51,  28,  28,  66,\n    29,  30,  35,  67,  30,  68,  32,  30,  31,  70,  49,  43,  31,  36,  36,\n    71,  31,  32,  49,  32,  36,  36,  31,  39,  72,  31,  36,  39,  43,  32,\n    75,  39,  31,  584, 156, 68,  32,  39,  31,  70,  49,  43,  31,  36,  36,\n    71,  31,  32,  49,  32,  36,  36,  31,  39,  72,  31,  36,  39,  43,  32,\n    75,  39,  31,  33,  40,  62,  61,  39,  40,  59,\n\n    73,  33,  40,  76,  33,  56,  78,  33,  40,  82,  33,  74,  45,  33,  73,\n    41,  45,  41,  74,  48,  48,  83,  48,  33,  40,  48,  45,  27,  40,  41,\n    73,  33,  40,  76,  33,  41,  78,  33,  40,  82,  33,  74,  45,  33,  73,\n    41,  45,  41,  74,  48,  48,  83,  48,  50,  50,  48,  45,  69,  85,  41,\n    79,  86,  69,  81,  79,  41,  42,  80,  80,  80,  69,  80,  87,  81,  42,\n    88,  42,  89,  42,  90,  93,  42,  42,  50,  50,  95,  25,  69,  85,  21,\n    79,  86,  69,  81,  79,  20,  42,  80,  80,  80,\n\n    69,  80,  87,  81,  42,  88,  42,  89,  42,  90,  93,  42,  42,  46,  11,\n    95,  46,  46,  7,   84,  97,  46,  84,  98,  46,  46,  6,   99,  84,  5,\n    0,   92,  96,  0,   0,   84,  101, 92,  96,  91,  0,   0,   91,  46,  91,\n    103, 46,  46,  92,  84,  97,  46,  84,  98,  46,  46,  47,  99,  84,  91,\n    47,  92,  96,  47,  47,  84,  101, 92,  96,  91,  47,  94,  91,  47,  91,\n    103, 100, 94,  92,  100, 104, 106, 107, 94,  0,   108, 47,  109, 110, 91,\n    47,  113, 0,   47,  47,  111, 0,   111, 115, 0,\n\n    47,  94,  0,   47,  116, 112, 100, 94,  114, 100, 104, 106, 107, 94,  105,\n    108, 112, 109, 110, 105, 117, 113, 114, 118, 105, 111, 105, 111, 115, 105,\n    105, 119, 105, 121, 116, 112, 123, 119, 114, 120, 120, 124, 125, 126, 105,\n    127, 112, 128, 129, 105, 117, 128, 114, 118, 105, 0,   105, 0,   131, 105,\n    105, 119, 105, 121, 133, 0,   123, 119, 134, 120, 120, 124, 125, 126, 132,\n    127, 135, 128, 129, 136, 137, 128, 130, 132, 130, 130, 138, 130, 131, 140,\n    139, 132, 141, 143, 133, 130, 144, 130, 134, 146,\n\n    130, 139, 0,   147, 132, 143, 135, 149, 150, 136, 137, 152, 130, 132, 130,\n    130, 138, 130, 148, 140, 139, 132, 141, 143, 148, 130, 144, 130, 157, 146,\n    130, 139, 145, 147, 145, 143, 151, 149, 150, 145, 159, 152, 151, 160, 162,\n    164, 166, 167, 148, 168, 169, 170, 171, 173, 148, 174, 175, 176, 157, 178,\n    179, 172, 145, 172, 145, 180, 151, 181, 183, 145, 159, 177, 151, 160, 162,\n    164, 166, 167, 172, 168, 169, 170, 171, 173, 177, 174, 175, 176, 185, 178,\n    179, 172, 186, 172, 187, 180, 188, 181, 183, 184,\n\n    189, 177, 190, 184, 184, 191, 192, 184, 172, 193, 195, 196, 197, 187, 177,\n    198, 199, 200, 185, 197, 201, 202, 186, 203, 187, 204, 188, 205, 207, 184,\n    189, 208, 190, 184, 184, 191, 192, 184, 209, 193, 195, 196, 197, 187, 210,\n    198, 199, 200, 211, 197, 201, 202, 206, 203, 206, 204, 212, 205, 207, 213,\n    214, 208, 215, 216, 217, 218, 219, 220, 209, 221, 222, 223, 224, 225, 210,\n    226, 227, 220, 211, 228, 230, 229, 206, 231, 206, 232, 212, 233, 234, 213,\n    214, 229, 215, 216, 217, 218, 219, 220, 235, 221,\n\n    222, 223, 224, 225, 236, 226, 227, 220, 237, 228, 230, 229, 238, 231, 239,\n    232, 236, 233, 234, 240, 241, 229, 242, 243, 244, 245, 246, 247, 235, 248,\n    249, 250, 251, 252, 236, 253, 254, 255, 237, 256, 257, 260, 238, 262, 239,\n    259, 236, 258, 263, 240, 241, 259, 242, 243, 244, 245, 246, 247, 258, 248,\n    249, 250, 251, 252, 264, 253, 254, 255, 265, 256, 257, 260, 267, 262, 268,\n    259, 269, 258, 263, 270, 271, 259, 272, 273, 274, 275, 276, 277, 278, 277,\n    279, 280, 281, 282, 264, 283, 284, 285, 265, 283,\n\n    286, 287, 267, 280, 268, 288, 269, 289, 290, 270, 271, 291, 272, 273, 274,\n    275, 276, 277, 278, 277, 279, 280, 281, 282, 292, 283, 284, 285, 293, 283,\n    286, 287, 294, 280, 295, 288, 296, 289, 290, 297, 298, 291, 301, 302, 303,\n    305, 304, 306, 308, 309, 310, 311, 312, 313, 292, 314, 315, 316, 293, 318,\n    319, 320, 294, 304, 295, 322, 296, 325, 326, 297, 298, 328, 301, 302, 303,\n    305, 304, 306, 308, 309, 310, 311, 312, 313, 329, 314, 315, 316, 330, 318,\n    319, 320, 331, 304, 332, 322, 333, 325, 326, 334,\n\n    335, 328, 336, 337, 338, 339, 341, 342, 344, 346, 347, 348, 349, 350, 329,\n    351, 352, 353, 330, 355, 356, 362, 331, 363, 332, 365, 333, 366, 353, 334,\n    335, 367, 336, 337, 338, 339, 341, 342, 344, 346, 347, 348, 349, 350, 368,\n    351, 352, 353, 369, 355, 356, 362, 370, 363, 371, 365, 372, 366, 353, 373,\n    375, 367, 376, 377, 378, 379, 380, 381, 383, 384, 385, 386, 388, 384, 368,\n    389, 390, 391, 369, 392, 393, 395, 370, 396, 371, 397, 372, 398, 399, 373,\n    375, 400, 376, 377, 378, 379, 380, 381, 383, 384,\n\n    385, 386, 388, 384, 401, 389, 390, 391, 402, 392, 393, 395, 403, 396, 404,\n    397, 407, 398, 399, 404, 408, 400, 410, 411, 412, 413, 414, 415, 416, 417,\n    418, 419, 422, 423, 401, 424, 426, 428, 402, 431, 432, 433, 403, 434, 404,\n    435, 407, 437, 438, 404, 408, 440, 410, 411, 412, 413, 414, 415, 416, 417,\n    418, 419, 422, 423, 441, 424, 426, 428, 442, 431, 432, 433, 443, 434, 444,\n    435, 445, 437, 438, 447, 448, 440, 449, 450, 451, 452, 453, 454, 455, 456,\n    457, 458, 459, 460, 441, 461, 462, 463, 442, 465,\n\n    469, 471, 443, 472, 444, 473, 445, 474, 475, 447, 448, 476, 449, 450, 451,\n    452, 453, 454, 455, 456, 457, 458, 459, 460, 477, 461, 462, 463, 478, 465,\n    469, 471, 480, 472, 481, 473, 482, 474, 475, 483, 484, 476, 485, 488, 490,\n    492, 494, 495, 497, 499, 500, 501, 504, 505, 477, 506, 507, 509, 478, 510,\n    511, 512, 480, 513, 481, 514, 482, 515, 516, 483, 484, 504, 485, 488, 490,\n    492, 494, 495, 497, 499, 500, 501, 504, 505, 517, 506, 507, 509, 518, 510,\n    511, 512, 519, 513, 520, 514, 521, 515, 516, 522,\n\n    524, 504, 525, 526, 527, 528, 529, 530, 532, 533, 535, 536, 537, 539, 517,\n    540, 542, 544, 518, 547, 548, 549, 519, 551, 520, 552, 521, 553, 554, 522,\n    524, 556, 525, 526, 527, 528, 529, 530, 532, 533, 535, 536, 537, 539, 557,\n    540, 542, 544, 558, 547, 548, 549, 559, 551, 560, 552, 561, 553, 554, 563,\n    564, 556, 566, 568, 570, 572, 574, 575, 576, 580, 581, 582, 583, 585, 557,\n    586, 587, 589, 558, 590, 592, 593, 559, 594, 560, 595, 561, 598, 599, 563,\n    564, 600, 566, 568, 570, 572, 574, 575, 576, 580,\n\n    581, 582, 583, 585, 601, 586, 587, 589, 602, 590, 592, 593, 603, 594, 604,\n    595, 605, 598, 599, 607, 608, 600, 609, 611, 615, 616, 617, 618, 619, 620,\n    622, 623, 626, 628, 601, 630, 631, 634, 602, 635, 637, 638, 603, 639, 604,\n    643, 605, 644, 647, 607, 608, 649, 609, 611, 615, 616, 617, 618, 619, 620,\n    622, 623, 626, 628, 650, 630, 631, 634, 652, 635, 637, 638, 654, 639, 655,\n    643, 657, 644, 647, 659, 661, 649, 663, 664, 665, 670, 671, 672, 674, 675,\n    676, 678, 679, 680, 650, 681, 683, 684, 652, 685,\n\n    687, 688, 654, 689, 655, 692, 657, 694, 695, 659, 661, 697, 663, 664, 665,\n    670, 671, 672, 674, 675, 676, 678, 679, 680, 699, 681, 683, 684, 702, 685,\n    687, 688, 703, 689, 705, 692, 706, 694, 695, 707, 708, 697, 710, 712, 713,\n    714, 715, 716, 717, 719, 722, 723, 725, 726, 699, 727, 730, 731, 702, 732,\n    737, 739, 703, 745, 705, 746, 706, 751, 754, 707, 708, 755, 710, 712, 713,\n    714, 715, 716, 717, 719, 722, 723, 725, 726, 761, 727, 730, 731, 762, 732,\n    737, 739, 0,   745, 0,   746, 0,   751, 754, 0,\n\n    0,   755, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   761,\n    0,   0,   0,   762, 765, 765, 765, 765, 766, 0,   766, 766, 768, 768, 0,\n    768, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n    764, 764, 764, 764, 764, 764, 764, 764, 764, 764,\n\n    764, 764, 764, 764, 764, 764, 764};\n\n/* The intent behind this definition is that it'll catch\n * any uses of REJECT which flex missed.\n */\n#define REJECT reject_used_but_not_detected\n#define yymore() yymore_used_but_not_detected\n#define YY_MORE_ADJ 0\n#define YY_RESTORE_YY_MORE_OFFSET\n#line 1 \"flex.l\"\n#line 2 \"flex.l\"\n#include <stdio.h>\n\n#include <cstring>\n#include <sstream>\n#include <string>\n\n#include \"bison_parser.h\"\n#define TOKEN(name) \\\n  { return SQL_##name; }\nstatic thread_local std::stringstream strbuf;\n#line 1272 \"flex_lexer.cpp\"\n\n#line 1274 \"flex_lexer.cpp\"\n\n#define INITIAL 0\n#define COMMENT 1\n#define singlequotedstring 2\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\n/* Holds the entire state of the reentrant scanner. */\nstruct yyguts_t {\n  /* User-defined. Not touched by flex. */\n  YY_EXTRA_TYPE yyextra_r;\n\n  /* The rest are the same as the globals declared in the non-reentrant scanner.\n   */\n  FILE *yyin_r, *yyout_r;\n  size_t yy_buffer_stack_top;       /**< index of top of stack. */\n  size_t yy_buffer_stack_max;       /**< capacity of stack. */\n  YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */\n  char yy_hold_char;\n  int yy_n_chars;\n  int yyleng_r;\n  char *yy_c_buf_p;\n  int yy_init;\n  int yy_start;\n  int yy_did_buffer_switch_on_eof;\n  int yy_start_stack_ptr;\n  int yy_start_stack_depth;\n  int *yy_start_stack;\n  yy_state_type yy_last_accepting_state;\n  char *yy_last_accepting_cpos;\n\n  int yylineno_r;\n  int yy_flex_debug_r;\n\n  char *yytext_r;\n  int yy_more_flag;\n  int yy_more_len;\n\n  YYSTYPE *yylval_r;\n\n  YYLTYPE *yylloc_r;\n\n}; /* end struct yyguts_t */\n\nstatic int yy_init_globals(yyscan_t yyscanner);\n\n/* This must go here because YYSTYPE and YYLTYPE are included\n * from bison output in section 1.*/\n#define yylval yyg->yylval_r\n\n#define yylloc yyg->yylloc_r\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner);\n#else\nstatic int input(yyscan_t yyscanner);\n#endif\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Copy whatever the last rule matched to the standard output. */\n#ifndef ECHO\n/* This used to be an fputs(), but since the string might contain NUL's,\n * we now use fwrite().\n */\n#define ECHO                                        \\\n  do {                                              \\\n    if (fwrite(yytext, (size_t)yyleng, 1, yyout)) { \\\n    }                                               \\\n  } while (0)\n#endif\n\n/* Gets input and stuffs it into \"buf\".  number of characters read, or YY_NULL,\n * is returned in \"result\".\n */\n#ifndef YY_INPUT\n#define YY_INPUT(buf, result, max_size)                                     \\\n  if (YY_CURRENT_BUFFER_LVALUE->yy_is_interactive) {                        \\\n    int c = '*';                                                            \\\n    int n;                                                                  \\\n    for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\\n'; ++n)  \\\n      buf[n] = (char)c;                                                     \\\n    if (c == '\\n') buf[n++] = (char)c;                                      \\\n    if (c == EOF && ferror(yyin))                                           \\\n      YY_FATAL_ERROR(\"input in flex scanner failed\");                       \\\n    result = n;                                                             \\\n  } else {                                                                  \\\n    errno = 0;                                                              \\\n    while ((result = (int)fread(buf, 1, (yy_size_t)max_size, yyin)) == 0 && \\\n           ferror(yyin)) {                                                  \\\n      if (errno != EINTR) {                                                 \\\n        YY_FATAL_ERROR(\"input in flex scanner failed\");                     \\\n        break;                                                              \\\n      }                                                                     \\\n      errno = 0;                                                            \\\n      clearerr(yyin);                                                       \\\n    }                                                                       \\\n  }\n\n#endif\n\n/* No semi-colon after return; correct usage is to write \"yyterminate();\" -\n * we don't want an extra ';' after the \"return\" because that will cause\n * some compilers to complain about unreachable statements.\n */\n#ifndef yyterminate\n#define yyterminate() return YY_NULL\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Report a fatal error. */\n#ifndef YY_FATAL_ERROR\n#define YY_FATAL_ERROR(msg) yy_fatal_error(msg, yyscanner)\n#endif\n\n/* end tables serialization structures and prototypes */\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* Code executed at the beginning of each rule, after yytext and yyleng\n * have been set up.\n */\n#ifndef YY_USER_ACTION\n#define YY_USER_ACTION\n#endif\n\n/* Code executed at the end of each rule. */\n#ifndef YY_BREAK\n#define YY_BREAK /*LINTED*/ break;\n#endif\n\n#define YY_RULE_SETUP YY_USER_ACTION\n\n/** The main scanner function which does all the work.\n */\nYY_DECL {\n  yy_state_type yy_current_state;\n  char *yy_cp, *yy_bp;\n  int yy_act;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yylval = yylval_param;\n\n  yylloc = yylloc_param;\n\n  if (!yyg->yy_init) {\n    yyg->yy_init = 1;\n\n#ifdef YY_USER_INIT\n    YY_USER_INIT;\n#endif\n\n    if (!yyg->yy_start) yyg->yy_start = 1; /* first start state */\n\n    if (!yyin) yyin = stdin;\n\n    if (!yyout) yyout = stdout;\n\n    if (!YY_CURRENT_BUFFER) {\n      yyensure_buffer_stack(yyscanner);\n      YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n    }\n\n    yy_load_buffer_state(yyscanner);\n  }\n\n  {\n#line 26 \"flex.l\"\n\n#line 1560 \"flex_lexer.cpp\"\n\n    while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */\n    {\n      yy_cp = yyg->yy_c_buf_p;\n\n      /* Support of yytext. */\n      *yy_cp = yyg->yy_hold_char;\n\n      /* yy_bp points to the position in yy_ch_buf of the start of\n       * the current run.\n       */\n      yy_bp = yy_cp;\n\n      yy_current_state = yyg->yy_start;\n    yy_match:\n      do {\n        YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];\n        if (yy_accept[yy_current_state]) {\n          yyg->yy_last_accepting_state = yy_current_state;\n          yyg->yy_last_accepting_cpos = yy_cp;\n        }\n        while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n          yy_current_state = (int)yy_def[yy_current_state];\n          if (yy_current_state >= 765) yy_c = yy_meta[yy_c];\n        }\n        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n        ++yy_cp;\n      } while (yy_current_state != 764);\n      yy_cp = yyg->yy_last_accepting_cpos;\n      yy_current_state = yyg->yy_last_accepting_state;\n\n    yy_find_action:\n      yy_act = yy_accept[yy_current_state];\n\n      YY_DO_BEFORE_ACTION;\n\n    do_action: /* This label is used only to access EOF actions. */\n\n      switch (yy_act) { /* beginning of action switch */\n        case 0:         /* must back up */\n          /* undo the effects of YY_DO_BEFORE_ACTION */\n          *yy_cp = yyg->yy_hold_char;\n          yy_cp = yyg->yy_last_accepting_cpos;\n          yy_current_state = yyg->yy_last_accepting_state;\n          goto yy_find_action;\n\n        case 1:\n          YY_RULE_SETUP\n#line 27 \"flex.l\"\n          TOKEN(OP_NOTEQUAL)\n          YY_BREAK\n        case 2:\n          YY_RULE_SETUP\n#line 28 \"flex.l\"\n          TOKEN(ENABLE)\n          YY_BREAK\n        case 3:\n          YY_RULE_SETUP\n#line 29 \"flex.l\"\n          TOKEN(SIMPLE)\n          YY_BREAK\n        case 4:\n          YY_RULE_SETUP\n#line 30 \"flex.l\"\n          TOKEN(TEXT)\n          YY_BREAK\n        case 5:\n          YY_RULE_SETUP\n#line 31 \"flex.l\"\n          TOKEN(OVER)\n          YY_BREAK\n        case 6:\n          YY_RULE_SETUP\n#line 32 \"flex.l\"\n          TOKEN(YEAR)\n          YY_BREAK\n        case 7:\n          YY_RULE_SETUP\n#line 33 \"flex.l\"\n          TOKEN(INSERT_METHOD)\n          YY_BREAK\n        case 8:\n          YY_RULE_SETUP\n#line 34 \"flex.l\"\n          TOKEN(OP_SEMI)\n          YY_BREAK\n        case 9:\n          YY_RULE_SETUP\n#line 35 \"flex.l\"\n          TOKEN(BIGINT)\n          YY_BREAK\n        case 10:\n          YY_RULE_SETUP\n#line 36 \"flex.l\"\n          TOKEN(LIMIT)\n          YY_BREAK\n        case 11:\n          YY_RULE_SETUP\n#line 37 \"flex.l\"\n          TOKEN(OP_GREATERTHAN)\n          YY_BREAK\n        case 12:\n          YY_RULE_SETUP\n#line 38 \"flex.l\"\n          TOKEN(WITH)\n          YY_BREAK\n        case 13:\n          YY_RULE_SETUP\n#line 39 \"flex.l\"\n          TOKEN(ORDER)\n          YY_BREAK\n        case 14:\n          YY_RULE_SETUP\n#line 40 \"flex.l\"\n          TOKEN(OPTION)\n          YY_BREAK\n        case 15:\n          YY_RULE_SETUP\n#line 41 \"flex.l\"\n          TOKEN(LAST)\n          YY_BREAK\n        case 16:\n          YY_RULE_SETUP\n#line 42 \"flex.l\"\n          TOKEN(UNBOUNDED)\n          YY_BREAK\n        case 17:\n          YY_RULE_SETUP\n#line 43 \"flex.l\"\n          TOKEN(PRECEDING)\n          YY_BREAK\n        case 18:\n          YY_RULE_SETUP\n#line 44 \"flex.l\"\n          TOKEN(EXCEPT)\n          YY_BREAK\n        case 19:\n          YY_RULE_SETUP\n#line 45 \"flex.l\"\n          TOKEN(NUMERIC)\n          YY_BREAK\n        case 20:\n          YY_RULE_SETUP\n#line 46 \"flex.l\"\n          TOKEN(OP_LESSTHAN)\n          YY_BREAK\n        case 21:\n          YY_RULE_SETUP\n#line 47 \"flex.l\"\n          TOKEN(ACTION)\n          YY_BREAK\n        case 22:\n          YY_RULE_SETUP\n#line 48 \"flex.l\"\n          TOKEN(BEFORE)\n          YY_BREAK\n        case 23:\n          YY_RULE_SETUP\n#line 49 \"flex.l\"\n          TOKEN(OP_GREATEREQ)\n          YY_BREAK\n        case 24:\n          YY_RULE_SETUP\n#line 50 \"flex.l\"\n          TOKEN(CHECK)\n          YY_BREAK\n        case 25:\n          YY_RULE_SETUP\n#line 51 \"flex.l\"\n          TOKEN(COMPACT)\n          YY_BREAK\n        case 26:\n          YY_RULE_SETUP\n#line 52 \"flex.l\"\n          TOKEN(FULL)\n          YY_BREAK\n        case 27:\n          YY_RULE_SETUP\n#line 53 \"flex.l\"\n          TOKEN(NATURAL)\n          YY_BREAK\n        case 28:\n          YY_RULE_SETUP\n#line 54 \"flex.l\"\n          TOKEN(BINARY)\n          YY_BREAK\n        case 29:\n          YY_RULE_SETUP\n#line 55 \"flex.l\"\n          TOKEN(NATIONAL)\n          YY_BREAK\n        case 30:\n          YY_RULE_SETUP\n#line 56 \"flex.l\"\n          TOKEN(ENUM)\n          YY_BREAK\n        case 31:\n          YY_RULE_SETUP\n#line 57 \"flex.l\"\n          TOKEN(REDUNDANT)\n          YY_BREAK\n        case 32:\n          YY_RULE_SETUP\n#line 58 \"flex.l\"\n          TOKEN(OP_ADD)\n          YY_BREAK\n        case 33:\n          YY_RULE_SETUP\n#line 59 \"flex.l\"\n          TOKEN(CURRENT)\n          YY_BREAK\n        case 34:\n          YY_RULE_SETUP\n#line 60 \"flex.l\"\n          TOKEN(MERGE)\n          YY_BREAK\n        case 35:\n          YY_RULE_SETUP\n#line 61 \"flex.l\"\n          TOKEN(TRIGGER)\n          YY_BREAK\n        case 36:\n          YY_RULE_SETUP\n#line 62 \"flex.l\"\n          TOKEN(COMPRESSED)\n          YY_BREAK\n        case 37:\n          YY_RULE_SETUP\n#line 63 \"flex.l\"\n          TOKEN(OP_SUB)\n          YY_BREAK\n        case 38:\n          YY_RULE_SETUP\n#line 64 \"flex.l\"\n          TOKEN(FALSE)\n          YY_BREAK\n        case 39:\n          YY_RULE_SETUP\n#line 65 \"flex.l\"\n          TOKEN(UNIQUE)\n          YY_BREAK\n        case 40:\n          YY_RULE_SETUP\n#line 66 \"flex.l\"\n          TOKEN(WHERE)\n          YY_BREAK\n        case 41:\n          YY_RULE_SETUP\n#line 67 \"flex.l\"\n          TOKEN(MINUTE)\n          YY_BREAK\n        case 42:\n          YY_RULE_SETUP\n#line 68 \"flex.l\"\n          TOKEN(FIRST)\n          YY_BREAK\n        case 43:\n          YY_RULE_SETUP\n#line 69 \"flex.l\"\n          TOKEN(ON)\n          YY_BREAK\n        case 44:\n          YY_RULE_SETUP\n#line 70 \"flex.l\"\n          TOKEN(PARTIAL)\n          YY_BREAK\n        case 45:\n          YY_RULE_SETUP\n#line 71 \"flex.l\"\n          TOKEN(DOUBLE)\n          YY_BREAK\n        case 46:\n          YY_RULE_SETUP\n#line 72 \"flex.l\"\n          TOKEN(AFTER)\n          YY_BREAK\n        case 47:\n          YY_RULE_SETUP\n#line 73 \"flex.l\"\n          TOKEN(PRIMARY)\n          YY_BREAK\n        case 48:\n          YY_RULE_SETUP\n#line 74 \"flex.l\"\n          TOKEN(MONTH)\n          YY_BREAK\n        case 49:\n          YY_RULE_SETUP\n#line 75 \"flex.l\"\n          TOKEN(DEFERRED)\n          YY_BREAK\n        case 50:\n          YY_RULE_SETUP\n#line 76 \"flex.l\"\n          TOKEN(VALUES)\n          YY_BREAK\n        case 51:\n          YY_RULE_SETUP\n#line 77 \"flex.l\"\n          TOKEN(LONGTEXT)\n          YY_BREAK\n        case 52:\n          YY_RULE_SETUP\n#line 78 \"flex.l\"\n          TOKEN(SQL)\n          YY_BREAK\n        case 53:\n          YY_RULE_SETUP\n#line 79 \"flex.l\"\n          TOKEN(SHARED)\n          YY_BREAK\n        case 54:\n          YY_RULE_SETUP\n#line 80 \"flex.l\"\n          TOKEN(VALIDATION)\n          YY_BREAK\n        case 55:\n          YY_RULE_SETUP\n#line 81 \"flex.l\"\n          TOKEN(OR)\n          YY_BREAK\n        case 56:\n          YY_RULE_SETUP\n#line 82 \"flex.l\"\n          TOKEN(VIEW)\n          YY_BREAK\n        case 57:\n          YY_RULE_SETUP\n#line 83 \"flex.l\"\n          TOKEN(INDEX)\n          YY_BREAK\n        case 58:\n          YY_RULE_SETUP\n#line 84 \"flex.l\"\n          TOKEN(GROUP)\n          YY_BREAK\n        case 59:\n          YY_RULE_SETUP\n#line 85 \"flex.l\"\n          TOKEN(OP_MUL)\n          YY_BREAK\n        case 60:\n          YY_RULE_SETUP\n#line 86 \"flex.l\"\n          TOKEN(INPLACE)\n          YY_BREAK\n        case 61:\n          YY_RULE_SETUP\n#line 87 \"flex.l\"\n          TOKEN(FOREIGN)\n          YY_BREAK\n        case 62:\n          YY_RULE_SETUP\n#line 88 \"flex.l\"\n          TOKEN(RESTRICT)\n          YY_BREAK\n        case 63:\n          YY_RULE_SETUP\n#line 89 \"flex.l\"\n          TOKEN(SPATIAL)\n          YY_BREAK\n        case 64:\n          YY_RULE_SETUP\n#line 90 \"flex.l\"\n          TOKEN(FOLLOWING)\n          YY_BREAK\n        case 65:\n          YY_RULE_SETUP\n#line 91 \"flex.l\"\n          TOKEN(DEC)\n          YY_BREAK\n        case 66:\n          YY_RULE_SETUP\n#line 92 \"flex.l\"\n          TOKEN(SELECT)\n          YY_BREAK\n        case 67:\n          YY_RULE_SETUP\n#line 93 \"flex.l\"\n          TOKEN(NONE)\n          YY_BREAK\n        case 68:\n          YY_RULE_SETUP\n#line 94 \"flex.l\"\n          TOKEN(DISTINCT)\n          YY_BREAK\n        case 69:\n          YY_RULE_SETUP\n#line 95 \"flex.l\"\n          TOKEN(TRUE)\n          YY_BREAK\n        case 70:\n          YY_RULE_SETUP\n#line 96 \"flex.l\"\n          TOKEN(DYNAMIC)\n          YY_BREAK\n        case 71:\n          YY_RULE_SETUP\n#line 97 \"flex.l\"\n          TOKEN(BY)\n          YY_BREAK\n        case 72:\n          YY_RULE_SETUP\n#line 98 \"flex.l\"\n          TOKEN(OP_MOD)\n          YY_BREAK\n        case 73:\n          YY_RULE_SETUP\n#line 99 \"flex.l\"\n          TOKEN(INTEGER)\n          YY_BREAK\n        case 74:\n          YY_RULE_SETUP\n#line 100 \"flex.l\"\n          TOKEN(SECURITY)\n          YY_BREAK\n        case 75:\n          YY_RULE_SETUP\n#line 101 \"flex.l\"\n          TOKEN(IS)\n          YY_BREAK\n        case 76:\n          YY_RULE_SETUP\n#line 102 \"flex.l\"\n          TOKEN(DEFINER)\n          YY_BREAK\n        case 77:\n          YY_RULE_SETUP\n#line 103 \"flex.l\"\n          TOKEN(ROW)\n          YY_BREAK\n        case 78:\n          YY_RULE_SETUP\n#line 104 \"flex.l\"\n          TOKEN(ENFORCED)\n          YY_BREAK\n        case 79:\n          YY_RULE_SETUP\n#line 105 \"flex.l\"\n          TOKEN(END)\n          YY_BREAK\n        case 80:\n          YY_RULE_SETUP\n#line 106 \"flex.l\"\n          TOKEN(RECURSIVE)\n          YY_BREAK\n        case 81:\n          YY_RULE_SETUP\n#line 107 \"flex.l\"\n          TOKEN(FOR)\n          YY_BREAK\n        case 82:\n          YY_RULE_SETUP\n#line 108 \"flex.l\"\n          TOKEN(TEMPTABLE)\n          YY_BREAK\n        case 83:\n          YY_RULE_SETUP\n#line 109 \"flex.l\"\n          TOKEN(UNION)\n          YY_BREAK\n        case 84:\n          YY_RULE_SETUP\n#line 110 \"flex.l\"\n          TOKEN(NULLS)\n          YY_BREAK\n        case 85:\n          YY_RULE_SETUP\n#line 111 \"flex.l\"\n          TOKEN(UPDATE)\n          YY_BREAK\n        case 86:\n          YY_RULE_SETUP\n#line 112 \"flex.l\"\n          TOKEN(ELSE)\n          YY_BREAK\n        case 87:\n          YY_RULE_SETUP\n#line 113 \"flex.l\"\n          TOKEN(RANGE)\n          YY_BREAK\n        case 88:\n          YY_RULE_SETUP\n#line 114 \"flex.l\"\n          TOKEN(SET)\n          YY_BREAK\n        case 89:\n          YY_RULE_SETUP\n#line 115 \"flex.l\"\n          TOKEN(INVOKER)\n          YY_BREAK\n        case 90:\n          YY_RULE_SETUP\n#line 116 \"flex.l\"\n          TOKEN(OFFSET)\n          YY_BREAK\n        case 91:\n          YY_RULE_SETUP\n#line 117 \"flex.l\"\n          TOKEN(INDEXED)\n          YY_BREAK\n        case 92:\n          YY_RULE_SETUP\n#line 118 \"flex.l\"\n          TOKEN(FORCE)\n          YY_BREAK\n        case 93:\n          YY_RULE_SETUP\n#line 119 \"flex.l\"\n          TOKEN(NCHAR)\n          YY_BREAK\n        case 94:\n          YY_RULE_SETUP\n#line 120 \"flex.l\"\n          TOKEN(AND)\n          YY_BREAK\n        case 95:\n          YY_RULE_SETUP\n#line 121 \"flex.l\"\n          TOKEN(INITIALLY)\n          YY_BREAK\n        case 96:\n          YY_RULE_SETUP\n#line 122 \"flex.l\"\n          TOKEN(PRECISION)\n          YY_BREAK\n        case 97:\n          YY_RULE_SETUP\n#line 123 \"flex.l\"\n          TOKEN(FILTER)\n          YY_BREAK\n        case 98:\n          YY_RULE_SETUP\n#line 124 \"flex.l\"\n          TOKEN(WITHOUT)\n          YY_BREAK\n        case 99:\n          YY_RULE_SETUP\n#line 125 \"flex.l\"\n          TOKEN(NOT)\n          YY_BREAK\n        case 100:\n          YY_RULE_SETUP\n#line 126 \"flex.l\"\n          TOKEN(DELETE)\n          YY_BREAK\n        case 101:\n          YY_RULE_SETUP\n#line 127 \"flex.l\"\n          TOKEN(DEFFERRABLE)\n          YY_BREAK\n        case 102:\n          YY_RULE_SETUP\n#line 128 \"flex.l\"\n          TOKEN(REAL)\n          YY_BREAK\n        case 103:\n          YY_RULE_SETUP\n#line 129 \"flex.l\"\n          TOKEN(THEN)\n          YY_BREAK\n        case 104:\n          YY_RULE_SETUP\n#line 130 \"flex.l\"\n          TOKEN(UNDEFINED)\n          YY_BREAK\n        case 105:\n          YY_RULE_SETUP\n#line 131 \"flex.l\"\n          TOKEN(DEFAULT)\n          YY_BREAK\n        case 106:\n          YY_RULE_SETUP\n#line 132 \"flex.l\"\n          TOKEN(CROSS)\n          YY_BREAK\n        case 107:\n          YY_RULE_SETUP\n#line 133 \"flex.l\"\n          TOKEN(CHAR)\n          YY_BREAK\n        case 108:\n          YY_RULE_SETUP\n#line 134 \"flex.l\"\n          TOKEN(REFERENCES)\n          YY_BREAK\n        case 109:\n          YY_RULE_SETUP\n#line 135 \"flex.l\"\n          TOKEN(OP_XOR)\n          YY_BREAK\n        case 110:\n          YY_RULE_SETUP\n#line 136 \"flex.l\"\n          TOKEN(CASE)\n          YY_BREAK\n        case 111:\n          YY_RULE_SETUP\n#line 137 \"flex.l\"\n          TOKEN(FIXED)\n          YY_BREAK\n        case 112:\n          YY_RULE_SETUP\n#line 138 \"flex.l\"\n          TOKEN(HOUR)\n          YY_BREAK\n        case 113:\n          YY_RULE_SETUP\n#line 139 \"flex.l\"\n          TOKEN(NO)\n          YY_BREAK\n        case 114:\n          YY_RULE_SETUP\n#line 140 \"flex.l\"\n          TOKEN(COLUMN)\n          YY_BREAK\n        case 115:\n          YY_RULE_SETUP\n#line 141 \"flex.l\"\n          TOKEN(LOCAL)\n          YY_BREAK\n        case 116:\n          YY_RULE_SETUP\n#line 142 \"flex.l\"\n          TOKEN(DROP)\n          YY_BREAK\n        case 117:\n          YY_RULE_SETUP\n#line 143 \"flex.l\"\n          TOKEN(REPLACE)\n          YY_BREAK\n        case 118:\n          YY_RULE_SETUP\n#line 144 \"flex.l\"\n          TOKEN(ASC)\n          YY_BREAK\n        case 119:\n          YY_RULE_SETUP\n#line 145 \"flex.l\"\n          TOKEN(OP_COMMA)\n          YY_BREAK\n        case 120:\n          YY_RULE_SETUP\n#line 146 \"flex.l\"\n          TOKEN(DISABLE)\n          YY_BREAK\n        case 121:\n          YY_RULE_SETUP\n#line 147 \"flex.l\"\n          TOKEN(TABLE)\n          YY_BREAK\n        case 122:\n          YY_RULE_SETUP\n#line 148 \"flex.l\"\n          TOKEN(ARRAY)\n          YY_BREAK\n        case 123:\n          YY_RULE_SETUP\n#line 149 \"flex.l\"\n          TOKEN(IF)\n          YY_BREAK\n        case 124:\n          YY_RULE_SETUP\n#line 150 \"flex.l\"\n          TOKEN(EXTRACT)\n          YY_BREAK\n        case 125:\n          YY_RULE_SETUP\n#line 151 \"flex.l\"\n          TOKEN(LEFT)\n          YY_BREAK\n        case 126:\n          YY_RULE_SETUP\n#line 152 \"flex.l\"\n          TOKEN(FULLTEXT)\n          YY_BREAK\n        case 127:\n          YY_RULE_SETUP\n#line 153 \"flex.l\"\n          TOKEN(HASH)\n          YY_BREAK\n        case 128:\n          YY_RULE_SETUP\n#line 154 \"flex.l\"\n          TOKEN(ALGORITHM)\n          YY_BREAK\n        case 129:\n          YY_RULE_SETUP\n#line 155 \"flex.l\"\n          TOKEN(LOCK)\n          YY_BREAK\n        case 130:\n          YY_RULE_SETUP\n#line 156 \"flex.l\"\n          TOKEN(DECIMAL)\n          YY_BREAK\n        case 131:\n          YY_RULE_SETUP\n#line 157 \"flex.l\"\n          TOKEN(PARTITION)\n          YY_BREAK\n        case 132:\n          YY_RULE_SETUP\n#line 158 \"flex.l\"\n          TOKEN(CASCADE)\n          YY_BREAK\n        case 133:\n          YY_RULE_SETUP\n#line 159 \"flex.l\"\n          TOKEN(ADD)\n          YY_BREAK\n        case 134:\n          YY_RULE_SETUP\n#line 160 \"flex.l\"\n          TOKEN(BETWEEN)\n          YY_BREAK\n        case 135:\n          YY_RULE_SETUP\n#line 161 \"flex.l\"\n          TOKEN(OP_LESSEQ)\n          YY_BREAK\n        case 136:\n          YY_RULE_SETUP\n#line 162 \"flex.l\"\n          TOKEN(MATCH)\n          YY_BREAK\n        case 137:\n          YY_RULE_SETUP\n#line 163 \"flex.l\"\n          TOKEN(ALL)\n          YY_BREAK\n        case 138:\n          YY_RULE_SETUP\n#line 164 \"flex.l\"\n          TOKEN(ROWS)\n          YY_BREAK\n        case 139:\n          YY_RULE_SETUP\n#line 165 \"flex.l\"\n          TOKEN(JOIN)\n          YY_BREAK\n        case 140:\n          YY_RULE_SETUP\n#line 166 \"flex.l\"\n          TOKEN(LIKE)\n          YY_BREAK\n        case 141:\n          YY_RULE_SETUP\n#line 167 \"flex.l\"\n          TOKEN(OP_RP)\n          YY_BREAK\n        case 142:\n          YY_RULE_SETUP\n#line 168 \"flex.l\"\n          TOKEN(IGNORE)\n          YY_BREAK\n        case 143:\n          YY_RULE_SETUP\n#line 169 \"flex.l\"\n          TOKEN(INT)\n          YY_BREAK\n        case 144:\n          YY_RULE_SETUP\n#line 170 \"flex.l\"\n          TOKEN(MEDIUMTEXT)\n          YY_BREAK\n        case 145:\n          YY_RULE_SETUP\n#line 171 \"flex.l\"\n          TOKEN(BOOLEAN)\n          YY_BREAK\n        case 146:\n          YY_RULE_SETUP\n#line 172 \"flex.l\"\n          TOKEN(KEY)\n          YY_BREAK\n        case 147:\n          YY_RULE_SETUP\n#line 173 \"flex.l\"\n          TOKEN(EACH)\n          YY_BREAK\n        case 148:\n          YY_RULE_SETUP\n#line 174 \"flex.l\"\n          TOKEN(USING)\n          YY_BREAK\n        case 149:\n          YY_RULE_SETUP\n#line 175 \"flex.l\"\n          TOKEN(RENAME)\n          YY_BREAK\n        case 150:\n          YY_RULE_SETUP\n#line 176 \"flex.l\"\n          TOKEN(DO)\n          YY_BREAK\n        case 151:\n          YY_RULE_SETUP\n#line 177 \"flex.l\"\n          TOKEN(OP_LP)\n          YY_BREAK\n        case 152:\n          YY_RULE_SETUP\n#line 178 \"flex.l\"\n          TOKEN(CHARACTER)\n          YY_BREAK\n        case 153:\n          YY_RULE_SETUP\n#line 179 \"flex.l\"\n          TOKEN(UMINUS)\n          YY_BREAK\n        case 154:\n          YY_RULE_SETUP\n#line 180 \"flex.l\"\n          TOKEN(CAST)\n          YY_BREAK\n        case 155:\n          YY_RULE_SETUP\n#line 181 \"flex.l\"\n          TOKEN(GROUPS)\n          YY_BREAK\n        case 156:\n          YY_RULE_SETUP\n#line 182 \"flex.l\"\n          TOKEN(OUTER)\n          YY_BREAK\n        case 157:\n          YY_RULE_SETUP\n#line 183 \"flex.l\"\n          TOKEN(NULL)\n          YY_BREAK\n        case 158:\n          YY_RULE_SETUP\n#line 184 \"flex.l\"\n          TOKEN(SMALLINT)\n          YY_BREAK\n        case 159:\n          YY_RULE_SETUP\n#line 185 \"flex.l\"\n          TOKEN(EXCLUSIVE)\n          YY_BREAK\n        case 160:\n          YY_RULE_SETUP\n#line 186 \"flex.l\"\n          TOKEN(TEMPORARY)\n          YY_BREAK\n        case 161:\n          YY_RULE_SETUP\n#line 187 \"flex.l\"\n          TOKEN(CONSTRAINT)\n          YY_BREAK\n        case 162:\n          YY_RULE_SETUP\n#line 188 \"flex.l\"\n          TOKEN(CREATE)\n          YY_BREAK\n        case 163:\n          YY_RULE_SETUP\n#line 189 \"flex.l\"\n          TOKEN(OP_LBRACKET)\n          YY_BREAK\n        case 164:\n          YY_RULE_SETUP\n#line 190 \"flex.l\"\n          TOKEN(WHEN)\n          YY_BREAK\n        case 165:\n          YY_RULE_SETUP\n#line 191 \"flex.l\"\n          TOKEN(IMMEDIATE)\n          YY_BREAK\n        case 166:\n          YY_RULE_SETUP\n#line 192 \"flex.l\"\n          TOKEN(TO)\n          YY_BREAK\n        case 167:\n          YY_RULE_SETUP\n#line 193 \"flex.l\"\n          TOKEN(BTREE)\n          YY_BREAK\n        case 168:\n          YY_RULE_SETUP\n#line 194 \"flex.l\"\n          TOKEN(DAY)\n          YY_BREAK\n        case 169:\n          YY_RULE_SETUP\n#line 195 \"flex.l\"\n          TOKEN(CONFLICT)\n          YY_BREAK\n        case 170:\n          YY_RULE_SETUP\n#line 196 \"flex.l\"\n          TOKEN(ROW_FORMAT)\n          YY_BREAK\n        case 171:\n          YY_RULE_SETUP\n#line 197 \"flex.l\"\n          TOKEN(OP_RBRACKET)\n          YY_BREAK\n        case 172:\n          YY_RULE_SETUP\n#line 198 \"flex.l\"\n          TOKEN(EXISTS)\n          YY_BREAK\n        case 173:\n          YY_RULE_SETUP\n#line 199 \"flex.l\"\n          TOKEN(INSERT)\n          YY_BREAK\n        case 174:\n          YY_RULE_SETUP\n#line 200 \"flex.l\"\n          TOKEN(KEYS)\n          YY_BREAK\n        case 175:\n          YY_RULE_SETUP\n#line 201 \"flex.l\"\n          TOKEN(INTO)\n          YY_BREAK\n        case 176:\n          YY_RULE_SETUP\n#line 202 \"flex.l\"\n          TOKEN(OP_DIVIDE)\n          YY_BREAK\n        case 177:\n          YY_RULE_SETUP\n#line 203 \"flex.l\"\n          TOKEN(CASCADED)\n          YY_BREAK\n        case 178:\n          YY_RULE_SETUP\n#line 204 \"flex.l\"\n          TOKEN(ISNULL)\n          YY_BREAK\n        case 179:\n          YY_RULE_SETUP\n#line 205 \"flex.l\"\n          TOKEN(AS)\n          YY_BREAK\n        case 180:\n          YY_RULE_SETUP\n#line 206 \"flex.l\"\n          TOKEN(INNER)\n          YY_BREAK\n        case 181:\n          YY_RULE_SETUP\n#line 207 \"flex.l\"\n          TOKEN(INTERSECT)\n          YY_BREAK\n        case 182:\n          YY_RULE_SETUP\n#line 208 \"flex.l\"\n          TOKEN(IN)\n          YY_BREAK\n        case 183:\n          YY_RULE_SETUP\n#line 209 \"flex.l\"\n          TOKEN(OP_EQUAL)\n          YY_BREAK\n        case 184:\n          YY_RULE_SETUP\n#line 210 \"flex.l\"\n          TOKEN(VARCHAR)\n          YY_BREAK\n        case 185:\n          YY_RULE_SETUP\n#line 211 \"flex.l\"\n          TOKEN(COPY)\n          YY_BREAK\n        case 186:\n          YY_RULE_SETUP\n#line 212 \"flex.l\"\n          TOKEN(ALTER)\n          YY_BREAK\n        case 187:\n          YY_RULE_SETUP\n#line 213 \"flex.l\"\n          TOKEN(DESC)\n          YY_BREAK\n        case 188:\n          YY_RULE_SETUP\n#line 214 \"flex.l\"\n          TOKEN(FROM)\n          YY_BREAK\n        case 189:\n          YY_RULE_SETUP\n#line 215 \"flex.l\"\n          TOKEN(TINYTEXT)\n          YY_BREAK\n        case 190:\n          YY_RULE_SETUP\n#line 216 \"flex.l\"\n          TOKEN(FLOAT)\n          YY_BREAK\n        case 191:\n          YY_RULE_SETUP\n#line 217 \"flex.l\"\n          TOKEN(SECOND)\n          YY_BREAK\n        case 192:\n          YY_RULE_SETUP\n#line 218 \"flex.l\"\n          TOKEN(WINDOW)\n          YY_BREAK\n        case 193:\n          YY_RULE_SETUP\n#line 219 \"flex.l\"\n          TOKEN(NOTHING)\n          YY_BREAK\n        case 194:\n          YY_RULE_SETUP\n#line 220 \"flex.l\"\n          TOKEN(HAVING)\n          YY_BREAK\n        case 195:\n#line 222 \"flex.l\"\n        case 196:\n          YY_RULE_SETUP\n#line 222 \"flex.l\"\n          {\n            yylval->fval = atof(yytext);\n            return SQL_FLOATLITERAL;\n          }\n          YY_BREAK\n        case 197:\n          YY_RULE_SETUP\n#line 227 \"flex.l\"\n          {\n            yylval->ival = atol(yytext);\n            return SQL_INTLITERAL;\n          }\n          YY_BREAK\n        case 198:\n          YY_RULE_SETUP\n#line 232 \"flex.l\"\n          {\n            std::string s(yytext);\n            yylval->sval = strdup(s.substr(1, s.size() - 1).c_str());\n            return SQL_STRINGLITERAL;\n          }\n          YY_BREAK\n        case 199:\n          YY_RULE_SETUP\n#line 238 \"flex.l\"\n          {\n            yylval->sval = strdup(yytext);\n            return SQL_IDENTIFIER;\n          }\n          YY_BREAK\n        case 200:\n          YY_RULE_SETUP\n#line 243 \"flex.l\"\n          {\n            BEGIN singlequotedstring;\n            strbuf = std::stringstream{};\n            strbuf << '\\'';\n          }\n          YY_BREAK\n        case 201:\n          YY_RULE_SETUP\n#line 247 \"flex.l\"\n          {\n            strbuf << '\\'';\n          }\n          YY_BREAK\n        case 202:\n          /* rule 202 can match eol */\n          YY_RULE_SETUP\n#line 251 \"flex.l\"\n          {\n            strbuf << yytext;\n          }\n          YY_BREAK\n        case 203:\n          YY_RULE_SETUP\n#line 255 \"flex.l\"\n          {\n            BEGIN 0;\n            strbuf << '\\'';\n            yylval->sval = strdup(strbuf.str().c_str());\n            return SQL_STRINGLITERAL;\n          }\n          YY_BREAK\n        case YY_STATE_EOF(singlequotedstring):\n#line 262 \"flex.l\"\n        {\n          return 0;\n        }\n          YY_BREAK\n        case 204:\n          /* rule 204 can match eol */\n          YY_RULE_SETUP\n#line 266 \"flex.l\"\n          {\n          }\n          YY_BREAK\n        case 205:\n          YY_RULE_SETUP\n#line 269 \"flex.l\"\n          {\n            return 0;\n          }\n          YY_BREAK\n        case 206:\n          YY_RULE_SETUP\n#line 273 \"flex.l\"\n          ECHO;\n          YY_BREAK\n#line 2675 \"flex_lexer.cpp\"\n        case YY_STATE_EOF(INITIAL):\n        case YY_STATE_EOF(COMMENT):\n          yyterminate();\n\n        case YY_END_OF_BUFFER: {\n          /* Amount of text matched not including the EOB char. */\n          int yy_amount_of_matched_text = (int)(yy_cp - yyg->yytext_ptr) - 1;\n\n          /* Undo the effects of YY_DO_BEFORE_ACTION. */\n          *yy_cp = yyg->yy_hold_char;\n          YY_RESTORE_YY_MORE_OFFSET\n\n          if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) {\n            /* We're scanning a new file or input source.  It's\n             * possible that this happened because the user\n             * just pointed yyin at a new source and called\n             * yylex().  If so, then we have to assure\n             * consistency between YY_CURRENT_BUFFER and our\n             * globals.  Here is the right place to do so, because\n             * this is the first action (other than possibly a\n             * back-up) that will match for the new input source.\n             */\n            yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n            YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;\n            YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;\n          }\n\n          /* Note that here we test for yy_c_buf_p \"<=\" to the position\n           * of the first EOB in the buffer, since yy_c_buf_p will\n           * already have been incremented past the NUL character\n           * (since all states make transitions on EOB to the\n           * end-of-buffer state).  Contrast this with the test\n           * in input().\n           */\n          if (yyg->yy_c_buf_p <=\n              &YY_CURRENT_BUFFER_LVALUE\n                   ->yy_ch_buf[yyg->yy_n_chars]) { /* This was really a NUL. */\n            yy_state_type yy_next_state;\n\n            yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n            yy_current_state = yy_get_previous_state(yyscanner);\n\n            /* Okay, we're now positioned to make the NUL\n             * transition.  We couldn't have\n             * yy_get_previous_state() go ahead and do it\n             * for us because it doesn't know how to deal\n             * with the possibility of jamming (and we don't\n             * want to build jamming into it because then it\n             * will run more slowly).\n             */\n\n            yy_next_state = yy_try_NUL_trans(yy_current_state, yyscanner);\n\n            yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n\n            if (yy_next_state) {\n              /* Consume the NUL. */\n              yy_cp = ++yyg->yy_c_buf_p;\n              yy_current_state = yy_next_state;\n              goto yy_match;\n            }\n\n            else {\n              yy_cp = yyg->yy_last_accepting_cpos;\n              yy_current_state = yyg->yy_last_accepting_state;\n              goto yy_find_action;\n            }\n          }\n\n          else\n            switch (yy_get_next_buffer(yyscanner)) {\n              case EOB_ACT_END_OF_FILE: {\n                yyg->yy_did_buffer_switch_on_eof = 0;\n\n                if (yywrap(yyscanner)) {\n                  /* Note: because we've taken care in\n                   * yy_get_next_buffer() to have set up\n                   * yytext, we can now set up\n                   * yy_c_buf_p so that if some total\n                   * hoser (like flex itself) wants to\n                   * call the scanner after we return the\n                   * YY_NULL, it'll still work - another\n                   * YY_NULL will get returned.\n                   */\n                  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;\n\n                  yy_act = YY_STATE_EOF(YY_START);\n                  goto do_action;\n                }\n\n                else {\n                  if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n                }\n                break;\n              }\n\n              case EOB_ACT_CONTINUE_SCAN:\n                yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_match;\n\n              case EOB_ACT_LAST_MATCH:\n                yyg->yy_c_buf_p =\n                    &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_find_action;\n            }\n          break;\n        }\n\n        default:\n          YY_FATAL_ERROR(\"fatal flex scanner internal error--no action found\");\n      } /* end of action switch */\n    }   /* end of scanning one token */\n  }     /* end of user's declarations */\n} /* end of yylex */\n\n/* yy_get_next_buffer - try to read in a new buffer\n *\n * Returns a code representing an action:\n *\tEOB_ACT_LAST_MATCH -\n *\tEOB_ACT_CONTINUE_SCAN - continue scanning from current position\n *\tEOB_ACT_END_OF_FILE - end of file\n */\nstatic int yy_get_next_buffer(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;\n  char *source = yyg->yytext_ptr;\n  int number_to_move, i;\n  int ret_val;\n\n  if (yyg->yy_c_buf_p >\n      &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1])\n    YY_FATAL_ERROR(\"fatal flex scanner internal error--end of buffer missed\");\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer ==\n      0) { /* Don't try to fill the buffer, so this is an EOF. */\n    if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) {\n      /* We matched a single character, the EOB, so\n       * treat this as a final EOF.\n       */\n      return EOB_ACT_END_OF_FILE;\n    }\n\n    else {\n      /* We matched some text prior to the EOB, first\n       * process it.\n       */\n      return EOB_ACT_LAST_MATCH;\n    }\n  }\n\n  /* Try to read more data. */\n\n  /* First move last chars to start of buffer. */\n  number_to_move = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr - 1);\n\n  for (i = 0; i < number_to_move; ++i) *(dest++) = *(source++);\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING)\n    /* don't do the read, it's not guaranteed to return an EOF,\n     * just force an EOF\n     */\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;\n\n  else {\n    int num_to_read =\n        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n\n    while (num_to_read <= 0) { /* Not enough room in the buffer - grow it. */\n\n      /* just a shorter name for the current buffer */\n      YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;\n\n      int yy_c_buf_p_offset = (int)(yyg->yy_c_buf_p - b->yy_ch_buf);\n\n      if (b->yy_is_our_buffer) {\n        int new_size = b->yy_buf_size * 2;\n\n        if (new_size <= 0)\n          b->yy_buf_size += b->yy_buf_size / 8;\n        else\n          b->yy_buf_size *= 2;\n\n        b->yy_ch_buf = (char *)\n            /* Include room in for 2 EOB chars. */\n            yyrealloc((void *)b->yy_ch_buf, (yy_size_t)(b->yy_buf_size + 2),\n                      yyscanner);\n      } else\n        /* Can't grow it, we don't own it. */\n        b->yy_ch_buf = NULL;\n\n      if (!b->yy_ch_buf)\n        YY_FATAL_ERROR(\"fatal error - scanner input buffer overflow\");\n\n      yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];\n\n      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n    }\n\n    if (num_to_read > YY_READ_BUF_SIZE) num_to_read = YY_READ_BUF_SIZE;\n\n    /* Read in more data. */\n    YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),\n             yyg->yy_n_chars, num_to_read);\n\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  if (yyg->yy_n_chars == 0) {\n    if (number_to_move == YY_MORE_ADJ) {\n      ret_val = EOB_ACT_END_OF_FILE;\n      yyrestart(yyin, yyscanner);\n    }\n\n    else {\n      ret_val = EOB_ACT_LAST_MATCH;\n      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING;\n    }\n  }\n\n  else\n    ret_val = EOB_ACT_CONTINUE_SCAN;\n\n  if ((yyg->yy_n_chars + number_to_move) >\n      YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {\n    /* Extend the array by 50%, plus the number we really need. */\n    int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);\n    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf =\n        (char *)yyrealloc((void *)YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,\n                          (yy_size_t)new_size, yyscanner);\n    if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)\n      YY_FATAL_ERROR(\"out of dynamic memory in yy_get_next_buffer()\");\n    /* \"- 2\" to take care of EOB's */\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int)(new_size - 2);\n  }\n\n  yyg->yy_n_chars += number_to_move;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] =\n      YY_END_OF_BUFFER_CHAR;\n\n  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];\n\n  return ret_val;\n}\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner) {\n  yy_state_type yy_current_state;\n  char *yy_cp;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_current_state = yyg->yy_start;\n\n  for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p;\n       ++yy_cp) {\n    YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);\n    if (yy_accept[yy_current_state]) {\n      yyg->yy_last_accepting_state = yy_current_state;\n      yyg->yy_last_accepting_cpos = yy_cp;\n    }\n    while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n      yy_current_state = (int)yy_def[yy_current_state];\n      if (yy_current_state >= 765) yy_c = yy_meta[yy_c];\n    }\n    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  }\n\n  return yy_current_state;\n}\n\n/* yy_try_NUL_trans - try to make a transition on the NUL character\n *\n * synopsis\n *\tnext_state = yy_try_NUL_trans( current_state );\n */\nstatic yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state,\n                                      yyscan_t yyscanner) {\n  int yy_is_jam;\n  struct yyguts_t *yyg = (struct yyguts_t *)\n      yyscanner; /* This var may be unused depending upon options. */\n  char *yy_cp = yyg->yy_c_buf_p;\n\n  YY_CHAR yy_c = 1;\n  if (yy_accept[yy_current_state]) {\n    yyg->yy_last_accepting_state = yy_current_state;\n    yyg->yy_last_accepting_cpos = yy_cp;\n  }\n  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n    yy_current_state = (int)yy_def[yy_current_state];\n    if (yy_current_state >= 765) yy_c = yy_meta[yy_c];\n  }\n  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  yy_is_jam = (yy_current_state == 764);\n\n  (void)yyg;\n  return yy_is_jam ? 0 : yy_current_state;\n}\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner)\n#else\nstatic int input(yyscan_t yyscanner)\n#endif\n\n{\n  int c;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  *yyg->yy_c_buf_p = yyg->yy_hold_char;\n\n  if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) {\n    /* yy_c_buf_p now points to the character we want to return.\n     * If this occurs *before* the EOB characters, then it's a\n     * valid NUL; if not, then we've hit the end of the buffer.\n     */\n    if (yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars])\n      /* This was really a NUL. */\n      *yyg->yy_c_buf_p = '\\0';\n\n    else { /* need more input */\n      int offset = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr);\n      ++yyg->yy_c_buf_p;\n\n      switch (yy_get_next_buffer(yyscanner)) {\n        case EOB_ACT_LAST_MATCH:\n          /* This happens because yy_g_n_b()\n           * sees that we've accumulated a\n           * token and flags that we need to\n           * try matching the token before\n           * proceeding.  But for input(),\n           * there's no matching to consider.\n           * So convert the EOB_ACT_LAST_MATCH\n           * to EOB_ACT_END_OF_FILE.\n           */\n\n          /* Reset buffer status. */\n          yyrestart(yyin, yyscanner);\n\n          /*FALLTHROUGH*/\n\n        case EOB_ACT_END_OF_FILE: {\n          if (yywrap(yyscanner)) return 0;\n\n          if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n#ifdef __cplusplus\n          return yyinput(yyscanner);\n#else\n          return input(yyscanner);\n#endif\n        }\n\n        case EOB_ACT_CONTINUE_SCAN:\n          yyg->yy_c_buf_p = yyg->yytext_ptr + offset;\n          break;\n      }\n    }\n  }\n\n  c = *(unsigned char *)yyg->yy_c_buf_p; /* cast for 8-bit char's */\n  *yyg->yy_c_buf_p = '\\0';               /* preserve yytext */\n  yyg->yy_hold_char = *++yyg->yy_c_buf_p;\n\n  return c;\n}\n#endif /* ifndef YY_NO_INPUT */\n\n/** Immediately switch to a different input stream.\n * @param input_file A readable stream.\n * @param yyscanner The scanner object.\n * @note This function does not reset the start condition to @c INITIAL .\n */\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) {\n    yyensure_buffer_stack(yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n  }\n\n  yy_init_buffer(YY_CURRENT_BUFFER, input_file, yyscanner);\n  yy_load_buffer_state(yyscanner);\n}\n\n/** Switch to a different input buffer.\n * @param new_buffer The new input buffer.\n * @param yyscanner The scanner object.\n */\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* TODO. We should be able to replace this entire function body\n   * with\n   *\t\tyypop_buffer_state();\n   *\t\tyypush_buffer_state(new_buffer);\n   */\n  yyensure_buffer_stack(yyscanner);\n  if (YY_CURRENT_BUFFER == new_buffer) return;\n\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n  yy_load_buffer_state(yyscanner);\n\n  /* We don't actually know whether we did this switch during\n   * EOF (yywrap()) processing, but the only time this flag\n   * is looked at is after yywrap() is called, so it's safe\n   * to go ahead and always set it.\n   */\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\nstatic void yy_load_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;\n  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;\n  yyg->yy_hold_char = *yyg->yy_c_buf_p;\n}\n\n/** Allocate and initialize an input buffer state.\n * @param file A readable stream.\n * @param size The character buffer size in bytes. When in doubt, use @c\n * YY_BUF_SIZE.\n * @param yyscanner The scanner object.\n * @return the allocated buffer state.\n */\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_buf_size = size;\n\n  /* yy_ch_buf has to be 2 characters longer than the size given because\n   * we need to put in 2 end-of-buffer characters.\n   */\n  b->yy_ch_buf = (char *)yyalloc((yy_size_t)(b->yy_buf_size + 2), yyscanner);\n  if (!b->yy_ch_buf)\n    YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_is_our_buffer = 1;\n\n  yy_init_buffer(b, file, yyscanner);\n\n  return b;\n}\n\n/** Destroy the buffer.\n * @param b a buffer created with yy_create_buffer()\n * @param yyscanner The scanner object.\n */\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!b) return;\n\n  if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */\n    YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE)0;\n\n  if (b->yy_is_our_buffer) yyfree((void *)b->yy_ch_buf, yyscanner);\n\n  yyfree((void *)b, yyscanner);\n}\n\n/* Initializes or reinitializes a buffer.\n * This function is sometimes called more than once on the same buffer,\n * such as during a yyrestart() or at EOF.\n */\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner)\n\n{\n  int oerrno = errno;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_flush_buffer(b, yyscanner);\n\n  b->yy_input_file = file;\n  b->yy_fill_buffer = 1;\n\n  /* If b is the current buffer, then yy_init_buffer was _probably_\n   * called from yyrestart() or through yy_get_next_buffer.\n   * In that case, we don't want to reset the lineno or column.\n   */\n  if (b != YY_CURRENT_BUFFER) {\n    b->yy_bs_lineno = 1;\n    b->yy_bs_column = 0;\n  }\n\n  b->yy_is_interactive = 0;\n\n  errno = oerrno;\n}\n\n/** Discard all buffered characters. On the next scan, YY_INPUT will be called.\n * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.\n * @param yyscanner The scanner object.\n */\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!b) return;\n\n  b->yy_n_chars = 0;\n\n  /* We always need two end-of-buffer characters.  The first causes\n   * a transition to the end-of-buffer state.  The second causes\n   * a jam in that state.\n   */\n  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;\n  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;\n\n  b->yy_buf_pos = &b->yy_ch_buf[0];\n\n  b->yy_at_bol = 1;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  if (b == YY_CURRENT_BUFFER) yy_load_buffer_state(yyscanner);\n}\n\n/** Pushes the new state onto the stack. The new state becomes\n *  the current state. This function will allocate the stack\n *  if necessary.\n *  @param new_buffer The new state.\n *  @param yyscanner The scanner object.\n */\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (new_buffer == NULL) return;\n\n  yyensure_buffer_stack(yyscanner);\n\n  /* This block is copied from yy_switch_to_buffer. */\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  /* Only push if top exists. Otherwise, replace top. */\n  if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++;\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n\n  /* copied from yy_switch_to_buffer. */\n  yy_load_buffer_state(yyscanner);\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\n/** Removes and deletes the top of the stack, if present.\n *  The next element becomes the new top.\n *  @param yyscanner The scanner object.\n */\nvoid yypop_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!YY_CURRENT_BUFFER) return;\n\n  yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n  YY_CURRENT_BUFFER_LVALUE = NULL;\n  if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top;\n\n  if (YY_CURRENT_BUFFER) {\n    yy_load_buffer_state(yyscanner);\n    yyg->yy_did_buffer_switch_on_eof = 1;\n  }\n}\n\n/* Allocates the stack if it does not exist.\n *  Guarantees space for at least one push.\n */\nstatic void yyensure_buffer_stack(yyscan_t yyscanner) {\n  yy_size_t num_to_alloc;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!yyg->yy_buffer_stack) {\n    /* First allocation is just for 2 elements, since we don't know if this\n     * scanner will even need a stack. We use 2 instead of 1 to avoid an\n     * immediate realloc on the next call.\n     */\n    num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyalloc(\n        num_to_alloc * sizeof(struct yy_buffer_state *), yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    memset(yyg->yy_buffer_stack, 0,\n           num_to_alloc * sizeof(struct yy_buffer_state *));\n\n    yyg->yy_buffer_stack_max = num_to_alloc;\n    yyg->yy_buffer_stack_top = 0;\n    return;\n  }\n\n  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) {\n    /* Increase the buffer to prepare for a possible push. */\n    yy_size_t grow_size = 8 /* arbitrary grow size */;\n\n    num_to_alloc = yyg->yy_buffer_stack_max + grow_size;\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyrealloc(\n        yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state *),\n        yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    /* zero only the new slots.*/\n    memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0,\n           grow_size * sizeof(struct yy_buffer_state *));\n    yyg->yy_buffer_stack_max = num_to_alloc;\n  }\n}\n\n/** Setup the input buffer state to scan directly from a user-specified\n * character buffer.\n * @param base the character buffer\n * @param size the size in bytes of the character buffer\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  if (size < 2 || base[size - 2] != YY_END_OF_BUFFER_CHAR ||\n      base[size - 1] != YY_END_OF_BUFFER_CHAR)\n    /* They forgot to leave room for the EOB's. */\n    return NULL;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_buffer()\");\n\n  b->yy_buf_size = (int)(size - 2); /* \"- 2\" to take care of EOB's */\n  b->yy_buf_pos = b->yy_ch_buf = base;\n  b->yy_is_our_buffer = 0;\n  b->yy_input_file = NULL;\n  b->yy_n_chars = b->yy_buf_size;\n  b->yy_is_interactive = 0;\n  b->yy_at_bol = 1;\n  b->yy_fill_buffer = 0;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  yy_switch_to_buffer(b, yyscanner);\n\n  return b;\n}\n\n/** Setup the input buffer state to scan a string. The next call to yylex() will\n * scan from a @e copy of @a str.\n * @param yystr a NUL-terminated string to scan\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n * @note If you want to scan bytes that may contain NUL values, then use\n *       yy_scan_bytes() instead.\n */\nYY_BUFFER_STATE yy_scan_string(const char *yystr, yyscan_t yyscanner) {\n  return yy_scan_bytes(yystr, (int)strlen(yystr), yyscanner);\n}\n\n/** Setup the input buffer state to scan the given bytes. The next call to\n * yylex() will scan from a @e copy of @a bytes.\n * @param yybytes the byte buffer to scan\n * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_bytes(const char *yybytes, int _yybytes_len,\n                              yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n  char *buf;\n  yy_size_t n;\n  int i;\n\n  /* Get memory for full buffer, including space for trailing EOB's. */\n  n = (yy_size_t)(_yybytes_len + 2);\n  buf = (char *)yyalloc(n, yyscanner);\n  if (!buf) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_bytes()\");\n\n  for (i = 0; i < _yybytes_len; ++i) buf[i] = yybytes[i];\n\n  buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR;\n\n  b = yy_scan_buffer(buf, n, yyscanner);\n  if (!b) YY_FATAL_ERROR(\"bad buffer in yy_scan_bytes()\");\n\n  /* It's okay to grow etc. this buffer, and we should throw it\n   * away when we're done.\n   */\n  b->yy_is_our_buffer = 1;\n\n  return b;\n}\n\n#ifndef YY_EXIT_FAILURE\n#define YY_EXIT_FAILURE 2\n#endif\n\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  fprintf(stderr, \"%s\\n\", msg);\n  exit(YY_EXIT_FAILURE);\n}\n\n/* Redefine yyless() so it works in section 3 code. */\n\n#undef yyless\n#define yyless(n)                                \\\n  do {                                           \\\n    /* Undo effects of setting up yytext. */     \\\n    int yyless_macro_arg = (n);                  \\\n    YY_LESS_LINENO(yyless_macro_arg);            \\\n    yytext[yyleng] = yyg->yy_hold_char;          \\\n    yyg->yy_c_buf_p = yytext + yyless_macro_arg; \\\n    yyg->yy_hold_char = *yyg->yy_c_buf_p;        \\\n    *yyg->yy_c_buf_p = '\\0';                     \\\n    yyleng = yyless_macro_arg;                   \\\n  } while (0)\n\n/* Accessor  methods (get/set functions) to struct members. */\n\n/** Get the user-defined data for this scanner.\n * @param yyscanner The scanner object.\n */\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyextra;\n}\n\n/** Get the current line number.\n * @param yyscanner The scanner object.\n */\nint yyget_lineno(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yylineno;\n}\n\n/** Get the current column number.\n * @param yyscanner The scanner object.\n */\nint yyget_column(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yycolumn;\n}\n\n/** Get the input stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_in(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyin;\n}\n\n/** Get the output stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_out(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyout;\n}\n\n/** Get the length of the current token.\n * @param yyscanner The scanner object.\n */\nint yyget_leng(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyleng;\n}\n\n/** Get the current token.\n * @param yyscanner The scanner object.\n */\n\nchar *yyget_text(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yytext;\n}\n\n/** Set the user-defined data. This data is never touched by the scanner.\n * @param user_defined The data to be associated with this scanner.\n * @param yyscanner The scanner object.\n */\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyextra = user_defined;\n}\n\n/** Set the current line number.\n * @param _line_number line number\n * @param yyscanner The scanner object.\n */\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* lineno is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_lineno called with no buffer\");\n\n  yylineno = _line_number;\n}\n\n/** Set the current column.\n * @param _column_no column number\n * @param yyscanner The scanner object.\n */\nvoid yyset_column(int _column_no, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* column is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_column called with no buffer\");\n\n  yycolumn = _column_no;\n}\n\n/** Set the input stream. This does not discard the current\n * input buffer.\n * @param _in_str A readable stream.\n * @param yyscanner The scanner object.\n * @see yy_switch_to_buffer\n */\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyin = _in_str;\n}\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyout = _out_str;\n}\n\nint yyget_debug(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yy_flex_debug;\n}\n\nvoid yyset_debug(int _bdebug, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yy_flex_debug = _bdebug;\n}\n\n/* Accessor methods for yylval and yylloc */\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylval;\n}\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylval = yylval_param;\n}\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylloc;\n}\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylloc = yylloc_param;\n}\n\n/* User-visible API */\n\n/* yylex_init is special because it creates the scanner itself, so it is\n * the ONLY reentrant function that doesn't take the scanner as the last\n * argument. That's why we explicitly handle the declaration, instead of using\n * our macros.\n */\nint yylex_init(yyscan_t *ptr_yy_globals) {\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), NULL);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for\n   * releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\n/* yylex_init_extra has the same functionality as yylex_init, but follows the\n * convention of taking the scanner as the last argument. Note however, that\n * this is a *pointer* to a scanner, as it will be allocated by this call (and\n * is the reason, too, why this function also must handle its own declaration).\n * The user defined value in the first argument will be available to yyalloc in\n * the yyextra field.\n */\nint yylex_init_extra(YY_EXTRA_TYPE yy_user_defined, yyscan_t *ptr_yy_globals) {\n  struct yyguts_t dummy_yyguts;\n\n  yyset_extra(yy_user_defined, &dummy_yyguts);\n\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), &dummy_yyguts);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in\n  yy_init_globals. Leave at 0x00 for releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  yyset_extra(yy_user_defined, *ptr_yy_globals);\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\nstatic int yy_init_globals(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  /* Initialization is the same as for the non-reentrant scanner.\n   * This function is called from yylex_destroy(), so don't allocate here.\n   */\n\n  yyg->yy_buffer_stack = NULL;\n  yyg->yy_buffer_stack_top = 0;\n  yyg->yy_buffer_stack_max = 0;\n  yyg->yy_c_buf_p = NULL;\n  yyg->yy_init = 0;\n  yyg->yy_start = 0;\n\n  yyg->yy_start_stack_ptr = 0;\n  yyg->yy_start_stack_depth = 0;\n  yyg->yy_start_stack = NULL;\n\n/* Defined in main.c */\n#ifdef YY_STDINIT\n  yyin = stdin;\n  yyout = stdout;\n#else\n  yyin = NULL;\n  yyout = NULL;\n#endif\n\n  /* For future reference: Set errno on error, since we are called by\n   * yylex_init()\n   */\n  return 0;\n}\n\n/* yylex_destroy is for both reentrant and non-reentrant scanners. */\nint yylex_destroy(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* Pop the buffer stack, destroying each element. */\n  while (YY_CURRENT_BUFFER) {\n    yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = NULL;\n    yypop_buffer_state(yyscanner);\n  }\n\n  /* Destroy the stack itself. */\n  yyfree(yyg->yy_buffer_stack, yyscanner);\n  yyg->yy_buffer_stack = NULL;\n\n  /* Destroy the start condition stack. */\n  yyfree(yyg->yy_start_stack, yyscanner);\n  yyg->yy_start_stack = NULL;\n\n  /* Reset the globals. This is important in a non-reentrant scanner so the next\n   * time yylex() is called, initialization will occur. */\n  yy_init_globals(yyscanner);\n\n  /* Destroy the main struct (reentrant only). */\n  yyfree(yyscanner, yyscanner);\n  yyscanner = NULL;\n  return 0;\n}\n\n/*\n * Internal utility routines.\n */\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *s1, const char *s2, int n,\n                            yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  int i;\n  for (i = 0; i < n; ++i) s1[i] = s2[i];\n}\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *s, yyscan_t yyscanner) {\n  int n;\n  for (n = 0; s[n]; ++n)\n    ;\n\n  return n;\n}\n#endif\n\nvoid *yyalloc(yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  return malloc(size);\n}\n\nvoid *yyrealloc(void *ptr, yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  /* The cast to (char *) in the following accommodates both\n   * implementations that use char* generic pointers, and those\n   * that use void* generic pointers.  It works with the latter\n   * because both ANSI C and C++ allow castless assignment from\n   * any pointer type to void*, and deal with argument conversions\n   * as though doing an assignment.\n   */\n  return realloc(ptr, size);\n}\n\nvoid yyfree(void *ptr, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  free((char *)ptr); /* see yyrealloc() for (char *) cast */\n}\n\n#define YYTABLES_NAME \"yytables\"\n\n#line 273 \"flex.l\"\n"
  },
  {
    "path": "srcs/internal/mysql/parser/flex_lexer.h",
    "content": "#ifndef ff_HEADER_H\n#define ff_HEADER_H 1\n#define ff_IN_HEADER 1\n\n#line 6 \"flex_lexer.h\"\n\n#line 8 \"flex_lexer.h\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define ff__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer ff__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define ff__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer ff__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define ff__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer ff__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define ff__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string ff__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define ff__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes ff__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define ff__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer ff__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define ff__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer ff__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define ff__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state ff__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define ff__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer ff__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define ff_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state ff_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define ff_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state ff_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define ff_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack ff_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define ff_lex_ALREADY_DEFINED\n#else\n#define yylex ff_lex\n#endif\n\n#ifdef yyrestart\n#define ff_restart_ALREADY_DEFINED\n#else\n#define yyrestart ff_restart\n#endif\n\n#ifdef yylex_init\n#define ff_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init ff_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define ff_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra ff_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define ff_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy ff_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define ff_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug ff_get_debug\n#endif\n\n#ifdef yyset_debug\n#define ff_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug ff_set_debug\n#endif\n\n#ifdef yyget_extra\n#define ff_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra ff_get_extra\n#endif\n\n#ifdef yyset_extra\n#define ff_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra ff_set_extra\n#endif\n\n#ifdef yyget_in\n#define ff_get_in_ALREADY_DEFINED\n#else\n#define yyget_in ff_get_in\n#endif\n\n#ifdef yyset_in\n#define ff_set_in_ALREADY_DEFINED\n#else\n#define yyset_in ff_set_in\n#endif\n\n#ifdef yyget_out\n#define ff_get_out_ALREADY_DEFINED\n#else\n#define yyget_out ff_get_out\n#endif\n\n#ifdef yyset_out\n#define ff_set_out_ALREADY_DEFINED\n#else\n#define yyset_out ff_set_out\n#endif\n\n#ifdef yyget_leng\n#define ff_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng ff_get_leng\n#endif\n\n#ifdef yyget_text\n#define ff_get_text_ALREADY_DEFINED\n#else\n#define yyget_text ff_get_text\n#endif\n\n#ifdef yyget_lineno\n#define ff_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno ff_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define ff_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno ff_set_lineno\n#endif\n\n#ifdef yyget_column\n#define ff_get_column_ALREADY_DEFINED\n#else\n#define yyget_column ff_get_column\n#endif\n\n#ifdef yyset_column\n#define ff_set_column_ALREADY_DEFINED\n#else\n#define yyset_column ff_set_column\n#endif\n\n#ifdef yywrap\n#define ff_wrap_ALREADY_DEFINED\n#else\n#define yywrap ff_wrap\n#endif\n\n#ifdef yyget_lval\n#define ff_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval ff_get_lval\n#endif\n\n#ifdef yyset_lval\n#define ff_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval ff_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define ff_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc ff_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define ff_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc ff_set_lloc\n#endif\n\n#ifdef yyalloc\n#define ff_alloc_ALREADY_DEFINED\n#else\n#define yyalloc ff_alloc\n#endif\n\n#ifdef yyrealloc\n#define ff_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc ff_realloc\n#endif\n\n#ifdef yyfree\n#define ff_free_ALREADY_DEFINED\n#else\n#define yyfree ff_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n/* Begin user sect3 */\n\n#define ff_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\n\n#define yytext_ptr yytext_r\n\n#ifdef YY_HEADER_EXPORT_START_CONDITIONS\n#define INITIAL 0\n#define COMMENT 1\n#define singlequotedstring 2\n\n#endif\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\n#undef YY_NEW_FILE\n#undef YY_FLUSH_BUFFER\n#undef yy_set_bol\n#undef yy_new_buffer\n#undef yy_set_interactive\n#undef YY_DO_BEFORE_ACTION\n\n#ifdef YY_DECL_IS_OURS\n#undef YY_DECL_IS_OURS\n#undef YY_DECL\n#endif\n\n#ifndef ff__create_buffer_ALREADY_DEFINED\n#undef yy_create_buffer\n#endif\n#ifndef ff__delete_buffer_ALREADY_DEFINED\n#undef yy_delete_buffer\n#endif\n#ifndef ff__scan_buffer_ALREADY_DEFINED\n#undef yy_scan_buffer\n#endif\n#ifndef ff__scan_string_ALREADY_DEFINED\n#undef yy_scan_string\n#endif\n#ifndef ff__scan_bytes_ALREADY_DEFINED\n#undef yy_scan_bytes\n#endif\n#ifndef ff__init_buffer_ALREADY_DEFINED\n#undef yy_init_buffer\n#endif\n#ifndef ff__flush_buffer_ALREADY_DEFINED\n#undef yy_flush_buffer\n#endif\n#ifndef ff__load_buffer_state_ALREADY_DEFINED\n#undef yy_load_buffer_state\n#endif\n#ifndef ff__switch_to_buffer_ALREADY_DEFINED\n#undef yy_switch_to_buffer\n#endif\n#ifndef ff_push_buffer_state_ALREADY_DEFINED\n#undef yypush_buffer_state\n#endif\n#ifndef ff_pop_buffer_state_ALREADY_DEFINED\n#undef yypop_buffer_state\n#endif\n#ifndef ff_ensure_buffer_stack_ALREADY_DEFINED\n#undef yyensure_buffer_stack\n#endif\n#ifndef ff_lex_ALREADY_DEFINED\n#undef yylex\n#endif\n#ifndef ff_restart_ALREADY_DEFINED\n#undef yyrestart\n#endif\n#ifndef ff_lex_init_ALREADY_DEFINED\n#undef yylex_init\n#endif\n#ifndef ff_lex_init_extra_ALREADY_DEFINED\n#undef yylex_init_extra\n#endif\n#ifndef ff_lex_destroy_ALREADY_DEFINED\n#undef yylex_destroy\n#endif\n#ifndef ff_get_debug_ALREADY_DEFINED\n#undef yyget_debug\n#endif\n#ifndef ff_set_debug_ALREADY_DEFINED\n#undef yyset_debug\n#endif\n#ifndef ff_get_extra_ALREADY_DEFINED\n#undef yyget_extra\n#endif\n#ifndef ff_set_extra_ALREADY_DEFINED\n#undef yyset_extra\n#endif\n#ifndef ff_get_in_ALREADY_DEFINED\n#undef yyget_in\n#endif\n#ifndef ff_set_in_ALREADY_DEFINED\n#undef yyset_in\n#endif\n#ifndef ff_get_out_ALREADY_DEFINED\n#undef yyget_out\n#endif\n#ifndef ff_set_out_ALREADY_DEFINED\n#undef yyset_out\n#endif\n#ifndef ff_get_leng_ALREADY_DEFINED\n#undef yyget_leng\n#endif\n#ifndef ff_get_text_ALREADY_DEFINED\n#undef yyget_text\n#endif\n#ifndef ff_get_lineno_ALREADY_DEFINED\n#undef yyget_lineno\n#endif\n#ifndef ff_set_lineno_ALREADY_DEFINED\n#undef yyset_lineno\n#endif\n#ifndef ff_get_column_ALREADY_DEFINED\n#undef yyget_column\n#endif\n#ifndef ff_set_column_ALREADY_DEFINED\n#undef yyset_column\n#endif\n#ifndef ff_wrap_ALREADY_DEFINED\n#undef yywrap\n#endif\n#ifndef ff_get_lval_ALREADY_DEFINED\n#undef yyget_lval\n#endif\n#ifndef ff_set_lval_ALREADY_DEFINED\n#undef yyset_lval\n#endif\n#ifndef ff_get_lloc_ALREADY_DEFINED\n#undef yyget_lloc\n#endif\n#ifndef ff_set_lloc_ALREADY_DEFINED\n#undef yyset_lloc\n#endif\n#ifndef ff_alloc_ALREADY_DEFINED\n#undef yyalloc\n#endif\n#ifndef ff_realloc_ALREADY_DEFINED\n#undef yyrealloc\n#endif\n#ifndef ff_free_ALREADY_DEFINED\n#undef yyfree\n#endif\n#ifndef ff_text_ALREADY_DEFINED\n#undef yytext\n#endif\n#ifndef ff_leng_ALREADY_DEFINED\n#undef yyleng\n#endif\n#ifndef ff_in_ALREADY_DEFINED\n#undef yyin\n#endif\n#ifndef ff_out_ALREADY_DEFINED\n#undef yyout\n#endif\n#ifndef ff__flex_debug_ALREADY_DEFINED\n#undef yy_flex_debug\n#endif\n#ifndef ff_lineno_ALREADY_DEFINED\n#undef yylineno\n#endif\n#ifndef ff_tables_fload_ALREADY_DEFINED\n#undef yytables_fload\n#endif\n#ifndef ff_tables_destroy_ALREADY_DEFINED\n#undef yytables_destroy\n#endif\n#ifndef ff_TABLES_NAME_ALREADY_DEFINED\n#undef yyTABLES_NAME\n#endif\n\n#line 273 \"flex.l\"\n\n#line 737 \"flex_lexer.h\"\n#undef ff_IN_HEADER\n#endif /* ff_HEADER_H */\n"
  },
  {
    "path": "srcs/internal/mysql/parser/parser_typedef.h",
    "content": "#ifndef __PARSER_TYPEDEF_H__\n#define __PARSER_TYPEDEF_H__\n\n#include <vector>\n\n#ifndef YYtypeDEF_YY_SCANNER_T\n#define YYtypeDEF_YY_SCANNER_T\ntypedef void* yyscan_t;\n#endif\n\n#define YYSTYPE FF_STYPE\n#define YYLTYPE FF_LTYPE\n\nstruct FF_CUST_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n\n  int total_column;\n\n  // Length of the string in the SQL query string\n  int string_length;\n\n  // Parameters.\n  // int param_id;\n  std::vector<void*> param_list;\n};\n\n#define FF_LTYPE FF_CUST_LTYPE\n#define FF_LTYPE_IS_DECLARED 1\n\n#define YY_USER_ACTION                        \\\n  yylloc->first_line = yylloc->last_line;     \\\n  yylloc->first_column = yylloc->last_column; \\\n  for (int i = 0; yytext[i] != '\\0'; i++) {   \\\n    yylloc->total_column++;                   \\\n    yylloc->string_length++;                  \\\n    if (yytext[i] == '\\n') {                  \\\n      yylloc->last_line++;                    \\\n      yylloc->last_column = 0;                \\\n    } else {                                  \\\n      yylloc->last_column++;                  \\\n    }                                         \\\n  }\n\n#endif"
  },
  {
    "path": "srcs/internal/mysql/srcs/ast.cpp",
    "content": "#include \"../include/ast.h\"\n\n#include <cassert>\n\n#include \"../include/define.h\"\n#include \"../include/utils.h\"\n\nstatic string s_table_name;\n\nNode *generate_ast_node_by_type(IRTYPE type) {\n#define DECLARE_CASE(classname) \\\n  if (type == k##classname) return new classname();\n\n  ALLCLASS(DECLARE_CASE);\n#undef DECLARE_CASE\n  return NULL;\n}\n\nNODETYPE get_nodetype_by_string(string s) {\n#define DECLARE_CASE(datatypename) \\\n  if (s == #datatypename) return k##datatypename;\n\n  ALLCLASS(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return kUnknown;\n}\n\nstring get_string_by_nodetype(NODETYPE tt) {\n#define DECLARE_CASE(datatypename) \\\n  if (tt == k##datatypename) return string(#datatypename);\n\n  ALLCLASS(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return string(\"\");\n}\n\nstring get_string_by_datatype(DATATYPE tt) {\n#define DECLARE_CASE(datatypename) \\\n  if (tt == k##datatypename) return string(#datatypename);\n\n  ALLDATATYPE(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return string(\"\");\n}\n\nDATATYPE get_datatype_by_string(string s) {\n#define DECLARE_CASE(datatypename) \\\n  if (s == #datatypename) return k##datatypename;\n\n  ALLDATATYPE(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return kDataWhatever;\n}\n\nvoid deep_delete(IR *root) {\n  if (root->left_) deep_delete(root->left_);\n  if (root->right_) deep_delete(root->right_);\n\n  if (root->op_) delete root->op_;\n\n  delete root;\n}\n\nIR *deep_copy(const IR *root) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_)\n    left = deep_copy(root->left_);  // do you have a second version for\n                                    // deep_copy that accept only one argument?\n  if (root->right_)\n    right = deep_copy(root->right_);  // no I forget to update here\n\n  copy_res = new IR(root, left, right);\n\n  return copy_res;\n}\n\nstring IR::to_string() {\n  auto res = to_string_core();\n  trim_string(res);\n  return res;\n}\n\nstring IR::to_string_core() {\n  // cout << get_string_by_nodetype(this->type_) << endl;\n  switch (type_) {\n    case kIntLiteral:\n      return std::to_string(int_val_);\n    case kFloatLiteral:\n      return std::to_string(float_val_);\n    case kIdentifier:\n      return str_val_;\n    case kStringLiteral:\n      return str_val_;\n  }\n\n  string res;\n\n  if (op_ != NULL) {\n    // if(op_->prefix_ == NULL)\n    /// cout << \"duck NULL prefix\" << endl;\n    // cout << \"OP_Prex: \" << op_->prefix_ << endl;\n    res += op_->prefix_ + \" \";\n  }\n  // cout << \"OP_1_\" << op_ << endl;\n  if (left_ != NULL)\n    // res += left_->to_string() + \" \";\n    res += left_->to_string_core() + \" \";\n  // cout << \"OP_2_\" << op_ << endl;\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  // cout << \"OP_3_\" << op_ << endl;\n  if (right_ != NULL)\n    // res += right_->to_string() + \" \";\n    res += right_->to_string_core() + \" \";\n  // cout << \"OP_4_\" << op_ << endl;\n  if (op_ != NULL) res += op_->suffix_;\n\n  // cout << \"duck\" << endl;\n  // cout << \"RETURN\" << endl;\n  return res;\n}\n\nIR *Node::translate(vector<IR *> &v_ir_collector) { return NULL; }\nIR *Program::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(stmtlist_);\n  res = new IR(kProgram, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid Program::deep_delete() {\n  SAFEDELETE(stmtlist_);\n  delete this;\n};\n\nvoid Program::generate() {\n  GENERATESTART(1)\n\n  stmtlist_ = new Stmtlist();\n  stmtlist_->generate();\n\n  GENERATEEND\n}\n\nIR *Stmtlist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(stmt_);\n  auto tmp2 = SAFETRANSLATE(stmtlist_);\n  res = new IR(kStmtlist, OP3(\"\", \";\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(stmt_);\n  res = new IR(kStmtlist, OP3(\"\", \";\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Stmtlist::deep_delete() {\n  SAFEDELETE(stmt_);\n  SAFEDELETE(stmtlist_);\n  delete this;\n};\n\nvoid Stmtlist::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  stmt_ = new Stmt();\n  stmt_->generate();\n  stmtlist_ = new Stmtlist();\n  stmtlist_->generate();\n  CASEEND\n  CASESTART(1)\n  stmt_ = new Stmt();\n  stmt_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      stmt_ = new Stmt();\n      stmt_->generate();\n      case_idx_ = 1;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *Stmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(create_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(drop_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(select_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(update_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(insert_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(alter_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Stmt::deep_delete() {\n  SAFEDELETE(insert_stmt_);\n  SAFEDELETE(drop_stmt_);\n  SAFEDELETE(create_stmt_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(alter_stmt_);\n  SAFEDELETE(update_stmt_);\n  delete this;\n};\n\nvoid Stmt::generate() {\n  GENERATESTART(6)\n\n  SWITCHSTART\n  CASESTART(0)\n  create_stmt_ = new CreateStmt();\n  create_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  drop_stmt_ = new DropStmt();\n  drop_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  CASEEND\n  CASESTART(3)\n  update_stmt_ = new UpdateStmt();\n  update_stmt_->generate();\n  CASEEND\n  CASESTART(4)\n  insert_stmt_ = new InsertStmt();\n  insert_stmt_->generate();\n  CASEEND\n  CASESTART(5)\n  alter_stmt_ = new AlterStmt();\n  alter_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CreateStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(create_table_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(create_index_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(create_trigger_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(create_view_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateStmt::deep_delete() {\n  SAFEDELETE(create_trigger_stmt_);\n  SAFEDELETE(create_index_stmt_);\n  SAFEDELETE(create_view_stmt_);\n  SAFEDELETE(create_table_stmt_);\n  delete this;\n};\n\nvoid CreateStmt::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  create_table_stmt_ = new CreateTableStmt();\n  create_table_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  create_index_stmt_ = new CreateIndexStmt();\n  create_index_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  create_trigger_stmt_ = new CreateTriggerStmt();\n  create_trigger_stmt_->generate();\n  CASEEND\n  CASESTART(3)\n  create_view_stmt_ = new CreateViewStmt();\n  create_view_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *DropStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(drop_index_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(drop_table_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(drop_trigger_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(drop_view_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid DropStmt::deep_delete() {\n  SAFEDELETE(drop_table_stmt_);\n  SAFEDELETE(drop_view_stmt_);\n  SAFEDELETE(drop_index_stmt_);\n  SAFEDELETE(drop_trigger_stmt_);\n  delete this;\n};\n\nvoid DropStmt::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  drop_index_stmt_ = new DropIndexStmt();\n  drop_index_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  drop_table_stmt_ = new DropTableStmt();\n  drop_table_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  drop_trigger_stmt_ = new DropTriggerStmt();\n  drop_trigger_stmt_->generate();\n  CASEEND\n  CASESTART(3)\n  drop_view_stmt_ = new DropViewStmt();\n  drop_view_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *AlterStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(alter_action_);\n  res = new IR(kAlterStmt, OP3(\"ALTER TABLE\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid AlterStmt::deep_delete() {\n  SAFEDELETE(alter_action_);\n  SAFEDELETE(table_name_);\n  delete this;\n};\n\nvoid AlterStmt::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  alter_action_ = new AlterAction();\n  alter_action_->generate();\n\n  GENERATEEND\n}\n\nIR *SelectStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kSelectStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_with_parens_);\n  res = new IR(kSelectStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectStmt::deep_delete() {\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(select_with_parens_);\n  delete this;\n};\n\nvoid SelectStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  select_with_parens_ = new SelectWithParens();\n  select_with_parens_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SelectWithParens::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kSelectWithParens, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_with_parens_);\n  res = new IR(kSelectWithParens, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectWithParens::deep_delete() {\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(select_with_parens_);\n  delete this;\n};\n\nvoid SelectWithParens::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  select_with_parens_ = new SelectWithParens();\n  select_with_parens_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      select_no_parens_ = new SelectNoParens();\n      select_no_parens_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SelectNoParens::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(select_clause_list_);\n  auto tmp3 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_limit_clause_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kSelectNoParens, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid SelectNoParens::deep_delete() {\n  SAFEDELETE(select_clause_list_);\n  SAFEDELETE(opt_with_clause_);\n  SAFEDELETE(opt_order_clause_);\n  SAFEDELETE(opt_limit_clause_);\n  delete this;\n};\n\nvoid SelectNoParens::generate() {\n  GENERATESTART(1)\n\n  opt_with_clause_ = new OptWithClause();\n  opt_with_clause_->generate();\n  select_clause_list_ = new SelectClauseList();\n  select_clause_list_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_limit_clause_ = new OptLimitClause();\n  opt_limit_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *SelectClauseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_clause_);\n  res = new IR(kSelectClauseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_clause_);\n  auto tmp2 = SAFETRANSLATE(combine_clause_);\n  auto tmp3 = SAFETRANSLATE(select_clause_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kSelectClauseList, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectClauseList::deep_delete() {\n  SAFEDELETE(select_clause_list_);\n  SAFEDELETE(combine_clause_);\n  SAFEDELETE(select_clause_);\n  delete this;\n};\n\nvoid SelectClauseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_clause_ = new SelectClause();\n  select_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  select_clause_ = new SelectClause();\n  select_clause_->generate();\n  combine_clause_ = new CombineClause();\n  combine_clause_->generate();\n  select_clause_list_ = new SelectClauseList();\n  select_clause_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      select_clause_ = new SelectClause();\n      select_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SelectClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_all_or_distinct_);\n  auto tmp2 = SAFETRANSLATE(select_target_);\n  auto tmp3 = SAFETRANSLATE(opt_from_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_group_clause_);\n  auto tmp6 = SAFETRANSLATE(opt_window_clause_);\n  auto tmp7 = new IR(kUnknown, OP3(\"SELECT\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kSelectClause, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n\n  TRANSLATEEND\n}\n\nvoid SelectClause::deep_delete() {\n  SAFEDELETE(opt_group_clause_);\n  SAFEDELETE(opt_all_or_distinct_);\n  SAFEDELETE(opt_from_clause_);\n  SAFEDELETE(opt_window_clause_);\n  SAFEDELETE(select_target_);\n  SAFEDELETE(opt_where_clause_);\n  delete this;\n};\n\nvoid SelectClause::generate() {\n  GENERATESTART(1)\n\n  opt_all_or_distinct_ = new OptAllOrDistinct();\n  opt_all_or_distinct_->generate();\n  select_target_ = new SelectTarget();\n  select_target_->generate();\n  opt_from_clause_ = new OptFromClause();\n  opt_from_clause_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n  opt_group_clause_ = new OptGroupClause();\n  opt_group_clause_->generate();\n  opt_window_clause_ = new OptWindowClause();\n  opt_window_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *CombineClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kCombineClause, OP3(\"UNION\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kCombineClause, OP3(\"INTERSECT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kCombineClause, OP3(\"EXCEPT\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CombineClause::deep_delete() { delete this; };\n\nvoid CombineClause::generate(){GENERATESTART(3)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                       CASEEND CASESTART(2) CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *OptFromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(from_clause_);\n  res = new IR(kOptFromClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFromClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFromClause::deep_delete() {\n  SAFEDELETE(from_clause_);\n  delete this;\n};\n\nvoid OptFromClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  from_clause_ = new FromClause();\n  from_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SelectTarget::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kSelectTarget, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid SelectTarget::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid SelectTarget::generate() {\n  GENERATESTART(1)\n\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptWindowClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(window_clause_);\n  res = new IR(kOptWindowClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWindowClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWindowClause::deep_delete() {\n  SAFEDELETE(window_clause_);\n  delete this;\n};\n\nvoid OptWindowClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  window_clause_ = new WindowClause();\n  window_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *WindowClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(window_def_list_);\n  res = new IR(kWindowClause, OP3(\"WINDOW\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WindowClause::deep_delete() {\n  SAFEDELETE(window_def_list_);\n  delete this;\n};\n\nvoid WindowClause::generate() {\n  GENERATESTART(1)\n\n  window_def_list_ = new WindowDefList();\n  window_def_list_->generate();\n\n  GENERATEEND\n}\n\nIR *WindowDefList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(window_def_);\n  res = new IR(kWindowDefList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(window_def_);\n  auto tmp2 = SAFETRANSLATE(window_def_list_);\n  res = new IR(kWindowDefList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid WindowDefList::deep_delete() {\n  SAFEDELETE(window_def_);\n  SAFEDELETE(window_def_list_);\n  delete this;\n};\n\nvoid WindowDefList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  window_def_ = new WindowDef();\n  window_def_->generate();\n  CASEEND\n  CASESTART(1)\n  window_def_ = new WindowDef();\n  window_def_->generate();\n  window_def_list_ = new WindowDefList();\n  window_def_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      window_def_ = new WindowDef();\n      window_def_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *WindowDef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(window_name_);\n  auto tmp2 = SAFETRANSLATE(window_);\n  res = new IR(kWindowDef, OP3(\"\", \"AS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid WindowDef::deep_delete() {\n  SAFEDELETE(window_);\n  SAFEDELETE(window_name_);\n  delete this;\n};\n\nvoid WindowDef::generate() {\n  GENERATESTART(1)\n\n  window_name_ = new WindowName();\n  window_name_->generate();\n  window_ = new Window();\n  window_->generate();\n\n  GENERATEEND\n}\n\nIR *WindowName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kWindowName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WindowName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid WindowName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *Window::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_exist_window_name_);\n  auto tmp2 = SAFETRANSLATE(opt_partition_);\n  auto tmp3 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_frame_clause_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kWindow, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid Window::deep_delete() {\n  SAFEDELETE(opt_exist_window_name_);\n  SAFEDELETE(opt_frame_clause_);\n  SAFEDELETE(opt_partition_);\n  SAFEDELETE(opt_order_clause_);\n  delete this;\n};\n\nvoid Window::generate() {\n  GENERATESTART(1)\n\n  opt_exist_window_name_ = new OptExistWindowName();\n  opt_exist_window_name_->generate();\n  opt_partition_ = new OptPartition();\n  opt_partition_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_frame_clause_ = new OptFrameClause();\n  opt_frame_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *OptPartition::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kOptPartition, OP3(\"PARTITION BY\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptPartition, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptPartition::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid OptPartition::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptFrameClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(range_or_rows_);\n  auto tmp2 = SAFETRANSLATE(frame_bound_start_);\n  res = new IR(kOptFrameClause, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(range_or_rows_);\n  auto tmp2 = SAFETRANSLATE(frame_bound_start_);\n  auto tmp3 = SAFETRANSLATE(frame_bound_end_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOptFrameClause, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptFrameClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFrameClause::deep_delete() {\n  SAFEDELETE(frame_bound_start_);\n  SAFEDELETE(range_or_rows_);\n  SAFEDELETE(frame_bound_end_);\n  delete this;\n};\n\nvoid OptFrameClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  range_or_rows_ = new RangeOrRows();\n  range_or_rows_->generate();\n  frame_bound_start_ = new FrameBoundStart();\n  frame_bound_start_->generate();\n  CASEEND\n  CASESTART(1)\n  range_or_rows_ = new RangeOrRows();\n  range_or_rows_->generate();\n  frame_bound_start_ = new FrameBoundStart();\n  frame_bound_start_->generate();\n  frame_bound_end_ = new FrameBoundEnd();\n  frame_bound_end_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *RangeOrRows::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kRangeOrRows, OP3(\"RANGE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kRangeOrRows, OP3(\"ROWS\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kRangeOrRows, OP3(\"GROUPS\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid RangeOrRows::deep_delete() { delete this; };\n\nvoid RangeOrRows::generate(){GENERATESTART(3)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND CASESTART(2) CASEEND SWITCHEND\n\n                                         GENERATEEND}\n\nIR *FrameBoundStart::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundStart, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundStart, OP3(\"UNBOUNDED PRECEDING\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBoundStart::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n};\n\nvoid FrameBoundStart::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  frame_bound_ = new FrameBound();\n  frame_bound_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *FrameBoundEnd::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundEnd, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundEnd, OP3(\"UNBOUNDED FOLLOWING\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBoundEnd::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n};\n\nvoid FrameBoundEnd::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  frame_bound_ = new FrameBound();\n  frame_bound_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *FrameBound::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OP3(\"\", \"PRECEDING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OP3(\"\", \"FOLLOWING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kFrameBound, OP3(\"CURRENT ROW\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBound::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid FrameBound::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptExistWindowName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kOptExistWindowName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptExistWindowName, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptExistWindowName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid OptExistWindowName::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  identifier_ = new Identifier();\n  identifier_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptGroupClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  auto tmp2 = SAFETRANSLATE(opt_having_clause_);\n  res = new IR(kOptGroupClause, OP3(\"GROUP BY\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptGroupClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptGroupClause::deep_delete() {\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_having_clause_);\n  delete this;\n};\n\nvoid OptGroupClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  opt_having_clause_ = new OptHavingClause();\n  opt_having_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptHavingClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptHavingClause, OP3(\"HAVING\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptHavingClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptHavingClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptHavingClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptWhereClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(where_clause_);\n  res = new IR(kOptWhereClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWhereClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWhereClause::deep_delete() {\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptWhereClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *WhereClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kWhereClause, OP3(\"WHERE\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WhereClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid WhereClause::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n\n  GENERATEEND\n}\n\nIR *FromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_ref_);\n  res = new IR(kFromClause, OP3(\"FROM\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid FromClause::deep_delete() {\n  SAFEDELETE(table_ref_);\n  delete this;\n};\n\nvoid FromClause::generate() {\n  GENERATESTART(1)\n\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n\n  GENERATEEND\n}\n\nIR *TableRef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp3 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp4 = SAFETRANSLATE(opt_index_);\n  auto tmp5 = SAFETRANSLATE(opt_on_);\n  auto tmp6 = SAFETRANSLATE(opt_using_);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(function_name_);\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  auto tmp4 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp5 = SAFETRANSLATE(opt_on_);\n  auto tmp6 = SAFETRANSLATE(opt_using_);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"(\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \")\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  auto tmp3 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp4 = SAFETRANSLATE(opt_on_);\n  auto tmp5 = SAFETRANSLATE(opt_using_);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_ref_);\n  auto tmp3 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp4 = SAFETRANSLATE(opt_on_);\n  auto tmp5 = SAFETRANSLATE(opt_using_);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableRef::deep_delete() {\n  SAFEDELETE(opt_as_alias_);\n  SAFEDELETE(opt_table_prefix_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_index_);\n  SAFEDELETE(opt_on_);\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(opt_using_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(table_ref_);\n  SAFEDELETE(function_name_);\n  delete this;\n};\n\nvoid TableRef::generate() {\n  GENERATESTART(400)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  opt_index_ = new OptIndex();\n  opt_index_->generate();\n  opt_on_ = new OptOn();\n  opt_on_->generate();\n  opt_using_ = new OptUsing();\n  opt_using_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  function_name_ = new FunctionName();\n  function_name_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  opt_on_ = new OptOn();\n  opt_on_->generate();\n  opt_using_ = new OptUsing();\n  opt_using_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  opt_on_ = new OptOn();\n  opt_on_->generate();\n  opt_using_ = new OptUsing();\n  opt_using_->generate();\n  CASEEND\n  CASESTART(3)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  opt_on_ = new OptOn();\n  opt_on_->generate();\n  opt_using_ = new OptUsing();\n  opt_using_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 3;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      opt_table_prefix_ = new OptTablePrefix();\n      opt_table_prefix_->generate();\n      table_name_ = new TableName();\n      table_name_->generate();\n      opt_as_alias_ = new OptAsAlias();\n      opt_as_alias_->generate();\n      opt_index_ = new OptIndex();\n      opt_index_->generate();\n      opt_on_ = new OptOn();\n      opt_on_->generate();\n      opt_using_ = new OptUsing();\n      opt_using_->generate();\n      case_idx_ = 0;\n      CASEEND\n      CASESTART(1)\n      opt_table_prefix_ = new OptTablePrefix();\n      opt_table_prefix_->generate();\n      function_name_ = new FunctionName();\n      function_name_->generate();\n      expr_list_ = new ExprList();\n      expr_list_->generate();\n      opt_as_alias_ = new OptAsAlias();\n      opt_as_alias_->generate();\n      opt_on_ = new OptOn();\n      opt_on_->generate();\n      opt_using_ = new OptUsing();\n      opt_using_->generate();\n      case_idx_ = 1;\n      CASEEND\n      CASESTART(2)\n      opt_table_prefix_ = new OptTablePrefix();\n      opt_table_prefix_->generate();\n      select_no_parens_ = new SelectNoParens();\n      select_no_parens_->generate();\n      opt_as_alias_ = new OptAsAlias();\n      opt_as_alias_->generate();\n      opt_on_ = new OptOn();\n      opt_on_->generate();\n      opt_using_ = new OptUsing();\n      opt_using_->generate();\n      case_idx_ = 2;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptIndex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  res = new IR(kOptIndex, OP3(\"INDEXED BY\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIndex, OP3(\"NOT INDEXED\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptIndex, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIndex::deep_delete() {\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid OptIndex::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptOn, OP3(\"ON\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOn, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOn::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptOn::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptUsing::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kOptUsing, OP3(\"USING (\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptUsing, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptUsing::deep_delete() {\n  SAFEDELETE(column_name_list_);\n  delete this;\n};\n\nvoid OptUsing::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnNameList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  res = new IR(kColumnNameList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  auto tmp2 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kColumnNameList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnNameList::deep_delete() {\n  SAFEDELETE(column_name_list_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid ColumnNameList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  CASEEND\n  CASESTART(1)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_name_ = new ColumnName();\n      column_name_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptTablePrefix::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_ref_);\n  auto tmp2 = SAFETRANSLATE(join_op_);\n  res = new IR(kOptTablePrefix, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTablePrefix, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTablePrefix::deep_delete() {\n  SAFEDELETE(join_op_);\n  SAFEDELETE(table_ref_);\n  delete this;\n};\n\nvoid OptTablePrefix::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n  join_op_ = new JoinOp();\n  join_op_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *JoinOp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kJoinOp, OP3(\",\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kJoinOp, OP3(\"JOIN\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_join_type_);\n  res = new IR(kJoinOp, OP3(\"NATURAL\", \"JOIN\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid JoinOp::deep_delete() {\n  SAFEDELETE(opt_join_type_);\n  delete this;\n};\n\nvoid JoinOp::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  opt_join_type_ = new OptJoinType();\n  opt_join_type_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptJoinType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptJoinType, OP3(\"LEFT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptJoinType, OP3(\"LEFT OUTER\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptJoinType, OP3(\"INNER\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptJoinType, OP3(\"CROSS\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kOptJoinType, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptJoinType::deep_delete() { delete this; };\n\nvoid OptJoinType::generate(){GENERATESTART(5)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                         CASEEND CASESTART(4)\n\n                                             CASEEND SWITCHEND\n\n                                                 GENERATEEND}\n\nIR *ExprList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \",\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kExprList, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_as_alias_);\n  res = new IR(kExprList, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ExprList::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_as_alias_);\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid ExprList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_ = new Expr();\n  expr_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      expr_ = new Expr();\n      expr_->generate();\n      opt_as_alias_ = new OptAsAlias();\n      opt_as_alias_->generate();\n      case_idx_ = 1;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptLimitClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(limit_clause_);\n  res = new IR(kOptLimitClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptLimitClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptLimitClause::deep_delete() {\n  SAFEDELETE(limit_clause_);\n  delete this;\n};\n\nvoid OptLimitClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  limit_clause_ = new LimitClause();\n  limit_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *LimitClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \"OFFSET\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid LimitClause::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid LimitClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(2)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptLimitRowCount::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptLimitRowCount, OP3(\"LIMIT\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptLimitRowCount, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptLimitRowCount::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptLimitRowCount::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOrderClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(order_item_list_);\n  res = new IR(kOptOrderClause, OP3(\"ORDER BY\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderClause::deep_delete() {\n  SAFEDELETE(order_item_list_);\n  delete this;\n};\n\nvoid OptOrderClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  order_item_list_ = new OrderItemList();\n  order_item_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOrderNulls::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOrderNulls, OP3(\"NULLS FIRST\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderNulls, OP3(\"NULLS LAST\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOrderNulls, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderNulls::deep_delete() { delete this; };\n\nvoid OptOrderNulls::generate(){GENERATESTART(3)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                       CASEEND CASESTART(2)\n\n                                           CASEEND SWITCHEND\n\n                                               GENERATEEND}\n\nIR *OrderItemList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(order_item_);\n  res = new IR(kOrderItemList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(order_item_);\n  auto tmp2 = SAFETRANSLATE(order_item_list_);\n  res = new IR(kOrderItemList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OrderItemList::deep_delete() {\n  SAFEDELETE(order_item_);\n  SAFEDELETE(order_item_list_);\n  delete this;\n};\n\nvoid OrderItemList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  order_item_ = new OrderItem();\n  order_item_->generate();\n  CASEEND\n  CASESTART(1)\n  order_item_ = new OrderItem();\n  order_item_->generate();\n  order_item_list_ = new OrderItemList();\n  order_item_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      order_item_ = new OrderItem();\n      order_item_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OrderItem::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_order_behavior_);\n  auto tmp3 = SAFETRANSLATE(opt_order_nulls_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOrderItem, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n\n  TRANSLATEEND\n}\n\nvoid OrderItem::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_nulls_);\n  SAFEDELETE(opt_order_behavior_);\n  delete this;\n};\n\nvoid OrderItem::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  opt_order_behavior_ = new OptOrderBehavior();\n  opt_order_behavior_->generate();\n  opt_order_nulls_ = new OptOrderNulls();\n  opt_order_nulls_->generate();\n\n  GENERATEEND\n}\n\nIR *OptOrderBehavior::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOrderBehavior, OP3(\"ASC\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderBehavior, OP3(\"DESC\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOrderBehavior, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderBehavior::deep_delete() { delete this; };\n\nvoid OptOrderBehavior::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *OptWithClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kOptWithClause, OP3(\"WITH\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kOptWithClause, OP3(\"WITH RECURSIVE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptWithClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWithClause::deep_delete() {\n  SAFEDELETE(cte_table_list_);\n  delete this;\n};\n\nvoid OptWithClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n  CASESTART(1)\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CteTableList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(cte_table_);\n  res = new IR(kCteTableList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(cte_table_);\n  auto tmp2 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kCteTableList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CteTableList::deep_delete() {\n  SAFEDELETE(cte_table_list_);\n  SAFEDELETE(cte_table_);\n  delete this;\n};\n\nvoid CteTableList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  cte_table_ = new CteTable();\n  cte_table_->generate();\n  CASEEND\n  CASESTART(1)\n  cte_table_ = new CteTable();\n  cte_table_->generate();\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      cte_table_ = new CteTable();\n      cte_table_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *CteTable::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(cte_table_name_);\n  auto tmp2 = SAFETRANSLATE(select_stmt_);\n  res = new IR(kCteTable, OP3(\"\", \"AS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CteTable::deep_delete() {\n  SAFEDELETE(cte_table_name_);\n  SAFEDELETE(select_stmt_);\n  delete this;\n};\n\nvoid CteTable::generate() {\n  GENERATESTART(1)\n\n  cte_table_name_ = new CteTableName();\n  cte_table_name_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n\n  GENERATEEND\n}\n\nIR *CteTableName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_column_name_list_p_);\n  res = new IR(kCteTableName, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CteTableName::deep_delete() {\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(table_name_);\n  delete this;\n};\n\nvoid CteTableName::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n\n  GENERATEEND\n}\n\nIR *OptAllOrDistinct::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptAllOrDistinct, OP3(\"ALL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptAllOrDistinct, OP3(\"DISTINCT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptAllOrDistinct, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptAllOrDistinct::deep_delete() { delete this; };\n\nvoid OptAllOrDistinct::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *CreateTableStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(opt_if_not_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = SAFETRANSLATE(opt_table_option_list_);\n  auto tmp5 = SAFETRANSLATE(opt_ignore_or_replace_);\n  auto tmp6 = SAFETRANSLATE(select_stmt_);\n  auto tmp7 = new IR(kUnknown, OP3(\"CREATE\", \"TABLE\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateTableStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(opt_if_not_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = SAFETRANSLATE(column_def_list_);\n  auto tmp5 = SAFETRANSLATE(opt_table_constraint_list_);\n  auto tmp6 = SAFETRANSLATE(opt_table_option_list_);\n  auto tmp7 = new IR(kUnknown, OP3(\"CREATE\", \"TABLE\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"(\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \")\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateTableStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateTableStmt::deep_delete() {\n  SAFEDELETE(opt_table_option_list_);\n  SAFEDELETE(opt_table_constraint_list_);\n  SAFEDELETE(opt_temp_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(column_def_list_);\n  SAFEDELETE(opt_ignore_or_replace_);\n  SAFEDELETE(opt_if_not_exist_);\n  delete this;\n};\n\nvoid CreateTableStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  opt_if_not_exist_ = new OptIfNotExist();\n  opt_if_not_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_table_option_list_ = new OptTableOptionList();\n  opt_table_option_list_->generate();\n  opt_ignore_or_replace_ = new OptIgnoreOrReplace();\n  opt_ignore_or_replace_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  opt_if_not_exist_ = new OptIfNotExist();\n  opt_if_not_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  column_def_list_ = new ColumnDefList();\n  column_def_list_->generate();\n  opt_table_constraint_list_ = new OptTableConstraintList();\n  opt_table_constraint_list_->generate();\n  opt_table_option_list_ = new OptTableOptionList();\n  opt_table_option_list_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CreateIndexStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_index_keyword_);\n  auto tmp2 = SAFETRANSLATE(table_name_1_);\n  auto tmp3 = SAFETRANSLATE(table_name_2_);\n  auto tmp4 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp5 = SAFETRANSLATE(opt_index_option_);\n  auto tmp6 = SAFETRANSLATE(opt_extra_option_);\n  auto tmp7 = new IR(kUnknown, OP3(\"CREATE\", \"INDEX\", \"ON\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"(\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \")\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateIndexStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n\n  TRANSLATEEND\n}\n\nvoid CreateIndexStmt::deep_delete() {\n  SAFEDELETE(table_name_1_);\n  SAFEDELETE(table_name_2_);\n  SAFEDELETE(opt_index_option_);\n  SAFEDELETE(opt_index_keyword_);\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(opt_extra_option_);\n  delete this;\n};\n\nvoid CreateIndexStmt::generate() {\n  GENERATESTART(1)\n\n  opt_index_keyword_ = new OptIndexKeyword();\n  opt_index_keyword_->generate();\n  table_name_1_ = new TableName();\n  table_name_1_->generate();\n  table_name_2_ = new TableName();\n  table_name_2_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  opt_index_option_ = new OptIndexOption();\n  opt_index_option_->generate();\n  opt_extra_option_ = new OptExtraOption();\n  opt_extra_option_->generate();\n\n  GENERATEEND\n}\n\nIR *CreateTriggerStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(trigger_name_);\n  auto tmp2 = SAFETRANSLATE(trigger_action_time_);\n  auto tmp3 = SAFETRANSLATE(trigger_events_);\n  auto tmp4 = SAFETRANSLATE(table_name_);\n  auto tmp5 = SAFETRANSLATE(trigger_body_);\n  auto tmp6 = new IR(kUnknown, OP3(\"CREATE TRIGGER\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"ON\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"FOR\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateTriggerStmt, OP3(\"\", \"EACH ROW\", \"\"), tmp8, tmp5);\n\n  TRANSLATEEND\n}\n\nvoid CreateTriggerStmt::deep_delete() {\n  SAFEDELETE(trigger_action_time_);\n  SAFEDELETE(trigger_name_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(trigger_events_);\n  SAFEDELETE(trigger_body_);\n  delete this;\n};\n\nvoid CreateTriggerStmt::generate() {\n  GENERATESTART(1)\n\n  trigger_name_ = new TriggerName();\n  trigger_name_->generate();\n  trigger_action_time_ = new TriggerActionTime();\n  trigger_action_time_->generate();\n  trigger_events_ = new TriggerEvents();\n  trigger_events_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  trigger_body_ = new TriggerBody();\n  trigger_body_->generate();\n\n  GENERATEEND\n}\n\nIR *CreateViewStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_view_algorithm_);\n  auto tmp2 = SAFETRANSLATE(opt_sql_security_);\n  auto tmp3 = SAFETRANSLATE(view_name_);\n  auto tmp4 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp5 = SAFETRANSLATE(select_stmt_);\n  auto tmp6 = SAFETRANSLATE(opt_check_option_);\n  auto tmp7 = new IR(kUnknown, OP3(\"CREATE\", \"\", \"VIEW\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_view_algorithm_);\n  auto tmp2 = SAFETRANSLATE(opt_sql_security_);\n  auto tmp3 = SAFETRANSLATE(view_name_);\n  auto tmp4 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp5 = SAFETRANSLATE(select_stmt_);\n  auto tmp6 = SAFETRANSLATE(opt_check_option_);\n  auto tmp7 =\n      new IR(kUnknown, OP3(\"CREATE OR REPLACE\", \"\", \"VIEW\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateViewStmt::deep_delete() {\n  SAFEDELETE(opt_view_algorithm_);\n  SAFEDELETE(opt_check_option_);\n  SAFEDELETE(opt_sql_security_);\n  SAFEDELETE(view_name_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(opt_column_name_list_p_);\n  delete this;\n};\n\nvoid CreateViewStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_view_algorithm_ = new OptViewAlgorithm();\n  opt_view_algorithm_->generate();\n  opt_sql_security_ = new OptSqlSecurity();\n  opt_sql_security_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_view_algorithm_ = new OptViewAlgorithm();\n  opt_view_algorithm_->generate();\n  opt_sql_security_ = new OptSqlSecurity();\n  opt_sql_security_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptTableOptionList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_option_list_);\n  res = new IR(kOptTableOptionList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTableOptionList, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTableOptionList::deep_delete() {\n  SAFEDELETE(table_option_list_);\n  delete this;\n};\n\nvoid OptTableOptionList::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_option_list_ = new TableOptionList();\n  table_option_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *TableOptionList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_option_);\n  res = new IR(kTableOptionList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_option_);\n  auto tmp2 = SAFETRANSLATE(opt_op_comma_);\n  auto tmp3 = SAFETRANSLATE(table_option_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableOptionList, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableOptionList::deep_delete() {\n  SAFEDELETE(table_option_list_);\n  SAFEDELETE(opt_op_comma_);\n  SAFEDELETE(table_option_);\n  delete this;\n};\n\nvoid TableOptionList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_option_ = new TableOption();\n  table_option_->generate();\n  CASEEND\n  CASESTART(1)\n  table_option_ = new TableOption();\n  table_option_->generate();\n  opt_op_comma_ = new OptOpComma();\n  opt_op_comma_->generate();\n  table_option_list_ = new TableOptionList();\n  table_option_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      table_option_ = new TableOption();\n      table_option_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *TableOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"INSERT_METHOD\", \"NO\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"INSERT_METHOD\", \"FIRST\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"INSERT_METHOD\", \"LAST\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"DEFAULT\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"DYNAMIC\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"FIXED\", \"\"), tmp1);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"COMPRESSED\", \"\"), tmp1);\n  CASEEND\n  CASESTART(7)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"REDUNDANT\", \"\"), tmp1);\n  CASEEND\n  CASESTART(8)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kTableOption, OP3(\"ROW_FORMAT\", \"COMPACT\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableOption::deep_delete() {\n  SAFEDELETE(opt_op_equal_);\n  delete this;\n};\n\nvoid TableOption::generate() {\n  GENERATESTART(9)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(3)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(4)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(5)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(6)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(7)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(8)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOpComma::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOpComma, OP3(\",\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOpComma, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOpComma::deep_delete() { delete this; };\n\nvoid OptOpComma::generate(){GENERATESTART(2)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                    CASEEND SWITCHEND\n\n                                        GENERATEEND}\n\nIR *OptIgnoreOrReplace::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIgnoreOrReplace, OP3(\"IGNORE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIgnoreOrReplace, OP3(\"REPLACE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptIgnoreOrReplace, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIgnoreOrReplace::deep_delete() { delete this; };\n\nvoid OptIgnoreOrReplace::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *OptViewAlgorithm::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptViewAlgorithm, OP3(\"ALGORITHM = UNDEFINED\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptViewAlgorithm, OP3(\"ALGORITHM = MERGE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptViewAlgorithm, OP3(\"ALGORITHM = TEMPTABLE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptViewAlgorithm, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptViewAlgorithm::deep_delete() { delete this; };\n\nvoid OptViewAlgorithm::generate(){\n    GENERATESTART(4)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3)\n\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *OptSqlSecurity::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptSqlSecurity, OP3(\"SQL SECURITY DEFINER\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptSqlSecurity, OP3(\"SQL SECURITY INVOKER\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptSqlSecurity, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptSqlSecurity::deep_delete() { delete this; };\n\nvoid OptSqlSecurity::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *OptIndexOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIndexOption, OP3(\"USING BTREE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIndexOption, OP3(\"USING HASH\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptIndexOption, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIndexOption::deep_delete() { delete this; };\n\nvoid OptIndexOption::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *OptExtraOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(index_algorithm_option_);\n  res = new IR(kOptExtraOption, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(lock_option_);\n  res = new IR(kOptExtraOption, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptExtraOption, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptExtraOption::deep_delete() {\n  SAFEDELETE(lock_option_);\n  SAFEDELETE(index_algorithm_option_);\n  delete this;\n};\n\nvoid OptExtraOption::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  index_algorithm_option_ = new IndexAlgorithmOption();\n  index_algorithm_option_->generate();\n  CASEEND\n  CASESTART(1)\n  lock_option_ = new LockOption();\n  lock_option_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *IndexAlgorithmOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kIndexAlgorithmOption, OP3(\"ALGORITHM\", \"DEFAULT\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kIndexAlgorithmOption, OP3(\"ALGORITHM\", \"INPLACE\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kIndexAlgorithmOption, OP3(\"ALGORITHM\", \"COPY\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid IndexAlgorithmOption::deep_delete() {\n  SAFEDELETE(opt_op_equal_);\n  delete this;\n};\n\nvoid IndexAlgorithmOption::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *LockOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kLockOption, OP3(\"LOCK\", \"DEFAULT\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kLockOption, OP3(\"LOCK\", \"NONE\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kLockOption, OP3(\"LOCK\", \"SHARED\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_op_equal_);\n  res = new IR(kLockOption, OP3(\"LOCK\", \"EXCLUSIVE\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid LockOption::deep_delete() {\n  SAFEDELETE(opt_op_equal_);\n  delete this;\n};\n\nvoid LockOption::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  CASESTART(3)\n  opt_op_equal_ = new OptOpEqual();\n  opt_op_equal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOpEqual::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOpEqual, OP3(\"=\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOpEqual, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOpEqual::deep_delete() { delete this; };\n\nvoid OptOpEqual::generate(){GENERATESTART(2)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                    CASEEND SWITCHEND\n\n                                        GENERATEEND}\n\nIR *TriggerEvents::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kTriggerEvents, OP3(\"DELETE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kTriggerEvents, OP3(\"INSERT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kTriggerEvents, OP3(\"UPDATE\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TriggerEvents::deep_delete() { delete this; };\n\nvoid TriggerEvents::generate(){GENERATESTART(3)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                       CASEEND CASESTART(2) CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *TriggerName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kTriggerName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid TriggerName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid TriggerName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *TriggerActionTime::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kTriggerActionTime, OP3(\"BEFORE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kTriggerActionTime, OP3(\"AFTER\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TriggerActionTime::deep_delete() { delete this; };\n\nvoid TriggerActionTime::generate(){\n    GENERATESTART(2)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND SWITCHEND\n\n            GENERATEEND}\n\nIR *DropIndexStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_extra_option_);\n  res = new IR(kDropIndexStmt, OP3(\"DROP INDEX\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid DropIndexStmt::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_extra_option_);\n  delete this;\n};\n\nvoid DropIndexStmt::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_extra_option_ = new OptExtraOption();\n  opt_extra_option_->generate();\n\n  GENERATEEND\n}\n\nIR *DropTableStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = SAFETRANSLATE(opt_restrict_or_cascade_);\n  auto tmp5 = new IR(kUnknown, OP3(\"DROP\", \"TABLE\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kDropTableStmt, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid DropTableStmt::deep_delete() {\n  SAFEDELETE(opt_temp_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_restrict_or_cascade_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropTableStmt::generate() {\n  GENERATESTART(1)\n\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_restrict_or_cascade_ = new OptRestrictOrCascade();\n  opt_restrict_or_cascade_->generate();\n\n  GENERATEEND\n}\n\nIR *OptRestrictOrCascade::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptRestrictOrCascade, OP3(\"RESTRICT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptRestrictOrCascade, OP3(\"CASCADE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptRestrictOrCascade, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptRestrictOrCascade::deep_delete() { delete this; };\n\nvoid OptRestrictOrCascade::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *DropTriggerStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp2 = SAFETRANSLATE(trigger_name_);\n  res = new IR(kDropTriggerStmt, OP3(\"DROP TRIGGER\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid DropTriggerStmt::deep_delete() {\n  SAFEDELETE(trigger_name_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropTriggerStmt::generate() {\n  GENERATESTART(1)\n\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  trigger_name_ = new TriggerName();\n  trigger_name_->generate();\n\n  GENERATEEND\n}\n\nIR *DropViewStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  auto tmp3 = SAFETRANSLATE(opt_restrict_or_cascade_);\n  auto tmp4 = new IR(kUnknown, OP3(\"DROP VIEW\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kDropViewStmt, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n\n  TRANSLATEEND\n}\n\nvoid DropViewStmt::deep_delete() {\n  SAFEDELETE(view_name_);\n  SAFEDELETE(opt_restrict_or_cascade_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropViewStmt::generate() {\n  GENERATESTART(1)\n\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_restrict_or_cascade_ = new OptRestrictOrCascade();\n  opt_restrict_or_cascade_->generate();\n\n  GENERATEEND\n}\n\nIR *InsertStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp3 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp4 = SAFETRANSLATE(insert_rest_);\n  auto tmp5 = SAFETRANSLATE(opt_on_conflict_);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"INSERT INTO\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kInsertStmt, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n\n  TRANSLATEEND\n}\n\nvoid InsertStmt::deep_delete() {\n  SAFEDELETE(insert_rest_);\n  SAFEDELETE(opt_as_alias_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_on_conflict_);\n  SAFEDELETE(opt_with_clause_);\n  delete this;\n};\n\nvoid InsertStmt::generate() {\n  GENERATESTART(1)\n\n  opt_with_clause_ = new OptWithClause();\n  opt_with_clause_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  insert_rest_ = new InsertRest();\n  insert_rest_->generate();\n  opt_on_conflict_ = new OptOnConflict();\n  opt_on_conflict_->generate();\n\n  GENERATEEND\n}\n\nIR *InsertRest::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kInsertRest, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  res = new IR(kInsertRest, OP3(\"\", \"DEFAULT VALUES\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp2 = SAFETRANSLATE(super_values_list_);\n  res = new IR(kInsertRest, OP3(\"\", \"VALUES\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid InsertRest::deep_delete() {\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(super_values_list_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid InsertRest::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  super_values_list_ = new SuperValuesList();\n  super_values_list_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SuperValuesList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(values_list_);\n  res = new IR(kSuperValuesList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(values_list_);\n  auto tmp2 = SAFETRANSLATE(super_values_list_);\n  res = new IR(kSuperValuesList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SuperValuesList::deep_delete() {\n  SAFEDELETE(values_list_);\n  SAFEDELETE(super_values_list_);\n  delete this;\n};\n\nvoid SuperValuesList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  values_list_ = new ValuesList();\n  values_list_->generate();\n  CASEEND\n  CASESTART(1)\n  values_list_ = new ValuesList();\n  values_list_->generate();\n  super_values_list_ = new SuperValuesList();\n  super_values_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      values_list_ = new ValuesList();\n      values_list_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ValuesList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kValuesList, OP3(\"(\", \")\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ValuesList::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid ValuesList::generate() {\n  GENERATESTART(1)\n\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptOnConflict::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_conflict_expr_);\n  res = new IR(kOptOnConflict, OP3(\"ON CONFLICT\", \"DO NOTHING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_conflict_expr_);\n  auto tmp2 = SAFETRANSLATE(set_clause_list_);\n  auto tmp3 = SAFETRANSLATE(where_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"ON CONFLICT\", \"DO UPDATE\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOptOnConflict, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOnConflict, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOnConflict::deep_delete() {\n  SAFEDELETE(opt_conflict_expr_);\n  SAFEDELETE(set_clause_list_);\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptOnConflict::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_conflict_expr_ = new OptConflictExpr();\n  opt_conflict_expr_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_conflict_expr_ = new OptConflictExpr();\n  opt_conflict_expr_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptConflictExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp2 = SAFETRANSLATE(where_clause_);\n  res = new IR(kOptConflictExpr, OP3(\"(\", \")\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptConflictExpr, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptConflictExpr::deep_delete() {\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptConflictExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *IndexedColumnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(indexed_column_);\n  res = new IR(kIndexedColumnList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(indexed_column_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kIndexedColumnList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid IndexedColumnList::deep_delete() {\n  SAFEDELETE(indexed_column_);\n  SAFEDELETE(indexed_column_list_);\n  delete this;\n};\n\nvoid IndexedColumnList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  indexed_column_ = new IndexedColumn();\n  indexed_column_->generate();\n  CASEEND\n  CASESTART(1)\n  indexed_column_ = new IndexedColumn();\n  indexed_column_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      indexed_column_ = new IndexedColumn();\n      indexed_column_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *IndexedColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_order_behavior_);\n  res = new IR(kIndexedColumn, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid IndexedColumn::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_behavior_);\n  delete this;\n};\n\nvoid IndexedColumn::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  opt_order_behavior_ = new OptOrderBehavior();\n  opt_order_behavior_->generate();\n\n  GENERATEEND\n}\n\nIR *UpdateStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp3 = SAFETRANSLATE(set_clause_list_);\n  auto tmp4 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp6 = SAFETRANSLATE(opt_limit_row_count_);\n  auto tmp7 = new IR(kUnknown, OP3(\"UPDATE IGNORE\", \"\", \"SET\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kUpdateStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_as_alias_);\n  auto tmp3 = SAFETRANSLATE(set_clause_list_);\n  auto tmp4 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp6 = SAFETRANSLATE(opt_limit_row_count_);\n  auto tmp7 = new IR(kUnknown, OP3(\"UPDATE\", \"\", \"SET\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kUpdateStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid UpdateStmt::deep_delete() {\n  SAFEDELETE(opt_as_alias_);\n  SAFEDELETE(opt_where_clause_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(set_clause_list_);\n  SAFEDELETE(opt_limit_row_count_);\n  SAFEDELETE(opt_order_clause_);\n  delete this;\n};\n\nvoid UpdateStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_limit_row_count_ = new OptLimitRowCount();\n  opt_limit_row_count_->generate();\n  CASEEND\n  CASESTART(1)\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_as_alias_ = new OptAsAlias();\n  opt_as_alias_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_limit_row_count_ = new OptLimitRowCount();\n  opt_limit_row_count_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *AlterAction::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kAlterAction, OP3(\"RENAME TO\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_name_1_);\n  auto tmp3 = SAFETRANSLATE(column_name_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"RENAME\", \"\", \"TO\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kAlterAction, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_def_);\n  res = new IR(kAlterAction, OP3(\"ADD\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_name_1_);\n  res = new IR(kAlterAction, OP3(\"DROP\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(alter_constant_action_);\n  res = new IR(kAlterAction, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid AlterAction::deep_delete() {\n  SAFEDELETE(column_def_);\n  SAFEDELETE(alter_constant_action_);\n  SAFEDELETE(opt_column_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(column_name_1_);\n  SAFEDELETE(column_name_2_);\n  delete this;\n};\n\nvoid AlterAction::generate() {\n  GENERATESTART(5)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_column_ = new OptColumn();\n  opt_column_->generate();\n  column_name_1_ = new ColumnName();\n  column_name_1_->generate();\n  column_name_2_ = new ColumnName();\n  column_name_2_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_column_ = new OptColumn();\n  opt_column_->generate();\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  CASEEND\n  CASESTART(3)\n  opt_column_ = new OptColumn();\n  opt_column_->generate();\n  column_name_1_ = new ColumnName();\n  column_name_1_->generate();\n  CASEEND\n  CASESTART(4)\n  alter_constant_action_ = new AlterConstantAction();\n  alter_constant_action_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *AlterConstantAction::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kAlterConstantAction, OP3(\"DROP PRIMARY KEY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kAlterConstantAction, OP3(\"FORCE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kAlterConstantAction, OP3(\"DISABLE KEYS\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kAlterConstantAction, OP3(\"ENABLE KEYS\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(lock_option_);\n  res = new IR(kAlterConstantAction, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  res = new IR(kAlterConstantAction, OP3(\"WITH VALIDATION\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kAlterConstantAction, OP3(\"WITHOUT VALIDATION\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid AlterConstantAction::deep_delete() {\n  SAFEDELETE(lock_option_);\n  delete this;\n};\n\nvoid AlterConstantAction::generate() {\n  GENERATESTART(7)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  CASEEND\n  CASESTART(4)\n  lock_option_ = new LockOption();\n  lock_option_->generate();\n  CASEEND\n  CASESTART(5)\n  CASEEND\n  CASESTART(6)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnDefList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_def_);\n  res = new IR(kColumnDefList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_def_);\n  auto tmp2 = SAFETRANSLATE(column_def_list_);\n  res = new IR(kColumnDefList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnDefList::deep_delete() {\n  SAFEDELETE(column_def_);\n  SAFEDELETE(column_def_list_);\n  delete this;\n};\n\nvoid ColumnDefList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  CASEEND\n  CASESTART(1)\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  column_def_list_ = new ColumnDefList();\n  column_def_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_def_ = new ColumnDef();\n      column_def_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ColumnDef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  auto tmp2 = SAFETRANSLATE(type_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_constraint_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kColumnDef, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n\n  TRANSLATEEND\n}\n\nvoid ColumnDef::deep_delete() {\n  SAFEDELETE(type_name_);\n  SAFEDELETE(identifier_);\n  SAFEDELETE(opt_column_constraint_list_);\n  delete this;\n};\n\nvoid ColumnDef::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n  type_name_ = new TypeName();\n  type_name_->generate();\n  opt_column_constraint_list_ = new OptColumnConstraintList();\n  opt_column_constraint_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptColumnConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_constraint_list_);\n  auto tmp2 = SAFETRANSLATE(opt_check_);\n  auto tmp3 = SAFETRANSLATE(opt_reference_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOptColumnConstraintList, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnConstraintList, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumnConstraintList::deep_delete() {\n  SAFEDELETE(column_constraint_list_);\n  SAFEDELETE(opt_reference_clause_);\n  SAFEDELETE(opt_check_);\n  delete this;\n};\n\nvoid OptColumnConstraintList::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_constraint_list_ = new ColumnConstraintList();\n  column_constraint_list_->generate();\n  opt_check_ = new OptCheck();\n  opt_check_->generate();\n  opt_reference_clause_ = new OptReferenceClause();\n  opt_reference_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_constraint_);\n  res = new IR(kColumnConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_constraint_);\n  auto tmp2 = SAFETRANSLATE(column_constraint_list_);\n  res = new IR(kColumnConstraintList, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnConstraintList::deep_delete() {\n  SAFEDELETE(column_constraint_list_);\n  SAFEDELETE(column_constraint_);\n  delete this;\n};\n\nvoid ColumnConstraintList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_constraint_ = new ColumnConstraint();\n  column_constraint_->generate();\n  CASEEND\n  CASESTART(1)\n  column_constraint_ = new ColumnConstraint();\n  column_constraint_->generate();\n  column_constraint_list_ = new ColumnConstraintList();\n  column_constraint_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_constraint_ = new ColumnConstraint();\n      column_constraint_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ColumnConstraint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(constraint_type_);\n  res = new IR(kColumnConstraint, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ColumnConstraint::deep_delete() {\n  SAFEDELETE(constraint_type_);\n  delete this;\n};\n\nvoid ColumnConstraint::generate() {\n  GENERATESTART(1)\n\n  constraint_type_ = new ConstraintType();\n  constraint_type_->generate();\n\n  GENERATEEND\n}\n\nIR *OptReferenceClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_foreign_key_);\n  auto tmp2 = SAFETRANSLATE(reference_clause_);\n  res = new IR(kOptReferenceClause, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptReferenceClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptReferenceClause::deep_delete() {\n  SAFEDELETE(reference_clause_);\n  SAFEDELETE(opt_foreign_key_);\n  delete this;\n};\n\nvoid OptReferenceClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_foreign_key_ = new OptForeignKey();\n  opt_foreign_key_->generate();\n  reference_clause_ = new ReferenceClause();\n  reference_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptCheck::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_enforced_);\n  res = new IR(kOptCheck, OP3(\"CHECK (\", \")\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptCheck, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptCheck::deep_delete() {\n  SAFEDELETE(opt_enforced_);\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptCheck::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  opt_enforced_ = new OptEnforced();\n  opt_enforced_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ConstraintType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kConstraintType, OP3(\"PRIMARY KEY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kConstraintType, OP3(\"NOT NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kConstraintType, OP3(\"UNIQUE\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ConstraintType::deep_delete() { delete this; };\n\nvoid ConstraintType::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *ReferenceClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp3 = SAFETRANSLATE(opt_foreign_key_actions_);\n  auto tmp4 = SAFETRANSLATE(opt_constraint_attribute_spec_);\n  auto tmp5 = new IR(kUnknown, OP3(\"REFERENCES\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kReferenceClause, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid ReferenceClause::deep_delete() {\n  SAFEDELETE(opt_constraint_attribute_spec_);\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_foreign_key_actions_);\n  delete this;\n};\n\nvoid ReferenceClause::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  opt_foreign_key_actions_ = new OptForeignKeyActions();\n  opt_foreign_key_actions_->generate();\n  opt_constraint_attribute_spec_ = new OptConstraintAttributeSpec();\n  opt_constraint_attribute_spec_->generate();\n\n  GENERATEEND\n}\n\nIR *OptForeignKey::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptForeignKey, OP3(\"FOREIGN KEY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptForeignKey, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptForeignKey::deep_delete() { delete this; };\n\nvoid OptForeignKey::generate(){GENERATESTART(2)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                       CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *OptForeignKeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(foreign_key_actions_);\n  res = new IR(kOptForeignKeyActions, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptForeignKeyActions, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptForeignKeyActions::deep_delete() {\n  SAFEDELETE(foreign_key_actions_);\n  delete this;\n};\n\nvoid OptForeignKeyActions::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  foreign_key_actions_ = new ForeignKeyActions();\n  foreign_key_actions_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ForeignKeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH FULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH PARTIAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH SIMPLE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(key_actions_);\n  res = new IR(kForeignKeyActions, OP3(\"ON UPDATE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(key_actions_);\n  res = new IR(kForeignKeyActions, OP3(\"ON DELETE\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ForeignKeyActions::deep_delete() {\n  SAFEDELETE(key_actions_);\n  delete this;\n};\n\nvoid ForeignKeyActions::generate() {\n  GENERATESTART(5)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  key_actions_ = new KeyActions();\n  key_actions_->generate();\n  CASEEND\n  CASESTART(4)\n  key_actions_ = new KeyActions();\n  key_actions_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *KeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kKeyActions, OP3(\"SET NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kKeyActions, OP3(\"SET DEFAULT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kKeyActions, OP3(\"CASCADE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kKeyActions, OP3(\"RESTRICT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kKeyActions, OP3(\"NO ACTION\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid KeyActions::deep_delete() { delete this; };\n\nvoid KeyActions::generate(){GENERATESTART(5)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                    CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                        CASEEND CASESTART(4) CASEEND SWITCHEND\n\n                                            GENERATEEND}\n\nIR *OptConstraintAttributeSpec::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_initial_time_);\n  res = new IR(kOptConstraintAttributeSpec, OP3(\"DEFFERRABLE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_initial_time_);\n  res =\n      new IR(kOptConstraintAttributeSpec, OP3(\"NOT DEFFERRABLE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptConstraintAttributeSpec, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptConstraintAttributeSpec::deep_delete() {\n  SAFEDELETE(opt_initial_time_);\n  delete this;\n};\n\nvoid OptConstraintAttributeSpec::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_initial_time_ = new OptInitialTime();\n  opt_initial_time_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_initial_time_ = new OptInitialTime();\n  opt_initial_time_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptInitialTime::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptInitialTime, OP3(\"INITIALLY DEFERRED\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptInitialTime, OP3(\"INITIALLY IMMEDIATE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptInitialTime, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptInitialTime::deep_delete() { delete this; };\n\nvoid OptInitialTime::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *ConstraintName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(name_);\n  res = new IR(kConstraintName, OP3(\"CONSTRAINT\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ConstraintName::deep_delete() {\n  SAFEDELETE(name_);\n  delete this;\n};\n\nvoid ConstraintName::generate() {\n  GENERATESTART(1)\n\n  name_ = new Name();\n  name_->generate();\n\n  GENERATEEND\n}\n\nIR *OptTemp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptTemp, OP3(\"TEMPORARY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTemp, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTemp::deep_delete() { delete this; };\n\nvoid OptTemp::generate(){GENERATESTART(2)\n\n                             SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                 CASEEND SWITCHEND\n\n                                     GENERATEEND}\n\nIR *OptCheckOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptCheckOption, OP3(\"WITH CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptCheckOption, OP3(\"WITH CASCADED CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptCheckOption, OP3(\"WITH LOCAL CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptCheckOption, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptCheckOption::deep_delete() { delete this; };\n\nvoid OptCheckOption::generate(){\n    GENERATESTART(4)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3)\n\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *OptColumnNameListP::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kOptColumnNameListP, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnNameListP, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumnNameListP::deep_delete() {\n  SAFEDELETE(column_name_list_);\n  delete this;\n};\n\nvoid OptColumnNameListP::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SetClauseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(set_clause_);\n  res = new IR(kSetClauseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(set_clause_);\n  auto tmp2 = SAFETRANSLATE(set_clause_list_);\n  res = new IR(kSetClauseList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SetClauseList::deep_delete() {\n  SAFEDELETE(set_clause_);\n  SAFEDELETE(set_clause_list_);\n  delete this;\n};\n\nvoid SetClauseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  set_clause_ = new SetClause();\n  set_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  set_clause_ = new SetClause();\n  set_clause_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      set_clause_ = new SetClause();\n      set_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SetClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kSetClause, OP3(\"\", \"=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kSetClause, OP3(\"(\", \") =\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SetClause::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(column_name_list_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid SetClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptAsAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(as_alias_);\n  res = new IR(kOptAsAlias, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptAsAlias, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptAsAlias::deep_delete() {\n  SAFEDELETE(as_alias_);\n  delete this;\n};\n\nvoid OptAsAlias::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  as_alias_ = new AsAlias();\n  as_alias_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *Expr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(between_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(exists_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(in_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(cast_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(logic_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Expr::deep_delete() {\n  SAFEDELETE(cast_expr_);\n  SAFEDELETE(in_expr_);\n  SAFEDELETE(between_expr_);\n  SAFEDELETE(operand_);\n  SAFEDELETE(exists_expr_);\n  SAFEDELETE(logic_expr_);\n  delete this;\n};\n\nvoid Expr::generate() {\n  GENERATESTART(6)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(1)\n  between_expr_ = new BetweenExpr();\n  between_expr_->generate();\n  CASEEND\n  CASESTART(2)\n  exists_expr_ = new ExistsExpr();\n  exists_expr_->generate();\n  CASEEND\n  CASESTART(3)\n  in_expr_ = new InExpr();\n  in_expr_->generate();\n  CASEEND\n  CASESTART(4)\n  cast_expr_ = new CastExpr();\n  cast_expr_->generate();\n  CASEEND\n  CASESTART(5)\n  logic_expr_ = new LogicExpr();\n  logic_expr_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *Operand::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kOperand, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(array_index_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(scalar_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(unary_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(binary_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(case_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(extract_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(7)\n  auto tmp1 = SAFETRANSLATE(array_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(8)\n  auto tmp1 = SAFETRANSLATE(function_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(9)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kOperand, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Operand::deep_delete() {\n  SAFEDELETE(function_expr_);\n  SAFEDELETE(unary_expr_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(case_expr_);\n  SAFEDELETE(array_expr_);\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(extract_expr_);\n  SAFEDELETE(array_index_);\n  SAFEDELETE(binary_expr_);\n  SAFEDELETE(scalar_expr_);\n  delete this;\n};\n\nvoid Operand::generate() {\n  GENERATESTART(10)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n  array_index_ = new ArrayIndex();\n  array_index_->generate();\n  CASEEND\n  CASESTART(2)\n  scalar_expr_ = new ScalarExpr();\n  scalar_expr_->generate();\n  CASEEND\n  CASESTART(3)\n  unary_expr_ = new UnaryExpr();\n  unary_expr_->generate();\n  CASEEND\n  CASESTART(4)\n  binary_expr_ = new BinaryExpr();\n  binary_expr_->generate();\n  CASEEND\n  CASESTART(5)\n  case_expr_ = new CaseExpr();\n  case_expr_->generate();\n  CASEEND\n  CASESTART(6)\n  extract_expr_ = new ExtractExpr();\n  extract_expr_->generate();\n  CASEEND\n  CASESTART(7)\n  array_expr_ = new ArrayExpr();\n  array_expr_->generate();\n  CASEEND\n  CASESTART(8)\n  function_expr_ = new FunctionExpr();\n  function_expr_->generate();\n  CASEEND\n  CASESTART(9)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CastExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(type_name_);\n  res = new IR(kCastExpr, OP3(\"CAST (\", \"AS\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CastExpr::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(type_name_);\n  delete this;\n};\n\nvoid CastExpr::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  type_name_ = new TypeName();\n  type_name_->generate();\n\n  GENERATEEND\n}\n\nIR *ScalarExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  res = new IR(kScalarExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(literal_);\n  res = new IR(kScalarExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ScalarExpr::deep_delete() {\n  SAFEDELETE(literal_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid ScalarExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  CASEEND\n  CASESTART(1)\n  literal_ = new Literal();\n  literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *UnaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"-\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"NOT\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"ISNULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"IS NULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"IS NOT NULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  res = new IR(kUnaryExpr, OP3(\"NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kUnaryExpr, OP3(\"*\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid UnaryExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  delete this;\n};\n\nvoid UnaryExpr::generate() {\n  GENERATESTART(7)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(4)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(5)\n  CASEEND\n  CASESTART(6)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *BinaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(comp_expr_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(binary_op_);\n  auto tmp3 = SAFETRANSLATE(operand_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBinaryExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"LIKE\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"NOT LIKE\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BinaryExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  SAFEDELETE(binary_op_);\n  SAFEDELETE(comp_expr_);\n  delete this;\n};\n\nvoid BinaryExpr::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  comp_expr_ = new CompExpr();\n  comp_expr_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  binary_op_ = new BinaryOp();\n  binary_op_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *LogicExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLogicExpr, OP3(\"\", \"AND\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLogicExpr, OP3(\"\", \"OR\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid LogicExpr::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid LogicExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *InExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(select_no_parens_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"(\", \")\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"(\", \")\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid InExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_not_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid InExpr::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CaseExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"\", \"END\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"END\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  auto tmp3 = SAFETRANSLATE(expr_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"CASE\", \"\", \"ELSE\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kCaseExpr, OP3(\"\", \"\", \"END\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(case_list_);\n  auto tmp2 = SAFETRANSLATE(expr_1_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"ELSE\", \"END\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CaseExpr::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  SAFEDELETE(case_list_);\n  delete this;\n};\n\nvoid CaseExpr::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n  CASESTART(1)\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n  CASESTART(2)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(3)\n  case_list_ = new CaseList();\n  case_list_->generate();\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *BetweenExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  auto tmp3 = SAFETRANSLATE(operand_3_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBetweenExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  auto tmp3 = SAFETRANSLATE(operand_3_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"NOT BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBetweenExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BetweenExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  SAFEDELETE(operand_3_);\n  delete this;\n};\n\nvoid BetweenExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  operand_3_ = new Operand();\n  operand_3_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  operand_3_ = new Operand();\n  operand_3_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ExistsExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_not_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kExistsExpr, OP3(\"\", \"EXISTS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ExistsExpr::deep_delete() {\n  SAFEDELETE(opt_not_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid ExistsExpr::generate() {\n  GENERATESTART(1)\n\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n\n  GENERATEEND\n}\n\nIR *FunctionExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(function_name_);\n  auto tmp2 = SAFETRANSLATE(opt_filter_clause_);\n  auto tmp3 = SAFETRANSLATE(opt_over_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"( )\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kFunctionExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(function_name_);\n  auto tmp2 = SAFETRANSLATE(opt_distinct_);\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  auto tmp4 = SAFETRANSLATE(opt_filter_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_over_clause_);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"(\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \")\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kFunctionExpr, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FunctionExpr::deep_delete() {\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(function_name_);\n  SAFEDELETE(opt_filter_clause_);\n  SAFEDELETE(opt_distinct_);\n  SAFEDELETE(opt_over_clause_);\n  delete this;\n};\n\nvoid FunctionExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  function_name_ = new FunctionName();\n  function_name_->generate();\n  opt_filter_clause_ = new OptFilterClause();\n  opt_filter_clause_->generate();\n  opt_over_clause_ = new OptOverClause();\n  opt_over_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  function_name_ = new FunctionName();\n  function_name_->generate();\n  opt_distinct_ = new OptDistinct();\n  opt_distinct_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  opt_filter_clause_ = new OptFilterClause();\n  opt_filter_clause_->generate();\n  opt_over_clause_ = new OptOverClause();\n  opt_over_clause_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptDistinct::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptDistinct, OP3(\"DISTINCT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptDistinct, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptDistinct::deep_delete() { delete this; };\n\nvoid OptDistinct::generate(){GENERATESTART(2)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                     CASEEND SWITCHEND\n\n                                         GENERATEEND}\n\nIR *OptFilterClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptFilterClause, OP3(\"FILTER ( WHERE\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFilterClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFilterClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptFilterClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOverClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(window_);\n  res = new IR(kOptOverClause, OP3(\"OVER (\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(window_name_);\n  res = new IR(kOptOverClause, OP3(\"OVER\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOverClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOverClause::deep_delete() {\n  SAFEDELETE(window_);\n  SAFEDELETE(window_name_);\n  delete this;\n};\n\nvoid OptOverClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  window_ = new Window();\n  window_->generate();\n  CASEEND\n  CASESTART(1)\n  window_name_ = new WindowName();\n  window_name_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CaseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(case_clause_);\n  res = new IR(kCaseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(case_clause_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseList, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CaseList::deep_delete() {\n  SAFEDELETE(case_list_);\n  SAFEDELETE(case_clause_);\n  delete this;\n};\n\nvoid CaseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  case_clause_ = new CaseClause();\n  case_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  case_clause_ = new CaseClause();\n  case_clause_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      case_clause_ = new CaseClause();\n      case_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *CaseClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kCaseClause, OP3(\"WHEN\", \"THEN\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CaseClause::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid CaseClause::generate() {\n  GENERATESTART(1)\n\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n\n  GENERATEEND\n}\n\nIR *CompExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"!=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \">\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"<\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"<=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \">=\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CompExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  delete this;\n};\n\nvoid CompExpr::generate() {\n  GENERATESTART(6)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(4)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(5)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ExtractExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(datetime_field_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kExtractExpr, OP3(\"EXTRACT (\", \"FROM\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ExtractExpr::deep_delete() {\n  SAFEDELETE(datetime_field_);\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid ExtractExpr::generate() {\n  GENERATESTART(1)\n\n  datetime_field_ = new DatetimeField();\n  datetime_field_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n\n  GENERATEEND\n}\n\nIR *DatetimeField::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kDatetimeField, OP3(\"SECOND\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kDatetimeField, OP3(\"MINUTE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kDatetimeField, OP3(\"HOUR\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kDatetimeField, OP3(\"DAY\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kDatetimeField, OP3(\"MONTH\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kDatetimeField, OP3(\"YEAR\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid DatetimeField::deep_delete() { delete this; };\n\nvoid DatetimeField::generate(){\n    GENERATESTART(6)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *ArrayExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kArrayExpr, OP3(\"ARRAY [\", \"]\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ArrayExpr::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid ArrayExpr::generate() {\n  GENERATESTART(1)\n\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n\n  GENERATEEND\n}\n\nIR *ArrayIndex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(int_literal_);\n  res = new IR(kArrayIndex, OP3(\"\", \"[\", \"]\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ArrayIndex::deep_delete() {\n  SAFEDELETE(operand_);\n  SAFEDELETE(int_literal_);\n  delete this;\n};\n\nvoid ArrayIndex::generate() {\n  GENERATESTART(1)\n\n  operand_ = new Operand();\n  operand_->generate();\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n\n  GENERATEEND\n}\n\nIR *Literal::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(string_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(bool_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(num_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Literal::deep_delete() {\n  SAFEDELETE(bool_literal_);\n  SAFEDELETE(string_literal_);\n  SAFEDELETE(num_literal_);\n  delete this;\n};\n\nvoid Literal::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  string_literal_ = new StringLiteral();\n  string_literal_->generate();\n  CASEEND\n  CASESTART(1)\n  bool_literal_ = new BoolLiteral();\n  bool_literal_->generate();\n  CASEEND\n  CASESTART(2)\n  num_literal_ = new NumLiteral();\n  num_literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *StringLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kStringLiteral, string_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid StringLiteral::deep_delete() { delete this; };\n\nvoid StringLiteral::generate() {\n  GENERATESTART(1)\n\n  string_val_ = gen_string();\n\n  GENERATEEND\n}\n\nIR *BoolLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kBoolLiteral, OP3(\"TRUE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kBoolLiteral, OP3(\"FALSE\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BoolLiteral::deep_delete() { delete this; };\n\nvoid BoolLiteral::generate(){GENERATESTART(2)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND SWITCHEND\n\n                                         GENERATEEND}\n\nIR *NumLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(int_literal_);\n  res = new IR(kNumLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(float_literal_);\n  res = new IR(kNumLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid NumLiteral::deep_delete() {\n  SAFEDELETE(int_literal_);\n  SAFEDELETE(float_literal_);\n  delete this;\n};\n\nvoid NumLiteral::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n  CASEEND\n  CASESTART(1)\n  float_literal_ = new FloatLiteral();\n  float_literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *IntLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kIntLiteral, int_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid IntLiteral::deep_delete() { delete this; };\n\nvoid IntLiteral::generate() {\n  GENERATESTART(1)\n\n  int_val_ = gen_int();\n\n  GENERATEEND\n}\n\nIR *FloatLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kFloatLiteral, float_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid FloatLiteral::deep_delete() { delete this; };\n\nvoid FloatLiteral::generate() {\n  GENERATESTART(1)\n\n  float_val_ = gen_float();\n\n  GENERATEEND\n}\n\nIR *OptColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptColumn, OP3(\"COLUMN\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumn, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumn::deep_delete() { delete this; };\n\nvoid OptColumn::generate(){GENERATESTART(2)\n\n                               SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                   CASEEND SWITCHEND\n\n                                       GENERATEEND}\n\nIR *TriggerBody::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(drop_stmt_);\n  res = new IR(kTriggerBody, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(update_stmt_);\n  res = new IR(kTriggerBody, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(insert_stmt_);\n  res = new IR(kTriggerBody, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(alter_stmt_);\n  res = new IR(kTriggerBody, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TriggerBody::deep_delete() {\n  SAFEDELETE(alter_stmt_);\n  SAFEDELETE(drop_stmt_);\n  SAFEDELETE(insert_stmt_);\n  SAFEDELETE(update_stmt_);\n  delete this;\n};\n\nvoid TriggerBody::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  drop_stmt_ = new DropStmt();\n  drop_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  update_stmt_ = new UpdateStmt();\n  update_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  insert_stmt_ = new InsertStmt();\n  insert_stmt_->generate();\n  CASEEND\n  CASESTART(3)\n  alter_stmt_ = new AlterStmt();\n  alter_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptIfNotExist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIfNotExist, OP3(\"IF NOT EXISTS\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIfNotExist, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIfNotExist::deep_delete() { delete this; };\n\nvoid OptIfNotExist::generate(){GENERATESTART(2)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                       CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *OptIfExist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIfExist, OP3(\"IF EXISTS\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIfExist, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIfExist::deep_delete() { delete this; };\n\nvoid OptIfExist::generate(){GENERATESTART(2)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                    CASEEND SWITCHEND\n\n                                        GENERATEEND}\n\nIR *Identifier::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kIdentifier, string_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid Identifier::deep_delete() { delete this; };\n\nvoid Identifier::generate() {\n  GENERATESTART(1)\n\n  string_val_ = gen_string();\n\n  GENERATEEND\n}\n\nIR *AsAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kAsAlias, OP3(\"AS\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid AsAlias::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid AsAlias::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *TableName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kTableName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid TableName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid TableName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *ColumnName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kColumnName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ColumnName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid ColumnName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *OptIndexKeyword::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIndexKeyword, OP3(\"UNIQUE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIndexKeyword, OP3(\"FULLTEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptIndexKeyword, OP3(\"SPATIAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptIndexKeyword, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIndexKeyword::deep_delete() { delete this; };\n\nvoid OptIndexKeyword::generate(){\n    GENERATESTART(4)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3)\n\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *ViewName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kViewName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ViewName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid ViewName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *FunctionName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kFunctionName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid FunctionName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid FunctionName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *BinaryOp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kBinaryOp, OP3(\"+\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kBinaryOp, OP3(\"-\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kBinaryOp, OP3(\"/\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kBinaryOp, OP3(\"%\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kBinaryOp, OP3(\"*\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kBinaryOp, OP3(\"^\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BinaryOp::deep_delete() { delete this; };\n\nvoid BinaryOp::generate(){GENERATESTART(6)\n\n                              SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                  CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                      CASEEND CASESTART(4) CASEEND CASESTART(5)\n                                          CASEEND SWITCHEND\n\n                                              GENERATEEND}\n\nIR *OptNot::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptNot, OP3(\"NOT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptNot, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptNot::deep_delete() { delete this; };\n\nvoid OptNot::generate(){GENERATESTART(2)\n\n                            SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                CASEEND SWITCHEND\n\n                                    GENERATEEND}\n\nIR *Name::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid Name::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid Name::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *TypeName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(numeric_type_);\n  res = new IR(kTypeName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(character_type_);\n  res = new IR(kTypeName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TypeName::deep_delete() {\n  SAFEDELETE(numeric_type_);\n  SAFEDELETE(character_type_);\n  delete this;\n};\n\nvoid TypeName::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  numeric_type_ = new NumericType();\n  numeric_type_->generate();\n  CASEEND\n  CASESTART(1)\n  character_type_ = new CharacterType();\n  character_type_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CharacterType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(character_with_length_);\n  res = new IR(kCharacterType, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(character_without_length_);\n  res = new IR(kCharacterType, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CharacterType::deep_delete() {\n  SAFEDELETE(character_with_length_);\n  SAFEDELETE(character_without_length_);\n  delete this;\n};\n\nvoid CharacterType::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  character_with_length_ = new CharacterWithLength();\n  character_with_length_->generate();\n  CASEEND\n  CASESTART(1)\n  character_without_length_ = new CharacterWithoutLength();\n  character_without_length_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CharacterWithLength::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(character_conflicta_);\n  auto tmp2 = SAFETRANSLATE(int_literal_);\n  res = new IR(kCharacterWithLength, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CharacterWithLength::deep_delete() {\n  SAFEDELETE(character_conflicta_);\n  SAFEDELETE(int_literal_);\n  delete this;\n};\n\nvoid CharacterWithLength::generate() {\n  GENERATESTART(1)\n\n  character_conflicta_ = new CharacterConflicta();\n  character_conflicta_->generate();\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n\n  GENERATEEND\n}\n\nIR *CharacterWithoutLength::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(character_conflicta_);\n  res = new IR(kCharacterWithoutLength, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kCharacterWithoutLength, OP3(\"SET\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kCharacterWithoutLength, OP3(\"ENUM\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kCharacterWithoutLength, OP3(\"BINARY\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CharacterWithoutLength::deep_delete() {\n  SAFEDELETE(character_conflicta_);\n  delete this;\n};\n\nvoid CharacterWithoutLength::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  character_conflicta_ = new CharacterConflicta();\n  character_conflicta_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CharacterConflicta::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kCharacterConflicta, OP3(\"CHARACTER\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kCharacterConflicta, OP3(\"CHAR\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kCharacterConflicta, OP3(\"VARCHAR\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kCharacterConflicta, OP3(\"TEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kCharacterConflicta, OP3(\"TINYTEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kCharacterConflicta, OP3(\"MEDIUMTEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kCharacterConflicta, OP3(\"LONGTEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(7)\n  res = new IR(kCharacterConflicta, OP3(\"NATIONAL CHARACTER\", \"\", \"\"));\n  CASEEND\n  CASESTART(8)\n  res = new IR(kCharacterConflicta, OP3(\"NATIONAL CHAR\", \"\", \"\"));\n  CASEEND\n  CASESTART(9)\n  res = new IR(kCharacterConflicta, OP3(\"NCHAR\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CharacterConflicta::deep_delete() { delete this; };\n\nvoid CharacterConflicta::generate(){\n    GENERATESTART(10)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND CASESTART(6) CASEEND CASESTART(7) CASEEND CASESTART(8)\n                    CASEEND CASESTART(9) CASEEND SWITCHEND\n\n                        GENERATEEND}\n\nIR *NumericType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kNumericType, OP3(\"INT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kNumericType, OP3(\"INTEGER\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kNumericType, OP3(\"SMALLINT\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kNumericType, OP3(\"BIGINT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kNumericType, OP3(\"REAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kNumericType, OP3(\"FLOAT\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kNumericType, OP3(\"FIXED\", \"\", \"\"));\n  CASEEND\n  CASESTART(7)\n  res = new IR(kNumericType, OP3(\"DOUBLE\", \"\", \"\"));\n  CASEEND\n  CASESTART(8)\n  res = new IR(kNumericType, OP3(\"DOUBLE PRECISION\", \"\", \"\"));\n  CASEEND\n  CASESTART(9)\n  res = new IR(kNumericType, OP3(\"DECIMAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(10)\n  res = new IR(kNumericType, OP3(\"DEC\", \"\", \"\"));\n  CASEEND\n  CASESTART(11)\n  res = new IR(kNumericType, OP3(\"NUMERIC\", \"\", \"\"));\n  CASEEND\n  CASESTART(12)\n  res = new IR(kNumericType, OP3(\"BOOLEAN\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid NumericType::deep_delete() { delete this; };\n\nvoid NumericType::generate(){\n    GENERATESTART(13)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND CASESTART(6) CASEEND CASESTART(7) CASEEND CASESTART(8)\n                    CASEEND CASESTART(9) CASEEND CASESTART(10)\n                        CASEEND CASESTART(11) CASEEND CASESTART(12)\n                            CASEEND SWITCHEND\n\n                                GENERATEEND}\n\nIR *OptTableConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_constraint_list_);\n  res = new IR(kOptTableConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTableConstraintList, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTableConstraintList::deep_delete() {\n  SAFEDELETE(table_constraint_list_);\n  delete this;\n};\n\nvoid OptTableConstraintList::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_constraint_list_ = new TableConstraintList();\n  table_constraint_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *TableConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_constraint_);\n  res = new IR(kTableConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_constraint_);\n  auto tmp2 = SAFETRANSLATE(table_constraint_list_);\n  res = new IR(kTableConstraintList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableConstraintList::deep_delete() {\n  SAFEDELETE(table_constraint_);\n  SAFEDELETE(table_constraint_list_);\n  delete this;\n};\n\nvoid TableConstraintList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_constraint_ = new TableConstraint();\n  table_constraint_->generate();\n  CASEEND\n  CASESTART(1)\n  table_constraint_ = new TableConstraint();\n  table_constraint_->generate();\n  table_constraint_list_ = new TableConstraintList();\n  table_constraint_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      table_constraint_ = new TableConstraint();\n      table_constraint_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *TableConstraint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kTableConstraint, OP3(\"\", \"PRIMARY KEY (\", \")\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kTableConstraint, OP3(\"\", \"UNIQUE (\", \")\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  auto tmp3 = SAFETRANSLATE(opt_enforced_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"CHECK (\", \")\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableConstraint, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(column_name_list_);\n  auto tmp3 = SAFETRANSLATE(reference_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"FOREIGN KEY (\", \")\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableConstraint, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableConstraint::deep_delete() {\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(column_name_list_);\n  SAFEDELETE(expr_);\n  SAFEDELETE(constraint_name_);\n  SAFEDELETE(opt_enforced_);\n  SAFEDELETE(reference_clause_);\n  delete this;\n};\n\nvoid TableConstraint::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n  CASESTART(1)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n  CASESTART(2)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  opt_enforced_ = new OptEnforced();\n  opt_enforced_->generate();\n  CASEEND\n  CASESTART(3)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  reference_clause_ = new ReferenceClause();\n  reference_clause_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptEnforced::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptEnforced, OP3(\"ENFORCED\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptEnforced, OP3(\"NOT ENFORCED\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptEnforced, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptEnforced::deep_delete() { delete this; };\n\nvoid OptEnforced::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n"
  },
  {
    "path": "srcs/internal/mysql/srcs/mutator.cpp",
    "content": "#include \"../include/mutator.h\"\n\n#include <assert.h>\n\n#include <algorithm>\n#include <cfloat>\n#include <climits>\n#include <cstdio>\n#include <deque>\n#include <fstream>\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n#include \"../include/utils.h\"\n#define _NON_REPLACE_\n\nusing namespace std;\n\n//#define GRAPHLOG\n\nIR *Mutator::deep_copy_with_record(const IR *root, const IR *record) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_) left = deep_copy_with_record(root->left_, record);\n  if (root->right_) right = deep_copy_with_record(root->right_, record);\n\n  if (root->op_ != NULL)\n    copy_res =\n        new IR(root->type_,\n               OP3(root->op_->prefix_, root->op_->middle_, root->op_->suffix_),\n               left, right, root->float_val_, root->str_val_, root->name_,\n               root->mutated_times_, root->scope_, root->data_flag_);\n  else\n    copy_res = new IR(root->type_, NULL, left, right, root->float_val_,\n                      root->str_val_, root->name_, root->mutated_times_,\n                      root->scope_, root->data_flag_);\n\n  copy_res->data_type_ = root->data_type_;\n\n  if (root == record && record != NULL) {\n    this->record_ = copy_res;\n  }\n\n  return copy_res;\n}\n\nvector<IR *> Mutator::mutate_all(vector<IR *> &v_ir_collector) {\n  vector<IR *> res;\n  IR *root = v_ir_collector[v_ir_collector.size() - 1];\n\n  mutated_root_ = root;\n\n  for (auto ir : v_ir_collector) {\n    if (not_mutatable_types_.find(ir->type_) != not_mutatable_types_.end())\n      continue;\n\n    vector<IR *> v_mutated_ir = mutate(ir);\n\n    for (auto i : v_mutated_ir) {\n      IR *new_ir_tree = deep_copy_with_record(root, ir);\n      replace(new_ir_tree, this->record_, i);\n\n      extract_struct(new_ir_tree);\n      string tmp = new_ir_tree->to_string();\n      unsigned tmp_hash = hash(tmp);\n      if (global_hash_.find(tmp_hash) != global_hash_.end()) {\n        deep_delete(new_ir_tree);\n        continue;\n      }\n\n      global_hash_.insert(tmp_hash);\n      res.push_back(new_ir_tree);\n    }\n  }\n\n  return res;\n}\n\nvoid Mutator::add_ir_to_library(IR *cur) {\n  extract_struct(cur);\n  cur = deep_copy(cur);\n  add_ir_to_library_no_deepcopy(cur);\n  return;\n}\n\nvoid Mutator::add_ir_to_library_no_deepcopy(IR *cur) {\n  if (cur->left_) add_ir_to_library_no_deepcopy(cur->left_);\n  if (cur->right_) add_ir_to_library_no_deepcopy(cur->right_);\n\n  auto type = cur->type_;\n  auto h = hash(cur);\n  if (find(ir_library_hash_[type].begin(), ir_library_hash_[type].end(), h) !=\n      ir_library_hash_[type].end())\n    return;\n\n  ir_library_hash_[type].insert(h);\n  ir_library_[type].push_back(cur);\n\n  return;\n}\n\nvoid Mutator::init_common_string(string filename) {\n  common_string_library_.push_back(\"DO_NOT_BE_EMPTY\");\n  if (filename != \"\") {\n    ifstream input_string(filename);\n    string s;\n\n    while (getline(input_string, s)) {\n      common_string_library_.push_back(s);\n    }\n  }\n}\n\nvoid Mutator::init_data_library_2d(string filename) {\n  ifstream input_file(filename);\n  string s;\n\n  cout << \"[*] init data_library_2d: \" << filename << endl;\n  while (getline(input_file, s)) {\n    vector<string> v_strbuf;\n    auto prev_pos = -1;\n    for (int i = 0; i < 3; i++) {\n      auto pos = s.find(\" \", prev_pos + 1);\n      v_strbuf.push_back(s.substr(prev_pos + 1, pos - prev_pos - 1));\n      prev_pos = pos;\n    }\n    v_strbuf.push_back(s.substr(prev_pos + 1, s.size() - prev_pos - 1));\n\n    auto data_type1 = get_datatype_by_string(v_strbuf[0]);\n    auto data_type2 = get_datatype_by_string(v_strbuf[2]);\n    g_data_library_2d_[data_type1][v_strbuf[1]][data_type2].push_back(\n        v_strbuf[3]);\n  }\n\n  return;\n}\n\nvoid Mutator::init_data_library(string filename) {\n  ifstream input_file(filename);\n  string s;\n\n  cout << \"[*] init data_library: \" << filename << endl;\n  while (getline(input_file, s)) {\n    auto pos = s.find(\" \");\n    if (pos == string::npos) continue;\n    auto data_type = get_datatype_by_string(s.substr(0, pos));\n    auto v = s.substr(pos + 1, s.size() - pos - 1);\n    g_data_library_[data_type].push_back(v);\n  }\n\n  return;\n}\n\nvoid Mutator::init_value_library() {\n  vector<unsigned long> value_lib_init = {0,\n                                          (unsigned long)LONG_MAX,\n                                          (unsigned long)ULONG_MAX,\n                                          (unsigned long)CHAR_BIT,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MAX,\n                                          (unsigned long)UCHAR_MAX,\n                                          (unsigned long)CHAR_MIN,\n                                          (unsigned long)CHAR_MAX,\n                                          (unsigned long)MB_LEN_MAX,\n                                          (unsigned long)SHRT_MIN,\n                                          (unsigned long)INT_MIN,\n                                          (unsigned long)INT_MAX,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)UINT_MAX,\n                                          (unsigned long)FLT_MAX,\n                                          (unsigned long)DBL_MAX,\n                                          (unsigned long)LDBL_MAX,\n                                          (unsigned long)FLT_MIN,\n                                          (unsigned long)DBL_MIN,\n                                          (unsigned long)LDBL_MIN};\n\n  value_library_.insert(value_library_.begin(), value_lib_init.begin(),\n                        value_lib_init.end());\n\n  return;\n}\n\nvoid Mutator::init_ir_library(string filename) {\n  ifstream input_file(filename);\n  string line;\n\n  cout << \"[*] init ir_library: \" << filename << endl;\n  while (getline(input_file, line)) {\n    if (line.empty()) continue;\n    auto p = parser(line);\n    if (p == NULL) continue;\n\n    vector<IR *> v_ir;\n    auto res = p->translate(v_ir);\n    p->deep_delete();\n    p = NULL;\n\n    add_ir_to_library(res);\n    deep_delete(res);\n  }\n  return;\n}\n\nvoid Mutator::init_safe_generate_type(string filename) {\n  ifstream input_file(filename);\n  string line;\n\n  cout << \"[*] init safe generate type: \" << filename << endl;\n  while (getline(input_file, line)) {\n    if (line.empty()) continue;\n    auto node_type = get_nodetype_by_string(\"k\" + line);\n    safe_generate_type_.insert(node_type);\n  }\n}\n\nvoid Mutator::init(string f_testcase, string f_common_string, string file2d,\n                   string file1d, string f_gen_type) {\n  if (!f_testcase.empty()) init_ir_library(f_testcase);\n\n  // init value_library_\n  init_value_library();\n\n  // init common_string_library\n  if (!f_common_string.empty()) init_common_string(f_common_string);\n\n  // init data_library_2d\n  if (!file2d.empty()) init_data_library_2d(file2d);\n\n  if (!file1d.empty()) init_data_library(file1d);\n  if (!f_gen_type.empty()) init_safe_generate_type(f_gen_type);\n\n  float_types_.insert({kFloatLiteral});\n  int_types_.insert(kIntLiteral);\n  string_types_.insert(kStringLiteral);\n\n  relationmap_[kDataColumnName][kDataTableName] = kRelationSubtype;\n  relationmap_[kDataPragmaValue][kDataPragmaKey] = kRelationSubtype;\n  relationmap_[kDataTableName][kDataTableName] = kRelationElement;\n  relationmap_[kDataColumnName][kDataColumnName] = kRelationElement;\n\n  split_stmt_types_.insert(kStmt);\n  split_substmt_types_.insert({kStmt, kSelectClause, kSelectStmt});\n\n#define MYSQLFUZZ\n#ifdef MYSQLFUZZ\n  not_mutatable_types_.insert(\n      {kProgram, kStmtlist, kStmt, kCreateStmt, kDropStmt, kCreateTableStmt,\n       kCreateIndexStmt, kCreateTriggerStmt, kCreateViewStmt, kDropIndexStmt,\n       kDropTableStmt, kDropTriggerStmt, kDropViewStmt, kSelectStmt,\n       kUpdateStmt, kInsertStmt, kAlterStmt});\n#else\n  not_mutatable_types_.insert({kProgram, kStmtlist, kStmt, kCreateStmt,\n                               kDropStmt, kCreateTableStmt, kCreateIndexStmt,\n                               kCreateViewStmt, kDropIndexStmt, kDropTableStmt,\n                               kDropViewStmt, kSelectStmt, kUpdateStmt,\n                               kInsertStmt, kAlterStmt, kReindexStmt});\n#endif\n\n  return;\n}\n\nvector<IR *> Mutator::mutate(IR *input) {\n  vector<IR *> res;\n\n  if (!lucky_enough_to_be_mutated(input->mutated_times_)) {\n    return res;\n  }\n  auto tmp = strategy_delete(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  tmp = strategy_insert(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  tmp = strategy_replace(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  input->mutated_times_ += res.size();\n  for (auto i : res) {\n    if (i == NULL) continue;\n    i->mutated_times_ = input->mutated_times_;\n  }\n  return res;\n}\n\nbool Mutator::replace(IR *root, IR *old_ir, IR *new_ir) {\n  auto parent_ir = locate_parent(root, old_ir);\n  if (parent_ir == NULL) return false;\n  if (parent_ir->left_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->left_ = new_ir;\n    return true;\n  } else if (parent_ir->right_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->right_ = new_ir;\n    return true;\n  }\n  return false;\n}\n\nIR *Mutator::locate_parent(IR *root, IR *old_ir) {\n  if (root->left_ == old_ir || root->right_ == old_ir) return root;\n\n  if (root->left_ != NULL)\n    if (auto res = locate_parent(root->left_, old_ir)) return res;\n  if (root->right_ != NULL)\n    if (auto res = locate_parent(root->right_, old_ir)) return res;\n\n  return NULL;\n}\n\nIR *Mutator::strategy_delete(IR *cur) {\n  assert(cur);\n  MUTATESTART\n\n  DOLEFT\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  res->left_ = NULL;\n\n  DORIGHT\n  res = deep_copy(cur);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->right_ = NULL;\n\n  DOBOTH\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->left_ = res->right_ = NULL;\n\n  MUTATEEND\n}\n\nIR *Mutator::strategy_insert(IR *cur) {\n  assert(cur);\n\n  auto res = deep_copy(cur);\n  auto parent_type = cur->type_;\n\n  if (res->right_ == NULL && res->left_ != NULL) {\n    auto left_type = res->left_->type_;\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->left_ != NULL && fetch_ir->left_->type_ == left_type &&\n          fetch_ir->right_ != NULL) {\n        res->right_ = deep_copy(fetch_ir->right_);\n        return res;\n      }\n    }\n  } else if (res->right_ != NULL && res->left_ == NULL) {\n    auto right_type = res->left_->type_;\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->right_ != NULL && fetch_ir->right_->type_ == right_type &&\n          fetch_ir->left_ != NULL) {\n        res->left_ = deep_copy(fetch_ir->left_);\n        return res;\n      }\n    }\n  } else if (res->left_ == NULL && res->right_ == NULL) {\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->right_ != NULL && fetch_ir->left_ != NULL) {\n        res->left_ = deep_copy(fetch_ir->left_);\n        res->right_ = deep_copy(fetch_ir->right_);\n        return res;\n      }\n    }\n  }\n\n  return res;\n}\n\nIR *Mutator::strategy_replace(IR *cur) {\n  assert(cur);\n\n  MUTATESTART\n\n  DOLEFT\n  if (cur->left_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_node = get_ir_from_library(res->left_->type_);\n    new_node->data_type_ = res->left_->data_type_;\n    deep_delete(res->left_);\n    res->left_ = deep_copy(new_node);\n  }\n\n  DORIGHT\n  if (cur->right_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_node = get_ir_from_library(res->right_->type_);\n    new_node->data_type_ = res->right_->data_type_;\n    deep_delete(res->right_);\n    res->right_ = deep_copy(new_node);\n  }\n\n  DOBOTH\n  if (cur->left_ != NULL && cur->right_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_left = get_ir_from_library(res->left_->type_);\n    auto new_right = get_ir_from_library(res->right_->type_);\n    new_left->data_type_ = res->left_->data_type_;\n    new_right->data_type_ = res->right_->data_type_;\n    deep_delete(res->right_);\n    res->right_ = deep_copy(new_right);\n\n    deep_delete(res->left_);\n    res->left_ = deep_copy(new_left);\n  }\n\n  MUTATEEND\n\n  return res;\n}\n\nbool Mutator::lucky_enough_to_be_mutated(unsigned int mutated_times) {\n  if (get_rand_int(mutated_times + 1) < LUCKY_NUMBER) {\n    return true;\n  }\n  return false;\n}\n\npair<string, string> Mutator::get_data_2d_by_type(DATATYPE type1,\n                                                  DATATYPE type2) {\n  pair<string, string> res(\"\", \"\");\n  auto size = data_library_2d_[type1].size();\n\n  if (size == 0) return res;\n  auto rint = get_rand_int(size);\n\n  int counter = 0;\n  for (auto &i : data_library_2d_[type1]) {\n    if (counter++ == rint) {\n      return std::make_pair(i.first, vector_rand_ele(i.second[type2]));\n    }\n  }\n  return res;\n}\n\nIR *Mutator::generate_ir_by_type(IRTYPE type) {\n  auto ast_node = generate_ast_node_by_type(type);\n  ast_node->generate();\n  vector<IR *> tmp_vector;\n  ast_node->translate(tmp_vector);\n  assert(tmp_vector.size());\n\n  return tmp_vector[tmp_vector.size() - 1];\n}\n\nIR *Mutator::get_ir_from_library(IRTYPE type) {\n  const int generate_prop = 1;\n  const int threshold = 0;\n  static IR *empty_ir = new IR(kStringLiteral, \"\");\n#ifdef USEGENERATE\n  if (ir_library_[type].empty() == true ||\n      (get_rand_int(400) == 0 && type != kUnknown)) {\n    auto ir = generate_ir_by_type(type);\n    add_ir_to_library_no_deepcopy(ir);\n    return ir;\n  }\n#endif\n  if (ir_library_[type].empty()) return empty_ir;\n  return vector_rand_ele(ir_library_[type]);\n}\n\nstring Mutator::get_a_string() {\n  unsigned com_size = common_string_library_.size();\n  unsigned lib_size = string_library_.size();\n  unsigned double_lib_size = lib_size * 2;\n\n  unsigned rand_int = get_rand_int(double_lib_size + com_size);\n  if (rand_int < double_lib_size) {\n    return string_library_[rand_int >> 1];\n  } else {\n    rand_int -= double_lib_size;\n    return common_string_library_[rand_int];\n  }\n}\n\nunsigned long Mutator::get_a_val() {\n  assert(value_library_.size());\n\n  return vector_rand_ele(value_library_);\n}\n\nunsigned long Mutator::hash(string &sql) {\n  return ducking_hash(sql.c_str(), sql.size());\n}\n\nunsigned long Mutator::hash(IR *root) {\n  auto tmp_str = move(root->to_string());\n  return this->hash(tmp_str);\n}\n\nvoid Mutator::debug(IR *root) {\n  for (auto &i : data_library_[kDataFunctionName]) {\n    cout << i << endl;\n  }\n}\n\nMutator::~Mutator() {}\n\nvoid Mutator::extract_struct(IR *root) {\n  static int counter = 0;\n  auto type = root->type_;\n  if (root->left_) {\n    extract_struct(root->left_);\n  }\n  if (root->right_) {\n    extract_struct(root->right_);\n  }\n\n  if (root->left_ || root->right_) return;\n\n  if (root->data_type_ != kDataWhatever) {\n    root->str_val_ = \"x\";\n    return;\n  }\n\n  if (string_types_.find(type) != string_types_.end()) {\n    root->str_val_ = \"'x'\";\n  } else if (int_types_.find(type) != int_types_.end()) {\n    root->int_val_ = 1;\n  } else if (float_types_.find(type) != float_types_.end()) {\n    root->float_val_ = 1.0;\n  }\n}\n\nvoid Mutator::extract_struct2(IR *root) {\n  static int counter = 0;\n  auto type = root->type_;\n  if (root->left_) {\n    extract_struct2(root->left_);\n  }\n  if (root->right_) {\n    extract_struct2(root->right_);\n  }\n\n  if (root->left_ || root->right_) return;\n\n  if (root->data_type_ != kDataWhatever) {\n    root->str_val_ = \"x\" + to_string(counter++);\n    return;\n  }\n\n  if (string_types_.find(type) != string_types_.end()) {\n    root->str_val_ = \"'x'\";\n  } else if (int_types_.find(type) != int_types_.end()) {\n    root->int_val_ = 1;\n  } else if (float_types_.find(type) != float_types_.end()) {\n    root->float_val_ = 1.0;\n  }\n}\n\nvoid Mutator::reset_data_library() {\n  data_library_.clear();\n  data_library_2d_.clear();\n}\n\nstring Mutator::parse_data(string &input) {\n  string res;\n  if (!input.compare(\"_int_\")) {\n    res = to_string(get_a_val());\n  } else if (!input.compare(\"_empty_\")) {\n    res = \"\";\n  } else if (!input.compare(\"_boolean_\")) {\n    if (get_rand_int(2) == 0)\n      res = \"false\";\n    else\n      res = \"true\";\n  } else if (!input.compare(\"_string_\")) {\n    res = get_a_string();\n  } else {\n    res = input;\n  }\n\n  return res;\n}\n\nbool Mutator::validate(IR *&root) {\n  reset_data_library();\n  string sql = root->to_string();\n  auto ast = parser(sql);\n  if (ast == NULL) return false;\n\n  deep_delete(root);\n  root = NULL;\n\n  vector<IR *> ir_vector;\n  ast->translate(ir_vector);\n  ast->deep_delete();\n\n  root = ir_vector[ir_vector.size() - 1];\n  reset_id_counter();\n\n  if (fix(root) == false) {\n    return false;\n  }\n\n  return true;\n}\n\nunsigned int Mutator::calc_node(IR *root) {\n  unsigned int res = 0;\n  if (root->left_) res += calc_node(root->left_);\n  if (root->right_) res += calc_node(root->right_);\n\n  return res + 1;\n}\n\nbool Mutator::fix(IR *root) {\n  map<IR **, IR *> m_save;\n  bool res = true;\n\n  auto stmts = split_to_stmt(root, m_save, split_stmt_types_);\n\n  if (stmts.size() > 8) {\n    connect_back(m_save);\n    return false;\n  }\n\n  clear_scope_library(true);\n  for (auto &stmt : stmts) {\n    map<IR **, IR *> m_substmt_save;\n    auto substmts = split_to_stmt(stmt, m_substmt_save, split_substmt_types_);\n\n    int stmt_num = substmts.size();\n    if (stmt_num > 4) {\n      connect_back(m_save);\n      connect_back(m_substmt_save);\n      return false;\n    }\n    for (auto &substmt : substmts) {\n      clear_scope_library(false);\n      int tmp_node_num = calc_node(substmt);\n      if ((stmt_num == 1 && tmp_node_num > 150) || tmp_node_num > 120) {\n        connect_back(m_save);\n        connect_back(m_substmt_save);\n        return false;\n      }\n      res = fix_one(substmt, scope_library_) && res;\n\n      if (res == false) {\n        connect_back(m_save);\n        connect_back(m_substmt_save);\n        return false;\n      }\n    }\n    res = connect_back(m_substmt_save) && res;\n  }\n  res = connect_back(m_save) && res;\n\n  return res;\n}\n\nvector<IR *> Mutator::split_to_stmt(IR *root, map<IR **, IR *> &m_save,\n                                    set<IRTYPE> &split_set) {\n  vector<IR *> res;\n  deque<IR *> bfs = {root};\n\n  while (!bfs.empty()) {\n    auto node = bfs.front();\n    bfs.pop_front();\n\n    if (node && node->left_) bfs.push_back(node->left_);\n    if (node && node->right_) bfs.push_back(node->right_);\n\n    if (node->left_ && find(split_set.begin(), split_set.end(),\n                            node->left_->type_) != split_set.end()) {\n      res.push_back(node->left_);\n      m_save[&node->left_] = node->left_;\n      node->left_ = NULL;\n    }\n    if (node->right_ && find(split_set.begin(), split_set.end(),\n                             node->right_->type_) != split_set.end()) {\n      res.push_back(node->right_);\n      m_save[&node->right_] = node->right_;\n      node->right_ = NULL;\n    }\n  }\n\n  if (find(split_set.begin(), split_set.end(), root->type_) != split_set.end())\n    res.push_back(root);\n\n  return res;\n}\n\nbool Mutator::connect_back(map<IR **, IR *> &m_save) {\n  for (auto &iter : m_save) {\n    *(iter.first) = iter.second;\n  }\n  return true;\n}\n\nstatic set<IR *> visited;\n\nbool Mutator::fix_one(IR *stmt_root,\n                      map<int, map<DATATYPE, vector<IR *>>> &scope_library) {\n  visited.clear();\n  analyze_scope(stmt_root);\n  auto graph = build_graph(stmt_root, scope_library);\n\n#ifdef GRAPHLOG\n  for (auto &iter : graph) {\n    cout << \"Node: \" << iter.first->to_string() << \" connected with:\" << endl;\n    for (auto &k : iter.second) {\n      cout << k->to_string() << endl;\n    }\n    cout << \"--------\" << endl;\n  }\n  cout << \"OUTPUT END\" << endl;\n#endif\n  return fill_stmt_graph(graph);\n}\n\nvoid Mutator::analyze_scope(IR *stmt_root) {\n  if (stmt_root->left_) {\n    analyze_scope(stmt_root->left_);\n  }\n  if (stmt_root->right_) {\n    analyze_scope(stmt_root->right_);\n  }\n\n  auto data_type = stmt_root->data_type_;\n  if (data_type == kDataWhatever) return;\n\n  scope_library_[stmt_root->scope_][data_type].push_back(stmt_root);\n}\n\nmap<IR *, vector<IR *>> Mutator::build_graph(\n    IR *stmt_root, map<int, map<DATATYPE, vector<IR *>>> &scope_library) {\n  map<IR *, vector<IR *>> res;\n  deque<IR *> bfs = {stmt_root};\n\n  while (!bfs.empty()) {\n    auto node = bfs.front();\n    bfs.pop_front();\n\n    auto cur_scope = node->scope_;\n    auto cur_data_flag = node->data_flag_;\n    auto cur_data_type = node->data_type_;\n\n    if (find(int_types_.begin(), int_types_.end(), node->type_) !=\n        int_types_.end()) {\n      if (get_rand_int(100) > 50)\n        node->int_val_ = vector_rand_ele(value_library_);\n      else\n        node->int_val_ = get_rand_int(100);\n    } else if (find(float_types_.begin(), float_types_.end(), node->type_) !=\n               float_types_.end()) {\n      node->float_val_ = (double)(get_rand_int(100000000));\n    }\n\n    if (node->left_) bfs.push_back(node->left_);\n    if (node->right_) bfs.push_back(node->right_);\n    if (cur_data_type == kDataWhatever) continue;\n\n    res[node];\n    cur_scope--;\n\n    if (relationmap_.find(cur_data_type) != relationmap_.end()) {\n      auto &target_data_type_map = relationmap_[cur_data_type];\n      for (auto &target : target_data_type_map) {\n        IR *pick_node = NULL;\n        if (isMapToClosestOne(cur_data_flag)) {\n          pick_node = find_closest_node(stmt_root, node, target.first);\n          if (pick_node && pick_node->scope_ != cur_scope) {\n            pick_node = NULL;\n          }\n        } else {\n          if (!node->str_val_.empty()) {\n          }\n\n          if (!isDefine(cur_data_flag) ||\n              relationmap_[cur_data_type][target.first] != kRelationElement) {\n            if (!scope_library[cur_scope][target.first].empty())\n              pick_node =\n                  vector_rand_ele(scope_library[cur_scope][target.first]);\n          }\n        }\n        if (pick_node != NULL) res[pick_node].push_back(node);\n      }\n    }\n  }\n\n  return res;\n}\n\nbool Mutator::fill_stmt_graph(map<IR *, vector<IR *>> &graph) {\n  bool res = true;\n  map<IR *, bool> zero_indegrees;\n  for (auto &iter : graph) {\n    if (zero_indegrees.find(iter.first) == zero_indegrees.end()) {\n      zero_indegrees[iter.first] = true;\n    }\n    for (auto ir : iter.second) {\n      zero_indegrees[ir] = false;\n    }\n  }\n  for (auto &iter : graph) {\n    auto type1 = iter.first->data_type_;\n    auto beg = iter.first;\n    if (zero_indegrees[beg] == false || visited.find(beg) != visited.end()) {\n      continue;\n    }\n    res &= fill_one(iter.first);\n    res &= fill_stmt_graph_one(graph, iter.first);\n  }\n\n  return res;\n}\n\nbool Mutator::fill_stmt_graph_one(map<IR *, vector<IR *>> &graph, IR *ir) {\n  if (graph.find(ir) == graph.end()) return true;\n\n  bool res = true;\n  auto type = ir->data_type_;\n  auto &vec = graph[ir];\n\n  if (!vec.empty()) {\n    for (auto d : vec) {\n      res = res & fill_one_pair(ir, d);\n      res = res & fill_stmt_graph_one(graph, d);\n    }\n  }\n  return res;\n}\n\nstatic bool replace_in_vector(string &old_str, string &new_str,\n                              vector<string> &victim) {\n  for (int i = 0; i < victim.size(); i++) {\n    if (victim[i] == old_str) {\n      victim[i] = new_str;\n      return true;\n    }\n  }\n  return false;\n}\n\nstatic bool remove_in_vector(string &str_to_remove, vector<string> &victim) {\n  for (auto iter = victim.begin(); iter != victim.end(); iter++) {\n    if (*iter == str_to_remove) {\n      victim.erase(iter);\n      return true;\n    }\n  }\n  return false;\n}\n\nbool Mutator::remove_one_from_datalibrary(DATATYPE datatype, string &key) {\n  return remove_in_vector(key, data_library_[datatype]);\n}\n\nbool Mutator::replace_one_from_datalibrary(DATATYPE datatype, string &old_str,\n                                           string &new_str) {\n  return replace_in_vector(old_str, new_str, data_library_[datatype]);\n}\n\nbool Mutator::remove_one_pair_from_datalibrary_2d(DATATYPE p_datatype,\n                                                  DATATYPE c_data_type,\n                                                  string &p_key) {\n  for (auto &value : data_library_2d_[p_datatype][p_key][c_data_type]) {\n    remove_one_from_datalibrary(c_data_type, value);\n  }\n\n  data_library_2d_[p_datatype][p_key].erase(c_data_type);\n  if (data_library_2d_[p_datatype][p_key].empty()) {\n    remove_one_from_datalibrary(p_datatype, p_key);\n    data_library_2d_[p_datatype].erase(p_key);\n  }\n\n  return true;\n}\n\n#define has_element(a, b) (find(a.begin(), a.end(), b) != (a).end())\n#define has_key(a, b) ((a).find(b) != (a).end())\n\nbool Mutator::replace_one_value_from_datalibray_2d(DATATYPE p_datatype,\n                                                   DATATYPE c_data_type,\n                                                   string &p_key,\n                                                   string &old_c_value,\n                                                   string &new_c_value) {\n  replace_one_from_datalibrary(c_data_type, old_c_value, new_c_value);\n  replace_in_vector(old_c_value, new_c_value,\n                    data_library_2d_[p_datatype][p_key][c_data_type]);\n  return true;\n}\n\nbool Mutator::fill_one(IR *ir) {\n  auto type = ir->data_type_;\n  visited.insert(ir);\n  if (isDefine(ir->data_flag_)) {\n    string new_name = gen_id_name();\n    data_library_[type].push_back(new_name);\n    ir->str_val_ = new_name;\n\n    for (auto iter : relationmap_) {\n      for (auto iter2 : iter.second) {\n        if (iter2.first == type && iter2.second == kRelationSubtype) {\n          data_library_2d_[type][new_name];\n        }\n      }\n    }\n    return true;\n  } else if (isAlias(ir->data_flag_)) {\n    string alias_target;\n    if (data_library_[type].size() != 0)\n      alias_target = vector_rand_ele(data_library_[type]);\n    else {\n      alias_target = get_rand_int(2) ? \"v0\" : \"v1\";\n    }\n\n    string new_name = gen_id_name();\n    data_library_[type].push_back(new_name);\n    ir->str_val_ = new_name;\n\n    if (has_key(data_library_2d_, type)) {\n      if (has_key(data_library_2d_[type], alias_target)) {\n        data_library_2d_[type][new_name] = data_library_2d_[type][alias_target];\n      }\n    }\n    return true;\n  }\n\n  else if (data_library_.find(type) != data_library_.end()) {\n    if (data_library_[type].empty()) {\n      ir->str_val_ = \"v0\";\n      return false;\n    }\n    ir->str_val_ = vector_rand_ele(data_library_[type]);\n    if (isUndefine(ir->data_flag_)) {\n      remove_one_from_datalibrary(ir->data_type_, ir->str_val_);\n      if (has_key(data_library_2d_, type) &&\n          has_key(data_library_2d_[type], ir->str_val_)) {\n        for (auto itr = data_library_2d_[type][ir->str_val_].begin();\n             has_key(data_library_2d_[type], ir->str_val_) &&\n             itr != data_library_2d_[type][ir->str_val_].end();\n             itr++) {\n          auto c_data_type = *itr;\n          remove_one_pair_from_datalibrary_2d(type, c_data_type.first,\n                                              ir->str_val_);\n          if (!has_key(data_library_2d_[type], ir->str_val_)) break;\n          itr--;\n        }\n      }\n    }\n    return true;\n  } else if (g_data_library_.find(type) != g_data_library_.end()) {\n    if (g_data_library_[type].empty()) {\n      return false;\n    }\n    ir->str_val_ = vector_rand_ele(g_data_library_[type]);\n    return true;\n  } else if (g_data_library_2d_.find(type) != g_data_library_2d_.end()) {\n    int choice = get_rand_int(g_data_library_2d_[type].size());\n    auto iter = g_data_library_2d_[type].begin();\n    while (choice > 0) {\n      iter++;\n      choice--;\n    }\n    ir->str_val_ = iter->first;\n    return true;\n  } else {\n    return false;\n  }\n  return true;\n}\n\nbool Mutator::fill_one_pair(IR *parent, IR *child) {\n  visited.insert(child);\n\n  bool is_define = isDefine(child->data_flag_);\n  bool is_replace = isReplace(child->data_flag_);\n  bool is_undefine = isUndefine(child->data_flag_);\n  bool is_alias = isAlias(child->data_flag_);\n\n  string new_name = \"\";\n  if (is_define || is_replace || is_alias) {\n    new_name = gen_id_name();\n  }\n\n  auto p_type = parent->data_type_;\n  auto c_type = child->data_type_;\n  auto p_str = parent->str_val_;\n\n  auto r_type = relationmap_[c_type][p_type];\n  switch (r_type) {\n    case kRelationElement:\n\n      if (is_replace) {\n        child->str_val_ = new_name;\n        replace_one_from_datalibrary(c_type, p_str, new_name);\n\n        if (has_key(data_library_2d_, p_type)) {\n          if (has_key(data_library_2d_[p_type], p_str)) {\n            auto tmp = data_library_2d_[p_type].extract(p_str);\n            tmp.key() = new_name;\n            data_library_2d_[p_type].insert(move(tmp));\n          }\n        } else {\n          for (auto &i1 : data_library_2d_) {\n            for (auto &i2 : i1.second) {\n              for (auto &i3 : i2.second) {\n                if (i3.first == c_type) {\n                  if (has_element(i3.second, p_str)) {\n                    replace_in_vector(p_str, new_name, i3.second);\n                    goto END;\n                  }\n                }\n              }\n            }\n          }\n        }\n      } else if (is_alias) {\n        child->str_val_ = new_name;\n\n        if (has_key(data_library_2d_, p_type)) {\n          if (has_key(data_library_2d_[p_type], p_str)) {\n            data_library_2d_[p_type][new_name] =\n                data_library_2d_[p_type][p_str];\n            data_library_[p_type].push_back(new_name);\n          }\n        }\n      } else {\n        child->str_val_ = p_str;\n      }\n    END:\n      break;\n\n    case kRelationSubtype:\n      if (data_library_2d_.find(p_type) != data_library_2d_.end()) {\n        if (data_library_2d_[p_type].find(p_str) !=\n            data_library_2d_[p_type].end()) {\n          if (is_define) {\n            data_library_2d_[p_type][p_str][c_type].push_back(new_name);\n            child->str_val_ = new_name;\n            data_library_[c_type].push_back(new_name);\n            break;\n          } else if (is_undefine) {\n            if ((data_library_2d_[p_type][p_str][c_type]).empty()) {\n              child->str_val_ = \"v1\";\n              break;\n            }\n            child->str_val_ =\n                vector_rand_ele(data_library_2d_[p_type][p_str][c_type]);\n            remove_in_vector(child->str_val_,\n                             data_library_2d_[p_type][p_str][c_type]);\n            remove_in_vector(child->str_val_, data_library_[c_type]);\n            break;\n          } else if (data_library_2d_[p_type][p_str].find(c_type) !=\n                     data_library_2d_[p_type][p_str].end()) {\n            if (data_library_2d_[p_type][p_str][c_type].empty() == false) {\n              child->str_val_ =\n                  vector_rand_ele(data_library_2d_[p_type][p_str][c_type]);\n            }\n          } else {\n            if (data_library_[c_type].empty()) {\n              if (get_rand_int(2) == 1) {\n                child->str_val_ = \"v0\";\n              } else {\n                child->str_val_ = \"v1\";\n              }\n            } else\n              child->str_val_ = vector_rand_ele(data_library_[c_type]);\n          }\n        } else {\n        }\n      } else if (g_data_library_2d_.find(p_type) != g_data_library_2d_.end()) {\n        if (g_data_library_2d_[p_type].find(p_str) !=\n            g_data_library_2d_[p_type].end()) {\n          if (g_data_library_2d_[p_type][p_str].find(c_type) !=\n              g_data_library_2d_[p_type][p_str].end()) {\n            if (g_data_library_2d_[p_type][p_str][c_type].empty() == false) {\n              child->str_val_ =\n                  vector_rand_ele(g_data_library_2d_[p_type][p_str][c_type]);\n            }\n          }\n        }\n      } else {\n        return false;\n      }\n\n      break;\n\n    default:\n      assert(0);\n      break;\n  }\n\n  return true;\n}\n\nvoid Mutator::clear_scope_library(bool clear_define) {\n  int level = clear_define ? 0 : 1;\n  int sz = scope_library_.size();\n  scope_library_.clear();\n\n  return;\n}\n\nstatic IR *search_mapped_ir(IR *ir, DATATYPE type) {\n  vector<IR *> to_search;\n  vector<IR *> backup;\n  to_search.push_back(ir);\n  while (!to_search.empty()) {\n    for (auto i : to_search) {\n      if (i->data_type_ == type) {\n        return i;\n      }\n      if (i->left_) {\n        backup.push_back(i->left_);\n      }\n      if (i->right_) {\n        backup.push_back(i->right_);\n      }\n    }\n    to_search = move(backup);\n    backup.clear();\n  }\n  return NULL;\n}\n\nIR *Mutator::find_closest_node(IR *stmt_root, IR *node, DATATYPE type) {\n  auto cur = node;\n  while (true) {\n    auto parent = locate_parent(stmt_root, cur);\n    if (!parent) break;\n    bool flag = false;\n    while (parent->left_ == NULL || parent->right_ == NULL) {\n      cur = parent;\n      parent = locate_parent(stmt_root, cur);\n      if (!parent) {\n        flag = true;\n        break;\n      }\n    }\n    if (flag) return NULL;\n\n    auto search_root = parent->left_ == cur ? parent->right_ : parent->left_;\n    auto res = search_mapped_ir(search_root, type);\n    if (res) return res;\n\n    cur = parent;\n  }\n  return NULL;\n}\n\nint Mutator::try_fix(char *buf, int len, char *&new_buf, int &new_len) {\n  string sql(buf);\n  auto ast = parser(sql);\n\n  new_buf = buf;\n  new_len = len;\n  if (ast == NULL) return 0;\n\n  vector<IR *> v_ir;\n  auto ir_root = ast->translate(v_ir);\n  ast->deep_delete();\n\n  if (ir_root == NULL) return 0;\n  bool fixed_result = validate(ir_root);\n  string fixed;\n  if (fixed_result != false) {\n    fixed = ir_root->to_string();\n  }\n  deep_delete(ir_root);\n  if (fixed.empty()) return 0;\n\n  char *sfixed = (char *)malloc(fixed.size() + 1);\n  memcpy(sfixed, fixed.c_str(), fixed.size());\n  sfixed[fixed.size()] = 0;\n\n  new_buf = sfixed;\n  new_len = fixed.size();\n\n  return 1;\n}\n"
  },
  {
    "path": "srcs/internal/mysql/srcs/utils.cpp",
    "content": "#include \"../include/utils.h\"\n\n#include <dirent.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <unistd.h>\nvoid trim_string(string &res) {\n  int count = 0;\n  int idx = 0;\n  bool expect_space = false;\n  for (int i = 0; i < res.size(); i++) {\n    if (res[i] == ';' && i != res.size() - 1) {\n      res[i + 1] = '\\n';\n    }\n    if (res[i] == ' ') {\n      if (expect_space == false) {\n        continue;\n      } else {\n        expect_space = false;\n        res[idx++] = res[i];\n        count++;\n      }\n    } else {\n      expect_space = true;\n      res[idx++] = res[i];\n      count++;\n    }\n  }\n\n  res.resize(count);\n}\n\nstring gen_string() { return string(\"x\"); }\n\ndouble gen_float() { return 1.2; }\n\nlong gen_long() { return 1; }\n\nint gen_int() { return 1; }\n\ntypedef unsigned long uint64_t;\n\nProgram *parser(string sql) {\n  yyscan_t scanner;\n  YY_BUFFER_STATE state;\n  Program *p = new Program();\n\n  if (ff_lex_init(&scanner)) {\n    return NULL;\n  }\n  state = ff__scan_string(sql.c_str(), scanner);\n\n  int ret = ff_parse(p, scanner);\n\n  ff__delete_buffer(state, scanner);\n  ff_lex_destroy(scanner);\n  if (ret != 0) {\n    p->deep_delete();\n    return NULL;\n  }\n\n  return p;\n}\n\nuint64_t ducking_hash(const void *key, int len) {\n  const uint64_t m = 0xc6a4a7935bd1e995;\n  const int r = 47;\n  uint64_t h = 0xdeadbeefdeadbeef ^ (len * m);\n\n  const uint64_t *data = (const uint64_t *)key;\n  const uint64_t *end = data + (len / 8);\n\n  while (data != end) {\n    uint64_t k = *data++;\n\n    k *= m;\n    k ^= k >> r;\n    k *= m;\n\n    h ^= k;\n    h *= m;\n  }\n\n  const unsigned char *data2 = (const unsigned char *)data;\n\n  switch (len & 7) {\n    case 7:\n      h ^= uint64_t(data2[6]) << 48;\n    case 6:\n      h ^= uint64_t(data2[5]) << 40;\n    case 5:\n      h ^= uint64_t(data2[4]) << 32;\n    case 4:\n      h ^= uint64_t(data2[3]) << 24;\n    case 3:\n      h ^= uint64_t(data2[2]) << 16;\n    case 2:\n      h ^= uint64_t(data2[1]) << 8;\n    case 1:\n      h ^= uint64_t(data2[0]);\n      h *= m;\n  };\n\n  h ^= h >> r;\n  h *= m;\n  h ^= h >> r;\n\n  return h;\n}\n\nvector<string> get_all_files_in_dir(const char *dir_name) {\n  vector<string> file_list;\n  if (NULL == dir_name) {\n    cout << \" dir_name is null ! \" << endl;\n    return file_list;\n  }\n\n  struct stat s;\n  lstat(dir_name, &s);\n  if (!S_ISDIR(s.st_mode)) {\n    cout << \"dir_name is not a valid directory !\" << endl;\n    return file_list;\n  }\n\n  struct dirent *filename;  // return value for readdir()\n  DIR *dir;                 // return value for opendir()\n  dir = opendir(dir_name);\n  if (NULL == dir) {\n    cout << \"Can not open dir \" << dir_name << endl;\n    return file_list;\n  }\n  cout << \"Successfully opened the dir !\" << endl;\n\n  while ((filename = readdir(dir)) != NULL) {\n    if (strcmp(filename->d_name, \".\") == 0 ||\n        strcmp(filename->d_name, \"..\") == 0)\n      continue;\n    cout << filename->d_name << endl;\n    file_list.push_back(string(filename->d_name));\n  }\n  return file_list;\n}\n"
  },
  {
    "path": "srcs/internal/postgresql/include/ast.h",
    "content": "#ifndef __AST_H__\n#define __AST_H__\n#include <iostream>\n#include <string>\n#include <vector>\n\n#include \"define.h\"\nusing namespace std;\n\nenum NODETYPE {\n#define DECLARE_TYPE(v) v,\n  ALLTYPE(DECLARE_TYPE)\n#undef DECLARE_TYPE\n};\ntypedef NODETYPE IRTYPE;\n\nenum CASEIDX {\n  CASE0,\n  CASE1,\n  CASE2,\n  CASE3,\n  CASE4,\n  CASE5,\n  CASE6,\n  CASE7,\n  CASE8,\n  CASE9,\n  CASE10,\n  CASE11,\n  CASE12,\n  CASE13,\n  CASE14,\n  CASE15,\n  CASE16,\n  CASE17,\n  CASE18,\n  CASE19,\n  CASE20,\n  CASE21,\n  CASE22,\n  CASE23,\n  CASE24,\n  CASE25,\n  CASE26,\n  CASE27,\n  CASE28,\n  CASE29,\n  CASE30,\n  CASE31,\n  CASE32,\n  CASE33,\n  CASE34,\n  CASE35,\n  CASE36,\n  CASE37,\n  CASE38,\n  CASE39,\n  CASE40,\n  CASE41,\n  CASE42,\n  CASE43,\n  CASE44,\n  CASE45,\n  CASE46,\n  CASE47,\n  CASE48,\n  CASE49,\n  CASE50,\n  CASE51,\n  CASE52,\n  CASE53,\n  CASE54,\n  CASE55,\n  CASE56,\n  CASE57,\n  CASE58,\n  CASE59,\n  CASE60,\n  CASE61,\n  CASE62,\n  CASE63,\n  CASE64,\n  CASE65,\n  CASE66,\n  CASE67,\n  CASE68,\n  CASE69,\n  CASE70,\n  CASE71,\n  CASE72,\n  CASE73,\n  CASE74,\n  CASE75,\n  CASE76,\n  CASE77,\n  CASE78,\n  CASE79,\n  CASE80,\n  CASE81,\n  CASE82,\n  CASE83,\n  CASE84,\n  CASE85,\n  CASE86,\n  CASE87,\n  CASE88,\n  CASE89,\n  CASE90,\n  CASE91,\n  CASE92,\n  CASE93,\n  CASE94,\n  CASE95,\n  CASE96,\n  CASE97,\n  CASE98,\n  CASE99,\n  CASE100,\n  CASE101,\n  CASE102,\n  CASE103,\n  CASE104,\n  CASE105,\n  CASE106,\n  CASE107,\n  CASE108,\n  CASE109,\n  CASE110,\n  CASE111,\n  CASE112,\n  CASE113,\n  CASE114,\n  CASE115,\n  CASE116,\n  CASE117,\n  CASE118,\n  CASE119,\n  CASE120,\n  CASE121,\n  CASE122,\n  CASE123,\n  CASE124,\n  CASE125,\n  CASE126,\n  CASE127,\n  CASE128,\n  CASE129,\n  CASE130,\n  CASE131,\n  CASE132,\n  CASE133,\n  CASE134,\n  CASE135,\n  CASE136,\n  CASE137,\n  CASE138,\n  CASE139,\n  CASE140,\n  CASE141,\n  CASE142,\n  CASE143,\n  CASE144,\n  CASE145,\n  CASE146,\n  CASE147,\n  CASE148,\n  CASE149,\n  CASE150,\n  CASE151,\n  CASE152,\n  CASE153,\n  CASE154,\n  CASE155,\n  CASE156,\n  CASE157,\n  CASE158,\n  CASE159,\n  CASE160,\n  CASE161,\n  CASE162,\n  CASE163,\n  CASE164,\n  CASE165,\n  CASE166,\n  CASE167,\n  CASE168,\n  CASE169,\n  CASE170,\n  CASE171,\n  CASE172,\n  CASE173,\n  CASE174,\n  CASE175,\n  CASE176,\n  CASE177,\n  CASE178,\n  CASE179,\n  CASE180,\n  CASE181,\n  CASE182,\n  CASE183,\n  CASE184,\n  CASE185,\n  CASE186,\n  CASE187,\n  CASE188,\n  CASE189,\n  CASE190,\n  CASE191,\n  CASE192,\n  CASE193,\n  CASE194,\n  CASE195,\n  CASE196,\n  CASE197,\n  CASE198,\n  CASE199,\n  CASE200,\n  CASE201,\n  CASE202,\n  CASE203,\n  CASE204,\n  CASE205,\n  CASE206,\n  CASE207,\n  CASE208,\n  CASE209,\n  CASE210,\n  CASE211,\n  CASE212,\n  CASE213,\n  CASE214,\n  CASE215,\n  CASE216,\n  CASE217,\n  CASE218,\n  CASE219,\n  CASE220,\n  CASE221,\n  CASE222,\n  CASE223,\n  CASE224,\n  CASE225,\n  CASE226,\n  CASE227,\n  CASE228,\n  CASE229,\n  CASE230,\n  CASE231,\n  CASE232,\n  CASE233,\n  CASE234,\n  CASE235,\n  CASE236,\n  CASE237,\n  CASE238,\n  CASE239,\n  CASE240,\n  CASE241,\n  CASE242,\n  CASE243,\n  CASE244,\n  CASE245,\n  CASE246,\n  CASE247,\n  CASE248,\n  CASE249,\n  CASE250,\n  CASE251,\n  CASE252,\n  CASE253,\n  CASE254,\n  CASE255,\n  CASE256,\n  CASE257,\n  CASE258,\n  CASE259,\n  CASE260,\n  CASE261,\n  CASE262,\n  CASE263,\n  CASE264,\n  CASE265,\n  CASE266,\n  CASE267,\n  CASE268,\n  CASE269,\n  CASE270,\n  CASE271,\n  CASE272,\n  CASE273,\n  CASE274,\n  CASE275,\n  CASE276,\n  CASE277,\n  CASE278,\n  CASE279,\n  CASE280,\n  CASE281,\n  CASE282,\n  CASE283,\n  CASE284,\n  CASE285,\n  CASE286,\n  CASE287,\n  CASE288,\n  CASE289,\n  CASE290,\n  CASE291,\n  CASE292,\n  CASE293,\n  CASE294,\n  CASE295,\n  CASE296,\n  CASE297,\n  CASE298,\n  CASE299,\n  CASE300,\n  CASE301,\n  CASE302,\n  CASE303,\n  CASE304,\n  CASE305,\n  CASE306,\n  CASE307,\n  CASE308,\n  CASE309,\n  CASE310,\n  CASE311,\n  CASE312,\n  CASE313,\n  CASE314,\n  CASE315,\n  CASE316,\n  CASE317,\n  CASE318,\n  CASE319,\n  CASE320,\n  CASE321,\n  CASE322,\n  CASE323,\n  CASE324,\n  CASE325,\n  CASE326,\n  CASE327,\n  CASE328,\n  CASE329,\n  CASE330,\n  CASE331,\n  CASE332,\n  CASE333,\n  CASE334,\n  CASE335,\n  CASE336,\n  CASE337,\n  CASE338,\n  CASE339,\n  CASE340,\n  CASE341,\n  CASE342,\n  CASE343,\n  CASE344,\n  CASE345,\n  CASE346,\n  CASE347,\n  CASE348,\n  CASE349,\n  CASE350,\n  CASE351,\n  CASE352,\n  CASE353,\n  CASE354,\n  CASE355,\n  CASE356,\n  CASE357,\n  CASE358,\n  CASE359,\n  CASE360,\n  CASE361,\n  CASE362,\n  CASE363,\n  CASE364,\n  CASE365,\n  CASE366,\n  CASE367,\n  CASE368,\n  CASE369,\n  CASE370,\n  CASE371,\n  CASE372,\n  CASE373,\n  CASE374,\n  CASE375,\n  CASE376,\n  CASE377,\n  CASE378,\n  CASE379,\n  CASE380,\n  CASE381,\n  CASE382,\n  CASE383,\n  CASE384,\n  CASE385,\n  CASE386,\n  CASE387,\n  CASE388,\n  CASE389,\n  CASE390,\n  CASE391,\n  CASE392,\n  CASE393,\n  CASE394,\n  CASE395,\n  CASE396,\n  CASE397,\n  CASE398,\n  CASE399,\n};\n\nenum DATATYPE {\n#define DECLARE_TYPE(v) k##v,\n  ALLDATATYPE(DECLARE_TYPE)\n#undef DECLARE_TYPE\n};\n\n#define GEN_NAME() name_ = gen_id_name();\n\nstatic unsigned long g_id_counter;\n\nstatic inline void reset_id_counter() { g_id_counter = 0; }\n\nstatic string gen_id_name() { return \"v\" + to_string(g_id_counter++); }\n\nclass IROperator {\n public:\n  IROperator(string prefix = \"\", string middle = \"\", string suffix = \"\")\n      : prefix_(prefix), middle_(middle), suffix_(suffix) {}\n\n  string prefix_;\n  string middle_;\n  string suffix_;\n};\n\nenum UnionType {\n  kUnionUnknown = 0,\n  kUnionString = 1,\n  kUnionFloat,\n  kUnionInt,\n  kUnionLong,\n  kUnionBool,\n};\n\nenum DATAFLAG {\n  kUse = 0x8,\n  kMapToClosestOne = 0x10,\n  kNoSplit = 0x100,\n  kGlobal = 0x4,\n  kReplace = 0x40,\n  kUndefine = 0x2,\n  kAlias = 0x80,\n  kMapToAll = 0x20,\n  kDefine = 0x1,\n};\n#define isUse(a) ((a)&kUse)\n#define isMapToClosestOne(a) ((a)&kMapToClosestOne)\n#define isNoSplit(a) ((a)&kNoSplit)\n#define isGlobal(a) ((a)&kGlobal)\n#define isReplace(a) ((a)&kReplace)\n#define isUndefine(a) ((a)&kUndefine)\n#define isAlias(a) ((a)&kAlias)\n#define isMapToAll(a) ((a)&kMapToAll)\n#define isDefine(a) ((a)&kDefine)\n\nclass IR {\n public:\n  IR(IRTYPE type, IROperator* op, IR* left = NULL, IR* right = NULL)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        data_type_(kDataWhatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, string str_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        str_val_(str_val),\n        op_(NULL),\n        left_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(data_type),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, bool b_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        bool_val_(b_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, unsigned long long_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        long_val_(long_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, int int_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        int_val_(int_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, double f_val, DATATYPE data_type = kDataWhatever,\n     int scope = -1, DATAFLAG flag = kUse)\n      : type_(type),\n        float_val_(f_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, IROperator* op, IR* left, IR* right, double f_val,\n     string str_val, string name, unsigned int mutated_times, int scope,\n     DATAFLAG flag)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        name_(name),\n        str_val_(str_val),\n        float_val_(f_val),\n        mutated_times_(mutated_times),\n        data_type_(kDataWhatever),\n        scope_(scope),\n        data_flag_(flag) {}\n\n  IR(const IR* ir, IR* left, IR* right) {\n    this->type_ = ir->type_;\n    if (ir->op_ != NULL)\n      this->op_ = OP3(ir->op_->prefix_, ir->op_->middle_, ir->op_->suffix_);\n    else {\n      this->op_ = OP0();\n    }\n    this->left_ = left;\n    this->right_ = right;\n    this->str_val_ = ir->str_val_;\n    this->long_val_ = ir->long_val_;\n    this->data_type_ = ir->data_type_;\n    this->scope_ = ir->scope_;\n    this->data_flag_ = ir->data_flag_;\n    this->name_ = ir->name_;\n    this->operand_num_ = ir->operand_num_;\n    this->mutated_times_ = ir->mutated_times_;\n  }\n\n  union {\n    int int_val_;\n    unsigned long long_val_;\n    double float_val_;\n    bool bool_val_;\n  };\n\n  int scope_;\n  DATAFLAG data_flag_;\n  DATATYPE data_type_;\n  IRTYPE type_;\n  string name_;\n\n  string str_val_;\n\n  IROperator* op_;\n  IR* left_;\n  IR* right_;\n  int operand_num_;\n  unsigned int mutated_times_ = 0;\n\n  string to_string();\n  string to_string_core();\n};\n\nclass Node {\n public:\n  void set_sub_type(unsigned int i) { case_idx_ = i; }\n  NODETYPE type_;\n  DATATYPE data_type_;\n  DATAFLAG data_flag_;\n  int scope_;\n  unsigned int case_idx_;\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate() {}\n  virtual void deep_delete() {}\n  Node(){};\n  ~Node(){};\n};\n\nNode* generate_ast_node_by_type(IRTYPE);\n\nDATATYPE get_datatype_by_string(string s);\n\nNODETYPE get_nodetype_by_string(string s);\n\nstring get_string_by_nodetype(NODETYPE tt);\nstring get_string_by_datatype(DATATYPE tt);\nIR* deep_copy(const IR* root);\n\nvoid deep_delete(IR* root);\n\n#define DECLARE_CLASS(v) class v;\nALLCLASS(DECLARE_CLASS);\n#undef DECLARE_CLASS\n\nclass Program : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Stmtlist* stmtlist_;\n};\n\nclass Stmtlist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Stmt* stmt_;\n  Stmtlist* stmtlist_;\n};\n\nclass Stmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  InsertStmt* insert_stmt_;\n  DropStmt* drop_stmt_;\n  CreateStmt* create_stmt_;\n  SelectStmt* select_stmt_;\n  AlterStmt* alter_stmt_;\n  ReindexStmt* reindex_stmt_;\n  UpdateStmt* update_stmt_;\n};\n\nclass CreateStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CreateIndexStmt* create_index_stmt_;\n  CreateViewStmt* create_view_stmt_;\n  CreateTableStmt* create_table_stmt_;\n};\n\nclass DropStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  DropTableStmt* drop_table_stmt_;\n  DropViewStmt* drop_view_stmt_;\n  DropIndexStmt* drop_index_stmt_;\n};\n\nclass AlterStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  AlterAction* alter_action_;\n  TableName* table_name_;\n};\n\nclass SelectStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectNoParens* select_no_parens_;\n  SelectWithParens* select_with_parens_;\n};\n\nclass SelectWithParens : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectNoParens* select_no_parens_;\n  SelectWithParens* select_with_parens_;\n};\n\nclass SelectNoParens : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectClauseList* select_clause_list_;\n  OptWithClause* opt_with_clause_;\n  OptOrderClause* opt_order_clause_;\n  OptLimitClause* opt_limit_clause_;\n};\n\nclass SelectClauseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectClauseList* select_clause_list_;\n  CombineClause* combine_clause_;\n  SelectClause* select_clause_;\n};\n\nclass SelectClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptGroupClause* opt_group_clause_;\n  OptAllOrDistinct* opt_all_or_distinct_;\n  OptFromClause* opt_from_clause_;\n  OptWindowClause* opt_window_clause_;\n  SelectTarget* select_target_;\n  OptWhereClause* opt_where_clause_;\n};\n\nclass CombineClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptFromClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FromClause* from_clause_;\n};\n\nclass SelectTarget : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptWindowClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowClause* window_clause_;\n};\n\nclass WindowClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowDefList* window_def_list_;\n};\n\nclass WindowDefList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WindowDef* window_def_;\n  WindowDefList* window_def_list_;\n};\n\nclass WindowDef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Window* window_;\n  WindowName* window_name_;\n};\n\nclass WindowName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass Window : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptExistWindowName* opt_exist_window_name_;\n  OptFrameClause* opt_frame_clause_;\n  OptPartition* opt_partition_;\n  OptOrderClause* opt_order_clause_;\n};\n\nclass OptPartition : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptFrameClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBoundStart* frame_bound_start_;\n  OptFrameExclude* opt_frame_exclude_;\n  RangeOrRows* range_or_rows_;\n  FrameBoundEnd* frame_bound_end_;\n};\n\nclass RangeOrRows : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass FrameBoundStart : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBound* frame_bound_;\n};\n\nclass FrameBoundEnd : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameBound* frame_bound_;\n};\n\nclass FrameBound : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptFrameExclude : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  FrameExclude* frame_exclude_;\n};\n\nclass FrameExclude : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptExistWindowName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass OptGroupClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n  OptHavingClause* opt_having_clause_;\n};\n\nclass OptHavingClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass OptWhereClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  WhereClause* where_clause_;\n};\n\nclass WhereClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n};\n\nclass FromClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableRef* table_ref_;\n};\n\nclass TableRef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SelectNoParens* select_no_parens_;\n  TableRef* table_ref_;\n  TableName* table_name_;\n  OptTablePrefix* opt_table_prefix_;\n  OptOnOrUsing* opt_on_or_using_;\n};\n\nclass OptOnOrUsing : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OnOrUsing* on_or_using_;\n};\n\nclass OnOrUsing : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  ColumnNameList* column_name_list_;\n};\n\nclass ColumnNameList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnNameList* column_name_list_;\n  ColumnName* column_name_;\n};\n\nclass OptTablePrefix : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  JoinOp* join_op_;\n  TableRef* table_ref_;\n};\n\nclass JoinOp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptJoinType* opt_join_type_;\n};\n\nclass OptJoinType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ExprList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  ExprList* expr_list_;\n};\n\nclass OptLimitClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  LimitClause* limit_clause_;\n};\n\nclass LimitClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass OptOrderClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OrderItemList* order_item_list_;\n};\n\nclass OptOrderNulls : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OrderItemList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OrderItem* order_item_;\n  OrderItemList* order_item_list_;\n};\n\nclass OrderItem : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  OptOrderNulls* opt_order_nulls_;\n  OptOrderBehavior* opt_order_behavior_;\n};\n\nclass OptOrderBehavior : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptWithClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableList* cte_table_list_;\n};\n\nclass CteTableList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableList* cte_table_list_;\n  CteTable* cte_table_;\n};\n\nclass CteTable : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CteTableName* cte_table_name_;\n  SelectStmt* select_stmt_;\n};\n\nclass CteTableName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptColumnNameListP* opt_column_name_list_p_;\n  TableName* table_name_;\n};\n\nclass OptAllOrDistinct : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass CreateTableStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptTableConstraintList* opt_table_constraint_list_;\n  OptTemp* opt_temp_;\n  SelectStmt* select_stmt_;\n  TableName* table_name_;\n  ColumnDefList* column_def_list_;\n  OptIfNotExist* opt_if_not_exist_;\n};\n\nclass CreateIndexStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_1_;\n  TableName* table_name_2_;\n  OptIfNotExist* opt_if_not_exist_;\n  IndexedColumnList* indexed_column_list_;\n  OptWhereClause* opt_where_clause_;\n  OptUnique* opt_unique_;\n};\n\nclass CreateViewStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptTemp* opt_temp_;\n  ViewName* view_name_;\n  OptColumnNameListP* opt_column_name_list_p_;\n  SelectStmt* select_stmt_;\n  OptCheckOption* opt_check_option_;\n};\n\nclass DropIndexStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass DropTableStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass DropViewStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ViewName* view_name_;\n  OptIfExist* opt_if_exist_;\n};\n\nclass InsertStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  InsertRest* insert_rest_;\n  TableName* table_name_;\n  OptOnConflict* opt_on_conflict_;\n  OptWithClause* opt_with_clause_;\n};\n\nclass InsertRest : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptColumnNameListP* opt_column_name_list_p_;\n  SuperValuesList* super_values_list_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass SuperValuesList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ValuesList* values_list_;\n  SuperValuesList* super_values_list_;\n};\n\nclass ValuesList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ExprList* expr_list_;\n};\n\nclass OptOnConflict : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptConflictExpr* opt_conflict_expr_;\n  SetClauseList* set_clause_list_;\n  WhereClause* where_clause_;\n};\n\nclass OptConflictExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IndexedColumnList* indexed_column_list_;\n  WhereClause* where_clause_;\n};\n\nclass IndexedColumnList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IndexedColumn* indexed_column_;\n  IndexedColumnList* indexed_column_list_;\n};\n\nclass IndexedColumn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  OptOrderBehavior* opt_order_behavior_;\n};\n\nclass UpdateStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_;\n  SetClauseList* set_clause_list_;\n  OptWithClause* opt_with_clause_;\n  OptWhereClause* opt_where_clause_;\n};\n\nclass ReindexStmt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableName* table_name_;\n};\n\nclass AlterAction : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnDef* column_def_;\n  OptColumn* opt_column_;\n  TableName* table_name_;\n  ColumnName* column_name_1_;\n  ColumnName* column_name_2_;\n};\n\nclass ColumnDefList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnDef* column_def_;\n  ColumnDefList* column_def_list_;\n};\n\nclass ColumnDef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TypeName* type_name_;\n  Identifier* identifier_;\n  OptColumnConstraintList* opt_column_constraint_list_;\n};\n\nclass OptColumnConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnConstraintList* column_constraint_list_;\n};\n\nclass ColumnConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnConstraintList* column_constraint_list_;\n  ColumnConstraint* column_constraint_;\n};\n\nclass ColumnConstraint : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ConstraintType* constraint_type_;\n};\n\nclass ConstraintType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  ForeignClause* foreign_clause_;\n};\n\nclass ForeignClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptConstraintAttributeSpec* opt_constraint_attribute_spec_;\n  OptColumnNameListP* opt_column_name_list_p_;\n  TableName* table_name_;\n  OptForeignKeyActions* opt_foreign_key_actions_;\n};\n\nclass OptForeignKeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ForeignKeyActions* foreign_key_actions_;\n};\n\nclass ForeignKeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  KeyActions* key_actions_;\n};\n\nclass KeyActions : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptConstraintAttributeSpec : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptInitialTime* opt_initial_time_;\n};\n\nclass OptInitialTime : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ConstraintName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Name* name_;\n};\n\nclass OptTemp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptCheckOption : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptColumnNameListP : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  ColumnNameList* column_name_list_;\n};\n\nclass SetClauseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  SetClause* set_clause_;\n  SetClauseList* set_clause_list_;\n};\n\nclass SetClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  ColumnNameList* column_name_list_;\n  ColumnName* column_name_;\n};\n\nclass Expr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CastExpr* cast_expr_;\n  InExpr* in_expr_;\n  BetweenExpr* between_expr_;\n  Operand* operand_;\n  ExistsExpr* exists_expr_;\n  LogicExpr* logic_expr_;\n};\n\nclass Operand : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  UnaryExpr* unary_expr_;\n  ExprList* expr_list_;\n  CaseExpr* case_expr_;\n  SelectNoParens* select_no_parens_;\n  ExtractExpr* extract_expr_;\n  ArrayIndex* array_index_;\n  BinaryExpr* binary_expr_;\n  ScalarExpr* scalar_expr_;\n};\n\nclass CastExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  TypeName* type_name_;\n};\n\nclass ScalarExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Literal* literal_;\n  ColumnName* column_name_;\n};\n\nclass UnaryExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n};\n\nclass BinaryExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n  BinaryOp* binary_op_;\n  CompExpr* comp_expr_;\n};\n\nclass LogicExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass InExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n  ExprList* expr_list_;\n  OptNot* opt_not_;\n  TableName* table_name_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass CaseExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n  CaseList* case_list_;\n};\n\nclass BetweenExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n  Operand* operand_3_;\n};\n\nclass ExistsExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptNot* opt_not_;\n  SelectNoParens* select_no_parens_;\n};\n\nclass CaseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CaseList* case_list_;\n  CaseClause* case_clause_;\n};\n\nclass CaseClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_1_;\n  Expr* expr_2_;\n};\n\nclass CompExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_1_;\n  Operand* operand_2_;\n};\n\nclass ExtractExpr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  DatetimeField* datetime_field_;\n  Expr* expr_;\n};\n\nclass DatetimeField : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ArrayIndex : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Operand* operand_;\n  IntLiteral* int_literal_;\n};\n\nclass Literal : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  BoolLiteral* bool_literal_;\n  StringLiteral* string_literal_;\n  NumLiteral* num_literal_;\n};\n\nclass StringLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  string string_val_;\n};\n\nclass BoolLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass NumLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  IntLiteral* int_literal_;\n  FloatLiteral* float_literal_;\n};\n\nclass IntLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  int int_val_;\n};\n\nclass FloatLiteral : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  float float_val_;\n};\n\nclass OptColumn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptIfNotExist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptIfExist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass Identifier : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  string string_val_;\n};\n\nclass TableName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass ColumnName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass OptUnique : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass ViewName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass BinaryOp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptNot : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass Name : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Identifier* identifier_;\n};\n\nclass TypeName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  NumericType* numeric_type_;\n  CharacterType* character_type_;\n};\n\nclass CharacterType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterWithLength* character_with_length_;\n  CharacterWithoutLength* character_without_length_;\n};\n\nclass CharacterWithLength : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterConflicta* character_conflicta_;\n  IntLiteral* int_literal_;\n};\n\nclass CharacterWithoutLength : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  CharacterConflicta* character_conflicta_;\n};\n\nclass CharacterConflicta : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  OptVarying* opt_varying_;\n};\n\nclass OptVarying : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass NumericType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n};\n\nclass OptTableConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableConstraintList* table_constraint_list_;\n};\n\nclass TableConstraintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  TableConstraint* table_constraint_;\n  TableConstraintList* table_constraint_list_;\n};\n\nclass TableConstraint : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  virtual void generate();\n\n  Expr* expr_;\n  IndexedColumnList* indexed_column_list_;\n  ForeignClause* foreign_clause_;\n  ConstraintName* constraint_name_;\n  ColumnNameList* column_name_list_;\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/postgresql/include/define.h",
    "content": "#pragma once\n#ifndef __DEFINE_H__\n#define __DEFINE_H__\n\n#define ALLTYPE(V)               \\\n  V(kProgram)                    \\\n  V(kStmtlist)                   \\\n  V(kStmt)                       \\\n  V(kCreateStmt)                 \\\n  V(kDropStmt)                   \\\n  V(kAlterStmt)                  \\\n  V(kSelectStmt)                 \\\n  V(kSelectWithParens)           \\\n  V(kSelectNoParens)             \\\n  V(kSelectClauseList)           \\\n  V(kSelectClause)               \\\n  V(kCombineClause)              \\\n  V(kOptFromClause)              \\\n  V(kSelectTarget)               \\\n  V(kOptWindowClause)            \\\n  V(kWindowClause)               \\\n  V(kWindowDefList)              \\\n  V(kWindowDef)                  \\\n  V(kWindowName)                 \\\n  V(kWindow)                     \\\n  V(kOptPartition)               \\\n  V(kOptFrameClause)             \\\n  V(kRangeOrRows)                \\\n  V(kFrameBoundStart)            \\\n  V(kFrameBoundEnd)              \\\n  V(kFrameBound)                 \\\n  V(kOptFrameExclude)            \\\n  V(kFrameExclude)               \\\n  V(kOptExistWindowName)         \\\n  V(kOptGroupClause)             \\\n  V(kOptHavingClause)            \\\n  V(kOptWhereClause)             \\\n  V(kWhereClause)                \\\n  V(kFromClause)                 \\\n  V(kTableRef)                   \\\n  V(kOptOnOrUsing)               \\\n  V(kOnOrUsing)                  \\\n  V(kColumnNameList)             \\\n  V(kOptTablePrefix)             \\\n  V(kJoinOp)                     \\\n  V(kOptJoinType)                \\\n  V(kExprList)                   \\\n  V(kOptLimitClause)             \\\n  V(kLimitClause)                \\\n  V(kOptOrderClause)             \\\n  V(kOptOrderNulls)              \\\n  V(kOrderItemList)              \\\n  V(kOrderItem)                  \\\n  V(kOptOrderBehavior)           \\\n  V(kOptWithClause)              \\\n  V(kCteTableList)               \\\n  V(kCteTable)                   \\\n  V(kCteTableName)               \\\n  V(kOptAllOrDistinct)           \\\n  V(kCreateTableStmt)            \\\n  V(kCreateIndexStmt)            \\\n  V(kCreateViewStmt)             \\\n  V(kDropIndexStmt)              \\\n  V(kDropTableStmt)              \\\n  V(kDropViewStmt)               \\\n  V(kInsertStmt)                 \\\n  V(kInsertRest)                 \\\n  V(kSuperValuesList)            \\\n  V(kValuesList)                 \\\n  V(kOptOnConflict)              \\\n  V(kOptConflictExpr)            \\\n  V(kIndexedColumnList)          \\\n  V(kIndexedColumn)              \\\n  V(kUpdateStmt)                 \\\n  V(kReindexStmt)                \\\n  V(kAlterAction)                \\\n  V(kColumnDefList)              \\\n  V(kColumnDef)                  \\\n  V(kOptColumnConstraintList)    \\\n  V(kColumnConstraintList)       \\\n  V(kColumnConstraint)           \\\n  V(kConstraintType)             \\\n  V(kForeignClause)              \\\n  V(kOptForeignKeyActions)       \\\n  V(kForeignKeyActions)          \\\n  V(kKeyActions)                 \\\n  V(kOptConstraintAttributeSpec) \\\n  V(kOptInitialTime)             \\\n  V(kConstraintName)             \\\n  V(kOptTemp)                    \\\n  V(kOptCheckOption)             \\\n  V(kOptColumnNameListP)         \\\n  V(kSetClauseList)              \\\n  V(kSetClause)                  \\\n  V(kExpr)                       \\\n  V(kOperand)                    \\\n  V(kCastExpr)                   \\\n  V(kScalarExpr)                 \\\n  V(kUnaryExpr)                  \\\n  V(kBinaryExpr)                 \\\n  V(kLogicExpr)                  \\\n  V(kInExpr)                     \\\n  V(kCaseExpr)                   \\\n  V(kBetweenExpr)                \\\n  V(kExistsExpr)                 \\\n  V(kCaseList)                   \\\n  V(kCaseClause)                 \\\n  V(kCompExpr)                   \\\n  V(kExtractExpr)                \\\n  V(kDatetimeField)              \\\n  V(kArrayIndex)                 \\\n  V(kLiteral)                    \\\n  V(kStringLiteral)              \\\n  V(kBoolLiteral)                \\\n  V(kNumLiteral)                 \\\n  V(kIntLiteral)                 \\\n  V(kFloatLiteral)               \\\n  V(kOptColumn)                  \\\n  V(kOptIfNotExist)              \\\n  V(kOptIfExist)                 \\\n  V(kIdentifier)                 \\\n  V(kTableName)                  \\\n  V(kColumnName)                 \\\n  V(kOptUnique)                  \\\n  V(kViewName)                   \\\n  V(kBinaryOp)                   \\\n  V(kOptNot)                     \\\n  V(kName)                       \\\n  V(kTypeName)                   \\\n  V(kCharacterType)              \\\n  V(kCharacterWithLength)        \\\n  V(kCharacterWithoutLength)     \\\n  V(kCharacterConflicta)         \\\n  V(kOptVarying)                 \\\n  V(kNumericType)                \\\n  V(kOptTableConstraintList)     \\\n  V(kTableConstraintList)        \\\n  V(kTableConstraint)            \\\n  V(kUnknown)\n\n#define ALLCLASS(V)             \\\n  V(Program)                    \\\n  V(Stmtlist)                   \\\n  V(Stmt)                       \\\n  V(CreateStmt)                 \\\n  V(DropStmt)                   \\\n  V(AlterStmt)                  \\\n  V(SelectStmt)                 \\\n  V(SelectWithParens)           \\\n  V(SelectNoParens)             \\\n  V(SelectClauseList)           \\\n  V(SelectClause)               \\\n  V(CombineClause)              \\\n  V(OptFromClause)              \\\n  V(SelectTarget)               \\\n  V(OptWindowClause)            \\\n  V(WindowClause)               \\\n  V(WindowDefList)              \\\n  V(WindowDef)                  \\\n  V(WindowName)                 \\\n  V(Window)                     \\\n  V(OptPartition)               \\\n  V(OptFrameClause)             \\\n  V(RangeOrRows)                \\\n  V(FrameBoundStart)            \\\n  V(FrameBoundEnd)              \\\n  V(FrameBound)                 \\\n  V(OptFrameExclude)            \\\n  V(FrameExclude)               \\\n  V(OptExistWindowName)         \\\n  V(OptGroupClause)             \\\n  V(OptHavingClause)            \\\n  V(OptWhereClause)             \\\n  V(WhereClause)                \\\n  V(FromClause)                 \\\n  V(TableRef)                   \\\n  V(OptOnOrUsing)               \\\n  V(OnOrUsing)                  \\\n  V(ColumnNameList)             \\\n  V(OptTablePrefix)             \\\n  V(JoinOp)                     \\\n  V(OptJoinType)                \\\n  V(ExprList)                   \\\n  V(OptLimitClause)             \\\n  V(LimitClause)                \\\n  V(OptOrderClause)             \\\n  V(OptOrderNulls)              \\\n  V(OrderItemList)              \\\n  V(OrderItem)                  \\\n  V(OptOrderBehavior)           \\\n  V(OptWithClause)              \\\n  V(CteTableList)               \\\n  V(CteTable)                   \\\n  V(CteTableName)               \\\n  V(OptAllOrDistinct)           \\\n  V(CreateTableStmt)            \\\n  V(CreateIndexStmt)            \\\n  V(CreateViewStmt)             \\\n  V(DropIndexStmt)              \\\n  V(DropTableStmt)              \\\n  V(DropViewStmt)               \\\n  V(InsertStmt)                 \\\n  V(InsertRest)                 \\\n  V(SuperValuesList)            \\\n  V(ValuesList)                 \\\n  V(OptOnConflict)              \\\n  V(OptConflictExpr)            \\\n  V(IndexedColumnList)          \\\n  V(IndexedColumn)              \\\n  V(UpdateStmt)                 \\\n  V(ReindexStmt)                \\\n  V(AlterAction)                \\\n  V(ColumnDefList)              \\\n  V(ColumnDef)                  \\\n  V(OptColumnConstraintList)    \\\n  V(ColumnConstraintList)       \\\n  V(ColumnConstraint)           \\\n  V(ConstraintType)             \\\n  V(ForeignClause)              \\\n  V(OptForeignKeyActions)       \\\n  V(ForeignKeyActions)          \\\n  V(KeyActions)                 \\\n  V(OptConstraintAttributeSpec) \\\n  V(OptInitialTime)             \\\n  V(ConstraintName)             \\\n  V(OptTemp)                    \\\n  V(OptCheckOption)             \\\n  V(OptColumnNameListP)         \\\n  V(SetClauseList)              \\\n  V(SetClause)                  \\\n  V(Expr)                       \\\n  V(Operand)                    \\\n  V(CastExpr)                   \\\n  V(ScalarExpr)                 \\\n  V(UnaryExpr)                  \\\n  V(BinaryExpr)                 \\\n  V(LogicExpr)                  \\\n  V(InExpr)                     \\\n  V(CaseExpr)                   \\\n  V(BetweenExpr)                \\\n  V(ExistsExpr)                 \\\n  V(CaseList)                   \\\n  V(CaseClause)                 \\\n  V(CompExpr)                   \\\n  V(ExtractExpr)                \\\n  V(DatetimeField)              \\\n  V(ArrayIndex)                 \\\n  V(Literal)                    \\\n  V(StringLiteral)              \\\n  V(BoolLiteral)                \\\n  V(NumLiteral)                 \\\n  V(IntLiteral)                 \\\n  V(FloatLiteral)               \\\n  V(OptColumn)                  \\\n  V(OptIfNotExist)              \\\n  V(OptIfExist)                 \\\n  V(Identifier)                 \\\n  V(TableName)                  \\\n  V(ColumnName)                 \\\n  V(OptUnique)                  \\\n  V(ViewName)                   \\\n  V(BinaryOp)                   \\\n  V(OptNot)                     \\\n  V(Name)                       \\\n  V(TypeName)                   \\\n  V(CharacterType)              \\\n  V(CharacterWithLength)        \\\n  V(CharacterWithoutLength)     \\\n  V(CharacterConflicta)         \\\n  V(OptVarying)                 \\\n  V(NumericType)                \\\n  V(OptTableConstraintList)     \\\n  V(TableConstraintList)        \\\n  V(TableConstraint)\n\n#define ALLDATATYPE(V)   \\\n  V(DataWhatever)        \\\n  V(DataTableName)       \\\n  V(DataColumnName)      \\\n  V(DataViewName)        \\\n  V(DataFunctionName)    \\\n  V(DataPragmaKey)       \\\n  V(DataPragmaValue)     \\\n  V(DataTableSpaceName)  \\\n  V(DataSequenceName)    \\\n  V(DataExtensionName)   \\\n  V(DataRoleName)        \\\n  V(DataSchemaName)      \\\n  V(DataDatabase)        \\\n  V(DataTriggerName)     \\\n  V(DataWindowName)      \\\n  V(DataTriggerFunction) \\\n  V(DataDomainName)      \\\n  V(DataAliasName)\n\n#define SWITCHSTART switch (case_idx_) {\n#define SWITCHEND \\\n  default:        \\\n                  \\\n    assert(0);    \\\n    }\n\n#define CASESTART(idx) case CASE##idx: {\n#define CASEEND \\\n  break;        \\\n  }\n\n#define TRANSLATESTART IR *res = NULL;\n\n#define GENERATESTART(len) case_idx_ = rand() % len;\n\n#define GENERATEEND return;\n\n#define TRANSLATEEND             \\\n  v_ir_collector.push_back(res); \\\n                                 \\\n  return res;\n\n#define TRANSLATEENDNOPUSH return res;\n\n#define SAFETRANSLATE(a) (assert(a != NULL), a->translate(v_ir_collector))\n\n#define SAFEDELETE(a) \\\n  if (a != NULL) a->deep_delete()\n\n#define SAFEDELETELIST(a) \\\n  for (auto _i : a) SAFEDELETE(_i)\n\n#define OP1(a) new IROperator(a)\n\n#define OP2(a, b) new IROperator(a, b)\n\n#define OP3(a, b, c) new IROperator(a, b, c)\n\n#define OPSTART(a) new IROperator(a)\n\n#define OPMID(a) new IROperator(\"\", a, \"\")\n\n#define OPEND(a) new IROperator(\"\", \"\", a)\n\n#define OP0() new IROperator()\n\n#define TRANSLATELIST(t, a, b)           \\\n  res = SAFETRANSLATE(a[0]);             \\\n  res = new IR(t, OP0(), res);           \\\n  v_ir_collector.push_back(res);         \\\n  for (int i = 1; i < a.size(); i++) {   \\\n    IR *tmp = SAFETRANSLATE(a[i]);       \\\n    res = new IR(t, OPMID(b), res, tmp); \\\n    v_ir_collector.push_back(res);       \\\n  }\n\n#define PUSH(a) v_ir_collector.push_back(a)\n\n#define MUTATESTART               \\\n  IR *res = NULL;                 \\\n  auto randint = get_rand_int(3); \\\n  switch (randint) {\n#define DOLEFT case 0: {\n#define DORIGHT \\\n  break;        \\\n  }             \\\n                \\\n  case 1: {\n#define DOBOTH \\\n  break;       \\\n  }            \\\n  case 2: {\n#define MUTATEEND \\\n  }               \\\n  }               \\\n                  \\\n  return res;\n\n#endif\n"
  },
  {
    "path": "srcs/internal/postgresql/include/mutator.h",
    "content": "#ifndef __MUTATOR_H__\n#define __MUTATOR_H__\n\n#include <map>\n#include <set>\n\n#include \"ast.h\"\n#include \"define.h\"\n#include \"utils.h\"\n\n#define LUCKY_NUMBER 500\n\nusing namespace std;\n\nenum RELATIONTYPE {\n  kRelationElement,\n  kRelationSubtype,\n  kRelationAlias,\n};\n\nclass Mutator {\n public:\n  Mutator() { srand(time(nullptr)); }\n\n  IR *deep_copy_with_record(const IR *root, const IR *record);\n  unsigned long hash(IR *);\n  unsigned long hash(string &);\n\n  IR *ir_random_generator(vector<IR *> v_ir_collector);\n\n  vector<IR *> mutate_all(vector<IR *> &v_ir_collector);        // done\n  vector<IR *> mutate(IR *input);                               // done\n  IR *strategy_delete(IR *cur);                                 // Done\n  IR *strategy_insert(IR *cur);                                 // Done\n  IR *strategy_replace(IR *cur);                                // done\n  bool lucky_enough_to_be_mutated(unsigned int mutated_times);  // done\n\n  bool replace(IR *root, IR *old_ir, IR *new_ir);  // done\n  IR *locate_parent(IR *root, IR *old_ir);         // done\n\n  void init(string f_testcase = \"\", string f_common_string = \"\",\n            string file2d = \"\", string file1d = \"\",\n            string f_gen_type = \"\");  // DONE\n\n  void init_ir_library(string filename);          // DONE\n  void init_value_library();                      // DONE\n  void init_common_string(string filename);       // DONE\n  void init_data_library(string filename);        // DONE\n  void init_data_library_2d(string filename);     // DONE\n  void init_not_mutatable_type(string filename);  // DONE\n  void init_safe_generate_type(string filename);\n  void add_ir_to_library(IR *);  // DONE\n\n  string get_a_string();            // DONE\n  unsigned long get_a_val();        // DONE\n  IR *get_ir_from_library(IRTYPE);  // DONE\n  IR *generate_ir_by_type(IRTYPE);  // Done\n\n  string get_data_by_type(DATATYPE);\n  pair<string, string> get_data_2d_by_type(DATATYPE, DATATYPE);  // DONE\n\n  void reset_data_library();  // DONE\n\n  string parse_data(string &);  // DONE\n  void extract_struct(IR *);    // Done\n  void extract_struct2(IR *);   // Done\n\n  bool fix(IR *root);  // done\n\n  vector<IR *> split_to_stmt(IR *root, map<IR **, IR *> &m_save,\n                             set<IRTYPE> &split_set);  // done\n  bool connect_back(map<IR **, IR *> &m_save);         // done\n\n  bool fix_one(IR *stmt_root,\n               map<int, map<DATATYPE, vector<IR *>>> &scope_library);  // done\n\n  void analyze_scope(IR *stmt_root);\n  map<IR *, vector<IR *>> build_graph(\n      IR *stmt_root, map<int, map<DATATYPE, vector<IR *>>> &scope_library);\n  bool fill_stmt_graph(map<IR *, vector<IR *>> &graph);              // done\n  void clear_scope_library(bool clear_define);                       // done\n  IR *find_closest_node(IR *stmt_root, IR *node, DATATYPE type);     // done\n  bool fill_one(IR *parent);                                         // done\n  bool fill_one_pair(IR *parent, IR *child);                         // done\n  bool fill_stmt_graph_one(map<IR *, vector<IR *>> &graph, IR *ir);  // done\n  bool validate(IR *&root);                                          // done\n\n  unsigned int calc_node(IR *root);\n  bool replace_one_value_from_datalibray_2d(DATATYPE p_datatype,\n                                            DATATYPE c_data_type, string &p_key,\n                                            string &old_c_value,\n                                            string &new_c_value);\n  bool remove_one_pair_from_datalibrary_2d(DATATYPE p_datatype,\n                                           DATATYPE c_data_type, string &p_key);\n  bool replace_one_from_datalibrary(DATATYPE datatype, string &old_str,\n                                    string &new_str);\n  bool remove_one_from_datalibrary(DATATYPE datatype, string &key);\n  ~Mutator();\n  void debug(IR *root);\n  int try_fix(char *buf, int len, char *&new_buf, int &new_len);\n\n  void add_ir_to_library_no_deepcopy(IR *);  // DONE\n\n  IR *record_ = NULL;\n  IR *mutated_root_ = NULL;\n  map<IRTYPE, vector<IR *>> ir_library_;\n  map<IRTYPE, set<unsigned long>> ir_library_hash_;\n\n  vector<string> string_library_;\n  set<unsigned long> string_library_hash_;\n  vector<unsigned long> value_library_;\n\n  map<DATATYPE, map<DATATYPE, RELATIONTYPE>> relationmap_;\n\n  vector<string> common_string_library_;\n  set<IRTYPE> not_mutatable_types_;\n  set<IRTYPE> string_types_;\n  set<IRTYPE> int_types_;\n  set<IRTYPE> float_types_;\n\n  set<IRTYPE> safe_generate_type_;\n  set<IRTYPE> split_stmt_types_;\n  set<IRTYPE> split_substmt_types_;\n\n  map<DATATYPE, vector<string>> data_library_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>> data_library_2d_;\n\n  map<DATATYPE, vector<string>> g_data_library_;\n  map<DATATYPE, set<unsigned long>> g_data_library_hash_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>> g_data_library_2d_;\n  map<DATATYPE, map<string, map<DATATYPE, vector<string>>>>\n      g_data_library_2d_hash_;\n\n  map<int, map<DATATYPE, vector<IR *>>> scope_library_;\n\n  set<unsigned long> global_hash_;\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/postgresql/include/utils.h",
    "content": "#ifndef __UTILS_H__\n#define __UTILS_H__\n\n#include <string>\n#include <vector>\n\n#include \"../parser/bison_parser.h\"\n#include \"../parser/flex_lexer.h\"\nusing std::string;\nusing std::vector;\n\n#define get_rand_int(range) rand() % (range)\n#define vector_rand_ele_safe(a) \\\n  (a.size() != 0 ? a[get_rand_int(a.size())] : gen_id_name())\n#define vector_rand_ele(a) (a[get_rand_int(a.size())])\n\nvoid trim_string(string &);\n\nstring gen_string();\n\ndouble gen_float();\n\nlong gen_long();\n\nint gen_int();\n\nuint64_t ducking_hash(const void *key, int len);\nvector<string> get_all_files_in_dir(const char *dir_name);\nProgram *parser(string sql);\n#endif\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/Makefile",
    "content": "# bison's version is too old on OSX, allow user to pass in custom path\nBISON?=bison\nFLEX?=flex\n\n#BISON_VERSION=$(shell $(BISON) --version | head -n 1 | grep -o '[0-9]\\.[0-9]\\+')\n#BISON_VERSION_SUPPORTED=$(shell echo $(BISON_VERSION) \\>= 3.0 | bc)\n#ifneq ($(BISON_VERSION_SUPPORTED), 1)\n#$(error Bison version $(BISON_VERSION) not supported. If you are using OS X, `bison` uses the system default instead of the brew version. Run BISON=/usr/local/opt/bison/bin/bison make)\n#endif\n\n#FLEX_VERSION=$(shell $(FLEX) --version | head -n 1 | grep -o '[0-9]\\.[0-9]\\+')\n#FLEX_VERSION_SUPPORTED=$(shell echo $(FLEX_VERSION) \\>= 2.6 | bc)\n#ifneq ($(FLEX_VERSION_SUPPORTED), 1)\n#$(error Flex version $(FLEX_VERSION) not supported. If you are using OS X, `flex` uses the system default instead of the brew version. Run FLEX=/usr/local/opt/flex/bin/flex make)\n#endif\n\nall: bison_parser.cpp flex_lexer.cpp\n\nbison_parser.cpp: bison.y\n\t$(BISON) bison.y --output=bison_parser.cpp --defines=bison_parser.h --verbose -Wconflicts-rr\n\nflex_lexer.cpp: flex.l\n\t$(FLEX) flex.l\n\nclean:\n\trm -f bison_parser.cpp flex_lexer.cpp bison_parser.h flex_lexer.h *.output\n\n# Tests if the parser builds correctly and doesn't contain conflicts.\ntest:\n\t! $(BISON) bison_parser.y -v --output=conflict_test.cpp 2>&1 | grep \"conflict\" >/tmp/2\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/bison.y",
    "content": "%{\n#include \"bison_parser.h\"\n#include \"flex_lexer.h\"\n#include <stdio.h>\n#include <string.h>\nint yyerror(YYLTYPE* llocp, Program * result, yyscan_t scanner, const char *msg) { return 0; }\n%}\n%code requires {\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n}\n%define api.prefix\t{ff_}\n%define parse.error\tverbose\n%define api.pure\tfull\n%define api.token.prefix\t{SQL_}\n%locations\n\n%initial-action {\n    // Initialize\n    @$.first_column = 0;\n    @$.last_column = 0;\n    @$.first_line = 0;\n    @$.last_line = 0;\n    @$.total_column = 0;\n    @$.string_length = 0;\n};\n%lex-param { yyscan_t scanner }\n%parse-param { Program* result }\n%parse-param { yyscan_t scanner }\n%union FF_STYPE{\n\tlong\tival;\n\tchar*\tsval;\n\tdouble\tfval;\n\tProgram *\tprogram_t;\n\tStmtlist *\tstmtlist_t;\n\tStmt *\tstmt_t;\n\tCreateStmt *\tcreate_stmt_t;\n\tDropStmt *\tdrop_stmt_t;\n\tAlterStmt *\talter_stmt_t;\n\tSelectStmt *\tselect_stmt_t;\n\tSelectWithParens *\tselect_with_parens_t;\n\tSelectNoParens *\tselect_no_parens_t;\n\tSelectClauseList *\tselect_clause_list_t;\n\tSelectClause *\tselect_clause_t;\n\tCombineClause *\tcombine_clause_t;\n\tOptFromClause *\topt_from_clause_t;\n\tSelectTarget *\tselect_target_t;\n\tOptWindowClause *\topt_window_clause_t;\n\tWindowClause *\twindow_clause_t;\n\tWindowDefList *\twindow_def_list_t;\n\tWindowDef *\twindow_def_t;\n\tWindowName *\twindow_name_t;\n\tWindow *\twindow_t;\n\tOptPartition *\topt_partition_t;\n\tOptFrameClause *\topt_frame_clause_t;\n\tRangeOrRows *\trange_or_rows_t;\n\tFrameBoundStart *\tframe_bound_start_t;\n\tFrameBoundEnd *\tframe_bound_end_t;\n\tFrameBound *\tframe_bound_t;\n\tOptFrameExclude *\topt_frame_exclude_t;\n\tFrameExclude *\tframe_exclude_t;\n\tOptExistWindowName *\topt_exist_window_name_t;\n\tOptGroupClause *\topt_group_clause_t;\n\tOptHavingClause *\topt_having_clause_t;\n\tOptWhereClause *\topt_where_clause_t;\n\tWhereClause *\twhere_clause_t;\n\tFromClause *\tfrom_clause_t;\n\tTableRef *\ttable_ref_t;\n\tOptOnOrUsing *\topt_on_or_using_t;\n\tOnOrUsing *\ton_or_using_t;\n\tColumnNameList *\tcolumn_name_list_t;\n\tOptTablePrefix *\topt_table_prefix_t;\n\tJoinOp *\tjoin_op_t;\n\tOptJoinType *\topt_join_type_t;\n\tExprList *\texpr_list_t;\n\tOptLimitClause *\topt_limit_clause_t;\n\tLimitClause *\tlimit_clause_t;\n\tOptOrderClause *\topt_order_clause_t;\n\tOptOrderNulls *\topt_order_nulls_t;\n\tOrderItemList *\torder_item_list_t;\n\tOrderItem *\torder_item_t;\n\tOptOrderBehavior *\topt_order_behavior_t;\n\tOptWithClause *\topt_with_clause_t;\n\tCteTableList *\tcte_table_list_t;\n\tCteTable *\tcte_table_t;\n\tCteTableName *\tcte_table_name_t;\n\tOptAllOrDistinct *\topt_all_or_distinct_t;\n\tCreateTableStmt *\tcreate_table_stmt_t;\n\tCreateIndexStmt *\tcreate_index_stmt_t;\n\tCreateViewStmt *\tcreate_view_stmt_t;\n\tDropIndexStmt *\tdrop_index_stmt_t;\n\tDropTableStmt *\tdrop_table_stmt_t;\n\tDropViewStmt *\tdrop_view_stmt_t;\n\tInsertStmt *\tinsert_stmt_t;\n\tInsertRest *\tinsert_rest_t;\n\tSuperValuesList *\tsuper_values_list_t;\n\tValuesList *\tvalues_list_t;\n\tOptOnConflict *\topt_on_conflict_t;\n\tOptConflictExpr *\topt_conflict_expr_t;\n\tIndexedColumnList *\tindexed_column_list_t;\n\tIndexedColumn *\tindexed_column_t;\n\tUpdateStmt *\tupdate_stmt_t;\n\tReindexStmt *\treindex_stmt_t;\n\tAlterAction *\talter_action_t;\n\tColumnDefList *\tcolumn_def_list_t;\n\tColumnDef *\tcolumn_def_t;\n\tOptColumnConstraintList *\topt_column_constraint_list_t;\n\tColumnConstraintList *\tcolumn_constraint_list_t;\n\tColumnConstraint *\tcolumn_constraint_t;\n\tConstraintType *\tconstraint_type_t;\n\tForeignClause *\tforeign_clause_t;\n\tOptForeignKeyActions *\topt_foreign_key_actions_t;\n\tForeignKeyActions *\tforeign_key_actions_t;\n\tKeyActions *\tkey_actions_t;\n\tOptConstraintAttributeSpec *\topt_constraint_attribute_spec_t;\n\tOptInitialTime *\topt_initial_time_t;\n\tConstraintName *\tconstraint_name_t;\n\tOptTemp *\topt_temp_t;\n\tOptCheckOption *\topt_check_option_t;\n\tOptColumnNameListP *\topt_column_name_list_p_t;\n\tSetClauseList *\tset_clause_list_t;\n\tSetClause *\tset_clause_t;\n\tExpr *\texpr_t;\n\tOperand *\toperand_t;\n\tCastExpr *\tcast_expr_t;\n\tScalarExpr *\tscalar_expr_t;\n\tUnaryExpr *\tunary_expr_t;\n\tBinaryExpr *\tbinary_expr_t;\n\tLogicExpr *\tlogic_expr_t;\n\tInExpr *\tin_expr_t;\n\tCaseExpr *\tcase_expr_t;\n\tBetweenExpr *\tbetween_expr_t;\n\tExistsExpr *\texists_expr_t;\n\tCaseList *\tcase_list_t;\n\tCaseClause *\tcase_clause_t;\n\tCompExpr *\tcomp_expr_t;\n\tExtractExpr *\textract_expr_t;\n\tDatetimeField *\tdatetime_field_t;\n\tArrayIndex *\tarray_index_t;\n\tLiteral *\tliteral_t;\n\tStringLiteral *\tstring_literal_t;\n\tBoolLiteral *\tbool_literal_t;\n\tNumLiteral *\tnum_literal_t;\n\tIntLiteral *\tint_literal_t;\n\tFloatLiteral *\tfloat_literal_t;\n\tOptColumn *\topt_column_t;\n\tOptIfNotExist *\topt_if_not_exist_t;\n\tOptIfExist *\topt_if_exist_t;\n\tIdentifier *\tidentifier_t;\n\tTableName *\ttable_name_t;\n\tColumnName *\tcolumn_name_t;\n\tOptUnique *\topt_unique_t;\n\tViewName *\tview_name_t;\n\tBinaryOp *\tbinary_op_t;\n\tOptNot *\topt_not_t;\n\tName *\tname_t;\n\tTypeName *\ttype_name_t;\n\tCharacterType *\tcharacter_type_t;\n\tCharacterWithLength *\tcharacter_with_length_t;\n\tCharacterWithoutLength *\tcharacter_without_length_t;\n\tCharacterConflicta *\tcharacter_conflicta_t;\n\tOptVarying *\topt_varying_t;\n\tNumericType *\tnumeric_type_t;\n\tOptTableConstraintList *\topt_table_constraint_list_t;\n\tTableConstraintList *\ttable_constraint_list_t;\n\tTableConstraint *\ttable_constraint_t;\n}\n\n%token OP_NOTEQUAL SIMPLE TEXT OVER BETWEEN OP_SEMI BIGINT LIMIT\n%token WITH ORDER LAST UNBOUNDED PRECEDING EXCEPT NUMERIC OP_LESSTHAN\n%token PROCEDURE ACTION FIRST OP_GREATEREQ CHECK FULL NATURAL DOUBLE\n%token NATIONAL OP_ADD CURRENT TRIGGER OP_SUB FALSE UNIQUE WHERE\n%token MINUTE BEFORE ON PARTIAL OF AFTER PRIMARY MONTH\n%token DEFERRED OP_DOUBLE_DOLLAR VARYING OP_GREATERTHAN OR PLPGSQL DELETE INDEX\n%token RETURN OP_MUL FOREIGN RESTRICT FOLLOWING TIES DEC SELECT\n%token BEGIN LANGUAGE DISTINCT TRUE BY OP_MOD VALUES IS\n%token ROW FUNCTION END RECURSIVE FOR UNION NULLS UPDATE\n%token ELSE RANGE OFFSET INDEXED INSTEAD NCHAR AND REINDEX\n%token INITIALLY YEAR PRECISION FILTER NOT VIEW DEFFERRABLE REAL\n%token THEN OPTION DEFAULT GLOBAL CROSS CHAR REFERENCES OP_XOR\n%token GROUP CASE SET HOUR NO COLUMN LOCAL DROP\n%token REPLACE ASC OP_COMMA TABLE ARRAY IF EXTRACT LEFT\n%token OUTER DECIMAL PARTITION CASCADE ADD OTHERS OP_LESSEQ MATCH\n%token ALL ROWS JOIN LIKE INTEGER OP_RP INT BOOLEAN\n%token KEY EACH USING RENAME DO FLOAT OP_LP CHARACTER\n%token UMINUS CAST GROUPS NULL SMALLINT INSERT TEMPORARY CONSTRAINT\n%token CREATE OP_LBRACKET WHEN IMMEDIATE TO EXCLUDE DAY CONFLICT\n%token OP_RBRACKET EXECUTE EXISTS INTO OP_DIVIDE CASCADED ISNULL AS\n%token INNER INTERSECT IN OP_EQUAL VARCHAR ALTER DESC FROM\n%token TEMP UNLOGGED SECOND WINDOW NOTHING HAVING\n%token <ival> INTLITERAL\n\n%token <sval> STRINGLITERAL\n\n%token <fval> FLOATLITERAL\n\n%token <sval> IDENTIFIER\n\n\n%type <program_t>\tprogram\n%type <stmtlist_t>\tstmtlist\n%type <stmt_t>\tstmt\n%type <create_stmt_t>\tcreate_stmt\n%type <drop_stmt_t>\tdrop_stmt\n%type <alter_stmt_t>\talter_stmt\n%type <select_stmt_t>\tselect_stmt\n%type <select_with_parens_t>\tselect_with_parens\n%type <select_no_parens_t>\tselect_no_parens\n%type <select_clause_list_t>\tselect_clause_list\n%type <select_clause_t>\tselect_clause\n%type <combine_clause_t>\tcombine_clause\n%type <opt_from_clause_t>\topt_from_clause\n%type <select_target_t>\tselect_target\n%type <opt_window_clause_t>\topt_window_clause\n%type <window_clause_t>\twindow_clause\n%type <window_def_list_t>\twindow_def_list\n%type <window_def_t>\twindow_def\n%type <window_name_t>\twindow_name\n%type <window_t>\twindow\n%type <opt_partition_t>\topt_partition\n%type <opt_frame_clause_t>\topt_frame_clause\n%type <range_or_rows_t>\trange_or_rows\n%type <frame_bound_start_t>\tframe_bound_start\n%type <frame_bound_end_t>\tframe_bound_end\n%type <frame_bound_t>\tframe_bound\n%type <opt_frame_exclude_t>\topt_frame_exclude\n%type <frame_exclude_t>\tframe_exclude\n%type <opt_exist_window_name_t>\topt_exist_window_name\n%type <opt_group_clause_t>\topt_group_clause\n%type <opt_having_clause_t>\topt_having_clause\n%type <opt_where_clause_t>\topt_where_clause\n%type <where_clause_t>\twhere_clause\n%type <from_clause_t>\tfrom_clause\n%type <table_ref_t>\ttable_ref\n%type <opt_on_or_using_t>\topt_on_or_using\n%type <on_or_using_t>\ton_or_using\n%type <column_name_list_t>\tcolumn_name_list\n%type <opt_table_prefix_t>\topt_table_prefix\n%type <join_op_t>\tjoin_op\n%type <opt_join_type_t>\topt_join_type\n%type <expr_list_t>\texpr_list\n%type <opt_limit_clause_t>\topt_limit_clause\n%type <limit_clause_t>\tlimit_clause\n%type <opt_order_clause_t>\topt_order_clause\n%type <opt_order_nulls_t>\topt_order_nulls\n%type <order_item_list_t>\torder_item_list\n%type <order_item_t>\torder_item\n%type <opt_order_behavior_t>\topt_order_behavior\n%type <opt_with_clause_t>\topt_with_clause\n%type <cte_table_list_t>\tcte_table_list\n%type <cte_table_t>\tcte_table\n%type <cte_table_name_t>\tcte_table_name\n%type <opt_all_or_distinct_t>\topt_all_or_distinct\n%type <create_table_stmt_t>\tcreate_table_stmt\n%type <create_index_stmt_t>\tcreate_index_stmt\n%type <create_view_stmt_t>\tcreate_view_stmt\n%type <drop_index_stmt_t>\tdrop_index_stmt\n%type <drop_table_stmt_t>\tdrop_table_stmt\n%type <drop_view_stmt_t>\tdrop_view_stmt\n%type <insert_stmt_t>\tinsert_stmt\n%type <insert_rest_t>\tinsert_rest\n%type <super_values_list_t>\tsuper_values_list\n%type <values_list_t>\tvalues_list\n%type <opt_on_conflict_t>\topt_on_conflict\n%type <opt_conflict_expr_t>\topt_conflict_expr\n%type <indexed_column_list_t>\tindexed_column_list\n%type <indexed_column_t>\tindexed_column\n%type <update_stmt_t>\tupdate_stmt\n%type <reindex_stmt_t>\treindex_stmt\n%type <alter_action_t>\talter_action\n%type <column_def_list_t>\tcolumn_def_list\n%type <column_def_t>\tcolumn_def\n%type <opt_column_constraint_list_t>\topt_column_constraint_list\n%type <column_constraint_list_t>\tcolumn_constraint_list\n%type <column_constraint_t>\tcolumn_constraint\n%type <constraint_type_t>\tconstraint_type\n%type <foreign_clause_t>\tforeign_clause\n%type <opt_foreign_key_actions_t>\topt_foreign_key_actions\n%type <foreign_key_actions_t>\tforeign_key_actions\n%type <key_actions_t>\tkey_actions\n%type <opt_constraint_attribute_spec_t>\topt_constraint_attribute_spec\n%type <opt_initial_time_t>\topt_initial_time\n%type <constraint_name_t>\tconstraint_name\n%type <opt_temp_t>\topt_temp\n%type <opt_check_option_t>\topt_check_option\n%type <opt_column_name_list_p_t>\topt_column_name_list_p\n%type <set_clause_list_t>\tset_clause_list\n%type <set_clause_t>\tset_clause\n%type <expr_t>\texpr\n%type <operand_t>\toperand\n%type <cast_expr_t>\tcast_expr\n%type <scalar_expr_t>\tscalar_expr\n%type <unary_expr_t>\tunary_expr\n%type <binary_expr_t>\tbinary_expr\n%type <logic_expr_t>\tlogic_expr\n%type <in_expr_t>\tin_expr\n%type <case_expr_t>\tcase_expr\n%type <between_expr_t>\tbetween_expr\n%type <exists_expr_t>\texists_expr\n%type <case_list_t>\tcase_list\n%type <case_clause_t>\tcase_clause\n%type <comp_expr_t>\tcomp_expr\n%type <extract_expr_t>\textract_expr\n%type <datetime_field_t>\tdatetime_field\n%type <array_index_t>\tarray_index\n%type <literal_t>\tliteral\n%type <string_literal_t>\tstring_literal\n%type <bool_literal_t>\tbool_literal\n%type <num_literal_t>\tnum_literal\n%type <int_literal_t>\tint_literal\n%type <float_literal_t>\tfloat_literal\n%type <opt_column_t>\topt_column\n%type <opt_if_not_exist_t>\topt_if_not_exist\n%type <opt_if_exist_t>\topt_if_exist\n%type <identifier_t>\tidentifier\n%type <table_name_t>\ttable_name\n%type <column_name_t>\tcolumn_name\n%type <opt_unique_t>\topt_unique\n%type <view_name_t>\tview_name\n%type <binary_op_t>\tbinary_op\n%type <opt_not_t>\topt_not\n%type <name_t>\tname\n%type <type_name_t>\ttype_name\n%type <character_type_t>\tcharacter_type\n%type <character_with_length_t>\tcharacter_with_length\n%type <character_without_length_t>\tcharacter_without_length\n%type <character_conflicta_t>\tcharacter_conflicta\n%type <opt_varying_t>\topt_varying\n%type <numeric_type_t>\tnumeric_type\n%type <opt_table_constraint_list_t>\topt_table_constraint_list\n%type <table_constraint_list_t>\ttable_constraint_list\n%type <table_constraint_t>\ttable_constraint\n\n%left  OR\n%left  AND\n%left  NOT\n%nonassoc  OP_NOTEQUAL MATCH LIKE OP_EQUAL\n%nonassoc  OP_LESSTHAN OP_GREATEREQ OP_GREATERTHAN OP_LESSEQ\n%nonassoc  ISNULL\n%nonassoc  IS\n%left  OP_ADD OP_SUB\n%left  OP_MUL OP_MOD OP_DIVIDE\n%left  OP_XOR\n%right  UMINUS\n%left  OP_LBRACKET OP_RBRACKET\n%left  OP_RP OP_LP\n%nonassoc  JOIN\n%nonassoc  ON\n\n%destructor{\n\tfree( ($$) );\n}  <sval>\n\n%destructor{\n\t \n}  <fval> <ival>\n\n%destructor { if($$!=NULL)$$->deep_delete(); } <*>\n\n%%\nprogram:\n\tstmtlist  {\n\t\t$$ = result;\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->stmtlist_ = $1;\n\t\t\t\t$$ = NULL;\n\n\t}\n  ;\n\nstmtlist:\n\tstmt OP_SEMI stmtlist  {\n\t\t$$ = new Stmtlist();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->stmt_ = $1;\n\t\t$$->stmtlist_ = $3;\n\t\t\n\t}\n   |\tstmt OP_SEMI  {\n\t\t$$ = new Stmtlist();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->stmt_ = $1;\n\t\t\n\t}\n  ;\n\nstmt:\n\tcreate_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->create_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->drop_stmt_ = $1;\n\t\t\n\t}\n   |\tselect_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->select_stmt_ = $1;\n\t\t\n\t}\n   |\tupdate_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->update_stmt_ = $1;\n\t\t\n\t}\n   |\tinsert_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->insert_stmt_ = $1;\n\t\t\n\t}\n   |\talter_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->alter_stmt_ = $1;\n\t\t\n\t}\n   |\treindex_stmt  {\n\t\t$$ = new Stmt();\n\t\t$$->case_idx_ = CASE6;\n\t\t$$->reindex_stmt_ = $1;\n\t\t\n\t}\n  ;\n\ncreate_stmt:\n\tcreate_table_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->create_table_stmt_ = $1;\n\t\t\n\t}\n   |\tcreate_index_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->create_index_stmt_ = $1;\n\t\t\n\t}\n   |\tcreate_view_stmt  {\n\t\t$$ = new CreateStmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->create_view_stmt_ = $1;\n\t\t\n\t}\n  ;\n\ndrop_stmt:\n\tdrop_index_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->drop_index_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_table_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->drop_table_stmt_ = $1;\n\t\t\n\t}\n   |\tdrop_view_stmt  {\n\t\t$$ = new DropStmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->drop_view_stmt_ = $1;\n\t\t\n\t}\n  ;\n\nalter_stmt:\n\tALTER TABLE table_name alter_action  {\n\t\t$$ = new AlterStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\t$$->alter_action_ = $4;\n\t\t\n\t}\n  ;\n\nselect_stmt:\n\tselect_no_parens %prec UMINUS {\n\t\t$$ = new SelectStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_no_parens_ = $1;\n\t\t\n\t}\n   |\tselect_with_parens %prec UMINUS {\n\t\t$$ = new SelectStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_with_parens_ = $1;\n\t\t\n\t}\n  ;\n\nselect_with_parens:\n\tOP_LP select_no_parens OP_RP  {\n\t\t$$ = new SelectWithParens();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n   |\tOP_LP select_with_parens OP_RP  {\n\t\t$$ = new SelectWithParens();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_with_parens_ = $2;\n\t\t\n\t}\n  ;\n\nselect_no_parens:\n\topt_with_clause select_clause_list opt_order_clause opt_limit_clause  {\n\t\t$$ = new SelectNoParens();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_with_clause_ = $1;\n\t\t$$->select_clause_list_ = $2;\n\t\t$$->opt_order_clause_ = $3;\n\t\t$$->opt_limit_clause_ = $4;\n\t\t\n\t}\n  ;\n\nselect_clause_list:\n\tselect_clause  {\n\t\t$$ = new SelectClauseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->select_clause_ = $1;\n\t\t\n\t}\n   |\tselect_clause combine_clause select_clause_list  {\n\t\t$$ = new SelectClauseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->select_clause_ = $1;\n\t\t$$->combine_clause_ = $2;\n\t\t$$->select_clause_list_ = $3;\n\t\t\n\t}\n  ;\n\nselect_clause:\n\tSELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause  {\n\t\t$$ = new SelectClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_all_or_distinct_ = $2;\n\t\t$$->select_target_ = $3;\n\t\t$$->opt_from_clause_ = $4;\n\t\t$$->opt_where_clause_ = $5;\n\t\t$$->opt_group_clause_ = $6;\n\t\t$$->opt_window_clause_ = $7;\n\t\t\n\t}\n  ;\n\ncombine_clause:\n\tUNION  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINTERSECT  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tEXCEPT  {\n\t\t$$ = new CombineClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_from_clause:\n\tfrom_clause  {\n\t\t$$ = new OptFromClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->from_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFromClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nselect_target:\n\texpr_list  {\n\t\t$$ = new SelectTarget();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $1;\n\t\t\n\t}\n  ;\n\nopt_window_clause:\n\twindow_clause  {\n\t\t$$ = new OptWindowClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWindowClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nwindow_clause:\n\tWINDOW window_def_list  {\n\t\t$$ = new WindowClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_def_list_ = $2;\n\t\t\n\t}\n  ;\n\nwindow_def_list:\n\twindow_def  {\n\t\t$$ = new WindowDefList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_def_ = $1;\n\t\t\n\t}\n   |\twindow_def OP_COMMA window_def_list  {\n\t\t$$ = new WindowDefList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->window_def_ = $1;\n\t\t$$->window_def_list_ = $3;\n\t\t\n\t}\n  ;\n\nwindow_def:\n\twindow_name AS OP_LP window OP_RP  {\n\t\t$$ = new WindowDef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->window_name_ = $1;\n\t\t$$->window_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->window_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataWindowName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nwindow_name:\n\tidentifier  {\n\t\t$$ = new WindowName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\nwindow:\n\topt_exist_window_name opt_partition opt_order_clause opt_frame_clause  {\n\t\t$$ = new Window();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_exist_window_name_ = $1;\n\t\t$$->opt_partition_ = $2;\n\t\t$$->opt_order_clause_ = $3;\n\t\t$$->opt_frame_clause_ = $4;\n\t\t\n\t}\n  ;\n\nopt_partition:\n\tPARTITION BY expr_list  {\n\t\t$$ = new OptPartition();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptPartition();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_frame_clause:\n\trange_or_rows frame_bound_start opt_frame_exclude  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->range_or_rows_ = $1;\n\t\t$$->frame_bound_start_ = $2;\n\t\t$$->opt_frame_exclude_ = $3;\n\t\t\n\t}\n   |\trange_or_rows BETWEEN frame_bound_start AND frame_bound_end opt_frame_exclude  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->range_or_rows_ = $1;\n\t\t$$->frame_bound_start_ = $3;\n\t\t$$->frame_bound_end_ = $5;\n\t\t$$->opt_frame_exclude_ = $6;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFrameClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nrange_or_rows:\n\tRANGE  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tROWS  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tGROUPS  {\n\t\t$$ = new RangeOrRows();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nframe_bound_start:\n\tframe_bound  {\n\t\t$$ = new FrameBoundStart();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->frame_bound_ = $1;\n\t\t\n\t}\n   |\tUNBOUNDED PRECEDING  {\n\t\t$$ = new FrameBoundStart();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nframe_bound_end:\n\tframe_bound  {\n\t\t$$ = new FrameBoundEnd();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->frame_bound_ = $1;\n\t\t\n\t}\n   |\tUNBOUNDED FOLLOWING  {\n\t\t$$ = new FrameBoundEnd();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nframe_bound:\n\texpr PRECEDING  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t\n\t}\n   |\texpr FOLLOWING  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_ = $1;\n\t\t\n\t}\n   |\tCURRENT ROW  {\n\t\t$$ = new FrameBound();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_frame_exclude:\n\tEXCLUDE frame_exclude  {\n\t\t$$ = new OptFrameExclude();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->frame_exclude_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptFrameExclude();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nframe_exclude:\n\tNO OTHERS  {\n\t\t$$ = new FrameExclude();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tCURRENT ROW  {\n\t\t$$ = new FrameExclude();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tGROUP  {\n\t\t$$ = new FrameExclude();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tTIES  {\n\t\t$$ = new FrameExclude();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\nopt_exist_window_name:\n\tidentifier  {\n\t\t$$ = new OptExistWindowName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataWindowName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n   |\t  {\n\t\t$$ = new OptExistWindowName();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_group_clause:\n\tGROUP BY expr_list opt_having_clause  {\n\t\t$$ = new OptGroupClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $3;\n\t\t$$->opt_having_clause_ = $4;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptGroupClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_having_clause:\n\tHAVING expr  {\n\t\t$$ = new OptHavingClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptHavingClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_where_clause:\n\twhere_clause  {\n\t\t$$ = new OptWhereClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->where_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWhereClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nwhere_clause:\n\tWHERE expr  {\n\t\t$$ = new WhereClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n  ;\n\nfrom_clause:\n\tFROM table_ref  {\n\t\t$$ = new FromClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_ref_ = $2;\n\t\t\n\t}\n  ;\n\ntable_ref:\n\topt_table_prefix table_name opt_on_or_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->table_name_ = $2;\n\t\t$$->opt_on_or_using_ = $3;\n\t\t\n\t}\n   |\topt_table_prefix OP_LP select_no_parens OP_RP opt_on_or_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->select_no_parens_ = $3;\n\t\t$$->opt_on_or_using_ = $5;\n\t\t\n\t}\n   |\topt_table_prefix OP_LP table_ref OP_RP opt_on_or_using  {\n\t\t$$ = new TableRef();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_table_prefix_ = $1;\n\t\t$$->table_ref_ = $3;\n\t\t$$->opt_on_or_using_ = $5;\n\t\t\n\t}\n  ;\n\nopt_on_or_using:\n\ton_or_using  {\n\t\t$$ = new OptOnOrUsing();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->on_or_using_ = $1;\n\t\t\n\t}\n   |\t %prec JOIN {\n\t\t$$ = new OptOnOrUsing();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\non_or_using:\n\tON expr  {\n\t\t$$ = new OnOrUsing();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $2;\n\t\t\n\t}\n   |\tUSING OP_LP column_name_list OP_RP  {\n\t\t$$ = new OnOrUsing();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_name_list_ = $3;\n\t\t\n\t}\n  ;\n\ncolumn_name_list:\n\tcolumn_name  {\n\t\t$$ = new ColumnNameList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t\n\t}\n   |\tcolumn_name OP_COMMA column_name_list  {\n\t\t$$ = new ColumnNameList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_name_ = $1;\n\t\t$$->column_name_list_ = $3;\n\t\t\n\t}\n  ;\n\nopt_table_prefix:\n\ttable_ref join_op  {\n\t\t$$ = new OptTablePrefix();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_ref_ = $1;\n\t\t$$->join_op_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTablePrefix();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\njoin_op:\n\tOP_COMMA  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tJOIN  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tNATURAL opt_join_type JOIN  {\n\t\t$$ = new JoinOp();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_join_type_ = $2;\n\t\t\n\t}\n  ;\n\nopt_join_type:\n\tLEFT  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tLEFT OUTER  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tINNER  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tCROSS  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptJoinType();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n  ;\n\nexpr_list:\n\texpr OP_COMMA expr_list  {\n\t\t$$ = new ExprList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->expr_list_ = $3;\n\t\t\n\t}\n   |\texpr  {\n\t\t$$ = new ExprList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_ = $1;\n\t\t\n\t}\n  ;\n\nopt_limit_clause:\n\tlimit_clause  {\n\t\t$$ = new OptLimitClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->limit_clause_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptLimitClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nlimit_clause:\n\tLIMIT expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t\n\t}\n   |\tLIMIT expr OFFSET expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n   |\tLIMIT expr OP_COMMA expr  {\n\t\t$$ = new LimitClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n  ;\n\nopt_order_clause:\n\tORDER BY order_item_list  {\n\t\t$$ = new OptOrderClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->order_item_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_order_nulls:\n\tNULLS FIRST  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tNULLS LAST  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderNulls();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\norder_item_list:\n\torder_item  {\n\t\t$$ = new OrderItemList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->order_item_ = $1;\n\t\t\n\t}\n   |\torder_item OP_COMMA order_item_list  {\n\t\t$$ = new OrderItemList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->order_item_ = $1;\n\t\t$$->order_item_list_ = $3;\n\t\t\n\t}\n  ;\n\norder_item:\n\texpr opt_order_behavior opt_order_nulls  {\n\t\t$$ = new OrderItem();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_order_behavior_ = $2;\n\t\t$$->opt_order_nulls_ = $3;\n\t\t\n\t}\n  ;\n\nopt_order_behavior:\n\tASC  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tDESC  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOrderBehavior();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_with_clause:\n\tWITH cte_table_list  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_list_ = $2;\n\t\t\n\t}\n   |\tWITH RECURSIVE cte_table_list  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->cte_table_list_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptWithClause();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ncte_table_list:\n\tcte_table  {\n\t\t$$ = new CteTableList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_ = $1;\n\t\t\n\t}\n   |\tcte_table OP_COMMA cte_table_list  {\n\t\t$$ = new CteTableList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->cte_table_ = $1;\n\t\t$$->cte_table_list_ = $3;\n\t\t\n\t}\n  ;\n\ncte_table:\n\tcte_table_name AS OP_LP select_stmt OP_RP  {\n\t\t$$ = new CteTable();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->cte_table_name_ = $1;\n\t\t$$->select_stmt_ = $4;\n\t\t\n\t}\n  ;\n\ncte_table_name:\n\ttable_name opt_column_name_list_p  {\n\t\t$$ = new CteTableName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $1;\n\t\t$$->opt_column_name_list_p_ = $2;\n\t\t\n\t}\n  ;\n\nopt_all_or_distinct:\n\tALL  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tDISTINCT  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptAllOrDistinct();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\ncreate_table_stmt:\n\tCREATE opt_temp TABLE opt_if_not_exist table_name AS select_stmt  {\n\t\t$$ = new CreateTableStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->opt_if_not_exist_ = $4;\n\t\t$$->table_name_ = $5;\n\t\t$$->select_stmt_ = $7;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)128; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP  {\n\t\t$$ = new CreateTableStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->opt_if_not_exist_ = $4;\n\t\t$$->table_name_ = $5;\n\t\t$$->column_def_list_ = $7;\n\t\t$$->opt_table_constraint_list_ = $8;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_def_list_; \n\t\t\twhile(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_def_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->identifier_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\ttmp3->data_type_ = kDataColumnName; \n\t\t\t\t\t\ttmp3->scope_ = 2; \n\t\t\t\t\t\ttmp3->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp1 = tmp1->column_def_list_;\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncreate_index_stmt:\n\tCREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause  {\n\t\t$$ = new CreateIndexStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_unique_ = $2;\n\t\t$$->opt_if_not_exist_ = $4;\n\t\t$$->table_name_1_ = $5;\n\t\t$$->table_name_2_ = $7;\n\t\t$$->indexed_column_list_ = $9;\n\t\t$$->opt_where_clause_ = $11;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_1_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)128; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_2_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncreate_view_stmt:\n\tCREATE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->view_name_ = $4;\n\t\t$$->opt_column_name_list_p_ = $5;\n\t\t$$->select_stmt_ = $7;\n\t\t$$->opt_check_option_ = $8;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_temp_ = $2;\n\t\t$$->view_name_ = $5;\n\t\t$$->opt_column_name_list_p_ = $6;\n\t\t$$->select_stmt_ = $8;\n\t\t$$->opt_check_option_ = $9;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_temp_ = $4;\n\t\t$$->view_name_ = $6;\n\t\t$$->opt_column_name_list_p_ = $7;\n\t\t$$->select_stmt_ = $9;\n\t\t$$->opt_check_option_ = $10;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tCREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option  {\n\t\t$$ = new CreateViewStmt();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->opt_temp_ = $4;\n\t\t$$->view_name_ = $7;\n\t\t$$->opt_column_name_list_p_ = $8;\n\t\t$$->select_stmt_ = $10;\n\t\t$$->opt_check_option_ = $11;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 10; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)1; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 11; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)1; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ndrop_index_stmt:\n\tDROP INDEX opt_if_exist table_name  {\n\t\t$$ = new DropIndexStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_if_exist_ = $3;\n\t\t$$->table_name_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ndrop_table_stmt:\n\tDROP TABLE opt_if_exist table_name  {\n\t\t$$ = new DropTableStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_if_exist_ = $3;\n\t\t$$->table_name_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ndrop_view_stmt:\n\tDROP VIEW opt_if_exist view_name  {\n\t\t$$ = new DropViewStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_if_exist_ = $3;\n\t\t$$->view_name_ = $4;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->view_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 1; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)2; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ninsert_stmt:\n\topt_with_clause INSERT INTO table_name insert_rest opt_on_conflict  {\n\t\t$$ = new InsertStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_with_clause_ = $1;\n\t\t$$->table_name_ = $4;\n\t\t$$->insert_rest_ = $5;\n\t\t$$->opt_on_conflict_ = $6;\n\t\t\n\t}\n  ;\n\ninsert_rest:\n\topt_column_name_list_p select_no_parens  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n   |\topt_column_name_list_p DEFAULT VALUES  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t\n\t}\n   |\topt_column_name_list_p VALUES super_values_list  {\n\t\t$$ = new InsertRest();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_column_name_list_p_ = $1;\n\t\t$$->super_values_list_ = $3;\n\t\t\n\t}\n  ;\n\nsuper_values_list:\n\tvalues_list  {\n\t\t$$ = new SuperValuesList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->values_list_ = $1;\n\t\t\n\t}\n   |\tvalues_list OP_COMMA super_values_list  {\n\t\t$$ = new SuperValuesList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->values_list_ = $1;\n\t\t$$->super_values_list_ = $3;\n\t\t\n\t}\n  ;\n\nvalues_list:\n\tOP_LP expr_list OP_RP  {\n\t\t$$ = new ValuesList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $2;\n\t\t\n\t}\n  ;\n\nopt_on_conflict:\n\tON CONFLICT opt_conflict_expr DO NOTHING  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_conflict_expr_ = $3;\n\t\t\n\t}\n   |\tON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_conflict_expr_ = $3;\n\t\t$$->set_clause_list_ = $6;\n\t\t$$->where_clause_ = $7;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptOnConflict();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_conflict_expr:\n\tOP_LP indexed_column_list OP_RP where_clause  {\n\t\t$$ = new OptConflictExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->indexed_column_list_ = $2;\n\t\t$$->where_clause_ = $4;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptConflictExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nindexed_column_list:\n\tindexed_column  {\n\t\t$$ = new IndexedColumnList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->indexed_column_ = $1;\n\t\t\n\t}\n   |\tindexed_column OP_COMMA indexed_column_list  {\n\t\t$$ = new IndexedColumnList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->indexed_column_ = $1;\n\t\t$$->indexed_column_list_ = $3;\n\t\t\n\t}\n  ;\n\nindexed_column:\n\texpr opt_order_behavior  {\n\t\t$$ = new IndexedColumn();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $1;\n\t\t$$->opt_order_behavior_ = $2;\n\t\t\n\t}\n  ;\n\nupdate_stmt:\n\topt_with_clause UPDATE table_name SET set_clause_list opt_where_clause  {\n\t\t$$ = new UpdateStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_with_clause_ = $1;\n\t\t$$->table_name_ = $3;\n\t\t$$->set_clause_list_ = $5;\n\t\t$$->opt_where_clause_ = $6;\n\t\t\n\t}\n  ;\n\nreindex_stmt:\n\tREINDEX TABLE table_name  {\n\t\t$$ = new ReindexStmt();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\t\n\t}\n   |\tREINDEX INDEX table_name  {\n\t\t$$ = new ReindexStmt();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->table_name_ = $3;\n\t\t\n\t}\n  ;\n\nalter_action:\n\tRENAME TO table_name  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)64; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tRENAME opt_column column_name TO column_name  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_column_ = $2;\n\t\t$$->column_name_1_ = $3;\n\t\t$$->column_name_2_ = $5;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_1_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 2; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_2_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataColumnName; \n\t\t\t\t\ttmp2->scope_ = 3; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)64; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n   |\tADD opt_column column_def  {\n\t\t$$ = new AlterAction();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->opt_column_ = $2;\n\t\t$$->column_def_ = $3;\n\t\t\n\t}\n  ;\n\ncolumn_def_list:\n\tcolumn_def  {\n\t\t$$ = new ColumnDefList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_def_ = $1;\n\t\t\n\t}\n   |\tcolumn_def OP_COMMA column_def_list  {\n\t\t$$ = new ColumnDefList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_def_ = $1;\n\t\t$$->column_def_list_ = $3;\n\t\t\n\t}\n  ;\n\ncolumn_def:\n\tidentifier type_name opt_column_constraint_list  {\n\t\t$$ = new ColumnDef();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t$$->type_name_ = $2;\n\t\t$$->opt_column_constraint_list_ = $3;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataColumnName; \n\t\t\t\ttmp1->scope_ = 2; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)1; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_column_constraint_list:\n\tcolumn_constraint_list  {\n\t\t$$ = new OptColumnConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_constraint_list_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumnConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ncolumn_constraint_list:\n\tcolumn_constraint  {\n\t\t$$ = new ColumnConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_constraint_ = $1;\n\t\t\n\t}\n   |\tcolumn_constraint column_constraint_list  {\n\t\t$$ = new ColumnConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_constraint_ = $1;\n\t\t$$->column_constraint_list_ = $2;\n\t\t\n\t}\n  ;\n\ncolumn_constraint:\n\tconstraint_type  {\n\t\t$$ = new ColumnConstraint();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->constraint_type_ = $1;\n\t\t\n\t}\n  ;\n\nconstraint_type:\n\tPRIMARY KEY  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tNOT NULL  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tUNIQUE  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tCHECK OP_LP expr OP_RP  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->expr_ = $3;\n\t\t\n\t}\n   |\tforeign_clause  {\n\t\t$$ = new ConstraintType();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->foreign_clause_ = $1;\n\t\t\n\t}\n  ;\n\nforeign_clause:\n\tREFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec  {\n\t\t$$ = new ForeignClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_name_ = $2;\n\t\t$$->opt_column_name_list_p_ = $3;\n\t\t$$->opt_foreign_key_actions_ = $4;\n\t\t$$->opt_constraint_attribute_spec_ = $5;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->table_name_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->identifier_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\ttmp2->data_type_ = kDataTableName; \n\t\t\t\t\ttmp2->scope_ = 100; \n\t\t\t\t\ttmp2->data_flag_ =(DATAFLAG)8; \n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif($$){\n\t\t\tauto tmp1 = $$->opt_column_name_list_p_; \n\t\t\tif(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_list_; \n\t\t\t\twhile(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->column_name_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\tauto tmp4 = tmp3->identifier_; \n\t\t\t\t\t\tif(tmp4){\n\t\t\t\t\t\t\ttmp4->data_type_ = kDataColumnName; \n\t\t\t\t\t\t\ttmp4->scope_ = 101; \n\t\t\t\t\t\t\ttmp4->data_flag_ =(DATAFLAG)8; \n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttmp2 = tmp2->column_name_list_;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_foreign_key_actions:\n\tforeign_key_actions  {\n\t\t$$ = new OptForeignKeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->foreign_key_actions_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptForeignKeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nforeign_key_actions:\n\tMATCH FULL  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tMATCH PARTIAL  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tMATCH SIMPLE  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tON UPDATE key_actions  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->key_actions_ = $3;\n\t\t\n\t}\n   |\tON DELETE key_actions  {\n\t\t$$ = new ForeignKeyActions();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->key_actions_ = $3;\n\t\t\n\t}\n  ;\n\nkey_actions:\n\tSET NULL  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tSET DEFAULT  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tCASCADE  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tRESTRICT  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tNO ACTION  {\n\t\t$$ = new KeyActions();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n  ;\n\nopt_constraint_attribute_spec:\n\tDEFFERRABLE opt_initial_time  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_initial_time_ = $2;\n\t\t\n\t}\n   |\tNOT DEFFERRABLE opt_initial_time  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_initial_time_ = $3;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptConstraintAttributeSpec();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nopt_initial_time:\n\tINITIALLY DEFERRED  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINITIALLY IMMEDIATE  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptInitialTime();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n  ;\n\nconstraint_name:\n\tCONSTRAINT name  {\n\t\t$$ = new ConstraintName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->name_ = $2;\n\t\t\n\t}\n  ;\n\nopt_temp:\n\tTEMPORARY  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tTEMP  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tLOCAL TEMPORARY  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tLOCAL TEMP  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tGLOBAL TEMPORARY  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tGLOBAL TEMP  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tUNLOGGED  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTemp();\n\t\t$$->case_idx_ = CASE7;\n\t\t\n\t}\n  ;\n\nopt_check_option:\n\tWITH CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tWITH CASCADED CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tWITH LOCAL CHECK OPTION  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptCheckOption();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n  ;\n\nopt_column_name_list_p:\n\tOP_LP column_name_list OP_RP  {\n\t\t$$ = new OptColumnNameListP();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_list_ = $2;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumnNameListP();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nset_clause_list:\n\tset_clause  {\n\t\t$$ = new SetClauseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->set_clause_ = $1;\n\t\t\n\t}\n   |\tset_clause OP_COMMA set_clause_list  {\n\t\t$$ = new SetClauseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->set_clause_ = $1;\n\t\t$$->set_clause_list_ = $3;\n\t\t\n\t}\n  ;\n\nset_clause:\n\tcolumn_name OP_EQUAL expr  {\n\t\t$$ = new SetClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t$$->expr_ = $3;\n\t\t\n\t}\n   |\tOP_LP column_name_list OP_RP OP_EQUAL expr  {\n\t\t$$ = new SetClause();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->column_name_list_ = $2;\n\t\t$$->expr_ = $5;\n\t\t\n\t}\n  ;\n\nexpr:\n\toperand  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\tbetween_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->between_expr_ = $1;\n\t\t\n\t}\n   |\texists_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->exists_expr_ = $1;\n\t\t\n\t}\n   |\tin_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->in_expr_ = $1;\n\t\t\n\t}\n   |\tcast_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->cast_expr_ = $1;\n\t\t\n\t}\n   |\tlogic_expr  {\n\t\t$$ = new Expr();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->logic_expr_ = $1;\n\t\t\n\t}\n  ;\n\noperand:\n\tOP_LP expr_list OP_RP  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_list_ = $2;\n\t\t\n\t}\n   |\tarray_index  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->array_index_ = $1;\n\t\t\n\t}\n   |\tscalar_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->scalar_expr_ = $1;\n\t\t\n\t}\n   |\tunary_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->unary_expr_ = $1;\n\t\t\n\t}\n   |\tbinary_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->binary_expr_ = $1;\n\t\t\n\t}\n   |\tcase_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->case_expr_ = $1;\n\t\t\n\t}\n   |\textract_expr  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE6;\n\t\t$$->extract_expr_ = $1;\n\t\t\n\t}\n   |\tOP_LP select_no_parens OP_RP  {\n\t\t$$ = new Operand();\n\t\t$$->case_idx_ = CASE7;\n\t\t$$->select_no_parens_ = $2;\n\t\t\n\t}\n  ;\n\ncast_expr:\n\tCAST OP_LP expr AS type_name OP_RP  {\n\t\t$$ = new CastExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_ = $3;\n\t\t$$->type_name_ = $5;\n\t\t\n\t}\n  ;\n\nscalar_expr:\n\tcolumn_name  {\n\t\t$$ = new ScalarExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->column_name_ = $1;\n\t\t\n\t}\n   |\tliteral  {\n\t\t$$ = new ScalarExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->literal_ = $1;\n\t\t\n\t}\n  ;\n\nunary_expr:\n\tOP_SUB operand %prec OP_SUB {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $2;\n\t\t\n\t}\n   |\tNOT operand %prec NOT {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_ = $2;\n\t\t\n\t}\n   |\toperand ISNULL %prec ISNULL {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\toperand IS NULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\toperand IS NOT NULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->operand_ = $1;\n\t\t\n\t}\n   |\tNULL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tOP_MUL  {\n\t\t$$ = new UnaryExpr();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n  ;\n\nbinary_expr:\n\tcomp_expr  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->comp_expr_ = $1;\n\t\t\n\t}\n   |\toperand binary_op operand %prec OP_ADD {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->binary_op_ = $2;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand LIKE operand  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand NOT LIKE operand  {\n\t\t$$ = new BinaryExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $4;\n\t\t\n\t}\n  ;\n\nlogic_expr:\n\texpr AND expr  {\n\t\t$$ = new LogicExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $1;\n\t\t$$->expr_2_ = $3;\n\t\t\n\t}\n   |\texpr OR expr  {\n\t\t$$ = new LogicExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->expr_1_ = $1;\n\t\t$$->expr_2_ = $3;\n\t\t\n\t}\n  ;\n\nin_expr:\n\toperand opt_not IN OP_LP select_no_parens OP_RP  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->select_no_parens_ = $5;\n\t\t\n\t}\n   |\toperand opt_not IN OP_LP expr_list OP_RP  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->expr_list_ = $5;\n\t\t\n\t}\n   |\toperand opt_not IN table_name  {\n\t\t$$ = new InExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_ = $1;\n\t\t$$->opt_not_ = $2;\n\t\t$$->table_name_ = $4;\n\t\t\n\t}\n  ;\n\ncase_expr:\n\tCASE expr case_list END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t$$->case_list_ = $3;\n\t\t\n\t}\n   |\tCASE case_list END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->case_list_ = $2;\n\t\t\n\t}\n   |\tCASE expr case_list ELSE expr END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->expr_1_ = $2;\n\t\t$$->case_list_ = $3;\n\t\t$$->expr_2_ = $5;\n\t\t\n\t}\n   |\tCASE case_list ELSE expr END  {\n\t\t$$ = new CaseExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->case_list_ = $2;\n\t\t$$->expr_1_ = $4;\n\t\t\n\t}\n  ;\n\nbetween_expr:\n\toperand BETWEEN operand AND operand %prec BETWEEN {\n\t\t$$ = new BetweenExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t$$->operand_3_ = $5;\n\t\t\n\t}\n   |\toperand NOT BETWEEN operand AND operand %prec NOT {\n\t\t$$ = new BetweenExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $4;\n\t\t$$->operand_3_ = $6;\n\t\t\n\t}\n  ;\n\nexists_expr:\n\topt_not EXISTS OP_LP select_no_parens OP_RP  {\n\t\t$$ = new ExistsExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_not_ = $1;\n\t\t$$->select_no_parens_ = $4;\n\t\t\n\t}\n  ;\n\ncase_list:\n\tcase_clause  {\n\t\t$$ = new CaseList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->case_clause_ = $1;\n\t\t\n\t}\n   |\tcase_clause case_list  {\n\t\t$$ = new CaseList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->case_clause_ = $1;\n\t\t$$->case_list_ = $2;\n\t\t\n\t}\n  ;\n\ncase_clause:\n\tWHEN expr THEN expr  {\n\t\t$$ = new CaseClause();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->expr_1_ = $2;\n\t\t$$->expr_2_ = $4;\n\t\t\n\t}\n  ;\n\ncomp_expr:\n\toperand OP_EQUAL operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_NOTEQUAL operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_GREATERTHAN operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_LESSTHAN operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_LESSEQ operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n   |\toperand OP_GREATEREQ operand  {\n\t\t$$ = new CompExpr();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->operand_1_ = $1;\n\t\t$$->operand_2_ = $3;\n\t\t\n\t}\n  ;\n\nextract_expr:\n\tEXTRACT OP_LP datetime_field FROM expr OP_RP  {\n\t\t$$ = new ExtractExpr();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->datetime_field_ = $3;\n\t\t$$->expr_ = $5;\n\t\t\n\t}\n  ;\n\ndatetime_field:\n\tSECOND  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tMINUTE  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tHOUR  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tDAY  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tMONTH  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tYEAR  {\n\t\t$$ = new DatetimeField();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n  ;\n\narray_index:\n\toperand OP_LBRACKET int_literal OP_RBRACKET  {\n\t\t$$ = new ArrayIndex();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->operand_ = $1;\n\t\t$$->int_literal_ = $3;\n\t\t\n\t}\n  ;\n\nliteral:\n\tstring_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->string_literal_ = $1;\n\t\t\n\t}\n   |\tbool_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->bool_literal_ = $1;\n\t\t\n\t}\n   |\tnum_literal  {\n\t\t$$ = new Literal();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->num_literal_ = $1;\n\t\t\n\t}\n  ;\n\nstring_literal:\n\tSTRINGLITERAL  {\n\t\t$$ = new StringLiteral();\n\t\t$$->string_val_ = $1;\n\t\tfree($1);\n\t\t\n\t}\n  ;\n\nbool_literal:\n\tTRUE  {\n\t\t$$ = new BoolLiteral();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tFALSE  {\n\t\t$$ = new BoolLiteral();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nnum_literal:\n\tint_literal  {\n\t\t$$ = new NumLiteral();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->int_literal_ = $1;\n\t\t\n\t}\n   |\tfloat_literal  {\n\t\t$$ = new NumLiteral();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->float_literal_ = $1;\n\t\t\n\t}\n  ;\n\nint_literal:\n\tINTLITERAL  {\n\t\t$$ = new IntLiteral();\n\t\t$$->int_val_ = $1;\n\t\t\n\t}\n  ;\n\nfloat_literal:\n\tFLOATLITERAL  {\n\t\t$$ = new FloatLiteral();\n\t\t$$->float_val_ = $1;\n\t\t\n\t}\n  ;\n\nopt_column:\n\tCOLUMN  {\n\t\t$$ = new OptColumn();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptColumn();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_if_not_exist:\n\tIF NOT EXISTS  {\n\t\t$$ = new OptIfNotExist();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIfNotExist();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nopt_if_exist:\n\tIF EXISTS  {\n\t\t$$ = new OptIfExist();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptIfExist();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nidentifier:\n\tIDENTIFIER  {\n\t\t$$ = new Identifier();\n\t\t$$->string_val_ = $1;\n\t\tfree($1);\n\t\t\n\t}\n  ;\n\ntable_name:\n\tidentifier  {\n\t\t$$ = new TableName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataTableName; \n\t\t\t\ttmp1->scope_ = 1; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\ncolumn_name:\n\tidentifier  {\n\t\t$$ = new ColumnName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->identifier_; \n\t\t\tif(tmp1){\n\t\t\t\ttmp1->data_type_ = kDataColumnName; \n\t\t\t\ttmp1->scope_ = 2; \n\t\t\t\ttmp1->data_flag_ =(DATAFLAG)8; \n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\nopt_unique:\n\tUNIQUE  {\n\t\t$$ = new OptUnique();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptUnique();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nview_name:\n\tidentifier  {\n\t\t$$ = new ViewName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\nbinary_op:\n\tOP_ADD  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tOP_SUB  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tOP_DIVIDE  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tOP_MOD  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tOP_MUL  {\n\t\t$$ = new BinaryOp();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n  ;\n\nopt_not:\n\tNOT  {\n\t\t$$ = new OptNot();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptNot();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nname:\n\tidentifier  {\n\t\t$$ = new Name();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->identifier_ = $1;\n\t\t\n\t}\n  ;\n\ntype_name:\n\tnumeric_type  {\n\t\t$$ = new TypeName();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->numeric_type_ = $1;\n\t\t\n\t}\n   |\tcharacter_type  {\n\t\t$$ = new TypeName();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->character_type_ = $1;\n\t\t\n\t}\n  ;\n\ncharacter_type:\n\tcharacter_with_length  {\n\t\t$$ = new CharacterType();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_with_length_ = $1;\n\t\t\n\t}\n   |\tcharacter_without_length  {\n\t\t$$ = new CharacterType();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->character_without_length_ = $1;\n\t\t\n\t}\n  ;\n\ncharacter_with_length:\n\tcharacter_conflicta OP_LP int_literal OP_RP  {\n\t\t$$ = new CharacterWithLength();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_conflicta_ = $1;\n\t\t$$->int_literal_ = $3;\n\t\t\n\t}\n  ;\n\ncharacter_without_length:\n\tcharacter_conflicta  {\n\t\t$$ = new CharacterWithoutLength();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->character_conflicta_ = $1;\n\t\t\n\t}\n  ;\n\ncharacter_conflicta:\n\tCHARACTER opt_varying  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->opt_varying_ = $2;\n\t\t\n\t}\n   |\tCHAR opt_varying  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->opt_varying_ = $2;\n\t\t\n\t}\n   |\tVARCHAR  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tTEXT  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tNATIONAL CHARACTER opt_varying  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE4;\n\t\t$$->opt_varying_ = $3;\n\t\t\n\t}\n   |\tNATIONAL CHAR opt_varying  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE5;\n\t\t$$->opt_varying_ = $3;\n\t\t\n\t}\n   |\tNCHAR opt_varying  {\n\t\t$$ = new CharacterConflicta();\n\t\t$$->case_idx_ = CASE6;\n\t\t$$->opt_varying_ = $2;\n\t\t\n\t}\n  ;\n\nopt_varying:\n\tVARYING  {\n\t\t$$ = new OptVarying();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptVarying();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\nnumeric_type:\n\tINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE0;\n\t\t\n\t}\n   |\tINTEGER  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n   |\tSMALLINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE2;\n\t\t\n\t}\n   |\tBIGINT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE3;\n\t\t\n\t}\n   |\tREAL  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE4;\n\t\t\n\t}\n   |\tFLOAT  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE5;\n\t\t\n\t}\n   |\tDOUBLE PRECISION  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE6;\n\t\t\n\t}\n   |\tDECIMAL  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE7;\n\t\t\n\t}\n   |\tDEC  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE8;\n\t\t\n\t}\n   |\tNUMERIC  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE9;\n\t\t\n\t}\n   |\tBOOLEAN  {\n\t\t$$ = new NumericType();\n\t\t$$->case_idx_ = CASE10;\n\t\t\n\t}\n  ;\n\nopt_table_constraint_list:\n\ttable_constraint_list  {\n\t\t$$ = new OptTableConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_constraint_list_ = $1;\n\t\t\n\t}\n   |\t  {\n\t\t$$ = new OptTableConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t\n\t}\n  ;\n\ntable_constraint_list:\n\ttable_constraint  {\n\t\t$$ = new TableConstraintList();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->table_constraint_ = $1;\n\t\t\n\t}\n   |\ttable_constraint OP_COMMA table_constraint_list  {\n\t\t$$ = new TableConstraintList();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->table_constraint_ = $1;\n\t\t$$->table_constraint_list_ = $3;\n\t\t\n\t}\n  ;\n\ntable_constraint:\n\tconstraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE0;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->indexed_column_list_ = $5;\n\t\t\n\t}\n   |\tconstraint_name UNIQUE OP_LP indexed_column_list OP_RP  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE1;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->indexed_column_list_ = $4;\n\t\t\n\t}\n   |\tconstraint_name CHECK OP_LP expr OP_RP  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE2;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->expr_ = $4;\n\t\t\n\t}\n   |\tconstraint_name FOREIGN KEY OP_LP column_name_list OP_RP foreign_clause  {\n\t\t$$ = new TableConstraint();\n\t\t$$->case_idx_ = CASE3;\n\t\t$$->constraint_name_ = $1;\n\t\t$$->column_name_list_ = $5;\n\t\t$$->foreign_clause_ = $7;\n\t\tif($$){\n\t\t\tauto tmp1 = $$->column_name_list_; \n\t\t\twhile(tmp1){\n\t\t\t\tauto tmp2 = tmp1->column_name_; \n\t\t\t\tif(tmp2){\n\t\t\t\t\tauto tmp3 = tmp2->identifier_; \n\t\t\t\t\tif(tmp3){\n\t\t\t\t\t\ttmp3->data_type_ = kDataColumnName; \n\t\t\t\t\t\ttmp3->scope_ = 2; \n\t\t\t\t\t\ttmp3->data_flag_ =(DATAFLAG)8; \n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttmp1 = tmp1->column_name_list_;\n\t\t\t}\n\t\t}\n\n\n\t}\n  ;\n\n%%\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/bison_parser.cpp",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison implementation for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* C LALR(1) parser skeleton written by Richard Stallman, by\n   simplifying the original so-called \"semantic\" parser.  */\n\n/* All symbols defined below should begin with yy or YY, to avoid\n   infringing on user name space.  This should be done even for local\n   variables, as they might otherwise be expanded by user macros.\n   There are some unavoidable exceptions within include files to\n   define necessary library symbols; they are noted \"INFRINGES ON\n   USER NAME SPACE\" below.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n/* Identify Bison output.  */\n#define YYBISON 1\n\n/* Bison version.  */\n#define YYBISON_VERSION \"3.3.2\"\n\n/* Skeleton name.  */\n#define YYSKELETON_NAME \"yacc.c\"\n\n/* Pure parsers.  */\n#define YYPURE 2\n\n/* Push parsers.  */\n#define YYPUSH 0\n\n/* Pull parsers.  */\n#define YYPULL 1\n\n/* Substitute the type names.  */\n#define YYSTYPE FF_STYPE\n#define YYLTYPE FF_LTYPE\n/* Substitute the variable and function names.  */\n#define yyparse ff_parse\n#define yylex ff_lex\n#define yyerror ff_error\n#define yydebug ff_debug\n#define yynerrs ff_nerrs\n\n/* First part of user prologue.  */\n#line 1 \"bison.y\" /* yacc.c:337  */\n\n#include \"bison_parser.h\"\n\n#include <stdio.h>\n#include <string.h>\n\n#include \"flex_lexer.h\"\nint yyerror(YYLTYPE *llocp, Program *result, yyscan_t scanner,\n            const char *msg) {\n  return 0;\n}\n\n#line 86 \"bison_parser.cpp\" /* yacc.c:337  */\n#ifndef YY_NULLPTR\n#if defined __cplusplus\n#if 201103L <= __cplusplus\n#define YY_NULLPTR nullptr\n#else\n#define YY_NULLPTR 0\n#endif\n#else\n#define YY_NULLPTR ((void *)0)\n#endif\n#endif\n\n/* Enabling verbose error messages.  */\n#ifdef YYERROR_VERBOSE\n#undef YYERROR_VERBOSE\n#define YYERROR_VERBOSE 1\n#else\n#define YYERROR_VERBOSE 1\n#endif\n\n/* In a future release of Bison, this section will be replaced\n   by #include \"bison_parser.h\".  */\n#ifndef YY_FF_BISON_PARSER_H_INCLUDED\n#define YY_FF_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef FF_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define FF_DEBUG 1\n#else\n#define FF_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define FF_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined FF_DEBUG */\n#if FF_DEBUG\nextern int ff_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 8 \"bison.y\" /* yacc.c:352  */\n\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n\n#line 132 \"bison_parser.cpp\" /* yacc.c:352  */\n\n/* Token type.  */\n#ifndef FF_TOKENTYPE\n#define FF_TOKENTYPE\nenum ff_tokentype {\n  SQL_OP_NOTEQUAL = 258,\n  SQL_SIMPLE = 259,\n  SQL_TEXT = 260,\n  SQL_OVER = 261,\n  SQL_BETWEEN = 262,\n  SQL_OP_SEMI = 263,\n  SQL_BIGINT = 264,\n  SQL_LIMIT = 265,\n  SQL_WITH = 266,\n  SQL_ORDER = 267,\n  SQL_LAST = 268,\n  SQL_UNBOUNDED = 269,\n  SQL_PRECEDING = 270,\n  SQL_EXCEPT = 271,\n  SQL_NUMERIC = 272,\n  SQL_OP_LESSTHAN = 273,\n  SQL_PROCEDURE = 274,\n  SQL_ACTION = 275,\n  SQL_FIRST = 276,\n  SQL_OP_GREATEREQ = 277,\n  SQL_CHECK = 278,\n  SQL_FULL = 279,\n  SQL_NATURAL = 280,\n  SQL_DOUBLE = 281,\n  SQL_NATIONAL = 282,\n  SQL_OP_ADD = 283,\n  SQL_CURRENT = 284,\n  SQL_TRIGGER = 285,\n  SQL_OP_SUB = 286,\n  SQL_FALSE = 287,\n  SQL_UNIQUE = 288,\n  SQL_WHERE = 289,\n  SQL_MINUTE = 290,\n  SQL_BEFORE = 291,\n  SQL_ON = 292,\n  SQL_PARTIAL = 293,\n  SQL_OF = 294,\n  SQL_AFTER = 295,\n  SQL_PRIMARY = 296,\n  SQL_MONTH = 297,\n  SQL_DEFERRED = 298,\n  SQL_OP_DOUBLE_DOLLAR = 299,\n  SQL_VARYING = 300,\n  SQL_OP_GREATERTHAN = 301,\n  SQL_OR = 302,\n  SQL_PLPGSQL = 303,\n  SQL_DELETE = 304,\n  SQL_INDEX = 305,\n  SQL_RETURN = 306,\n  SQL_OP_MUL = 307,\n  SQL_FOREIGN = 308,\n  SQL_RESTRICT = 309,\n  SQL_FOLLOWING = 310,\n  SQL_TIES = 311,\n  SQL_DEC = 312,\n  SQL_SELECT = 313,\n  SQL_BEGIN = 314,\n  SQL_LANGUAGE = 315,\n  SQL_DISTINCT = 316,\n  SQL_TRUE = 317,\n  SQL_BY = 318,\n  SQL_OP_MOD = 319,\n  SQL_VALUES = 320,\n  SQL_IS = 321,\n  SQL_ROW = 322,\n  SQL_FUNCTION = 323,\n  SQL_END = 324,\n  SQL_RECURSIVE = 325,\n  SQL_FOR = 326,\n  SQL_UNION = 327,\n  SQL_NULLS = 328,\n  SQL_UPDATE = 329,\n  SQL_ELSE = 330,\n  SQL_RANGE = 331,\n  SQL_OFFSET = 332,\n  SQL_INDEXED = 333,\n  SQL_INSTEAD = 334,\n  SQL_NCHAR = 335,\n  SQL_AND = 336,\n  SQL_REINDEX = 337,\n  SQL_INITIALLY = 338,\n  SQL_YEAR = 339,\n  SQL_PRECISION = 340,\n  SQL_FILTER = 341,\n  SQL_NOT = 342,\n  SQL_VIEW = 343,\n  SQL_DEFFERRABLE = 344,\n  SQL_REAL = 345,\n  SQL_THEN = 346,\n  SQL_OPTION = 347,\n  SQL_DEFAULT = 348,\n  SQL_GLOBAL = 349,\n  SQL_CROSS = 350,\n  SQL_CHAR = 351,\n  SQL_REFERENCES = 352,\n  SQL_OP_XOR = 353,\n  SQL_GROUP = 354,\n  SQL_CASE = 355,\n  SQL_SET = 356,\n  SQL_HOUR = 357,\n  SQL_NO = 358,\n  SQL_COLUMN = 359,\n  SQL_LOCAL = 360,\n  SQL_DROP = 361,\n  SQL_REPLACE = 362,\n  SQL_ASC = 363,\n  SQL_OP_COMMA = 364,\n  SQL_TABLE = 365,\n  SQL_ARRAY = 366,\n  SQL_IF = 367,\n  SQL_EXTRACT = 368,\n  SQL_LEFT = 369,\n  SQL_OUTER = 370,\n  SQL_DECIMAL = 371,\n  SQL_PARTITION = 372,\n  SQL_CASCADE = 373,\n  SQL_ADD = 374,\n  SQL_OTHERS = 375,\n  SQL_OP_LESSEQ = 376,\n  SQL_MATCH = 377,\n  SQL_ALL = 378,\n  SQL_ROWS = 379,\n  SQL_JOIN = 380,\n  SQL_LIKE = 381,\n  SQL_INTEGER = 382,\n  SQL_OP_RP = 383,\n  SQL_INT = 384,\n  SQL_BOOLEAN = 385,\n  SQL_KEY = 386,\n  SQL_EACH = 387,\n  SQL_USING = 388,\n  SQL_RENAME = 389,\n  SQL_DO = 390,\n  SQL_FLOAT = 391,\n  SQL_OP_LP = 392,\n  SQL_CHARACTER = 393,\n  SQL_UMINUS = 394,\n  SQL_CAST = 395,\n  SQL_GROUPS = 396,\n  SQL_NULL = 397,\n  SQL_SMALLINT = 398,\n  SQL_INSERT = 399,\n  SQL_TEMPORARY = 400,\n  SQL_CONSTRAINT = 401,\n  SQL_CREATE = 402,\n  SQL_OP_LBRACKET = 403,\n  SQL_WHEN = 404,\n  SQL_IMMEDIATE = 405,\n  SQL_TO = 406,\n  SQL_EXCLUDE = 407,\n  SQL_DAY = 408,\n  SQL_CONFLICT = 409,\n  SQL_OP_RBRACKET = 410,\n  SQL_EXECUTE = 411,\n  SQL_EXISTS = 412,\n  SQL_INTO = 413,\n  SQL_OP_DIVIDE = 414,\n  SQL_CASCADED = 415,\n  SQL_ISNULL = 416,\n  SQL_AS = 417,\n  SQL_INNER = 418,\n  SQL_INTERSECT = 419,\n  SQL_IN = 420,\n  SQL_OP_EQUAL = 421,\n  SQL_VARCHAR = 422,\n  SQL_ALTER = 423,\n  SQL_DESC = 424,\n  SQL_FROM = 425,\n  SQL_TEMP = 426,\n  SQL_UNLOGGED = 427,\n  SQL_SECOND = 428,\n  SQL_WINDOW = 429,\n  SQL_NOTHING = 430,\n  SQL_HAVING = 431,\n  SQL_INTLITERAL = 432,\n  SQL_STRINGLITERAL = 433,\n  SQL_FLOATLITERAL = 434,\n  SQL_IDENTIFIER = 435\n};\n#endif\n\n/* Value type.  */\n#if !defined FF_STYPE && !defined FF_STYPE_IS_DECLARED\n#line 30 \"bison.y\" /* yacc.c:352  */\nunion FF_STYPE {\n#line 30 \"bison.y\" /* yacc.c:352  */\n\n  long ival;\n  char *sval;\n  double fval;\n  Program *program_t;\n  Stmtlist *stmtlist_t;\n  Stmt *stmt_t;\n  CreateStmt *create_stmt_t;\n  DropStmt *drop_stmt_t;\n  AlterStmt *alter_stmt_t;\n  SelectStmt *select_stmt_t;\n  SelectWithParens *select_with_parens_t;\n  SelectNoParens *select_no_parens_t;\n  SelectClauseList *select_clause_list_t;\n  SelectClause *select_clause_t;\n  CombineClause *combine_clause_t;\n  OptFromClause *opt_from_clause_t;\n  SelectTarget *select_target_t;\n  OptWindowClause *opt_window_clause_t;\n  WindowClause *window_clause_t;\n  WindowDefList *window_def_list_t;\n  WindowDef *window_def_t;\n  WindowName *window_name_t;\n  Window *window_t;\n  OptPartition *opt_partition_t;\n  OptFrameClause *opt_frame_clause_t;\n  RangeOrRows *range_or_rows_t;\n  FrameBoundStart *frame_bound_start_t;\n  FrameBoundEnd *frame_bound_end_t;\n  FrameBound *frame_bound_t;\n  OptFrameExclude *opt_frame_exclude_t;\n  FrameExclude *frame_exclude_t;\n  OptExistWindowName *opt_exist_window_name_t;\n  OptGroupClause *opt_group_clause_t;\n  OptHavingClause *opt_having_clause_t;\n  OptWhereClause *opt_where_clause_t;\n  WhereClause *where_clause_t;\n  FromClause *from_clause_t;\n  TableRef *table_ref_t;\n  OptOnOrUsing *opt_on_or_using_t;\n  OnOrUsing *on_or_using_t;\n  ColumnNameList *column_name_list_t;\n  OptTablePrefix *opt_table_prefix_t;\n  JoinOp *join_op_t;\n  OptJoinType *opt_join_type_t;\n  ExprList *expr_list_t;\n  OptLimitClause *opt_limit_clause_t;\n  LimitClause *limit_clause_t;\n  OptOrderClause *opt_order_clause_t;\n  OptOrderNulls *opt_order_nulls_t;\n  OrderItemList *order_item_list_t;\n  OrderItem *order_item_t;\n  OptOrderBehavior *opt_order_behavior_t;\n  OptWithClause *opt_with_clause_t;\n  CteTableList *cte_table_list_t;\n  CteTable *cte_table_t;\n  CteTableName *cte_table_name_t;\n  OptAllOrDistinct *opt_all_or_distinct_t;\n  CreateTableStmt *create_table_stmt_t;\n  CreateIndexStmt *create_index_stmt_t;\n  CreateViewStmt *create_view_stmt_t;\n  DropIndexStmt *drop_index_stmt_t;\n  DropTableStmt *drop_table_stmt_t;\n  DropViewStmt *drop_view_stmt_t;\n  InsertStmt *insert_stmt_t;\n  InsertRest *insert_rest_t;\n  SuperValuesList *super_values_list_t;\n  ValuesList *values_list_t;\n  OptOnConflict *opt_on_conflict_t;\n  OptConflictExpr *opt_conflict_expr_t;\n  IndexedColumnList *indexed_column_list_t;\n  IndexedColumn *indexed_column_t;\n  UpdateStmt *update_stmt_t;\n  ReindexStmt *reindex_stmt_t;\n  AlterAction *alter_action_t;\n  ColumnDefList *column_def_list_t;\n  ColumnDef *column_def_t;\n  OptColumnConstraintList *opt_column_constraint_list_t;\n  ColumnConstraintList *column_constraint_list_t;\n  ColumnConstraint *column_constraint_t;\n  ConstraintType *constraint_type_t;\n  ForeignClause *foreign_clause_t;\n  OptForeignKeyActions *opt_foreign_key_actions_t;\n  ForeignKeyActions *foreign_key_actions_t;\n  KeyActions *key_actions_t;\n  OptConstraintAttributeSpec *opt_constraint_attribute_spec_t;\n  OptInitialTime *opt_initial_time_t;\n  ConstraintName *constraint_name_t;\n  OptTemp *opt_temp_t;\n  OptCheckOption *opt_check_option_t;\n  OptColumnNameListP *opt_column_name_list_p_t;\n  SetClauseList *set_clause_list_t;\n  SetClause *set_clause_t;\n  Expr *expr_t;\n  Operand *operand_t;\n  CastExpr *cast_expr_t;\n  ScalarExpr *scalar_expr_t;\n  UnaryExpr *unary_expr_t;\n  BinaryExpr *binary_expr_t;\n  LogicExpr *logic_expr_t;\n  InExpr *in_expr_t;\n  CaseExpr *case_expr_t;\n  BetweenExpr *between_expr_t;\n  ExistsExpr *exists_expr_t;\n  CaseList *case_list_t;\n  CaseClause *case_clause_t;\n  CompExpr *comp_expr_t;\n  ExtractExpr *extract_expr_t;\n  DatetimeField *datetime_field_t;\n  ArrayIndex *array_index_t;\n  Literal *literal_t;\n  StringLiteral *string_literal_t;\n  BoolLiteral *bool_literal_t;\n  NumLiteral *num_literal_t;\n  IntLiteral *int_literal_t;\n  FloatLiteral *float_literal_t;\n  OptColumn *opt_column_t;\n  OptIfNotExist *opt_if_not_exist_t;\n  OptIfExist *opt_if_exist_t;\n  Identifier *identifier_t;\n  TableName *table_name_t;\n  ColumnName *column_name_t;\n  OptUnique *opt_unique_t;\n  ViewName *view_name_t;\n  BinaryOp *binary_op_t;\n  OptNot *opt_not_t;\n  Name *name_t;\n  TypeName *type_name_t;\n  CharacterType *character_type_t;\n  CharacterWithLength *character_with_length_t;\n  CharacterWithoutLength *character_without_length_t;\n  CharacterConflicta *character_conflicta_t;\n  OptVarying *opt_varying_t;\n  NumericType *numeric_type_t;\n  OptTableConstraintList *opt_table_constraint_list_t;\n  TableConstraintList *table_constraint_list_t;\n  TableConstraint *table_constraint_t;\n\n#line 464 \"bison_parser.cpp\" /* yacc.c:352  */\n};\n#line 30 \"bison.y\" /* yacc.c:352  */\ntypedef union FF_STYPE FF_STYPE;\n#define FF_STYPE_IS_TRIVIAL 1\n#define FF_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined FF_LTYPE && !defined FF_LTYPE_IS_DECLARED\ntypedef struct FF_LTYPE FF_LTYPE;\nstruct FF_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define FF_LTYPE_IS_DECLARED 1\n#define FF_LTYPE_IS_TRIVIAL 1\n#endif\n\nint ff_parse(Program *result, yyscan_t scanner);\n\n#endif /* !YY_FF_BISON_PARSER_H_INCLUDED  */\n\n#ifdef short\n#undef short\n#endif\n\n#ifdef YYTYPE_UINT8\ntypedef YYTYPE_UINT8 yytype_uint8;\n#else\ntypedef unsigned char yytype_uint8;\n#endif\n\n#ifdef YYTYPE_INT8\ntypedef YYTYPE_INT8 yytype_int8;\n#else\ntypedef signed char yytype_int8;\n#endif\n\n#ifdef YYTYPE_UINT16\ntypedef YYTYPE_UINT16 yytype_uint16;\n#else\ntypedef unsigned short yytype_uint16;\n#endif\n\n#ifdef YYTYPE_INT16\ntypedef YYTYPE_INT16 yytype_int16;\n#else\ntypedef short yytype_int16;\n#endif\n\n#ifndef YYSIZE_T\n#ifdef __SIZE_TYPE__\n#define YYSIZE_T __SIZE_TYPE__\n#elif defined size_t\n#define YYSIZE_T size_t\n#elif !defined YYSIZE_T\n#include <stddef.h> /* INFRINGES ON USER NAME SPACE */\n#define YYSIZE_T size_t\n#else\n#define YYSIZE_T unsigned\n#endif\n#endif\n\n#define YYSIZE_MAXIMUM ((YYSIZE_T)-1)\n\n#ifndef YY_\n#if defined YYENABLE_NLS && YYENABLE_NLS\n#if ENABLE_NLS\n#include <libintl.h> /* INFRINGES ON USER NAME SPACE */\n#define YY_(Msgid) dgettext(\"bison-runtime\", Msgid)\n#endif\n#endif\n#ifndef YY_\n#define YY_(Msgid) Msgid\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE\n#if (defined __GNUC__ &&                                           \\\n     (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) || \\\n    defined __SUNPRO_C && 0x5110 <= __SUNPRO_C\n#define YY_ATTRIBUTE(Spec) __attribute__(Spec)\n#else\n#define YY_ATTRIBUTE(Spec) /* empty */\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE_PURE\n#define YY_ATTRIBUTE_PURE YY_ATTRIBUTE((__pure__))\n#endif\n\n#ifndef YY_ATTRIBUTE_UNUSED\n#define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE((__unused__))\n#endif\n\n/* Suppress unused-variable warnings by \"using\" E.  */\n#if !defined lint || defined __GNUC__\n#define YYUSE(E) ((void)(E))\n#else\n#define YYUSE(E) /* empty */\n#endif\n\n#if defined __GNUC__ && !defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__\n/* Suppress an incorrect diagnostic about yylval being uninitialized.  */\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                 \\\n  _Pragma(\"GCC diagnostic push\")                            \\\n      _Pragma(\"GCC diagnostic ignored \\\"-Wuninitialized\\\"\") \\\n          _Pragma(\"GCC diagnostic ignored \\\"-Wmaybe-uninitialized\\\"\")\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END _Pragma(\"GCC diagnostic pop\")\n#else\n#define YY_INITIAL_VALUE(Value) Value\n#endif\n#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END\n#endif\n#ifndef YY_INITIAL_VALUE\n#define YY_INITIAL_VALUE(Value) /* Nothing. */\n#endif\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n\n/* The parser invokes alloca or malloc; define the necessary symbols.  */\n\n#ifdef YYSTACK_USE_ALLOCA\n#if YYSTACK_USE_ALLOCA\n#ifdef __GNUC__\n#define YYSTACK_ALLOC __builtin_alloca\n#elif defined __BUILTIN_VA_ARG_INCR\n#include <alloca.h> /* INFRINGES ON USER NAME SPACE */\n#elif defined _AIX\n#define YYSTACK_ALLOC __alloca\n#elif defined _MSC_VER\n#include <malloc.h> /* INFRINGES ON USER NAME SPACE */\n#define alloca _alloca\n#else\n#define YYSTACK_ALLOC alloca\n#if !defined _ALLOCA_H && !defined EXIT_SUCCESS\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n/* Use EXIT_SUCCESS as a witness for stdlib.h.  */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#endif\n#endif\n#endif\n\n#ifdef YYSTACK_ALLOC\n/* Pacify GCC's 'empty if-body' warning.  */\n#define YYSTACK_FREE(Ptr) \\\n  do { /* empty */        \\\n    ;                     \\\n  } while (0)\n#ifndef YYSTACK_ALLOC_MAXIMUM\n/* The OS might guarantee only one guard page at the bottom of the stack,\n   and a page size can be as small as 4096 bytes.  So we cannot safely\n   invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number\n   to allow for a few compiler-allocated temporary stack slots.  */\n#define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */\n#endif\n#else\n#define YYSTACK_ALLOC YYMALLOC\n#define YYSTACK_FREE YYFREE\n#ifndef YYSTACK_ALLOC_MAXIMUM\n#define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM\n#endif\n#if (defined __cplusplus && !defined EXIT_SUCCESS && \\\n     !((defined YYMALLOC || defined malloc) &&       \\\n       (defined YYFREE || defined free)))\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#ifndef YYMALLOC\n#define YYMALLOC malloc\n#if !defined malloc && !defined EXIT_SUCCESS\nvoid *malloc(YYSIZE_T); /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#ifndef YYFREE\n#define YYFREE free\n#if !defined free && !defined EXIT_SUCCESS\nvoid free(void *);      /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#endif\n#endif /* ! defined yyoverflow || YYERROR_VERBOSE */\n\n#if (!defined yyoverflow &&                                  \\\n     (!defined __cplusplus ||                                \\\n      (defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL && \\\n       defined FF_STYPE_IS_TRIVIAL && FF_STYPE_IS_TRIVIAL)))\n\n/* A type that is properly aligned for any stack member.  */\nunion yyalloc {\n  yytype_int16 yyss_alloc;\n  YYSTYPE yyvs_alloc;\n  YYLTYPE yyls_alloc;\n};\n\n/* The size of the maximum gap between one aligned stack and the next.  */\n#define YYSTACK_GAP_MAXIMUM (sizeof(union yyalloc) - 1)\n\n/* The size of an array large to enough to hold all stacks, each with\n   N elements.  */\n#define YYSTACK_BYTES(N)                                              \\\n  ((N) * (sizeof(yytype_int16) + sizeof(YYSTYPE) + sizeof(YYLTYPE)) + \\\n   2 * YYSTACK_GAP_MAXIMUM)\n\n#define YYCOPY_NEEDED 1\n\n/* Relocate STACK from its old location to the new one.  The\n   local variables YYSIZE and YYSTACKSIZE give the old and new number of\n   elements in the stack, and YYPTR gives the new location of the\n   stack.  Advance YYPTR to a properly aligned location for the next\n   stack.  */\n#define YYSTACK_RELOCATE(Stack_alloc, Stack)                         \\\n  do {                                                               \\\n    YYSIZE_T yynewbytes;                                             \\\n    YYCOPY(&yyptr->Stack_alloc, Stack, yysize);                      \\\n    Stack = &yyptr->Stack_alloc;                                     \\\n    yynewbytes = yystacksize * sizeof(*Stack) + YYSTACK_GAP_MAXIMUM; \\\n    yyptr += yynewbytes / sizeof(*yyptr);                            \\\n  } while (0)\n\n#endif\n\n#if defined YYCOPY_NEEDED && YYCOPY_NEEDED\n/* Copy COUNT objects from SRC to DST.  The source and destination do\n   not overlap.  */\n#ifndef YYCOPY\n#if defined __GNUC__ && 1 < __GNUC__\n#define YYCOPY(Dst, Src, Count) \\\n  __builtin_memcpy(Dst, Src, (Count) * sizeof(*(Src)))\n#else\n#define YYCOPY(Dst, Src, Count)                                  \\\n  do {                                                           \\\n    YYSIZE_T yyi;                                                \\\n    for (yyi = 0; yyi < (Count); yyi++) (Dst)[yyi] = (Src)[yyi]; \\\n  } while (0)\n#endif\n#endif\n#endif /* !YYCOPY_NEEDED */\n\n/* YYFINAL -- State number of the termination state.  */\n#define YYFINAL 51\n/* YYLAST -- Last index in YYTABLE.  */\n#define YYLAST 844\n\n/* YYNTOKENS -- Number of terminals.  */\n#define YYNTOKENS 181\n/* YYNNTS -- Number of nonterminals.  */\n#define YYNNTS 134\n/* YYNRULES -- Number of rules.  */\n#define YYNRULES 321\n/* YYNSTATES -- Number of states.  */\n#define YYNSTATES 581\n\n#define YYUNDEFTOK 2\n#define YYMAXUTOK 435\n\n/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex, with out-of-bounds checking.  */\n#define YYTRANSLATE(YYX) \\\n  ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)\n\n/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex.  */\nstatic const yytype_uint8 yytranslate[] = {\n    0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,\n    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,\n    30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,\n    45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,\n    60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,\n    75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,\n    90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,\n    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,\n    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,\n    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,\n    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,\n    180};\n\n#if FF_DEBUG\n/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */\nstatic const yytype_uint16 yyrline[] = {\n    0,    362,  362,  372,  379,  388,  394,  400,  406,  412,  418,  424,\n    433,  439,  445,  454,  460,  466,  475,  485,  491,  500,  506,  515,\n    527,  533,  544,  558,  563,  568,  576,  582,  590,  599,  605,  613,\n    622,  628,  638,  660,  669,  681,  687,  695,  703,  712,  720,  725,\n    730,  738,  744,  752,  758,  766,  772,  778,  786,  792,  800,  805,\n    810,  815,  823,  838,  846,  853,  861,  867,  875,  881,  889,  898,\n    907,  915,  923,  934,  940,  948,  954,  963,  969,  979,  986,  994,\n    999,  1004, 1013, 1018, 1023, 1028, 1033, 1041, 1048, 1057, 1063, 1071,\n    1077, 1084, 1094, 1100, 1108, 1113, 1118, 1126, 1132, 1142, 1153, 1158,\n    1163, 1171, 1177, 1183, 1191, 1197, 1207, 1217, 1227, 1232, 1237, 1245,\n    1266, 1307, 1345, 1386, 1427, 1468, 1512, 1534, 1556, 1578, 1590, 1597,\n    1603, 1613, 1619, 1629, 1638, 1644, 1652, 1660, 1667, 1675, 1681, 1691,\n    1701, 1713, 1719, 1728, 1746, 1778, 1788, 1794, 1804, 1824, 1830, 1838,\n    1844, 1854, 1863, 1868, 1873, 1878, 1884, 1893, 1936, 1942, 1950, 1955,\n    1960, 1965, 1971, 1980, 1985, 1990, 1995, 2000, 2008, 2014, 2020, 2028,\n    2033, 2038, 2046, 2055, 2060, 2065, 2070, 2075, 2080, 2085, 2090, 2098,\n    2103, 2108, 2113, 2121, 2127, 2135, 2141, 2151, 2158, 2168, 2174, 2180,\n    2186, 2192, 2198, 2207, 2213, 2219, 2225, 2231, 2237, 2243, 2249, 2258,\n    2268, 2274, 2283, 2289, 2295, 2301, 2307, 2313, 2318, 2326, 2332, 2340,\n    2347, 2357, 2364, 2374, 2382, 2390, 2401, 2408, 2414, 2422, 2432, 2440,\n    2451, 2461, 2467, 2477, 2487, 2494, 2501, 2508, 2515, 2522, 2532, 2542,\n    2547, 2552, 2557, 2562, 2567, 2575, 2585, 2591, 2597, 2606, 2615, 2620,\n    2628, 2634, 2643, 2651, 2659, 2664, 2672, 2677, 2685, 2690, 2698, 2707,\n    2725, 2743, 2748, 2756, 2765, 2770, 2775, 2780, 2785, 2793, 2798, 2806,\n    2815, 2821, 2830, 2836, 2845, 2855, 2864, 2870, 2876, 2881, 2886, 2892,\n    2898, 2907, 2912, 2920, 2925, 2930, 2935, 2940, 2945, 2950, 2955, 2960,\n    2965, 2970, 2978, 2984, 2992, 2998, 3008, 3015, 3022, 3029};\n#endif\n\n#if FF_DEBUG || YYERROR_VERBOSE || 1\n/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.\n   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */\nstatic const char *const yytname[] = {\"$end\",\n                                      \"error\",\n                                      \"$undefined\",\n                                      \"OP_NOTEQUAL\",\n                                      \"SIMPLE\",\n                                      \"TEXT\",\n                                      \"OVER\",\n                                      \"BETWEEN\",\n                                      \"OP_SEMI\",\n                                      \"BIGINT\",\n                                      \"LIMIT\",\n                                      \"WITH\",\n                                      \"ORDER\",\n                                      \"LAST\",\n                                      \"UNBOUNDED\",\n                                      \"PRECEDING\",\n                                      \"EXCEPT\",\n                                      \"NUMERIC\",\n                                      \"OP_LESSTHAN\",\n                                      \"PROCEDURE\",\n                                      \"ACTION\",\n                                      \"FIRST\",\n                                      \"OP_GREATEREQ\",\n                                      \"CHECK\",\n                                      \"FULL\",\n                                      \"NATURAL\",\n                                      \"DOUBLE\",\n                                      \"NATIONAL\",\n                                      \"OP_ADD\",\n                                      \"CURRENT\",\n                                      \"TRIGGER\",\n                                      \"OP_SUB\",\n                                      \"FALSE\",\n                                      \"UNIQUE\",\n                                      \"WHERE\",\n                                      \"MINUTE\",\n                                      \"BEFORE\",\n                                      \"ON\",\n                                      \"PARTIAL\",\n                                      \"OF\",\n                                      \"AFTER\",\n                                      \"PRIMARY\",\n                                      \"MONTH\",\n                                      \"DEFERRED\",\n                                      \"OP_DOUBLE_DOLLAR\",\n                                      \"VARYING\",\n                                      \"OP_GREATERTHAN\",\n                                      \"OR\",\n                                      \"PLPGSQL\",\n                                      \"DELETE\",\n                                      \"INDEX\",\n                                      \"RETURN\",\n                                      \"OP_MUL\",\n                                      \"FOREIGN\",\n                                      \"RESTRICT\",\n                                      \"FOLLOWING\",\n                                      \"TIES\",\n                                      \"DEC\",\n                                      \"SELECT\",\n                                      \"BEGIN\",\n                                      \"LANGUAGE\",\n                                      \"DISTINCT\",\n                                      \"TRUE\",\n                                      \"BY\",\n                                      \"OP_MOD\",\n                                      \"VALUES\",\n                                      \"IS\",\n                                      \"ROW\",\n                                      \"FUNCTION\",\n                                      \"END\",\n                                      \"RECURSIVE\",\n                                      \"FOR\",\n                                      \"UNION\",\n                                      \"NULLS\",\n                                      \"UPDATE\",\n                                      \"ELSE\",\n                                      \"RANGE\",\n                                      \"OFFSET\",\n                                      \"INDEXED\",\n                                      \"INSTEAD\",\n                                      \"NCHAR\",\n                                      \"AND\",\n                                      \"REINDEX\",\n                                      \"INITIALLY\",\n                                      \"YEAR\",\n                                      \"PRECISION\",\n                                      \"FILTER\",\n                                      \"NOT\",\n                                      \"VIEW\",\n                                      \"DEFFERRABLE\",\n                                      \"REAL\",\n                                      \"THEN\",\n                                      \"OPTION\",\n                                      \"DEFAULT\",\n                                      \"GLOBAL\",\n                                      \"CROSS\",\n                                      \"CHAR\",\n                                      \"REFERENCES\",\n                                      \"OP_XOR\",\n                                      \"GROUP\",\n                                      \"CASE\",\n                                      \"SET\",\n                                      \"HOUR\",\n                                      \"NO\",\n                                      \"COLUMN\",\n                                      \"LOCAL\",\n                                      \"DROP\",\n                                      \"REPLACE\",\n                                      \"ASC\",\n                                      \"OP_COMMA\",\n                                      \"TABLE\",\n                                      \"ARRAY\",\n                                      \"IF\",\n                                      \"EXTRACT\",\n                                      \"LEFT\",\n                                      \"OUTER\",\n                                      \"DECIMAL\",\n                                      \"PARTITION\",\n                                      \"CASCADE\",\n                                      \"ADD\",\n                                      \"OTHERS\",\n                                      \"OP_LESSEQ\",\n                                      \"MATCH\",\n                                      \"ALL\",\n                                      \"ROWS\",\n                                      \"JOIN\",\n                                      \"LIKE\",\n                                      \"INTEGER\",\n                                      \"OP_RP\",\n                                      \"INT\",\n                                      \"BOOLEAN\",\n                                      \"KEY\",\n                                      \"EACH\",\n                                      \"USING\",\n                                      \"RENAME\",\n                                      \"DO\",\n                                      \"FLOAT\",\n                                      \"OP_LP\",\n                                      \"CHARACTER\",\n                                      \"UMINUS\",\n                                      \"CAST\",\n                                      \"GROUPS\",\n                                      \"NULL\",\n                                      \"SMALLINT\",\n                                      \"INSERT\",\n                                      \"TEMPORARY\",\n                                      \"CONSTRAINT\",\n                                      \"CREATE\",\n                                      \"OP_LBRACKET\",\n                                      \"WHEN\",\n                                      \"IMMEDIATE\",\n                                      \"TO\",\n                                      \"EXCLUDE\",\n                                      \"DAY\",\n                                      \"CONFLICT\",\n                                      \"OP_RBRACKET\",\n                                      \"EXECUTE\",\n                                      \"EXISTS\",\n                                      \"INTO\",\n                                      \"OP_DIVIDE\",\n                                      \"CASCADED\",\n                                      \"ISNULL\",\n                                      \"AS\",\n                                      \"INNER\",\n                                      \"INTERSECT\",\n                                      \"IN\",\n                                      \"OP_EQUAL\",\n                                      \"VARCHAR\",\n                                      \"ALTER\",\n                                      \"DESC\",\n                                      \"FROM\",\n                                      \"TEMP\",\n                                      \"UNLOGGED\",\n                                      \"SECOND\",\n                                      \"WINDOW\",\n                                      \"NOTHING\",\n                                      \"HAVING\",\n                                      \"INTLITERAL\",\n                                      \"STRINGLITERAL\",\n                                      \"FLOATLITERAL\",\n                                      \"IDENTIFIER\",\n                                      \"$accept\",\n                                      \"program\",\n                                      \"stmtlist\",\n                                      \"stmt\",\n                                      \"create_stmt\",\n                                      \"drop_stmt\",\n                                      \"alter_stmt\",\n                                      \"select_stmt\",\n                                      \"select_with_parens\",\n                                      \"select_no_parens\",\n                                      \"select_clause_list\",\n                                      \"select_clause\",\n                                      \"combine_clause\",\n                                      \"opt_from_clause\",\n                                      \"select_target\",\n                                      \"opt_window_clause\",\n                                      \"window_clause\",\n                                      \"window_def_list\",\n                                      \"window_def\",\n                                      \"window_name\",\n                                      \"window\",\n                                      \"opt_partition\",\n                                      \"opt_frame_clause\",\n                                      \"range_or_rows\",\n                                      \"frame_bound_start\",\n                                      \"frame_bound_end\",\n                                      \"frame_bound\",\n                                      \"opt_frame_exclude\",\n                                      \"frame_exclude\",\n                                      \"opt_exist_window_name\",\n                                      \"opt_group_clause\",\n                                      \"opt_having_clause\",\n                                      \"opt_where_clause\",\n                                      \"where_clause\",\n                                      \"from_clause\",\n                                      \"table_ref\",\n                                      \"opt_on_or_using\",\n                                      \"on_or_using\",\n                                      \"column_name_list\",\n                                      \"opt_table_prefix\",\n                                      \"join_op\",\n                                      \"opt_join_type\",\n                                      \"expr_list\",\n                                      \"opt_limit_clause\",\n                                      \"limit_clause\",\n                                      \"opt_order_clause\",\n                                      \"opt_order_nulls\",\n                                      \"order_item_list\",\n                                      \"order_item\",\n                                      \"opt_order_behavior\",\n                                      \"opt_with_clause\",\n                                      \"cte_table_list\",\n                                      \"cte_table\",\n                                      \"cte_table_name\",\n                                      \"opt_all_or_distinct\",\n                                      \"create_table_stmt\",\n                                      \"create_index_stmt\",\n                                      \"create_view_stmt\",\n                                      \"drop_index_stmt\",\n                                      \"drop_table_stmt\",\n                                      \"drop_view_stmt\",\n                                      \"insert_stmt\",\n                                      \"insert_rest\",\n                                      \"super_values_list\",\n                                      \"values_list\",\n                                      \"opt_on_conflict\",\n                                      \"opt_conflict_expr\",\n                                      \"indexed_column_list\",\n                                      \"indexed_column\",\n                                      \"update_stmt\",\n                                      \"reindex_stmt\",\n                                      \"alter_action\",\n                                      \"column_def_list\",\n                                      \"column_def\",\n                                      \"opt_column_constraint_list\",\n                                      \"column_constraint_list\",\n                                      \"column_constraint\",\n                                      \"constraint_type\",\n                                      \"foreign_clause\",\n                                      \"opt_foreign_key_actions\",\n                                      \"foreign_key_actions\",\n                                      \"key_actions\",\n                                      \"opt_constraint_attribute_spec\",\n                                      \"opt_initial_time\",\n                                      \"constraint_name\",\n                                      \"opt_temp\",\n                                      \"opt_check_option\",\n                                      \"opt_column_name_list_p\",\n                                      \"set_clause_list\",\n                                      \"set_clause\",\n                                      \"expr\",\n                                      \"operand\",\n                                      \"cast_expr\",\n                                      \"scalar_expr\",\n                                      \"unary_expr\",\n                                      \"binary_expr\",\n                                      \"logic_expr\",\n                                      \"in_expr\",\n                                      \"case_expr\",\n                                      \"between_expr\",\n                                      \"exists_expr\",\n                                      \"case_list\",\n                                      \"case_clause\",\n                                      \"comp_expr\",\n                                      \"extract_expr\",\n                                      \"datetime_field\",\n                                      \"array_index\",\n                                      \"literal\",\n                                      \"string_literal\",\n                                      \"bool_literal\",\n                                      \"num_literal\",\n                                      \"int_literal\",\n                                      \"float_literal\",\n                                      \"opt_column\",\n                                      \"opt_if_not_exist\",\n                                      \"opt_if_exist\",\n                                      \"identifier\",\n                                      \"table_name\",\n                                      \"column_name\",\n                                      \"opt_unique\",\n                                      \"view_name\",\n                                      \"binary_op\",\n                                      \"opt_not\",\n                                      \"name\",\n                                      \"type_name\",\n                                      \"character_type\",\n                                      \"character_with_length\",\n                                      \"character_without_length\",\n                                      \"character_conflicta\",\n                                      \"opt_varying\",\n                                      \"numeric_type\",\n                                      \"opt_table_constraint_list\",\n                                      \"table_constraint_list\",\n                                      \"table_constraint\",\n                                      YY_NULLPTR};\n#endif\n\n#ifdef YYPRINT\n/* YYTOKNUM[NUM] -- (External) token number corresponding to the\n   (internal) symbol number NUM (which must be that of a token).  */\nstatic const yytype_uint16 yytoknum[] = {\n    0,   256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,\n    269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,\n    283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,\n    297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,\n    311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,\n    325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,\n    339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,\n    353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,\n    367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,\n    381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,\n    395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408,\n    409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,\n    423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435};\n#endif\n\n#define YYPACT_NINF -331\n\n#define yypact_value_is_default(Yystate) (!!((Yystate) == (-331)))\n\n#define YYTABLE_NINF -287\n\n#define yytable_value_is_error(Yytable_value) (!!((Yytable_value) == (-287)))\n\n/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing\n   STATE-NUM.  */\nstatic const yytype_int16 yypact[] = {\n    40,   -33,  47,   177,  2,    95,   -79,  20,   -331, 26,   -331, -331,\n    -331, -331, -331, -331, -36,  -331, -331, -331, -331, -331, -331, -331,\n    -331, -331, -119, -331, -331, -16,  31,   -331, 39,   -119, -119, 117,\n    117,  117,  109,  128,  202,  -331, 166,  216,  230,  -331, -331, -331,\n    237,  227,  -119, -331, 89,   -40,  -119, 193,  312,  -2,   -331, -119,\n    218,  -119, -331, -331, -331, 214,  -119, -119, -119, -331, -331, 139,\n    -331, -331, -331, -331, 305,  -119, 273,  273,  200,  -331, -331, -331,\n    640,  309,  -119, 348,  392,  -331, -331, -331, 202,  -331, 2,    285,\n    -331, 306,  -331, -331, -331, -331, -331, 298,  -119, 39,   334,  -119,\n    -119, 318,  88,   -331, 655,  -331, -331, -331, 655,  623,  287,  73,\n    289,  -331, -331, -331, -331, 258,  -331, 256,  366,  -331, -331, -331,\n    -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331, -331,\n    -331, -331, -331, -331, 270,  68,   39,   640,  640,  -331, -331, -331,\n    308,  -331, -119, 346,  -119, 39,   278,  286,  168,  405,  -331, -119,\n    -119, -119, 655,  22,   518,  640,  1,    320,  296,  12,   321,  322,\n    640,  -331, 412,  -331, 640,  640,  640,  655,  655,  655,  655,  -331,\n    -331, 655,  -331, -331, -69,  17,   655,  655,  274,  -331, -331, 655,\n    655,  282,  311,  -119, 412,  349,  300,  427,  90,   -331, 358,  -31,\n    208,  -331, -331, -119, 39,   307,  2,    -331, -119, 2,    -119, -331,\n    616,  -331, 317,  344,  257,  329,  -331, 640,  -331, -331, -331, -331,\n    -331, -331, -331, 302,  -331, -331, -18,  63,   141,  640,  374,  -331,\n    390,  -331, -331, 572,  413,  683,  683,  683,  333,  -331, 655,  655,\n    683,  572,  323,  572,  22,   176,  465,  352,  -331, 68,   640,  327,\n    -331, 345,  418,  -331, 640,  -331, -331, 415,  640,  640,  39,   324,\n    2,    474,  350,  381,  -331, 354,  -331, -331, -331, 410,  158,  -331,\n    452,  -331, 452,  -331, -331, -331, -331, -331, 452,  -331, -331, 249,\n    -331, -331, -331, 361,  -331, -119, 640,  -331, 640,  271,  640,  616,\n    -52,  -331, -331, -331, 34,   19,   28,   438,  330,  655,  -331, 471,\n    572,  -331, 73,   -331, 375,  341,  -331, 28,   371,  640,  -331, 400,\n    -331, -331, 99,   -331, 28,   28,   351,  2,    474,  -11,  -331, -119,\n    339,  382,  -331, 402,  -119, 640,  -331, 452,  452,  -331, -331, -331,\n    -331, 378,  -331, 385,  370,  -119, -331, -331, 249,  -331, -331, 274,\n    -331, 28,   297,  -331, 151,  391,  -331, 403,  -331, 397,  398,  54,\n    640,  401,  -331, -331, 640,  -119, -331, -331, 502,  655,  414,  416,\n    -331, 640,  640,  393,  417,  345,  -331, -331, 2,    474,  -331, 437,\n    520,  524,  -331, -331, 404,  419,  420,  422,  -331, 350,  -331, 429,\n    441,  -31,  -331, -331, 640,  -331, -331, 39,   -331, 431,  -331, -331,\n    -331, -331, -331, 19,   19,   28,   -119, 379,  -331, 451,  407,  -331,\n    502,  -331, -331, 28,   434,  -19,  -331, -331, 474,  -331, -331, 473,\n    475,  640,  640,  426,  436,  -331, 412,  640,  -331, 160,  -9,   -331,\n    -331, -331, 443,  640,  -331, -119, 439,  412,  68,   -331, -331, -331,\n    -331, 164,  449,  640,  -119, -331, -331, -331, 325,  319,  239,  -331,\n    -331, 28,   -331, -119, -331, 412,  -331, -331, 450,  453,  180,  180,\n    -331, -331, -331, 491,  500,  -331, 457,  469,  -331, -331, -331, 490,\n    -331, -51,  568,  -331, -331, -331, 500,  -26,  -331, -331, 528,  312,\n    -331, -331, -331, -331, -331, -331, -331, 640,  -46,  -331, -331, -331,\n    -331, -331, 122,  277,  578,  529,  446,  -331, 165,  514,  -331, -331,\n    172,  -331, -331, -331, 283,  532,  -331, -331, 481,  -331, 547,  446,\n    -331, -331, -331, -331, -331};\n\n/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.\n   Performed when YYTABLE does not specify something else to do.  Zero\n   means the default is an error.  */\nstatic const yytype_uint16 yydefact[] = {\n    111, 0,   0,   0,   111, 190, 0,   0,   2,   0,   5,   6,   10,  7,   20,\n    19,  0,   12,  13,  14,  15,  16,  17,  9,   8,   11,  0,   274, 109, 112,\n    0,   275, 196, 0,   0,   273, 273, 273, 0,   0,   0,   277, 0,   0,   0,\n    183, 184, 189, 0,   0,   0,   1,   111, 118, 0,   0,   99,  24,  110, 0,\n    0,   0,   115, 146, 145, 0,   0,   0,   0,   22,  21,  190, 187, 188, 185,\n    186, 0,   0,   271, 271, 0,   3,   117, 116, 286, 0,   0,   0,   94,  29,\n    27,  28,  0,   113, 111, 0,   276, 79,  272, 126, 279, 128, 127, 0,   0,\n    196, 0,   0,   0,   269, 269, 18,  0,   263, 224, 262, 285, 286, 0,   111,\n    0,   223, 266, 261, 267, 31,  32,  92,  201, 205, 209, 210, 211, 206, 204,\n    212, 202, 203, 225, 213, 208, 217, 258, 259, 260, 264, 265, 216, 0,   0,\n    196, 286, 286, 23,  93,  25,  0,   195, 0,   0,   0,   196, 0,   0,   0,\n    0,   268, 0,   0,   0,   0,   218, 219, 286, 0,   0,   241, 0,   0,   0,\n    286, 82,  69,  30,  286, 286, 286, 0,   0,   0,   0,   280, 281, 0,   284,\n    283, 0,   285, 0,   0,   0,   282, 220, 0,   0,   0,   0,   0,   69,  197,\n    0,   138, 111, 98,  103, 108, 95,  114, 80,  0,   196, 0,   111, 270, 0,\n    111, 0,   149, 0,   147, 0,   0,   0,   0,   235, 286, 242, 252, 255, 256,\n    253, 254, 251, 0,   214, 207, 0,   71,  0,   286, 65,  68,  230, 229, 91,\n    245, 0,   247, 249, 246, 0,   221, 0,   0,   248, 227, 0,   244, 226, 0,\n    111, 0,   144, 0,   286, 0,   129, 0,   0,   130, 286, 106, 107, 102, 286,\n    286, 196, 0,   111, 194, 315, 150, 119, 0,   297, 306, 312, 0,   0,   311,\n    302, 307, 302, 310, 304, 303, 313, 308, 302, 305, 296, 154, 289, 290, 291,\n    293, 288, 0,   286, 234, 286, 0,   286, 0,   90,  83,  84,  81,  82,  76,\n    70,  0,   34,  0,   222, 0,   228, 257, 111, 233, 0,   0,   198, 199, 140,\n    286, 132, 133, 131, 104, 0,   105, 96,  97,  0,   111, 194, 0,   122, 0,\n    0,   0,   314, 316, 0,   286, 309, 302, 302, 301, 300, 295, 294, 0,   160,\n    0,   0,   0,   152, 153, 155, 157, 162, 0,   148, 243, 0,   237, 0,   0,\n    89,  86,  88,  0,   0,   0,   286, 0,   72,  75,  286, 0,   26,  33,  238,\n    0,   0,   0,   240, 286, 286, 0,   0,   0,   101, 100, 111, 194, 123, 0,\n    0,   0,   287, 182, 0,   0,   0,   0,   120, 0,   151, 0,   141, 108, 299,\n    298, 286, 158, 159, 196, 156, 0,   236, 250, 215, 87,  85,  76,  76,  77,\n    0,   67,  35,  36,  0,   39,  239, 231, 232, 200, 0,   0,   135, 134, 194,\n    124, 191, 0,   0,   286, 286, 0,   0,   317, 69,  286, 143, 0,   165, 292,\n    73,  74,  0,   286, 64,  0,   0,   0,   0,   136, 125, 193, 192, 0,   0,\n    286, 0,   121, 142, 161, 0,   0,   178, 164, 78,  66,  37,  63,  139, 0,\n    320, 319, 0,   0,   0,   0,   168, 166, 167, 0,   181, 163, 0,   42,  62,\n    137, 318, 0,   174, 0,   0,   173, 170, 169, 181, 0,   176, 38,  0,   99,\n    321, 172, 171, 175, 177, 179, 180, 286, 45,  41,  46,  47,  48,  40,  286,\n    286, 0,   0,   57,  49,  0,   0,   50,  55,  0,   43,  53,  54,  286, 0,\n    61,  60,  0,   56,  0,   57,  51,  59,  58,  52,  44};\n\n/* YYPGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yypgoto[] = {\n    -331, -331, 552,  -331, -331, -331, -331, -85,  601,  4,    515,  -331,\n    -331, -331, -331, -331, -331, 121,  -331, -331, -331, -331, -331, -331,\n    53,   -331, 41,   35,   -331, -331, -331, -331, -198, -312, -331, 284,\n    -41,  -331, -155, -331, -331, -331, -114, -331, -331, 72,   -331, 335,\n    -331, 181,  217,  301,  -331, -331, -331, -331, -331, -331, -331, -331,\n    -331, -331, -331, 203,  -331, -331, -331, -232, -331, -331, -331, -331,\n    253,  455,  -331, 233,  -331, -331, 93,   -331, -331, 111,  -331, 97,\n    -331, 556,  -330, -90,  -269, -331, -116, -72,  -331, -331, -331, -331,\n    -331, -331, -331, -331, -331, 229,  -331, -331, -331, -331, -331, -331,\n    -331, -331, -331, -189, -331, 519,  555,  372,  -1,   -27,  -59,  -331,\n    -58,  -331, 507,  -331, 326,  -331, -331, -331, -331, 14,   -331, -331,\n    211,  -331};\n\n/* YYDEFGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yydefgoto[] = {\n    -1,  7,   8,   9,   10,  11,  12,  13,  14,  15,  56,  57,  92,  182, 125,\n    402, 403, 452, 453, 454, 522, 539, 553, 554, 558, 575, 559, 565, 573, 523,\n    332, 484, 250, 251, 183, 247, 398, 399, 95,  248, 327, 393, 126, 153, 154,\n    88,  351, 213, 214, 283, 40,  28,  29,  30,  84,  17,  18,  19,  20,  21,\n    22,  23,  211, 346, 347, 276, 411, 431, 432, 24,  25,  111, 290, 291, 378,\n    379, 380, 381, 382, 502, 503, 532, 521, 536, 360, 48,  358, 62,  208, 209,\n    127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 175, 176, 138, 139,\n    243, 140, 141, 142, 143, 144, 145, 146, 167, 107, 66,  96,  32,  147, 49,\n    101, 204, 148, 423, 311, 312, 313, 314, 315, 370, 316, 361, 362, 363};\n\n/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If\n   positive, shift that token.  If negative, reduce the rule whose\n   number is the opposite.  If YYTABLE_NINF, syntax error.  */\nstatic const yytype_int16 yytable[] = {\n    31,  174,  97,  218, 342, 179,  63,   64,  39,   156, 272,  266, 419,  1,\n    89,  162,  184, 545, 260, 105,  51,   82,  53,   80,  262,  31,  418,  85,\n    500, 184,  550, 50,  31,  31,   52,   215, 216,  26,  54,   99,  171,  102,\n    541, 390,  172, 1,   161, 237,  184,  31,  185,  1,   271,  31,  238,  488,\n    396, 232,  31,  150, 212, 27,   391,  185, 246,  31,  100,  31,  252,  253,\n    90,  221,  254, 261, 194, 184,  100,  281, 551,  324, 164,  165, 185,  83,\n    1,   31,   195, 465, 324, -4,   210,  542, -111, 59,  420,  552, 239,  33,\n    172, 97,   1,   1,   220, 100,  112,  113, 31,   31,  55,   185, 230,  392,\n    414, 501,  240, 255, 256, 257,  258,  321, 415,  259, 2,    178, 546,  114,\n    264, 265,  41,  555, 287, 267,  268,  330, 490,  115, 556,  289, 282,  4,\n    292, 229,  42,  263, 323, -278, 3,    27,  97,   421, 173,  557, 397,  112,\n    113, 277,  489, 34,  343, 100,  116,  286, 91,   325, 215,  241, 228,  31,\n    352, 353,  200, 2,   325, 117,  114,  508, 61,   4,   460,  326, 566,  201,\n    448, 278,  115, 242, 118, 5,    326,  43,  335,  336, 166,  60,  441,  3,\n    354, 525,  184, 293, 44,  569,  385,  356, 386,  207, 388,  184, 6,    116,\n    119, 184,  184, 120, 210, 121,  279,  16,  100,  509, 567,  329, 117,  228,\n    407, 31,   4,   35,  570, 65,   -286, 412, 185,  43,  528,  118, 5,    69,\n    494, 168,  45,  185, 339, 498,  44,   185, 185,  31,  27,   433, 122,  123,\n    124, 27,   367, 184, 70,  6,    384,  119, 53,   404, 120,  512, 121,  36,\n    46,  47,   31,  16,  417, 571,  373,  71,  340,  572, 497,  79,  328,  443,\n    449, 529,  374, 530, 45,  284,  451,  37,  499,  185, 375,  556, 510,  459,\n    433, 482,  368, 574, 531, 122,  123,  124, 27,   184, 184,  224, 557,  76,\n    112, 113,  46,  47,  557, 338,  112,  113, 371,  285, 184,  109, 477,  27,\n    372, 516,  87,  77,  519, 58,   520,  114, 225,  464, 394,  456, 110,  114,\n    376, 185,  185, 115, 387, 513,  406,  517, 184,  115, 377,  78,  318,  478,\n    439, 86,   185, 493, 433, 94,   27,   518, 422,  433, 93,   72,  424,  228,\n    116, 186,  442, 505, 159, 187,  116,  98,  425,  188, 514,  74,  31,   117,\n    185, 433,  426, 434, 435, 117,  189,  106, 160,  73,  190,  234, 118,  97,\n    427, 104,  191, 235, 118, 192,  319,  515, 455,  75,  152,  233, 320,  236,\n    480, 481,  67,  68,  149, 151,  193,  157, 119,  158, 187,  120, 194,  121,\n    119, 163,  166, 120, 177, 121,  180,  206, 181,  210, 195,  189, 196,  549,\n    219, 190,  217, 97,  560, 560,  222,  191, 226,  223, 192,  173, 249,  269,\n    270, 244,  245, 122, 560, 197,  122,  123, 124,  27,  273,  193, 122,  123,\n    124, 27,   275, 194, 274, 280,  317,  288, 263,  185, 322,  331, 187,  334,\n    1,   195,  337, 196, 341, 344,  345,  348, 455,  357, 355,  198, 350,  189,\n    364, 365,  199, 190, 333, 366,  359,  369, 383,  191, 231,  400, 192,  408,\n    401, 187,  524, 409, 410, 413,  428,  429, 438,  416, 200,  436, 437,  193,\n    445, 444,  189, 187, 446, 194,  190,  201, 447,  202, 461,  466, 191,  -286,\n    203, 192,  198, 195, 189, 196,  450,  199, 190,  469, 457,  467, 458,  462,\n    191, 468,  193, 192, 475, 471,  405,  472, 194,  483, 470,  474, 231,  479,\n    485, 200,  487, 495, 193, 491,  195,  492, 196,  486, 194,  504, 201,  496,\n    202, -287, 507, 511, 526, 203,  534,  527, 195,  535, 196,  537, 538,  377,\n    543, 231,  189, 547, 198, 562,  190,  568, 563,  199, 564,  577, 191,  578,\n    579, 192,  81,  38,  506, 155,  561,  576, 580,  548, 395,  440, 476,  349,\n    463, 430,  193, 200, 540, 294,  227,  198, 194,  295, 533,  103, 199,  169,\n    201, 544,  202, 296, 108, 205,  195,  203, 196,  198, 473,  0,   297,  298,\n    199, 0,    0,   0,   0,   389,  200,  0,   0,    0,   112,  113, 0,    0,\n    0,   0,    0,   201, 0,   202,  0,    0,   200,  0,   203,  0,   0,    112,\n    113, 299,  0,   114, 0,   201,  0,    202, 0,    0,   0,    0,   203,  115,\n    112, 113,  0,   0,   0,   0,    114,  198, 0,    0,   300,  0,   -287, 0,\n    0,   -287, 115, 0,   0,   -287, 301,  114, 0,    0,   116,  191, 302,  0,\n    192, 0,    0,   115, 0,   0,    200,  0,   0,    117, 0,    0,   0,    116,\n    0,   -287, 0,   201, 303, 202,  0,    194, 118,  0,   -287, 0,   117,  0,\n    170, 304,  0,   305, 306, 195,  0,    196, 0,    0,   307,  118, 308,  117,\n    0,   0,    0,   309, 119, 0,    0,    120, 0,    121, 0,    0,   118,  0,\n    0,   0,    173, 0,   0,   0,    0,    119, 0,    0,   120,  0,   121,  310,\n    0,   0,    0,   0,   0,   0,    0,    0,   119,  0,   0,    0,   0,    121,\n    0,   0,    122, 123, 124, 27,   -287, 0,   0,    0,   0,    0,   0,    0,\n    0,   0,    0,   0,   0,   122,  123,  124, 27,   0,   0,    0,   0,    0,\n    0,   0,    0,   0,   0,   200,  122,  123, 124,  27,  0,    0,   0,    0,\n    0,   0,    201, 0,   202};\n\nstatic const yytype_int16 yycheck[] = {\n    1,   117, 61,  158, 273, 119, 33,  34,  4,   94,  208, 200, 23,  11,  16,\n    105, 47,  43,  87,  77,  0,   61,  58,  50,  7,   26,  356, 54,  37,  47,\n    76,  110, 33,  34,  8,   151, 152, 70,  74,  66,  112, 68,  93,  95,  116,\n    11,  104, 35,  47,  50,  81,  11,  207, 54,  42,  74,  37,  173, 59,  86,\n    150, 180, 114, 81,  180, 66,  67,  68,  184, 185, 72,  161, 186, 142, 52,\n    47,  77,  108, 124, 25,  107, 108, 81,  123, 11,  86,  64,  417, 25,  0,\n    149, 142, 58,  109, 105, 141, 84,  50,  170, 158, 11,  11,  160, 104, 31,\n    32,  107, 108, 144, 81,  169, 163, 13,  122, 102, 187, 188, 189, 190, 235,\n    21,  193, 82,  119, 150, 52,  198, 199, 33,  7,   220, 203, 204, 249, 464,\n    62,  14,  222, 169, 137, 225, 168, 47,  126, 162, 50,  106, 180, 207, 160,\n    149, 29,  133, 31,  32,  65,  175, 110, 274, 160, 87,  219, 164, 109, 280,\n    153, 167, 168, 284, 285, 148, 82,  109, 100, 52,  487, 137, 137, 410, 125,\n    15,  159, 128, 93,  62,  173, 113, 147, 125, 94,  262, 263, 104, 162, 383,\n    106, 286, 509, 47,  226, 105, 29,  318, 288, 320, 137, 322, 47,  168, 87,\n    137, 47,  47,  140, 273, 142, 212, 0,   219, 488, 55,  248, 100, 224, 338,\n    226, 137, 50,  56,  112, 157, 345, 81,  94,  54,  113, 147, 128, 470, 151,\n    145, 81,  269, 475, 105, 81,  81,  248, 180, 365, 177, 178, 179, 180, 96,\n    47,  128, 168, 317, 137, 58,  333, 140, 495, 142, 88,  171, 172, 269, 52,\n    355, 99,  23,  107, 270, 103, 474, 50,  137, 128, 396, 101, 33,  103, 145,\n    77,  400, 110, 128, 81,  41,  14,  128, 409, 410, 450, 138, 14,  118, 177,\n    178, 179, 180, 47,  47,  137, 29,  70,  31,  32,  171, 172, 29,  137, 31,\n    32,  302, 109, 47,  119, 436, 180, 308, 4,   12,  88,  87,  26,  89,  52,\n    162, 416, 328, 405, 134, 52,  87,  81,  81,  62,  69,  496, 338, 24,  47,\n    62,  97,  110, 91,  439, 377, 158, 81,  469, 470, 137, 180, 38,  359, 475,\n    59,  145, 23,  364, 87,  109, 69,  483, 70,  3,   87,  157, 33,  7,   49,\n    145, 377, 100, 81,  495, 41,  367, 368, 100, 18,  112, 88,  171, 22,  69,\n    113, 450, 53,  88,  28,  75,  113, 31,  69,  74,  401, 171, 10,  174, 75,\n    176, 447, 448, 36,  37,  101, 63,  46,  128, 137, 109, 3,   140, 52,  142,\n    137, 87,  104, 140, 137, 142, 137, 157, 170, 488, 64,  18,  66,  547, 88,\n    22,  128, 496, 554, 555, 162, 28,  37,  157, 31,  149, 34,  165, 137, 128,\n    128, 177, 568, 87,  177, 178, 179, 180, 109, 46,  177, 178, 179, 180, 37,\n    52,  166, 109, 151, 162, 126, 81,  170, 99,  3,   142, 11,  64,  155, 66,\n    128, 154, 137, 65,  485, 11,  162, 121, 73,  18,  109, 137, 126, 22,  81,\n    85,  146, 45,  137, 28,  87,  63,  31,  128, 174, 3,   507, 166, 137, 109,\n    128, 109, 142, 162, 148, 137, 131, 46,  115, 128, 18,  3,   125, 52,  22,\n    159, 128, 161, 135, 92,  28,  165, 166, 31,  121, 64,  18,  66,  137, 126,\n    22,  137, 128, 23,  128, 128, 28,  23,  46,  31,  109, 131, 81,  131, 52,\n    176, 137, 128, 87,  128, 109, 148, 128, 137, 46,  92,  64,  92,  66,  162,\n    52,  128, 159, 137, 161, 3,   137, 128, 128, 166, 89,  128, 64,  83,  66,\n    128, 117, 97,  20,  87,  18,  63,  121, 15,  22,  81,  67,  126, 152, 67,\n    28,  120, 55,  31,  52,  4,   485, 92,  555, 568, 575, 539, 328, 380, 433,\n    280, 413, 364, 46,  148, 527, 5,   167, 121, 52,  9,   515, 71,  126, 110,\n    159, 534, 161, 17,  79,  128, 64,  166, 66,  121, 429, -1,  26,  27,  126,\n    -1,  -1,  -1,  -1,  323, 148, -1,  -1,  -1,  31,  32,  -1,  -1,  -1,  -1,\n    -1,  159, -1,  161, -1,  -1,  148, -1,  166, -1,  -1,  31,  32,  57,  -1,\n    52,  -1,  159, -1,  161, -1,  -1,  -1,  -1,  166, 62,  31,  32,  -1,  -1,\n    -1,  -1,  52,  121, -1,  -1,  80,  -1,  126, -1,  -1,  18,  62,  -1,  -1,\n    22,  90,  52,  -1,  -1,  87,  28,  96,  -1,  31,  -1,  -1,  62,  -1,  -1,\n    148, -1,  -1,  100, -1,  -1,  -1,  87,  -1,  46,  -1,  159, 116, 161, -1,\n    52,  113, -1,  166, -1,  100, -1,  87,  127, -1,  129, 130, 64,  -1,  66,\n    -1,  -1,  136, 113, 138, 100, -1,  -1,  -1,  143, 137, -1,  -1,  140, -1,\n    142, -1,  -1,  113, -1,  -1,  -1,  149, -1,  -1,  -1,  -1,  137, -1,  -1,\n    140, -1,  142, 167, -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  137, -1,  -1,\n    -1,  -1,  142, -1,  -1,  177, 178, 179, 180, 121, -1,  -1,  -1,  -1,  -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  177, 178, 179, 180, -1,  -1,  -1,  -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  148, 177, 178, 179, 180, -1,  -1,  -1,  -1,\n    -1,  -1,  159, -1,  161};\n\n/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing\n   symbol of state STATE-NUM.  */\nstatic const yytype_uint16 yystos[] = {\n    0,   11,  82,  106, 137, 147, 168, 182, 183, 184, 185, 186, 187, 188, 189,\n    190, 231, 236, 237, 238, 239, 240, 241, 242, 250, 251, 70,  180, 232, 233,\n    234, 297, 298, 50,  110, 50,  88,  110, 189, 190, 231, 33,  47,  94,  105,\n    145, 171, 172, 266, 300, 110, 0,   8,   58,  74,  144, 191, 192, 232, 109,\n    162, 137, 268, 298, 298, 112, 296, 296, 296, 128, 128, 107, 145, 171, 145,\n    171, 70,  88,  110, 50,  298, 183, 61,  123, 235, 298, 158, 12,  226, 16,\n    72,  164, 193, 232, 137, 219, 297, 299, 157, 298, 297, 301, 298, 266, 88,\n    301, 112, 295, 295, 119, 134, 252, 31,  32,  52,  62,  87,  100, 113, 137,\n    140, 142, 177, 178, 179, 195, 223, 271, 272, 273, 274, 275, 276, 277, 278,\n    279, 280, 281, 284, 285, 287, 288, 289, 290, 291, 292, 293, 299, 303, 101,\n    298, 63,  10,  224, 225, 191, 188, 128, 109, 70,  88,  301, 268, 87,  298,\n    298, 104, 294, 151, 294, 87,  272, 272, 149, 271, 282, 283, 137, 190, 223,\n    137, 170, 194, 215, 47,  81,  109, 3,   7,   18,  22,  28,  31,  46,  52,\n    64,  66,  87,  121, 126, 148, 159, 161, 166, 302, 303, 157, 137, 269, 270,\n    299, 243, 268, 228, 229, 271, 271, 128, 219, 88,  301, 268, 162, 157, 137,\n    162, 37,  254, 297, 298, 299, 87,  271, 282, 69,  75,  282, 35,  42,  84,\n    102, 153, 173, 286, 128, 128, 271, 216, 220, 34,  213, 214, 271, 271, 223,\n    272, 272, 272, 272, 272, 87,  142, 7,   126, 272, 272, 292, 272, 272, 165,\n    137, 219, 213, 109, 166, 37,  246, 65,  93,  190, 109, 108, 169, 230, 77,\n    109, 301, 268, 162, 188, 253, 254, 188, 298, 5,   9,   17,  26,  27,  57,\n    80,  90,  96,  116, 127, 129, 130, 136, 138, 143, 167, 305, 306, 307, 308,\n    309, 311, 151, 91,  69,  75,  271, 170, 162, 25,  109, 125, 221, 137, 298,\n    271, 99,  211, 81,  142, 272, 272, 155, 137, 298, 190, 128, 269, 271, 154,\n    137, 244, 245, 65,  228, 73,  227, 271, 271, 268, 162, 188, 11,  267, 146,\n    265, 312, 313, 314, 109, 137, 85,  96,  138, 45,  310, 310, 310, 23,  33,\n    41,  87,  97,  255, 256, 257, 258, 259, 137, 299, 271, 271, 69,  271, 305,\n    95,  114, 163, 222, 190, 216, 37,  133, 217, 218, 63,  174, 196, 197, 272,\n    81,  190, 223, 128, 166, 137, 247, 223, 109, 13,  21,  162, 188, 267, 23,\n    105, 160, 297, 304, 23,  33,  41,  53,  128, 109, 253, 248, 249, 271, 310,\n    310, 137, 131, 142, 298, 256, 292, 69,  128, 128, 115, 125, 128, 128, 271,\n    137, 223, 198, 199, 200, 297, 272, 128, 128, 271, 248, 135, 128, 244, 188,\n    267, 92,  23,  23,  137, 137, 131, 131, 313, 128, 109, 230, 271, 268, 128,\n    217, 217, 219, 176, 212, 109, 162, 128, 74,  175, 267, 92,  92,  271, 248,\n    137, 137, 213, 248, 128, 37,  122, 260, 261, 128, 271, 198, 137, 214, 269,\n    128, 128, 248, 219, 49,  74,  4,   24,  38,  87,  89,  263, 201, 210, 297,\n    214, 128, 128, 54,  101, 103, 118, 262, 262, 89,  83,  264, 128, 117, 202,\n    259, 93,  142, 20,  264, 43,  150, 63,  226, 223, 76,  124, 141, 203, 204,\n    7,   14,  29,  205, 207, 271, 205, 15,  67,  152, 208, 15,  55,  81,  29,\n    56,  99,  103, 209, 14,  206, 207, 67,  120, 55,  208};\n\n/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */\nstatic const yytype_uint16 yyr1[] = {\n    0,   181, 182, 183, 183, 184, 184, 184, 184, 184, 184, 184, 185, 185, 185,\n    186, 186, 186, 187, 188, 188, 189, 189, 190, 191, 191, 192, 193, 193, 193,\n    194, 194, 195, 196, 196, 197, 198, 198, 199, 200, 201, 202, 202, 203, 203,\n    203, 204, 204, 204, 205, 205, 206, 206, 207, 207, 207, 208, 208, 209, 209,\n    209, 209, 210, 210, 211, 211, 212, 212, 213, 213, 214, 215, 216, 216, 216,\n    217, 217, 218, 218, 219, 219, 220, 220, 221, 221, 221, 222, 222, 222, 222,\n    222, 223, 223, 224, 224, 225, 225, 225, 226, 226, 227, 227, 227, 228, 228,\n    229, 230, 230, 230, 231, 231, 231, 232, 232, 233, 234, 235, 235, 235, 236,\n    236, 237, 238, 238, 238, 238, 239, 240, 241, 242, 243, 243, 243, 244, 244,\n    245, 246, 246, 246, 247, 247, 248, 248, 249, 250, 251, 251, 252, 252, 252,\n    253, 253, 254, 255, 255, 256, 256, 257, 258, 258, 258, 258, 258, 259, 260,\n    260, 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, 263, 263, 263, 264,\n    264, 264, 265, 266, 266, 266, 266, 266, 266, 266, 266, 267, 267, 267, 267,\n    268, 268, 269, 269, 270, 270, 271, 271, 271, 271, 271, 271, 272, 272, 272,\n    272, 272, 272, 272, 272, 273, 274, 274, 275, 275, 275, 275, 275, 275, 275,\n    276, 276, 276, 276, 277, 277, 278, 278, 278, 279, 279, 279, 279, 280, 280,\n    281, 282, 282, 283, 284, 284, 284, 284, 284, 284, 285, 286, 286, 286, 286,\n    286, 286, 287, 288, 288, 288, 289, 290, 290, 291, 291, 292, 293, 294, 294,\n    295, 295, 296, 296, 297, 298, 299, 300, 300, 301, 302, 302, 302, 302, 302,\n    303, 303, 304, 305, 305, 306, 306, 307, 308, 309, 309, 309, 309, 309, 309,\n    309, 310, 310, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312,\n    312, 313, 313, 314, 314, 314, 314};\n\n/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */\nstatic const yytype_uint8 yyr2[] = {\n    0, 2, 1, 3, 2, 1, 1,  1, 1, 1,  1,  1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 3, 3,\n    4, 1, 3, 7, 1, 1, 1,  1, 0, 1,  1,  0, 2, 1, 3, 5, 1, 4, 3, 0, 3, 6, 0,\n    1, 1, 1, 1, 2, 1, 2,  2, 2, 2,  2,  0, 2, 2, 1, 1, 1, 0, 4, 0, 2, 0, 1,\n    0, 2, 2, 3, 5, 5, 1,  0, 2, 4,  1,  3, 2, 0, 1, 1, 3, 1, 2, 1, 1, 0, 3,\n    1, 1, 0, 2, 4, 4, 3,  0, 2, 2,  0,  1, 3, 3, 1, 1, 0, 2, 3, 0, 1, 3, 5,\n    2, 1, 1, 0, 7, 9, 11, 8, 9, 10, 11, 4, 4, 4, 6, 2, 3, 3, 1, 3, 3, 5, 7,\n    0, 4, 0, 1, 3, 2, 6,  3, 3, 3,  5,  3, 1, 3, 3, 1, 0, 1, 2, 1, 2, 2, 1,\n    4, 1, 5, 1, 0, 2, 2,  2, 3, 3,  2,  2, 1, 1, 2, 2, 3, 0, 2, 2, 0, 2, 1,\n    1, 2, 2, 2, 2, 1, 0,  3, 4, 4,  0,  3, 0, 1, 3, 3, 5, 1, 1, 1, 1, 1, 1,\n    3, 1, 1, 1, 1, 1, 1,  3, 6, 1,  1,  2, 2, 2, 3, 4, 1, 1, 1, 3, 3, 4, 3,\n    3, 6, 6, 4, 4, 3, 6,  5, 5, 6,  5,  1, 2, 4, 3, 3, 3, 3, 3, 3, 6, 1, 1,\n    1, 1, 1, 1, 4, 1, 1,  1, 1, 1,  1,  1, 1, 1, 1, 1, 0, 3, 0, 2, 0, 1, 1,\n    1, 1, 0, 1, 1, 1, 1,  1, 1, 1,  0,  1, 1, 1, 1, 1, 4, 1, 2, 2, 1, 1, 3,\n    3, 2, 1, 0, 1, 1, 1,  1, 1, 1,  2,  1, 1, 1, 1, 1, 0, 1, 3, 6, 5, 5, 7};\n\n#define yyerrok (yyerrstatus = 0)\n#define yyclearin (yychar = YYEMPTY)\n#define YYEMPTY (-2)\n#define YYEOF 0\n\n#define YYACCEPT goto yyacceptlab\n#define YYABORT goto yyabortlab\n#define YYERROR goto yyerrorlab\n\n#define YYRECOVERING() (!!yyerrstatus)\n\n#define YYBACKUP(Token, Value)                                                \\\n  do                                                                          \\\n    if (yychar == YYEMPTY) {                                                  \\\n      yychar = (Token);                                                       \\\n      yylval = (Value);                                                       \\\n      YYPOPSTACK(yylen);                                                      \\\n      yystate = *yyssp;                                                       \\\n      goto yybackup;                                                          \\\n    } else {                                                                  \\\n      yyerror(&yylloc, result, scanner, YY_(\"syntax error: cannot back up\")); \\\n      YYERROR;                                                                \\\n    }                                                                         \\\n  while (0)\n\n/* Error token number */\n#define YYTERROR 1\n#define YYERRCODE 256\n\n/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].\n   If N is 0, then set CURRENT to the empty location which ends\n   the previous symbol: RHS[0] (always defined).  */\n\n#ifndef YYLLOC_DEFAULT\n#define YYLLOC_DEFAULT(Current, Rhs, N)                                        \\\n  do                                                                           \\\n    if (N) {                                                                   \\\n      (Current).first_line = YYRHSLOC(Rhs, 1).first_line;                      \\\n      (Current).first_column = YYRHSLOC(Rhs, 1).first_column;                  \\\n      (Current).last_line = YYRHSLOC(Rhs, N).last_line;                        \\\n      (Current).last_column = YYRHSLOC(Rhs, N).last_column;                    \\\n    } else {                                                                   \\\n      (Current).first_line = (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \\\n      (Current).first_column = (Current).last_column =                         \\\n          YYRHSLOC(Rhs, 0).last_column;                                        \\\n    }                                                                          \\\n  while (0)\n#endif\n\n#define YYRHSLOC(Rhs, K) ((Rhs)[K])\n\n/* Enable debugging if requested.  */\n#if FF_DEBUG\n\n#ifndef YYFPRINTF\n#include <stdio.h> /* INFRINGES ON USER NAME SPACE */\n#define YYFPRINTF fprintf\n#endif\n\n#define YYDPRINTF(Args)          \\\n  do {                           \\\n    if (yydebug) YYFPRINTF Args; \\\n  } while (0)\n\n/* YY_LOCATION_PRINT -- Print the location on the stream.\n   This macro was not mandated originally: define only if we know\n   we won't break user code: when these are the locations we know.  */\n\n#ifndef YY_LOCATION_PRINT\n#if defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL\n\n/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */\n\nYY_ATTRIBUTE_UNUSED\nstatic int yy_location_print_(FILE *yyo, YYLTYPE const *const yylocp) {\n  int res = 0;\n  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;\n  if (0 <= yylocp->first_line) {\n    res += YYFPRINTF(yyo, \"%d\", yylocp->first_line);\n    if (0 <= yylocp->first_column)\n      res += YYFPRINTF(yyo, \".%d\", yylocp->first_column);\n  }\n  if (0 <= yylocp->last_line) {\n    if (yylocp->first_line < yylocp->last_line) {\n      res += YYFPRINTF(yyo, \"-%d\", yylocp->last_line);\n      if (0 <= end_col) res += YYFPRINTF(yyo, \".%d\", end_col);\n    } else if (0 <= end_col && yylocp->first_column < end_col)\n      res += YYFPRINTF(yyo, \"-%d\", end_col);\n  }\n  return res;\n}\n\n#define YY_LOCATION_PRINT(File, Loc) yy_location_print_(File, &(Loc))\n\n#else\n#define YY_LOCATION_PRINT(File, Loc) ((void)0)\n#endif\n#endif\n\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)                  \\\n  do {                                                                 \\\n    if (yydebug) {                                                     \\\n      YYFPRINTF(stderr, \"%s \", Title);                                 \\\n      yy_symbol_print(stderr, Type, Value, Location, result, scanner); \\\n      YYFPRINTF(stderr, \"\\n\");                                         \\\n    }                                                                  \\\n  } while (0)\n\n/*-----------------------------------.\n| Print this symbol's value on YYO.  |\n`-----------------------------------*/\n\nstatic void yy_symbol_value_print(FILE *yyo, int yytype,\n                                  YYSTYPE const *const yyvaluep,\n                                  YYLTYPE const *const yylocationp,\n                                  Program *result, yyscan_t scanner) {\n  FILE *yyoutput = yyo;\n  YYUSE(yyoutput);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yyvaluep) return;\n#ifdef YYPRINT\n  if (yytype < YYNTOKENS) YYPRINT(yyo, yytoknum[yytype], *yyvaluep);\n#endif\n  YYUSE(yytype);\n}\n\n/*---------------------------.\n| Print this symbol on YYO.  |\n`---------------------------*/\n\nstatic void yy_symbol_print(FILE *yyo, int yytype,\n                            YYSTYPE const *const yyvaluep,\n                            YYLTYPE const *const yylocationp, Program *result,\n                            yyscan_t scanner) {\n  YYFPRINTF(yyo, \"%s %s (\", yytype < YYNTOKENS ? \"token\" : \"nterm\",\n            yytname[yytype]);\n\n  YY_LOCATION_PRINT(yyo, *yylocationp);\n  YYFPRINTF(yyo, \": \");\n  yy_symbol_value_print(yyo, yytype, yyvaluep, yylocationp, result, scanner);\n  YYFPRINTF(yyo, \")\");\n}\n\n/*------------------------------------------------------------------.\n| yy_stack_print -- Print the state stack from its BOTTOM up to its |\n| TOP (included).                                                   |\n`------------------------------------------------------------------*/\n\nstatic void yy_stack_print(yytype_int16 *yybottom, yytype_int16 *yytop) {\n  YYFPRINTF(stderr, \"Stack now\");\n  for (; yybottom <= yytop; yybottom++) {\n    int yybot = *yybottom;\n    YYFPRINTF(stderr, \" %d\", yybot);\n  }\n  YYFPRINTF(stderr, \"\\n\");\n}\n\n#define YY_STACK_PRINT(Bottom, Top)               \\\n  do {                                            \\\n    if (yydebug) yy_stack_print((Bottom), (Top)); \\\n  } while (0)\n\n/*------------------------------------------------.\n| Report that the YYRULE is going to be reduced.  |\n`------------------------------------------------*/\n\nstatic void yy_reduce_print(yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,\n                            int yyrule, Program *result, yyscan_t scanner) {\n  unsigned long yylno = yyrline[yyrule];\n  int yynrhs = yyr2[yyrule];\n  int yyi;\n  YYFPRINTF(stderr, \"Reducing stack by rule %d (line %lu):\\n\", yyrule - 1,\n            yylno);\n  /* The symbols being reduced.  */\n  for (yyi = 0; yyi < yynrhs; yyi++) {\n    YYFPRINTF(stderr, \"   $%d = \", yyi + 1);\n    yy_symbol_print(stderr, yystos[yyssp[yyi + 1 - yynrhs]],\n                    &yyvsp[(yyi + 1) - (yynrhs)],\n                    &(yylsp[(yyi + 1) - (yynrhs)]), result, scanner);\n    YYFPRINTF(stderr, \"\\n\");\n  }\n}\n\n#define YY_REDUCE_PRINT(Rule)                                                 \\\n  do {                                                                        \\\n    if (yydebug) yy_reduce_print(yyssp, yyvsp, yylsp, Rule, result, scanner); \\\n  } while (0)\n\n/* Nonzero means print parse trace.  It is left uninitialized so that\n   multiple parsers can coexist.  */\nint yydebug;\n#else /* !FF_DEBUG */\n#define YYDPRINTF(Args)\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)\n#define YY_STACK_PRINT(Bottom, Top)\n#define YY_REDUCE_PRINT(Rule)\n#endif /* !FF_DEBUG */\n\n/* YYINITDEPTH -- initial size of the parser's stacks.  */\n#ifndef YYINITDEPTH\n#define YYINITDEPTH 200\n#endif\n\n/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only\n   if the built-in stack extension method is used).\n\n   Do not make this value too large; the results are undefined if\n   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)\n   evaluated with infinite-precision integer arithmetic.  */\n\n#ifndef YYMAXDEPTH\n#define YYMAXDEPTH 10000\n#endif\n\n#if YYERROR_VERBOSE\n\n#ifndef yystrlen\n#if defined __GLIBC__ && defined _STRING_H\n#define yystrlen strlen\n#else\n/* Return the length of YYSTR.  */\nstatic YYSIZE_T yystrlen(const char *yystr) {\n  YYSIZE_T yylen;\n  for (yylen = 0; yystr[yylen]; yylen++) continue;\n  return yylen;\n}\n#endif\n#endif\n\n#ifndef yystpcpy\n#if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE\n#define yystpcpy stpcpy\n#else\n/* Copy YYSRC to YYDEST, returning the address of the terminating '\\0' in\n   YYDEST.  */\nstatic char *yystpcpy(char *yydest, const char *yysrc) {\n  char *yyd = yydest;\n  const char *yys = yysrc;\n\n  while ((*yyd++ = *yys++) != '\\0') continue;\n\n  return yyd - 1;\n}\n#endif\n#endif\n\n#ifndef yytnamerr\n/* Copy to YYRES the contents of YYSTR after stripping away unnecessary\n   quotes and backslashes, so that it's suitable for yyerror.  The\n   heuristic is that double-quoting is unnecessary unless the string\n   contains an apostrophe, a comma, or backslash (other than\n   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is\n   null, do not copy; instead, return the length of what the result\n   would have been.  */\nstatic YYSIZE_T yytnamerr(char *yyres, const char *yystr) {\n  if (*yystr == '\"') {\n    YYSIZE_T yyn = 0;\n    char const *yyp = yystr;\n\n    for (;;) switch (*++yyp) {\n        case '\\'':\n        case ',':\n          goto do_not_strip_quotes;\n\n        case '\\\\':\n          if (*++yyp != '\\\\')\n            goto do_not_strip_quotes;\n          else\n            goto append;\n\n        append:\n        default:\n          if (yyres) yyres[yyn] = *yyp;\n          yyn++;\n          break;\n\n        case '\"':\n          if (yyres) yyres[yyn] = '\\0';\n          return yyn;\n      }\n  do_not_strip_quotes:;\n  }\n\n  if (!yyres) return yystrlen(yystr);\n\n  return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);\n}\n#endif\n\n/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message\n   about the unexpected token YYTOKEN for the state stack whose top is\n   YYSSP.\n\n   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is\n   not large enough to hold the message.  In that case, also set\n   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the\n   required number of bytes is too large to store.  */\nstatic int yysyntax_error(YYSIZE_T *yymsg_alloc, char **yymsg,\n                          yytype_int16 *yyssp, int yytoken) {\n  YYSIZE_T yysize0 = yytnamerr(YY_NULLPTR, yytname[yytoken]);\n  YYSIZE_T yysize = yysize0;\n  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };\n  /* Internationalized format string. */\n  const char *yyformat = YY_NULLPTR;\n  /* Arguments of yyformat. */\n  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];\n  /* Number of reported tokens (one for the \"unexpected\", one per\n     \"expected\"). */\n  int yycount = 0;\n\n  /* There are many possibilities here to consider:\n     - If this state is a consistent state with a default action, then\n       the only way this function was invoked is if the default action\n       is an error action.  In that case, don't check for expected\n       tokens because there are none.\n     - The only way there can be no lookahead present (in yychar) is if\n       this state is a consistent state with a default action.  Thus,\n       detecting the absence of a lookahead is sufficient to determine\n       that there is no unexpected or expected token to report.  In that\n       case, just report a simple \"syntax error\".\n     - Don't assume there isn't a lookahead just because this state is a\n       consistent state with a default action.  There might have been a\n       previous inconsistent state, consistent state with a non-default\n       action, or user semantic action that manipulated yychar.\n     - Of course, the expected token list depends on states to have\n       correct lookahead information, and it depends on the parser not\n       to perform extra reductions after fetching a lookahead from the\n       scanner and before detecting a syntax error.  Thus, state merging\n       (from LALR or IELR) and default reductions corrupt the expected\n       token list.  However, the list is correct for canonical LR with\n       one exception: it will still contain any token that will not be\n       accepted due to an error action in a later state.\n  */\n  if (yytoken != YYEMPTY) {\n    int yyn = yypact[*yyssp];\n    yyarg[yycount++] = yytname[yytoken];\n    if (!yypact_value_is_default(yyn)) {\n      /* Start YYX at -YYN if negative to avoid negative indexes in\n         YYCHECK.  In other words, skip the first -YYN actions for\n         this state because they are default actions.  */\n      int yyxbegin = yyn < 0 ? -yyn : 0;\n      /* Stay within bounds of both yycheck and yytname.  */\n      int yychecklim = YYLAST - yyn + 1;\n      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;\n      int yyx;\n\n      for (yyx = yyxbegin; yyx < yyxend; ++yyx)\n        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR &&\n            !yytable_value_is_error(yytable[yyx + yyn])) {\n          if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) {\n            yycount = 1;\n            yysize = yysize0;\n            break;\n          }\n          yyarg[yycount++] = yytname[yyx];\n          {\n            YYSIZE_T yysize1 = yysize + yytnamerr(YY_NULLPTR, yytname[yyx]);\n            if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n              yysize = yysize1;\n            else\n              return 2;\n          }\n        }\n    }\n  }\n\n  switch (yycount) {\n#define YYCASE_(N, S) \\\n  case N:             \\\n    yyformat = S;     \\\n    break\n    default: /* Avoid compiler warnings. */\n      YYCASE_(0, YY_(\"syntax error\"));\n      YYCASE_(1, YY_(\"syntax error, unexpected %s\"));\n      YYCASE_(2, YY_(\"syntax error, unexpected %s, expecting %s\"));\n      YYCASE_(3, YY_(\"syntax error, unexpected %s, expecting %s or %s\"));\n      YYCASE_(4, YY_(\"syntax error, unexpected %s, expecting %s or %s or %s\"));\n      YYCASE_(\n          5,\n          YY_(\"syntax error, unexpected %s, expecting %s or %s or %s or %s\"));\n#undef YYCASE_\n  }\n\n  {\n    YYSIZE_T yysize1 = yysize + yystrlen(yyformat);\n    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n      yysize = yysize1;\n    else\n      return 2;\n  }\n\n  if (*yymsg_alloc < yysize) {\n    *yymsg_alloc = 2 * yysize;\n    if (!(yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))\n      *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;\n    return 1;\n  }\n\n  /* Avoid sprintf, as that infringes on the user's name space.\n     Don't have undefined behavior even if the translation\n     produced a string with the wrong number of \"%s\"s.  */\n  {\n    char *yyp = *yymsg;\n    int yyi = 0;\n    while ((*yyp = *yyformat) != '\\0')\n      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) {\n        yyp += yytnamerr(yyp, yyarg[yyi++]);\n        yyformat += 2;\n      } else {\n        yyp++;\n        yyformat++;\n      }\n  }\n  return 0;\n}\n#endif /* YYERROR_VERBOSE */\n\n/*-----------------------------------------------.\n| Release the memory associated to this symbol.  |\n`-----------------------------------------------*/\n\nstatic void yydestruct(const char *yymsg, int yytype, YYSTYPE *yyvaluep,\n                       YYLTYPE *yylocationp, Program *result,\n                       yyscan_t scanner) {\n  YYUSE(yyvaluep);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yymsg) yymsg = \"Deleting\";\n  YY_SYMBOL_PRINT(yymsg, yytype, yyvaluep, yylocationp);\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  switch (yytype) {\n    case 177:       /* INTLITERAL  */\n#line 354 \"bison.y\" /* yacc.c:1257  */\n    {\n\n    }\n#line 1938 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 178:       /* STRINGLITERAL  */\n#line 350 \"bison.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 1946 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 179:       /* FLOATLITERAL  */\n#line 354 \"bison.y\" /* yacc.c:1257  */\n    {\n\n    }\n#line 1954 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 180:       /* IDENTIFIER  */\n#line 350 \"bison.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 1962 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 182:       /* program  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).program_t) != NULL)\n        ((*yyvaluep).program_t)->deep_delete();\n    }\n#line 1968 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 183:       /* stmtlist  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).stmtlist_t) != NULL)\n        ((*yyvaluep).stmtlist_t)->deep_delete();\n    }\n#line 1974 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 184:       /* stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).stmt_t) != NULL) ((*yyvaluep).stmt_t)->deep_delete();\n    }\n#line 1980 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 185:       /* create_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_stmt_t) != NULL)\n        ((*yyvaluep).create_stmt_t)->deep_delete();\n    }\n#line 1986 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 186:       /* drop_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_stmt_t) != NULL)\n        ((*yyvaluep).drop_stmt_t)->deep_delete();\n    }\n#line 1992 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 187:       /* alter_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_stmt_t) != NULL)\n        ((*yyvaluep).alter_stmt_t)->deep_delete();\n    }\n#line 1998 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 188:       /* select_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_stmt_t) != NULL)\n        ((*yyvaluep).select_stmt_t)->deep_delete();\n    }\n#line 2004 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 189:       /* select_with_parens  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_with_parens_t) != NULL)\n        ((*yyvaluep).select_with_parens_t)->deep_delete();\n    }\n#line 2010 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 190:       /* select_no_parens  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_no_parens_t) != NULL)\n        ((*yyvaluep).select_no_parens_t)->deep_delete();\n    }\n#line 2016 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 191:       /* select_clause_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_clause_list_t) != NULL)\n        ((*yyvaluep).select_clause_list_t)->deep_delete();\n    }\n#line 2022 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 192:       /* select_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_clause_t) != NULL)\n        ((*yyvaluep).select_clause_t)->deep_delete();\n    }\n#line 2028 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 193:       /* combine_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).combine_clause_t) != NULL)\n        ((*yyvaluep).combine_clause_t)->deep_delete();\n    }\n#line 2034 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 194:       /* opt_from_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_from_clause_t) != NULL)\n        ((*yyvaluep).opt_from_clause_t)->deep_delete();\n    }\n#line 2040 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 195:       /* select_target  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_target_t) != NULL)\n        ((*yyvaluep).select_target_t)->deep_delete();\n    }\n#line 2046 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 196:       /* opt_window_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_window_clause_t) != NULL)\n        ((*yyvaluep).opt_window_clause_t)->deep_delete();\n    }\n#line 2052 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 197:       /* window_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_clause_t) != NULL)\n        ((*yyvaluep).window_clause_t)->deep_delete();\n    }\n#line 2058 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 198:       /* window_def_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_def_list_t) != NULL)\n        ((*yyvaluep).window_def_list_t)->deep_delete();\n    }\n#line 2064 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 199:       /* window_def  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_def_t) != NULL)\n        ((*yyvaluep).window_def_t)->deep_delete();\n    }\n#line 2070 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 200:       /* window_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_name_t) != NULL)\n        ((*yyvaluep).window_name_t)->deep_delete();\n    }\n#line 2076 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 201:       /* window  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_t) != NULL) ((*yyvaluep).window_t)->deep_delete();\n    }\n#line 2082 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 202:       /* opt_partition  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_partition_t) != NULL)\n        ((*yyvaluep).opt_partition_t)->deep_delete();\n    }\n#line 2088 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 203:       /* opt_frame_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_frame_clause_t) != NULL)\n        ((*yyvaluep).opt_frame_clause_t)->deep_delete();\n    }\n#line 2094 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 204:       /* range_or_rows  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).range_or_rows_t) != NULL)\n        ((*yyvaluep).range_or_rows_t)->deep_delete();\n    }\n#line 2100 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 205:       /* frame_bound_start  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_start_t) != NULL)\n        ((*yyvaluep).frame_bound_start_t)->deep_delete();\n    }\n#line 2106 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 206:       /* frame_bound_end  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_end_t) != NULL)\n        ((*yyvaluep).frame_bound_end_t)->deep_delete();\n    }\n#line 2112 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 207:       /* frame_bound  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_t) != NULL)\n        ((*yyvaluep).frame_bound_t)->deep_delete();\n    }\n#line 2118 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 208:       /* opt_frame_exclude  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_frame_exclude_t) != NULL)\n        ((*yyvaluep).opt_frame_exclude_t)->deep_delete();\n    }\n#line 2124 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 209:       /* frame_exclude  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_exclude_t) != NULL)\n        ((*yyvaluep).frame_exclude_t)->deep_delete();\n    }\n#line 2130 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 210:       /* opt_exist_window_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_exist_window_name_t) != NULL)\n        ((*yyvaluep).opt_exist_window_name_t)->deep_delete();\n    }\n#line 2136 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 211:       /* opt_group_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_group_clause_t) != NULL)\n        ((*yyvaluep).opt_group_clause_t)->deep_delete();\n    }\n#line 2142 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 212:       /* opt_having_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_having_clause_t) != NULL)\n        ((*yyvaluep).opt_having_clause_t)->deep_delete();\n    }\n#line 2148 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 213:       /* opt_where_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_where_clause_t) != NULL)\n        ((*yyvaluep).opt_where_clause_t)->deep_delete();\n    }\n#line 2154 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 214:       /* where_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).where_clause_t) != NULL)\n        ((*yyvaluep).where_clause_t)->deep_delete();\n    }\n#line 2160 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 215:       /* from_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).from_clause_t) != NULL)\n        ((*yyvaluep).from_clause_t)->deep_delete();\n    }\n#line 2166 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 216:       /* table_ref  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_ref_t) != NULL)\n        ((*yyvaluep).table_ref_t)->deep_delete();\n    }\n#line 2172 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 217:       /* opt_on_or_using  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_or_using_t) != NULL)\n        ((*yyvaluep).opt_on_or_using_t)->deep_delete();\n    }\n#line 2178 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 218:       /* on_or_using  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).on_or_using_t) != NULL)\n        ((*yyvaluep).on_or_using_t)->deep_delete();\n    }\n#line 2184 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 219:       /* column_name_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_list_t) != NULL)\n        ((*yyvaluep).column_name_list_t)->deep_delete();\n    }\n#line 2190 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 220:       /* opt_table_prefix  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_table_prefix_t) != NULL)\n        ((*yyvaluep).opt_table_prefix_t)->deep_delete();\n    }\n#line 2196 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 221:       /* join_op  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).join_op_t) != NULL)\n        ((*yyvaluep).join_op_t)->deep_delete();\n    }\n#line 2202 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 222:       /* opt_join_type  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_join_type_t) != NULL)\n        ((*yyvaluep).opt_join_type_t)->deep_delete();\n    }\n#line 2208 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 223:       /* expr_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_list_t) != NULL)\n        ((*yyvaluep).expr_list_t)->deep_delete();\n    }\n#line 2214 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 224:       /* opt_limit_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_limit_clause_t) != NULL)\n        ((*yyvaluep).opt_limit_clause_t)->deep_delete();\n    }\n#line 2220 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 225:       /* limit_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).limit_clause_t) != NULL)\n        ((*yyvaluep).limit_clause_t)->deep_delete();\n    }\n#line 2226 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 226:       /* opt_order_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_clause_t) != NULL)\n        ((*yyvaluep).opt_order_clause_t)->deep_delete();\n    }\n#line 2232 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 227:       /* opt_order_nulls  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_nulls_t) != NULL)\n        ((*yyvaluep).opt_order_nulls_t)->deep_delete();\n    }\n#line 2238 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 228:       /* order_item_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_item_list_t) != NULL)\n        ((*yyvaluep).order_item_list_t)->deep_delete();\n    }\n#line 2244 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 229:       /* order_item  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_item_t) != NULL)\n        ((*yyvaluep).order_item_t)->deep_delete();\n    }\n#line 2250 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 230:       /* opt_order_behavior  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_behavior_t) != NULL)\n        ((*yyvaluep).opt_order_behavior_t)->deep_delete();\n    }\n#line 2256 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 231:       /* opt_with_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_with_clause_t) != NULL)\n        ((*yyvaluep).opt_with_clause_t)->deep_delete();\n    }\n#line 2262 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 232:       /* cte_table_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_list_t) != NULL)\n        ((*yyvaluep).cte_table_list_t)->deep_delete();\n    }\n#line 2268 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 233:       /* cte_table  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_t) != NULL)\n        ((*yyvaluep).cte_table_t)->deep_delete();\n    }\n#line 2274 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 234:       /* cte_table_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cte_table_name_t) != NULL)\n        ((*yyvaluep).cte_table_name_t)->deep_delete();\n    }\n#line 2280 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 235:       /* opt_all_or_distinct  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_all_or_distinct_t) != NULL)\n        ((*yyvaluep).opt_all_or_distinct_t)->deep_delete();\n    }\n#line 2286 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 236:       /* create_table_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_table_stmt_t) != NULL)\n        ((*yyvaluep).create_table_stmt_t)->deep_delete();\n    }\n#line 2292 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 237:       /* create_index_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_index_stmt_t) != NULL)\n        ((*yyvaluep).create_index_stmt_t)->deep_delete();\n    }\n#line 2298 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 238:       /* create_view_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_view_stmt_t) != NULL)\n        ((*yyvaluep).create_view_stmt_t)->deep_delete();\n    }\n#line 2304 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 239:       /* drop_index_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_index_stmt_t) != NULL)\n        ((*yyvaluep).drop_index_stmt_t)->deep_delete();\n    }\n#line 2310 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 240:       /* drop_table_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_table_stmt_t) != NULL)\n        ((*yyvaluep).drop_table_stmt_t)->deep_delete();\n    }\n#line 2316 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 241:       /* drop_view_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_view_stmt_t) != NULL)\n        ((*yyvaluep).drop_view_stmt_t)->deep_delete();\n    }\n#line 2322 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 242:       /* insert_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_stmt_t) != NULL)\n        ((*yyvaluep).insert_stmt_t)->deep_delete();\n    }\n#line 2328 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 243:       /* insert_rest  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_rest_t) != NULL)\n        ((*yyvaluep).insert_rest_t)->deep_delete();\n    }\n#line 2334 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 244:       /* super_values_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).super_values_list_t) != NULL)\n        ((*yyvaluep).super_values_list_t)->deep_delete();\n    }\n#line 2340 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 245:       /* values_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).values_list_t) != NULL)\n        ((*yyvaluep).values_list_t)->deep_delete();\n    }\n#line 2346 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 246:       /* opt_on_conflict  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_conflict_t) != NULL)\n        ((*yyvaluep).opt_on_conflict_t)->deep_delete();\n    }\n#line 2352 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 247:       /* opt_conflict_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_conflict_expr_t) != NULL)\n        ((*yyvaluep).opt_conflict_expr_t)->deep_delete();\n    }\n#line 2358 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 248:       /* indexed_column_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_list_t) != NULL)\n        ((*yyvaluep).indexed_column_list_t)->deep_delete();\n    }\n#line 2364 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 249:       /* indexed_column  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_t) != NULL)\n        ((*yyvaluep).indexed_column_t)->deep_delete();\n    }\n#line 2370 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 250:       /* update_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).update_stmt_t) != NULL)\n        ((*yyvaluep).update_stmt_t)->deep_delete();\n    }\n#line 2376 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 251:       /* reindex_stmt  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).reindex_stmt_t) != NULL)\n        ((*yyvaluep).reindex_stmt_t)->deep_delete();\n    }\n#line 2382 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 252:       /* alter_action  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_action_t) != NULL)\n        ((*yyvaluep).alter_action_t)->deep_delete();\n    }\n#line 2388 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 253:       /* column_def_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_list_t) != NULL)\n        ((*yyvaluep).column_def_list_t)->deep_delete();\n    }\n#line 2394 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 254:       /* column_def  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_t) != NULL)\n        ((*yyvaluep).column_def_t)->deep_delete();\n    }\n#line 2400 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 255:       /* opt_column_constraint_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_constraint_list_t) != NULL)\n        ((*yyvaluep).opt_column_constraint_list_t)->deep_delete();\n    }\n#line 2406 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 256:       /* column_constraint_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_constraint_list_t) != NULL)\n        ((*yyvaluep).column_constraint_list_t)->deep_delete();\n    }\n#line 2412 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 257:       /* column_constraint  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_constraint_t) != NULL)\n        ((*yyvaluep).column_constraint_t)->deep_delete();\n    }\n#line 2418 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 258:       /* constraint_type  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).constraint_type_t) != NULL)\n        ((*yyvaluep).constraint_type_t)->deep_delete();\n    }\n#line 2424 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 259:       /* foreign_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).foreign_clause_t) != NULL)\n        ((*yyvaluep).foreign_clause_t)->deep_delete();\n    }\n#line 2430 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 260:       /* opt_foreign_key_actions  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_foreign_key_actions_t) != NULL)\n        ((*yyvaluep).opt_foreign_key_actions_t)->deep_delete();\n    }\n#line 2436 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 261:       /* foreign_key_actions  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).foreign_key_actions_t) != NULL)\n        ((*yyvaluep).foreign_key_actions_t)->deep_delete();\n    }\n#line 2442 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 262:       /* key_actions  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).key_actions_t) != NULL)\n        ((*yyvaluep).key_actions_t)->deep_delete();\n    }\n#line 2448 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 263:       /* opt_constraint_attribute_spec  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_constraint_attribute_spec_t) != NULL)\n        ((*yyvaluep).opt_constraint_attribute_spec_t)->deep_delete();\n    }\n#line 2454 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 264:       /* opt_initial_time  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_initial_time_t) != NULL)\n        ((*yyvaluep).opt_initial_time_t)->deep_delete();\n    }\n#line 2460 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 265:       /* constraint_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).constraint_name_t) != NULL)\n        ((*yyvaluep).constraint_name_t)->deep_delete();\n    }\n#line 2466 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 266:       /* opt_temp  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_temp_t) != NULL)\n        ((*yyvaluep).opt_temp_t)->deep_delete();\n    }\n#line 2472 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 267:       /* opt_check_option  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_check_option_t) != NULL)\n        ((*yyvaluep).opt_check_option_t)->deep_delete();\n    }\n#line 2478 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 268:       /* opt_column_name_list_p  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_name_list_p_t) != NULL)\n        ((*yyvaluep).opt_column_name_list_p_t)->deep_delete();\n    }\n#line 2484 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 269:       /* set_clause_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_clause_list_t) != NULL)\n        ((*yyvaluep).set_clause_list_t)->deep_delete();\n    }\n#line 2490 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 270:       /* set_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_clause_t) != NULL)\n        ((*yyvaluep).set_clause_t)->deep_delete();\n    }\n#line 2496 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 271:       /* expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_t) != NULL) ((*yyvaluep).expr_t)->deep_delete();\n    }\n#line 2502 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 272:       /* operand  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).operand_t) != NULL)\n        ((*yyvaluep).operand_t)->deep_delete();\n    }\n#line 2508 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 273:       /* cast_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cast_expr_t) != NULL)\n        ((*yyvaluep).cast_expr_t)->deep_delete();\n    }\n#line 2514 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 274:       /* scalar_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).scalar_expr_t) != NULL)\n        ((*yyvaluep).scalar_expr_t)->deep_delete();\n    }\n#line 2520 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 275:       /* unary_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).unary_expr_t) != NULL)\n        ((*yyvaluep).unary_expr_t)->deep_delete();\n    }\n#line 2526 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 276:       /* binary_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).binary_expr_t) != NULL)\n        ((*yyvaluep).binary_expr_t)->deep_delete();\n    }\n#line 2532 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 277:       /* logic_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).logic_expr_t) != NULL)\n        ((*yyvaluep).logic_expr_t)->deep_delete();\n    }\n#line 2538 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 278:       /* in_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).in_expr_t) != NULL)\n        ((*yyvaluep).in_expr_t)->deep_delete();\n    }\n#line 2544 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 279:       /* case_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_expr_t) != NULL)\n        ((*yyvaluep).case_expr_t)->deep_delete();\n    }\n#line 2550 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 280:       /* between_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).between_expr_t) != NULL)\n        ((*yyvaluep).between_expr_t)->deep_delete();\n    }\n#line 2556 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 281:       /* exists_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).exists_expr_t) != NULL)\n        ((*yyvaluep).exists_expr_t)->deep_delete();\n    }\n#line 2562 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 282:       /* case_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_list_t) != NULL)\n        ((*yyvaluep).case_list_t)->deep_delete();\n    }\n#line 2568 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 283:       /* case_clause  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_clause_t) != NULL)\n        ((*yyvaluep).case_clause_t)->deep_delete();\n    }\n#line 2574 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 284:       /* comp_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).comp_expr_t) != NULL)\n        ((*yyvaluep).comp_expr_t)->deep_delete();\n    }\n#line 2580 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 285:       /* extract_expr  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).extract_expr_t) != NULL)\n        ((*yyvaluep).extract_expr_t)->deep_delete();\n    }\n#line 2586 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 286:       /* datetime_field  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).datetime_field_t) != NULL)\n        ((*yyvaluep).datetime_field_t)->deep_delete();\n    }\n#line 2592 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 287:       /* array_index  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).array_index_t) != NULL)\n        ((*yyvaluep).array_index_t)->deep_delete();\n    }\n#line 2598 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 288:       /* literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).literal_t) != NULL)\n        ((*yyvaluep).literal_t)->deep_delete();\n    }\n#line 2604 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 289:       /* string_literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).string_literal_t) != NULL)\n        ((*yyvaluep).string_literal_t)->deep_delete();\n    }\n#line 2610 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 290:       /* bool_literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).bool_literal_t) != NULL)\n        ((*yyvaluep).bool_literal_t)->deep_delete();\n    }\n#line 2616 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 291:       /* num_literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).num_literal_t) != NULL)\n        ((*yyvaluep).num_literal_t)->deep_delete();\n    }\n#line 2622 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 292:       /* int_literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).int_literal_t) != NULL)\n        ((*yyvaluep).int_literal_t)->deep_delete();\n    }\n#line 2628 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 293:       /* float_literal  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).float_literal_t) != NULL)\n        ((*yyvaluep).float_literal_t)->deep_delete();\n    }\n#line 2634 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 294:       /* opt_column  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_t) != NULL)\n        ((*yyvaluep).opt_column_t)->deep_delete();\n    }\n#line 2640 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 295:       /* opt_if_not_exist  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_if_not_exist_t) != NULL)\n        ((*yyvaluep).opt_if_not_exist_t)->deep_delete();\n    }\n#line 2646 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 296:       /* opt_if_exist  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_if_exist_t) != NULL)\n        ((*yyvaluep).opt_if_exist_t)->deep_delete();\n    }\n#line 2652 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 297:       /* identifier  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).identifier_t) != NULL)\n        ((*yyvaluep).identifier_t)->deep_delete();\n    }\n#line 2658 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 298:       /* table_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_name_t) != NULL)\n        ((*yyvaluep).table_name_t)->deep_delete();\n    }\n#line 2664 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 299:       /* column_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_t) != NULL)\n        ((*yyvaluep).column_name_t)->deep_delete();\n    }\n#line 2670 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 300:       /* opt_unique  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_unique_t) != NULL)\n        ((*yyvaluep).opt_unique_t)->deep_delete();\n    }\n#line 2676 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 301:       /* view_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).view_name_t) != NULL)\n        ((*yyvaluep).view_name_t)->deep_delete();\n    }\n#line 2682 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 302:       /* binary_op  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).binary_op_t) != NULL)\n        ((*yyvaluep).binary_op_t)->deep_delete();\n    }\n#line 2688 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 303:       /* opt_not  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_not_t) != NULL)\n        ((*yyvaluep).opt_not_t)->deep_delete();\n    }\n#line 2694 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 304:       /* name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).name_t) != NULL) ((*yyvaluep).name_t)->deep_delete();\n    }\n#line 2700 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 305:       /* type_name  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).type_name_t) != NULL)\n        ((*yyvaluep).type_name_t)->deep_delete();\n    }\n#line 2706 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 306:       /* character_type  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_type_t) != NULL)\n        ((*yyvaluep).character_type_t)->deep_delete();\n    }\n#line 2712 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 307:       /* character_with_length  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_with_length_t) != NULL)\n        ((*yyvaluep).character_with_length_t)->deep_delete();\n    }\n#line 2718 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 308:       /* character_without_length  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_without_length_t) != NULL)\n        ((*yyvaluep).character_without_length_t)->deep_delete();\n    }\n#line 2724 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 309:       /* character_conflicta  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).character_conflicta_t) != NULL)\n        ((*yyvaluep).character_conflicta_t)->deep_delete();\n    }\n#line 2730 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 310:       /* opt_varying  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_varying_t) != NULL)\n        ((*yyvaluep).opt_varying_t)->deep_delete();\n    }\n#line 2736 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 311:       /* numeric_type  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).numeric_type_t) != NULL)\n        ((*yyvaluep).numeric_type_t)->deep_delete();\n    }\n#line 2742 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 312:       /* opt_table_constraint_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_table_constraint_list_t) != NULL)\n        ((*yyvaluep).opt_table_constraint_list_t)->deep_delete();\n    }\n#line 2748 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 313:       /* table_constraint_list  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_constraint_list_t) != NULL)\n        ((*yyvaluep).table_constraint_list_t)->deep_delete();\n    }\n#line 2754 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 314:       /* table_constraint  */\n#line 358 \"bison.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_constraint_t) != NULL)\n        ((*yyvaluep).table_constraint_t)->deep_delete();\n    }\n#line 2760 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    default:\n      break;\n  }\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n}\n\n/*----------.\n| yyparse.  |\n`----------*/\n\nint yyparse(Program *result, yyscan_t scanner) {\n  /* The lookahead symbol.  */\n  int yychar;\n\n  /* The semantic value of the lookahead symbol.  */\n  /* Default value used for initialization, for pacifying older GCCs\n     or non-GCC compilers.  */\n  YY_INITIAL_VALUE(static YYSTYPE yyval_default;)\n  YYSTYPE yylval YY_INITIAL_VALUE(= yyval_default);\n\n  /* Location data for the lookahead symbol.  */\n  static YYLTYPE yyloc_default\n#if defined FF_LTYPE_IS_TRIVIAL && FF_LTYPE_IS_TRIVIAL\n      = {1, 1, 1, 1}\n#endif\n  ;\n  YYLTYPE yylloc = yyloc_default;\n\n  /* Number of syntax errors so far.  */\n  int yynerrs;\n\n  int yystate;\n  /* Number of tokens to shift before error messages enabled.  */\n  int yyerrstatus;\n\n  /* The stacks and their tools:\n     'yyss': related to states.\n     'yyvs': related to semantic values.\n     'yyls': related to locations.\n\n     Refer to the stacks through separate pointers, to allow yyoverflow\n     to reallocate them elsewhere.  */\n\n  /* The state stack.  */\n  yytype_int16 yyssa[YYINITDEPTH];\n  yytype_int16 *yyss;\n  yytype_int16 *yyssp;\n\n  /* The semantic value stack.  */\n  YYSTYPE yyvsa[YYINITDEPTH];\n  YYSTYPE *yyvs;\n  YYSTYPE *yyvsp;\n\n  /* The location stack.  */\n  YYLTYPE yylsa[YYINITDEPTH];\n  YYLTYPE *yyls;\n  YYLTYPE *yylsp;\n\n  /* The locations where the error started and ended.  */\n  YYLTYPE yyerror_range[3];\n\n  YYSIZE_T yystacksize;\n\n  int yyn;\n  int yyresult;\n  /* Lookahead token as an internal (translated) token number.  */\n  int yytoken = 0;\n  /* The variables used to return semantic value and location from the\n     action routines.  */\n  YYSTYPE yyval;\n  YYLTYPE yyloc;\n\n#if YYERROR_VERBOSE\n  /* Buffer for error messages, and its allocated size.  */\n  char yymsgbuf[128];\n  char *yymsg = yymsgbuf;\n  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;\n#endif\n\n#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))\n\n  /* The number of symbols on the RHS of the reduced rule.\n     Keep to zero when no symbol should be popped.  */\n  int yylen = 0;\n\n  yyssp = yyss = yyssa;\n  yyvsp = yyvs = yyvsa;\n  yylsp = yyls = yylsa;\n  yystacksize = YYINITDEPTH;\n\n  YYDPRINTF((stderr, \"Starting parse\\n\"));\n\n  yystate = 0;\n  yyerrstatus = 0;\n  yynerrs = 0;\n  yychar = YYEMPTY; /* Cause a token to be read.  */\n\n/* User initialization code.  */\n#line 18 \"bison.y\" /* yacc.c:1431  */\n  {\n    // Initialize\n    yylloc.first_column = 0;\n    yylloc.last_column = 0;\n    yylloc.first_line = 0;\n    yylloc.last_line = 0;\n    yylloc.total_column = 0;\n    yylloc.string_length = 0;\n  }\n\n#line 2878 \"bison_parser.cpp\" /* yacc.c:1431  */\n  yylsp[0] = yylloc;\n  goto yysetstate;\n\n/*------------------------------------------------------------.\n| yynewstate -- push a new state, which is found in yystate.  |\n`------------------------------------------------------------*/\nyynewstate:\n  /* In all cases, when you get here, the value and location stacks\n     have just been pushed.  So pushing a state here evens the stacks.  */\n  yyssp++;\n\n/*--------------------------------------------------------------------.\n| yynewstate -- set current state (the top of the stack) to yystate.  |\n`--------------------------------------------------------------------*/\nyysetstate:\n  *yyssp = (yytype_int16)yystate;\n\n  if (yyss + yystacksize - 1 <= yyssp)\n#if !defined yyoverflow && !defined YYSTACK_RELOCATE\n    goto yyexhaustedlab;\n#else\n  {\n    /* Get the current used size of the three stacks, in elements.  */\n    YYSIZE_T yysize = (YYSIZE_T)(yyssp - yyss + 1);\n\n#if defined yyoverflow\n    {\n      /* Give user a chance to reallocate the stack.  Use copies of\n         these so that the &'s don't force the real ones into\n         memory.  */\n      YYSTYPE *yyvs1 = yyvs;\n      yytype_int16 *yyss1 = yyss;\n      YYLTYPE *yyls1 = yyls;\n\n      /* Each stack pointer address is followed by the size of the\n         data in use in that stack, in bytes.  This used to be a\n         conditional around just the two extra args, but that might\n         be undefined if yyoverflow is a macro.  */\n      yyoverflow(YY_(\"memory exhausted\"), &yyss1, yysize * sizeof(*yyssp),\n                 &yyvs1, yysize * sizeof(*yyvsp), &yyls1,\n                 yysize * sizeof(*yylsp), &yystacksize);\n      yyss = yyss1;\n      yyvs = yyvs1;\n      yyls = yyls1;\n    }\n#else /* defined YYSTACK_RELOCATE */\n    /* Extend the stack our own way.  */\n    if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab;\n    yystacksize *= 2;\n    if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH;\n\n    {\n      yytype_int16 *yyss1 = yyss;\n      union yyalloc *yyptr =\n          (union yyalloc *)YYSTACK_ALLOC(YYSTACK_BYTES(yystacksize));\n      if (!yyptr) goto yyexhaustedlab;\n      YYSTACK_RELOCATE(yyss_alloc, yyss);\n      YYSTACK_RELOCATE(yyvs_alloc, yyvs);\n      YYSTACK_RELOCATE(yyls_alloc, yyls);\n#undef YYSTACK_RELOCATE\n      if (yyss1 != yyssa) YYSTACK_FREE(yyss1);\n    }\n#endif\n\n    yyssp = yyss + yysize - 1;\n    yyvsp = yyvs + yysize - 1;\n    yylsp = yyls + yysize - 1;\n\n    YYDPRINTF(\n        (stderr, \"Stack size increased to %lu\\n\", (unsigned long)yystacksize));\n\n    if (yyss + yystacksize - 1 <= yyssp) YYABORT;\n  }\n#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */\n\n  YYDPRINTF((stderr, \"Entering state %d\\n\", yystate));\n\n  if (yystate == YYFINAL) YYACCEPT;\n\n  goto yybackup;\n\n/*-----------.\n| yybackup.  |\n`-----------*/\nyybackup:\n  /* Do appropriate processing given the current state.  Read a\n     lookahead token if we need one and don't already have one.  */\n\n  /* First try to decide what to do without reference to lookahead token.  */\n  yyn = yypact[yystate];\n  if (yypact_value_is_default(yyn)) goto yydefault;\n\n  /* Not known => get a lookahead token if don't already have one.  */\n\n  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */\n  if (yychar == YYEMPTY) {\n    YYDPRINTF((stderr, \"Reading a token: \"));\n    yychar = yylex(&yylval, &yylloc, scanner);\n  }\n\n  if (yychar <= YYEOF) {\n    yychar = yytoken = YYEOF;\n    YYDPRINTF((stderr, \"Now at end of input.\\n\"));\n  } else {\n    yytoken = YYTRANSLATE(yychar);\n    YY_SYMBOL_PRINT(\"Next token is\", yytoken, &yylval, &yylloc);\n  }\n\n  /* If the proper action on seeing token YYTOKEN is to reduce or to\n     detect an error, take that action.  */\n  yyn += yytoken;\n  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault;\n  yyn = yytable[yyn];\n  if (yyn <= 0) {\n    if (yytable_value_is_error(yyn)) goto yyerrlab;\n    yyn = -yyn;\n    goto yyreduce;\n  }\n\n  /* Count tokens shifted since error; after three, turn off error\n     status.  */\n  if (yyerrstatus) yyerrstatus--;\n\n  /* Shift the lookahead token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yytoken, &yylval, &yylloc);\n\n  /* Discard the shifted token.  */\n  yychar = YYEMPTY;\n\n  yystate = yyn;\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n  *++yylsp = yylloc;\n  goto yynewstate;\n\n/*-----------------------------------------------------------.\n| yydefault -- do the default action for the current state.  |\n`-----------------------------------------------------------*/\nyydefault:\n  yyn = yydefact[yystate];\n  if (yyn == 0) goto yyerrlab;\n  goto yyreduce;\n\n/*-----------------------------.\n| yyreduce -- do a reduction.  |\n`-----------------------------*/\nyyreduce:\n  /* yyn is the number of a rule to reduce with.  */\n  yylen = yyr2[yyn];\n\n  /* If YYLEN is nonzero, implement the default value of the action:\n     '$$ = $1'.\n\n     Otherwise, the following line sets YYVAL to garbage.\n     This behavior is undocumented and Bison\n     users should not rely upon it.  Assigning to YYVAL\n     unconditionally makes the parser a bit smaller, and it avoids a\n     GCC warning that YYVAL may be used uninitialized.  */\n  yyval = yyvsp[1 - yylen];\n\n  /* Default location. */\n  YYLLOC_DEFAULT(yyloc, (yylsp - yylen), yylen);\n  yyerror_range[1] = yyloc;\n  YY_REDUCE_PRINT(yyn);\n  switch (yyn) {\n    case 2:\n#line 362 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.program_t) = result;\n      (yyval.program_t)->case_idx_ = CASE0;\n      (yyval.program_t)->stmtlist_ = (yyvsp[0].stmtlist_t);\n      (yyval.program_t) = NULL;\n\n    }\n#line 3078 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 3:\n#line 372 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmtlist_t) = new Stmtlist();\n      (yyval.stmtlist_t)->case_idx_ = CASE0;\n      (yyval.stmtlist_t)->stmt_ = (yyvsp[-2].stmt_t);\n      (yyval.stmtlist_t)->stmtlist_ = (yyvsp[0].stmtlist_t);\n\n    }\n#line 3090 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 4:\n#line 379 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmtlist_t) = new Stmtlist();\n      (yyval.stmtlist_t)->case_idx_ = CASE1;\n      (yyval.stmtlist_t)->stmt_ = (yyvsp[-1].stmt_t);\n\n    }\n#line 3101 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 5:\n#line 388 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE0;\n      (yyval.stmt_t)->create_stmt_ = (yyvsp[0].create_stmt_t);\n\n    }\n#line 3112 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 6:\n#line 394 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE1;\n      (yyval.stmt_t)->drop_stmt_ = (yyvsp[0].drop_stmt_t);\n\n    }\n#line 3123 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 7:\n#line 400 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE2;\n      (yyval.stmt_t)->select_stmt_ = (yyvsp[0].select_stmt_t);\n\n    }\n#line 3134 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 8:\n#line 406 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE3;\n      (yyval.stmt_t)->update_stmt_ = (yyvsp[0].update_stmt_t);\n\n    }\n#line 3145 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 9:\n#line 412 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE4;\n      (yyval.stmt_t)->insert_stmt_ = (yyvsp[0].insert_stmt_t);\n\n    }\n#line 3156 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 10:\n#line 418 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE5;\n      (yyval.stmt_t)->alter_stmt_ = (yyvsp[0].alter_stmt_t);\n\n    }\n#line 3167 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 11:\n#line 424 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.stmt_t) = new Stmt();\n      (yyval.stmt_t)->case_idx_ = CASE6;\n      (yyval.stmt_t)->reindex_stmt_ = (yyvsp[0].reindex_stmt_t);\n\n    }\n#line 3178 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 12:\n#line 433 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_stmt_t)->create_table_stmt_ =\n          (yyvsp[0].create_table_stmt_t);\n\n    }\n#line 3189 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 13:\n#line 439 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_stmt_t)->create_index_stmt_ =\n          (yyvsp[0].create_index_stmt_t);\n\n    }\n#line 3200 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 14:\n#line 445 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_stmt_t) = new CreateStmt();\n      (yyval.create_stmt_t)->case_idx_ = CASE2;\n      (yyval.create_stmt_t)->create_view_stmt_ = (yyvsp[0].create_view_stmt_t);\n\n    }\n#line 3211 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 15:\n#line 454 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_stmt_t)->drop_index_stmt_ = (yyvsp[0].drop_index_stmt_t);\n\n    }\n#line 3222 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 16:\n#line 460 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE1;\n      (yyval.drop_stmt_t)->drop_table_stmt_ = (yyvsp[0].drop_table_stmt_t);\n\n    }\n#line 3233 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 17:\n#line 466 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_stmt_t) = new DropStmt();\n      (yyval.drop_stmt_t)->case_idx_ = CASE2;\n      (yyval.drop_stmt_t)->drop_view_stmt_ = (yyvsp[0].drop_view_stmt_t);\n\n    }\n#line 3244 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 18:\n#line 475 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_stmt_t) = new AlterStmt();\n      (yyval.alter_stmt_t)->case_idx_ = CASE0;\n      (yyval.alter_stmt_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.alter_stmt_t)->alter_action_ = (yyvsp[0].alter_action_t);\n\n    }\n#line 3256 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 19:\n#line 485 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_stmt_t) = new SelectStmt();\n      (yyval.select_stmt_t)->case_idx_ = CASE0;\n      (yyval.select_stmt_t)->select_no_parens_ = (yyvsp[0].select_no_parens_t);\n\n    }\n#line 3267 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 20:\n#line 491 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_stmt_t) = new SelectStmt();\n      (yyval.select_stmt_t)->case_idx_ = CASE1;\n      (yyval.select_stmt_t)->select_with_parens_ =\n          (yyvsp[0].select_with_parens_t);\n\n    }\n#line 3278 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 21:\n#line 500 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_parens_t) = new SelectWithParens();\n      (yyval.select_with_parens_t)->case_idx_ = CASE0;\n      (yyval.select_with_parens_t)->select_no_parens_ =\n          (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 3289 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 22:\n#line 506 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_parens_t) = new SelectWithParens();\n      (yyval.select_with_parens_t)->case_idx_ = CASE1;\n      (yyval.select_with_parens_t)->select_with_parens_ =\n          (yyvsp[-1].select_with_parens_t);\n\n    }\n#line 3300 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 23:\n#line 515 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_no_parens_t) = new SelectNoParens();\n      (yyval.select_no_parens_t)->case_idx_ = CASE0;\n      (yyval.select_no_parens_t)->opt_with_clause_ =\n          (yyvsp[-3].opt_with_clause_t);\n      (yyval.select_no_parens_t)->select_clause_list_ =\n          (yyvsp[-2].select_clause_list_t);\n      (yyval.select_no_parens_t)->opt_order_clause_ =\n          (yyvsp[-1].opt_order_clause_t);\n      (yyval.select_no_parens_t)->opt_limit_clause_ =\n          (yyvsp[0].opt_limit_clause_t);\n\n    }\n#line 3314 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 24:\n#line 527 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_list_t) = new SelectClauseList();\n      (yyval.select_clause_list_t)->case_idx_ = CASE0;\n      (yyval.select_clause_list_t)->select_clause_ = (yyvsp[0].select_clause_t);\n\n    }\n#line 3325 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 25:\n#line 533 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_list_t) = new SelectClauseList();\n      (yyval.select_clause_list_t)->case_idx_ = CASE1;\n      (yyval.select_clause_list_t)->select_clause_ =\n          (yyvsp[-2].select_clause_t);\n      (yyval.select_clause_list_t)->combine_clause_ =\n          (yyvsp[-1].combine_clause_t);\n      (yyval.select_clause_list_t)->select_clause_list_ =\n          (yyvsp[0].select_clause_list_t);\n\n    }\n#line 3338 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 26:\n#line 544 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_t) = new SelectClause();\n      (yyval.select_clause_t)->case_idx_ = CASE0;\n      (yyval.select_clause_t)->opt_all_or_distinct_ =\n          (yyvsp[-5].opt_all_or_distinct_t);\n      (yyval.select_clause_t)->select_target_ = (yyvsp[-4].select_target_t);\n      (yyval.select_clause_t)->opt_from_clause_ = (yyvsp[-3].opt_from_clause_t);\n      (yyval.select_clause_t)->opt_where_clause_ =\n          (yyvsp[-2].opt_where_clause_t);\n      (yyval.select_clause_t)->opt_group_clause_ =\n          (yyvsp[-1].opt_group_clause_t);\n      (yyval.select_clause_t)->opt_window_clause_ =\n          (yyvsp[0].opt_window_clause_t);\n\n    }\n#line 3354 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 27:\n#line 558 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE0;\n\n    }\n#line 3364 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 28:\n#line 563 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3374 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 29:\n#line 568 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.combine_clause_t) = new CombineClause();\n      (yyval.combine_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 3384 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 30:\n#line 576 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_from_clause_t)->from_clause_ = (yyvsp[0].from_clause_t);\n\n    }\n#line 3395 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 31:\n#line 582 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3405 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 32:\n#line 590 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_target_t) = new SelectTarget();\n      (yyval.select_target_t)->case_idx_ = CASE0;\n      (yyval.select_target_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 3416 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 33:\n#line 599 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_window_clause_t) = new OptWindowClause();\n      (yyval.opt_window_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_window_clause_t)->window_clause_ = (yyvsp[0].window_clause_t);\n\n    }\n#line 3427 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 34:\n#line 605 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_window_clause_t) = new OptWindowClause();\n      (yyval.opt_window_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3437 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 35:\n#line 613 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_clause_t) = new WindowClause();\n      (yyval.window_clause_t)->case_idx_ = CASE0;\n      (yyval.window_clause_t)->window_def_list_ = (yyvsp[0].window_def_list_t);\n\n    }\n#line 3448 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 36:\n#line 622 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_list_t) = new WindowDefList();\n      (yyval.window_def_list_t)->case_idx_ = CASE0;\n      (yyval.window_def_list_t)->window_def_ = (yyvsp[0].window_def_t);\n\n    }\n#line 3459 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 37:\n#line 628 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_list_t) = new WindowDefList();\n      (yyval.window_def_list_t)->case_idx_ = CASE1;\n      (yyval.window_def_list_t)->window_def_ = (yyvsp[-2].window_def_t);\n      (yyval.window_def_list_t)->window_def_list_ =\n          (yyvsp[0].window_def_list_t);\n\n    }\n#line 3471 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 38:\n#line 638 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_def_t) = new WindowDef();\n      (yyval.window_def_t)->case_idx_ = CASE0;\n      (yyval.window_def_t)->window_name_ = (yyvsp[-4].window_name_t);\n      (yyval.window_def_t)->window_ = (yyvsp[-1].window_t);\n      if ((yyval.window_def_t)) {\n        auto tmp1 = (yyval.window_def_t)->window_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataWindowName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n    }\n#line 3495 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 39:\n#line 660 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_name_t) = new WindowName();\n      (yyval.window_name_t)->case_idx_ = CASE0;\n      (yyval.window_name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 3506 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 40:\n#line 669 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_t) = new Window();\n      (yyval.window_t)->case_idx_ = CASE0;\n      (yyval.window_t)->opt_exist_window_name_ =\n          (yyvsp[-3].opt_exist_window_name_t);\n      (yyval.window_t)->opt_partition_ = (yyvsp[-2].opt_partition_t);\n      (yyval.window_t)->opt_order_clause_ = (yyvsp[-1].opt_order_clause_t);\n      (yyval.window_t)->opt_frame_clause_ = (yyvsp[0].opt_frame_clause_t);\n\n    }\n#line 3520 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 41:\n#line 681 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_partition_t) = new OptPartition();\n      (yyval.opt_partition_t)->case_idx_ = CASE0;\n      (yyval.opt_partition_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 3531 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 42:\n#line 687 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_partition_t) = new OptPartition();\n      (yyval.opt_partition_t)->case_idx_ = CASE1;\n\n    }\n#line 3541 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 43:\n#line 695 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_frame_clause_t)->range_or_rows_ = (yyvsp[-2].range_or_rows_t);\n      (yyval.opt_frame_clause_t)->frame_bound_start_ =\n          (yyvsp[-1].frame_bound_start_t);\n      (yyval.opt_frame_clause_t)->opt_frame_exclude_ =\n          (yyvsp[0].opt_frame_exclude_t);\n\n    }\n#line 3554 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 44:\n#line 703 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE1;\n      (yyval.opt_frame_clause_t)->range_or_rows_ = (yyvsp[-5].range_or_rows_t);\n      (yyval.opt_frame_clause_t)->frame_bound_start_ =\n          (yyvsp[-3].frame_bound_start_t);\n      (yyval.opt_frame_clause_t)->frame_bound_end_ =\n          (yyvsp[-1].frame_bound_end_t);\n      (yyval.opt_frame_clause_t)->opt_frame_exclude_ =\n          (yyvsp[0].opt_frame_exclude_t);\n\n    }\n#line 3568 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 45:\n#line 712 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_clause_t) = new OptFrameClause();\n      (yyval.opt_frame_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 3578 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 46:\n#line 720 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE0;\n\n    }\n#line 3588 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 47:\n#line 725 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE1;\n\n    }\n#line 3598 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 48:\n#line 730 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->case_idx_ = CASE2;\n\n    }\n#line 3608 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 49:\n#line 738 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_start_t) = new FrameBoundStart();\n      (yyval.frame_bound_start_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_start_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n\n    }\n#line 3619 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 50:\n#line 744 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_start_t) = new FrameBoundStart();\n      (yyval.frame_bound_start_t)->case_idx_ = CASE1;\n\n    }\n#line 3629 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 51:\n#line 752 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_end_t) = new FrameBoundEnd();\n      (yyval.frame_bound_end_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_end_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n\n    }\n#line 3640 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 52:\n#line 758 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_end_t) = new FrameBoundEnd();\n      (yyval.frame_bound_end_t)->case_idx_ = CASE1;\n\n    }\n#line 3650 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 53:\n#line 766 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE0;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 3661 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 54:\n#line 772 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE1;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 3672 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 55:\n#line 778 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->case_idx_ = CASE2;\n\n    }\n#line 3682 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 56:\n#line 786 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_exclude_t) = new OptFrameExclude();\n      (yyval.opt_frame_exclude_t)->case_idx_ = CASE0;\n      (yyval.opt_frame_exclude_t)->frame_exclude_ = (yyvsp[0].frame_exclude_t);\n\n    }\n#line 3693 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 57:\n#line 792 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_exclude_t) = new OptFrameExclude();\n      (yyval.opt_frame_exclude_t)->case_idx_ = CASE1;\n\n    }\n#line 3703 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 58:\n#line 800 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->case_idx_ = CASE0;\n\n    }\n#line 3713 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 59:\n#line 805 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->case_idx_ = CASE1;\n\n    }\n#line 3723 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 60:\n#line 810 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->case_idx_ = CASE2;\n\n    }\n#line 3733 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 61:\n#line 815 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->case_idx_ = CASE3;\n\n    }\n#line 3743 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 62:\n#line 823 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exist_window_name_t) = new OptExistWindowName();\n      (yyval.opt_exist_window_name_t)->case_idx_ = CASE0;\n      (yyval.opt_exist_window_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.opt_exist_window_name_t)) {\n        auto tmp1 = (yyval.opt_exist_window_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataWindowName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 3763 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 63:\n#line 838 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exist_window_name_t) = new OptExistWindowName();\n      (yyval.opt_exist_window_name_t)->case_idx_ = CASE1;\n\n    }\n#line 3773 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 64:\n#line 846 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_clause_t) = new OptGroupClause();\n      (yyval.opt_group_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_group_clause_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n      (yyval.opt_group_clause_t)->opt_having_clause_ =\n          (yyvsp[0].opt_having_clause_t);\n\n    }\n#line 3785 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 65:\n#line 853 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_clause_t) = new OptGroupClause();\n      (yyval.opt_group_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3795 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 66:\n#line 861 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_clause_t) = new OptHavingClause();\n      (yyval.opt_having_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_having_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 3806 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 67:\n#line 867 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_clause_t) = new OptHavingClause();\n      (yyval.opt_having_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3816 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 68:\n#line 875 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_clause_t) = new OptWhereClause();\n      (yyval.opt_where_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_where_clause_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 3827 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 69:\n#line 881 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_clause_t) = new OptWhereClause();\n      (yyval.opt_where_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 3837 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 70:\n#line 889 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.where_clause_t) = new WhereClause();\n      (yyval.where_clause_t)->case_idx_ = CASE0;\n      (yyval.where_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 3848 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 71:\n#line 898 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.from_clause_t) = new FromClause();\n      (yyval.from_clause_t)->case_idx_ = CASE0;\n      (yyval.from_clause_t)->table_ref_ = (yyvsp[0].table_ref_t);\n\n    }\n#line 3859 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 72:\n#line 907 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE0;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-2].opt_table_prefix_t);\n      (yyval.table_ref_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.table_ref_t)->opt_on_or_using_ = (yyvsp[0].opt_on_or_using_t);\n\n    }\n#line 3872 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 73:\n#line 915 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE1;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-4].opt_table_prefix_t);\n      (yyval.table_ref_t)->select_no_parens_ = (yyvsp[-2].select_no_parens_t);\n      (yyval.table_ref_t)->opt_on_or_using_ = (yyvsp[0].opt_on_or_using_t);\n\n    }\n#line 3885 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 74:\n#line 923 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->case_idx_ = CASE2;\n      (yyval.table_ref_t)->opt_table_prefix_ = (yyvsp[-4].opt_table_prefix_t);\n      (yyval.table_ref_t)->table_ref_ = (yyvsp[-2].table_ref_t);\n      (yyval.table_ref_t)->opt_on_or_using_ = (yyvsp[0].opt_on_or_using_t);\n\n    }\n#line 3898 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 75:\n#line 934 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_or_using_t) = new OptOnOrUsing();\n      (yyval.opt_on_or_using_t)->case_idx_ = CASE0;\n      (yyval.opt_on_or_using_t)->on_or_using_ = (yyvsp[0].on_or_using_t);\n\n    }\n#line 3909 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 76:\n#line 940 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_or_using_t) = new OptOnOrUsing();\n      (yyval.opt_on_or_using_t)->case_idx_ = CASE1;\n\n    }\n#line 3919 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 77:\n#line 948 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.on_or_using_t) = new OnOrUsing();\n      (yyval.on_or_using_t)->case_idx_ = CASE0;\n      (yyval.on_or_using_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 3930 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 78:\n#line 954 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.on_or_using_t) = new OnOrUsing();\n      (yyval.on_or_using_t)->case_idx_ = CASE1;\n      (yyval.on_or_using_t)->column_name_list_ = (yyvsp[-1].column_name_list_t);\n\n    }\n#line 3941 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 79:\n#line 963 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_list_t) = new ColumnNameList();\n      (yyval.column_name_list_t)->case_idx_ = CASE0;\n      (yyval.column_name_list_t)->column_name_ = (yyvsp[0].column_name_t);\n\n    }\n#line 3952 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 80:\n#line 969 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_list_t) = new ColumnNameList();\n      (yyval.column_name_list_t)->case_idx_ = CASE1;\n      (yyval.column_name_list_t)->column_name_ = (yyvsp[-2].column_name_t);\n      (yyval.column_name_list_t)->column_name_list_ =\n          (yyvsp[0].column_name_list_t);\n\n    }\n#line 3964 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 81:\n#line 979 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_prefix_t) = new OptTablePrefix();\n      (yyval.opt_table_prefix_t)->case_idx_ = CASE0;\n      (yyval.opt_table_prefix_t)->table_ref_ = (yyvsp[-1].table_ref_t);\n      (yyval.opt_table_prefix_t)->join_op_ = (yyvsp[0].join_op_t);\n\n    }\n#line 3976 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 82:\n#line 986 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_prefix_t) = new OptTablePrefix();\n      (yyval.opt_table_prefix_t)->case_idx_ = CASE1;\n\n    }\n#line 3986 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 83:\n#line 994 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE0;\n\n    }\n#line 3996 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 84:\n#line 999 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE1;\n\n    }\n#line 4006 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 85:\n#line 1004 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->case_idx_ = CASE2;\n      (yyval.join_op_t)->opt_join_type_ = (yyvsp[-1].opt_join_type_t);\n\n    }\n#line 4017 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 86:\n#line 1013 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE0;\n\n    }\n#line 4027 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 87:\n#line 1018 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE1;\n\n    }\n#line 4037 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 88:\n#line 1023 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE2;\n\n    }\n#line 4047 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 89:\n#line 1028 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE3;\n\n    }\n#line 4057 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 90:\n#line 1033 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_join_type_t) = new OptJoinType();\n      (yyval.opt_join_type_t)->case_idx_ = CASE4;\n\n    }\n#line 4067 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 91:\n#line 1041 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_list_t) = new ExprList();\n      (yyval.expr_list_t)->case_idx_ = CASE0;\n      (yyval.expr_list_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.expr_list_t)->expr_list_ = (yyvsp[0].expr_list_t);\n\n    }\n#line 4079 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 92:\n#line 1048 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_list_t) = new ExprList();\n      (yyval.expr_list_t)->case_idx_ = CASE1;\n      (yyval.expr_list_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 4090 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 93:\n#line 1057 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_clause_t) = new OptLimitClause();\n      (yyval.opt_limit_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_limit_clause_t)->limit_clause_ = (yyvsp[0].limit_clause_t);\n\n    }\n#line 4101 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 94:\n#line 1063 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_clause_t) = new OptLimitClause();\n      (yyval.opt_limit_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4111 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 95:\n#line 1071 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE0;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[0].expr_t);\n\n    }\n#line 4122 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 96:\n#line 1077 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE1;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.limit_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 4134 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 97:\n#line 1084 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.limit_clause_t) = new LimitClause();\n      (yyval.limit_clause_t)->case_idx_ = CASE2;\n      (yyval.limit_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.limit_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 4146 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 98:\n#line 1094 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_clause_t) = new OptOrderClause();\n      (yyval.opt_order_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_order_clause_t)->order_item_list_ =\n          (yyvsp[0].order_item_list_t);\n\n    }\n#line 4157 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 99:\n#line 1100 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_clause_t) = new OptOrderClause();\n      (yyval.opt_order_clause_t)->case_idx_ = CASE1;\n\n    }\n#line 4167 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 100:\n#line 1108 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE0;\n\n    }\n#line 4177 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 101:\n#line 1113 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE1;\n\n    }\n#line 4187 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 102:\n#line 1118 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_nulls_t) = new OptOrderNulls();\n      (yyval.opt_order_nulls_t)->case_idx_ = CASE2;\n\n    }\n#line 4197 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 103:\n#line 1126 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_list_t) = new OrderItemList();\n      (yyval.order_item_list_t)->case_idx_ = CASE0;\n      (yyval.order_item_list_t)->order_item_ = (yyvsp[0].order_item_t);\n\n    }\n#line 4208 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 104:\n#line 1132 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_list_t) = new OrderItemList();\n      (yyval.order_item_list_t)->case_idx_ = CASE1;\n      (yyval.order_item_list_t)->order_item_ = (yyvsp[-2].order_item_t);\n      (yyval.order_item_list_t)->order_item_list_ =\n          (yyvsp[0].order_item_list_t);\n\n    }\n#line 4220 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 105:\n#line 1142 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_item_t) = new OrderItem();\n      (yyval.order_item_t)->case_idx_ = CASE0;\n      (yyval.order_item_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.order_item_t)->opt_order_behavior_ =\n          (yyvsp[-1].opt_order_behavior_t);\n      (yyval.order_item_t)->opt_order_nulls_ = (yyvsp[0].opt_order_nulls_t);\n\n    }\n#line 4233 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 106:\n#line 1153 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE0;\n\n    }\n#line 4243 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 107:\n#line 1158 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE1;\n\n    }\n#line 4253 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 108:\n#line 1163 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_behavior_t) = new OptOrderBehavior();\n      (yyval.opt_order_behavior_t)->case_idx_ = CASE2;\n\n    }\n#line 4263 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 109:\n#line 1171 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE0;\n      (yyval.opt_with_clause_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4274 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 110:\n#line 1177 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE1;\n      (yyval.opt_with_clause_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4285 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 111:\n#line 1183 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->case_idx_ = CASE2;\n\n    }\n#line 4295 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 112:\n#line 1191 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_list_t) = new CteTableList();\n      (yyval.cte_table_list_t)->case_idx_ = CASE0;\n      (yyval.cte_table_list_t)->cte_table_ = (yyvsp[0].cte_table_t);\n\n    }\n#line 4306 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 113:\n#line 1197 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_list_t) = new CteTableList();\n      (yyval.cte_table_list_t)->case_idx_ = CASE1;\n      (yyval.cte_table_list_t)->cte_table_ = (yyvsp[-2].cte_table_t);\n      (yyval.cte_table_list_t)->cte_table_list_ = (yyvsp[0].cte_table_list_t);\n\n    }\n#line 4318 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 114:\n#line 1207 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_t) = new CteTable();\n      (yyval.cte_table_t)->case_idx_ = CASE0;\n      (yyval.cte_table_t)->cte_table_name_ = (yyvsp[-4].cte_table_name_t);\n      (yyval.cte_table_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n\n    }\n#line 4330 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 115:\n#line 1217 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cte_table_name_t) = new CteTableName();\n      (yyval.cte_table_name_t)->case_idx_ = CASE0;\n      (yyval.cte_table_name_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.cte_table_name_t)->opt_column_name_list_p_ =\n          (yyvsp[0].opt_column_name_list_p_t);\n\n    }\n#line 4342 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 116:\n#line 1227 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE0;\n\n    }\n#line 4352 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 117:\n#line 1232 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE1;\n\n    }\n#line 4362 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 118:\n#line 1237 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_or_distinct_t) = new OptAllOrDistinct();\n      (yyval.opt_all_or_distinct_t)->case_idx_ = CASE2;\n\n    }\n#line 4372 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 119:\n#line 1245 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_table_stmt_t) = new CreateTableStmt();\n      (yyval.create_table_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_table_stmt_t)->opt_temp_ = (yyvsp[-5].opt_temp_t);\n      (yyval.create_table_stmt_t)->opt_if_not_exist_ =\n          (yyvsp[-3].opt_if_not_exist_t);\n      (yyval.create_table_stmt_t)->table_name_ = (yyvsp[-2].table_name_t);\n      (yyval.create_table_stmt_t)->select_stmt_ = (yyvsp[0].select_stmt_t);\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)128;\n          }\n        }\n      }\n\n    }\n#line 4398 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 120:\n#line 1266 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_table_stmt_t) = new CreateTableStmt();\n      (yyval.create_table_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_table_stmt_t)->opt_temp_ = (yyvsp[-7].opt_temp_t);\n      (yyval.create_table_stmt_t)->opt_if_not_exist_ =\n          (yyvsp[-5].opt_if_not_exist_t);\n      (yyval.create_table_stmt_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.create_table_stmt_t)->column_def_list_ =\n          (yyvsp[-2].column_def_list_t);\n      (yyval.create_table_stmt_t)->opt_table_constraint_list_ =\n          (yyvsp[-1].opt_table_constraint_list_t);\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_table_stmt_t)) {\n        auto tmp1 = (yyval.create_table_stmt_t)->column_def_list_;\n        while (tmp1) {\n          auto tmp2 = tmp1->column_def_;\n          if (tmp2) {\n            auto tmp3 = tmp2->identifier_;\n            if (tmp3) {\n              tmp3->data_type_ = kDataColumnName;\n              tmp3->scope_ = 2;\n              tmp3->data_flag_ = (DATAFLAG)1;\n            }\n          }\n          tmp1 = tmp1->column_def_list_;\n        }\n      }\n\n    }\n#line 4441 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 121:\n#line 1307 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_index_stmt_t) = new CreateIndexStmt();\n      (yyval.create_index_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_index_stmt_t)->opt_unique_ = (yyvsp[-9].opt_unique_t);\n      (yyval.create_index_stmt_t)->opt_if_not_exist_ =\n          (yyvsp[-7].opt_if_not_exist_t);\n      (yyval.create_index_stmt_t)->table_name_1_ = (yyvsp[-6].table_name_t);\n      (yyval.create_index_stmt_t)->table_name_2_ = (yyvsp[-4].table_name_t);\n      (yyval.create_index_stmt_t)->indexed_column_list_ =\n          (yyvsp[-2].indexed_column_list_t);\n      (yyval.create_index_stmt_t)->opt_where_clause_ =\n          (yyvsp[0].opt_where_clause_t);\n      if ((yyval.create_index_stmt_t)) {\n        auto tmp1 = (yyval.create_index_stmt_t)->table_name_1_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)128;\n          }\n        }\n      }\n\n      if ((yyval.create_index_stmt_t)) {\n        auto tmp1 = (yyval.create_index_stmt_t)->table_name_2_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n    }\n#line 4481 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 122:\n#line 1345 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE0;\n      (yyval.create_view_stmt_t)->opt_temp_ = (yyvsp[-6].opt_temp_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 4527 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 123:\n#line 1386 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE1;\n      (yyval.create_view_stmt_t)->opt_temp_ = (yyvsp[-7].opt_temp_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 4573 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 124:\n#line 1427 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE2;\n      (yyval.create_view_stmt_t)->opt_temp_ = (yyvsp[-6].opt_temp_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 4619 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 125:\n#line 1468 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_view_stmt_t) = new CreateViewStmt();\n      (yyval.create_view_stmt_t)->case_idx_ = CASE3;\n      (yyval.create_view_stmt_t)->opt_temp_ = (yyvsp[-7].opt_temp_t);\n      (yyval.create_view_stmt_t)->view_name_ = (yyvsp[-4].view_name_t);\n      (yyval.create_view_stmt_t)->opt_column_name_list_p_ =\n          (yyvsp[-3].opt_column_name_list_p_t);\n      (yyval.create_view_stmt_t)->select_stmt_ = (yyvsp[-1].select_stmt_t);\n      (yyval.create_view_stmt_t)->opt_check_option_ =\n          (yyvsp[0].opt_check_option_t);\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 10;\n            tmp2->data_flag_ = (DATAFLAG)1;\n          }\n        }\n      }\n\n      if ((yyval.create_view_stmt_t)) {\n        auto tmp1 = (yyval.create_view_stmt_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 11;\n                tmp4->data_flag_ = (DATAFLAG)1;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 4665 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 126:\n#line 1512 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_index_stmt_t) = new DropIndexStmt();\n      (yyval.drop_index_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_index_stmt_t)->opt_if_exist_ = (yyvsp[-1].opt_if_exist_t);\n      (yyval.drop_index_stmt_t)->table_name_ = (yyvsp[0].table_name_t);\n      if ((yyval.drop_index_stmt_t)) {\n        auto tmp1 = (yyval.drop_index_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 4689 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 127:\n#line 1534 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_table_stmt_t) = new DropTableStmt();\n      (yyval.drop_table_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_table_stmt_t)->opt_if_exist_ = (yyvsp[-1].opt_if_exist_t);\n      (yyval.drop_table_stmt_t)->table_name_ = (yyvsp[0].table_name_t);\n      if ((yyval.drop_table_stmt_t)) {\n        auto tmp1 = (yyval.drop_table_stmt_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 4713 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 128:\n#line 1556 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_view_stmt_t) = new DropViewStmt();\n      (yyval.drop_view_stmt_t)->case_idx_ = CASE0;\n      (yyval.drop_view_stmt_t)->opt_if_exist_ = (yyvsp[-1].opt_if_exist_t);\n      (yyval.drop_view_stmt_t)->view_name_ = (yyvsp[0].view_name_t);\n      if ((yyval.drop_view_stmt_t)) {\n        auto tmp1 = (yyval.drop_view_stmt_t)->view_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 1;\n            tmp2->data_flag_ = (DATAFLAG)2;\n          }\n        }\n      }\n\n    }\n#line 4737 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 129:\n#line 1578 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_stmt_t) = new InsertStmt();\n      (yyval.insert_stmt_t)->case_idx_ = CASE0;\n      (yyval.insert_stmt_t)->opt_with_clause_ = (yyvsp[-5].opt_with_clause_t);\n      (yyval.insert_stmt_t)->table_name_ = (yyvsp[-2].table_name_t);\n      (yyval.insert_stmt_t)->insert_rest_ = (yyvsp[-1].insert_rest_t);\n      (yyval.insert_stmt_t)->opt_on_conflict_ = (yyvsp[0].opt_on_conflict_t);\n\n    }\n#line 4751 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 130:\n#line 1590 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE0;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-1].opt_column_name_list_p_t);\n      (yyval.insert_rest_t)->select_no_parens_ = (yyvsp[0].select_no_parens_t);\n\n    }\n#line 4763 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 131:\n#line 1597 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE1;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n\n    }\n#line 4774 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 132:\n#line 1603 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_rest_t) = new InsertRest();\n      (yyval.insert_rest_t)->case_idx_ = CASE2;\n      (yyval.insert_rest_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n      (yyval.insert_rest_t)->super_values_list_ =\n          (yyvsp[0].super_values_list_t);\n\n    }\n#line 4786 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 133:\n#line 1613 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.super_values_list_t) = new SuperValuesList();\n      (yyval.super_values_list_t)->case_idx_ = CASE0;\n      (yyval.super_values_list_t)->values_list_ = (yyvsp[0].values_list_t);\n\n    }\n#line 4797 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 134:\n#line 1619 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.super_values_list_t) = new SuperValuesList();\n      (yyval.super_values_list_t)->case_idx_ = CASE1;\n      (yyval.super_values_list_t)->values_list_ = (yyvsp[-2].values_list_t);\n      (yyval.super_values_list_t)->super_values_list_ =\n          (yyvsp[0].super_values_list_t);\n\n    }\n#line 4809 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 135:\n#line 1629 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.values_list_t) = new ValuesList();\n      (yyval.values_list_t)->case_idx_ = CASE0;\n      (yyval.values_list_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 4820 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 136:\n#line 1638 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE0;\n      (yyval.opt_on_conflict_t)->opt_conflict_expr_ =\n          (yyvsp[-2].opt_conflict_expr_t);\n\n    }\n#line 4831 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 137:\n#line 1644 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE1;\n      (yyval.opt_on_conflict_t)->opt_conflict_expr_ =\n          (yyvsp[-4].opt_conflict_expr_t);\n      (yyval.opt_on_conflict_t)->set_clause_list_ =\n          (yyvsp[-1].set_clause_list_t);\n      (yyval.opt_on_conflict_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 4844 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 138:\n#line 1652 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->case_idx_ = CASE2;\n\n    }\n#line 4854 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 139:\n#line 1660 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_conflict_expr_t) = new OptConflictExpr();\n      (yyval.opt_conflict_expr_t)->case_idx_ = CASE0;\n      (yyval.opt_conflict_expr_t)->indexed_column_list_ =\n          (yyvsp[-2].indexed_column_list_t);\n      (yyval.opt_conflict_expr_t)->where_clause_ = (yyvsp[0].where_clause_t);\n\n    }\n#line 4866 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 140:\n#line 1667 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_conflict_expr_t) = new OptConflictExpr();\n      (yyval.opt_conflict_expr_t)->case_idx_ = CASE1;\n\n    }\n#line 4876 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 141:\n#line 1675 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_list_t) = new IndexedColumnList();\n      (yyval.indexed_column_list_t)->case_idx_ = CASE0;\n      (yyval.indexed_column_list_t)->indexed_column_ =\n          (yyvsp[0].indexed_column_t);\n\n    }\n#line 4887 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 142:\n#line 1681 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_list_t) = new IndexedColumnList();\n      (yyval.indexed_column_list_t)->case_idx_ = CASE1;\n      (yyval.indexed_column_list_t)->indexed_column_ =\n          (yyvsp[-2].indexed_column_t);\n      (yyval.indexed_column_list_t)->indexed_column_list_ =\n          (yyvsp[0].indexed_column_list_t);\n\n    }\n#line 4899 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 143:\n#line 1691 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_t) = new IndexedColumn();\n      (yyval.indexed_column_t)->case_idx_ = CASE0;\n      (yyval.indexed_column_t)->expr_ = (yyvsp[-1].expr_t);\n      (yyval.indexed_column_t)->opt_order_behavior_ =\n          (yyvsp[0].opt_order_behavior_t);\n\n    }\n#line 4911 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 144:\n#line 1701 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_stmt_t) = new UpdateStmt();\n      (yyval.update_stmt_t)->case_idx_ = CASE0;\n      (yyval.update_stmt_t)->opt_with_clause_ = (yyvsp[-5].opt_with_clause_t);\n      (yyval.update_stmt_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.update_stmt_t)->set_clause_list_ = (yyvsp[-1].set_clause_list_t);\n      (yyval.update_stmt_t)->opt_where_clause_ = (yyvsp[0].opt_where_clause_t);\n\n    }\n#line 4925 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 145:\n#line 1713 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.reindex_stmt_t) = new ReindexStmt();\n      (yyval.reindex_stmt_t)->case_idx_ = CASE0;\n      (yyval.reindex_stmt_t)->table_name_ = (yyvsp[0].table_name_t);\n\n    }\n#line 4936 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 146:\n#line 1719 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.reindex_stmt_t) = new ReindexStmt();\n      (yyval.reindex_stmt_t)->case_idx_ = CASE1;\n      (yyval.reindex_stmt_t)->table_name_ = (yyvsp[0].table_name_t);\n\n    }\n#line 4947 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 147:\n#line 1728 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE0;\n      (yyval.alter_action_t)->table_name_ = (yyvsp[0].table_name_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)64;\n          }\n        }\n      }\n\n    }\n#line 4970 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 148:\n#line 1746 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE1;\n      (yyval.alter_action_t)->opt_column_ = (yyvsp[-3].opt_column_t);\n      (yyval.alter_action_t)->column_name_1_ = (yyvsp[-2].column_name_t);\n      (yyval.alter_action_t)->column_name_2_ = (yyvsp[0].column_name_t);\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_name_1_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 2;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n      if ((yyval.alter_action_t)) {\n        auto tmp1 = (yyval.alter_action_t)->column_name_2_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataColumnName;\n            tmp2->scope_ = 3;\n            tmp2->data_flag_ = (DATAFLAG)64;\n          }\n        }\n      }\n\n    }\n#line 5007 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 149:\n#line 1778 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_action_t) = new AlterAction();\n      (yyval.alter_action_t)->case_idx_ = CASE2;\n      (yyval.alter_action_t)->opt_column_ = (yyvsp[-1].opt_column_t);\n      (yyval.alter_action_t)->column_def_ = (yyvsp[0].column_def_t);\n\n    }\n#line 5019 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 150:\n#line 1788 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_list_t) = new ColumnDefList();\n      (yyval.column_def_list_t)->case_idx_ = CASE0;\n      (yyval.column_def_list_t)->column_def_ = (yyvsp[0].column_def_t);\n\n    }\n#line 5030 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 151:\n#line 1794 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_list_t) = new ColumnDefList();\n      (yyval.column_def_list_t)->case_idx_ = CASE1;\n      (yyval.column_def_list_t)->column_def_ = (yyvsp[-2].column_def_t);\n      (yyval.column_def_list_t)->column_def_list_ =\n          (yyvsp[0].column_def_list_t);\n\n    }\n#line 5042 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 152:\n#line 1804 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_t) = new ColumnDef();\n      (yyval.column_def_t)->case_idx_ = CASE0;\n      (yyval.column_def_t)->identifier_ = (yyvsp[-2].identifier_t);\n      (yyval.column_def_t)->type_name_ = (yyvsp[-1].type_name_t);\n      (yyval.column_def_t)->opt_column_constraint_list_ =\n          (yyvsp[0].opt_column_constraint_list_t);\n      if ((yyval.column_def_t)) {\n        auto tmp1 = (yyval.column_def_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataColumnName;\n          tmp1->scope_ = 2;\n          tmp1->data_flag_ = (DATAFLAG)1;\n        }\n      }\n\n    }\n#line 5064 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 153:\n#line 1824 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_constraint_list_t) = new OptColumnConstraintList();\n      (yyval.opt_column_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.opt_column_constraint_list_t)->column_constraint_list_ =\n          (yyvsp[0].column_constraint_list_t);\n\n    }\n#line 5075 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 154:\n#line 1830 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_constraint_list_t) = new OptColumnConstraintList();\n      (yyval.opt_column_constraint_list_t)->case_idx_ = CASE1;\n\n    }\n#line 5085 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 155:\n#line 1838 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_list_t) = new ColumnConstraintList();\n      (yyval.column_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.column_constraint_list_t)->column_constraint_ =\n          (yyvsp[0].column_constraint_t);\n\n    }\n#line 5096 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 156:\n#line 1844 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_list_t) = new ColumnConstraintList();\n      (yyval.column_constraint_list_t)->case_idx_ = CASE1;\n      (yyval.column_constraint_list_t)->column_constraint_ =\n          (yyvsp[-1].column_constraint_t);\n      (yyval.column_constraint_list_t)->column_constraint_list_ =\n          (yyvsp[0].column_constraint_list_t);\n\n    }\n#line 5108 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 157:\n#line 1854 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_constraint_t) = new ColumnConstraint();\n      (yyval.column_constraint_t)->case_idx_ = CASE0;\n      (yyval.column_constraint_t)->constraint_type_ =\n          (yyvsp[0].constraint_type_t);\n\n    }\n#line 5119 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 158:\n#line 1863 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE0;\n\n    }\n#line 5129 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 159:\n#line 1868 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE1;\n\n    }\n#line 5139 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 160:\n#line 1873 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE2;\n\n    }\n#line 5149 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 161:\n#line 1878 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE3;\n      (yyval.constraint_type_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 5160 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 162:\n#line 1884 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_type_t) = new ConstraintType();\n      (yyval.constraint_type_t)->case_idx_ = CASE4;\n      (yyval.constraint_type_t)->foreign_clause_ = (yyvsp[0].foreign_clause_t);\n\n    }\n#line 5171 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 163:\n#line 1893 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_clause_t) = new ForeignClause();\n      (yyval.foreign_clause_t)->case_idx_ = CASE0;\n      (yyval.foreign_clause_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.foreign_clause_t)->opt_column_name_list_p_ =\n          (yyvsp[-2].opt_column_name_list_p_t);\n      (yyval.foreign_clause_t)->opt_foreign_key_actions_ =\n          (yyvsp[-1].opt_foreign_key_actions_t);\n      (yyval.foreign_clause_t)->opt_constraint_attribute_spec_ =\n          (yyvsp[0].opt_constraint_attribute_spec_t);\n      if ((yyval.foreign_clause_t)) {\n        auto tmp1 = (yyval.foreign_clause_t)->table_name_;\n        if (tmp1) {\n          auto tmp2 = tmp1->identifier_;\n          if (tmp2) {\n            tmp2->data_type_ = kDataTableName;\n            tmp2->scope_ = 100;\n            tmp2->data_flag_ = (DATAFLAG)8;\n          }\n        }\n      }\n\n      if ((yyval.foreign_clause_t)) {\n        auto tmp1 = (yyval.foreign_clause_t)->opt_column_name_list_p_;\n        if (tmp1) {\n          auto tmp2 = tmp1->column_name_list_;\n          while (tmp2) {\n            auto tmp3 = tmp2->column_name_;\n            if (tmp3) {\n              auto tmp4 = tmp3->identifier_;\n              if (tmp4) {\n                tmp4->data_type_ = kDataColumnName;\n                tmp4->scope_ = 101;\n                tmp4->data_flag_ = (DATAFLAG)8;\n              }\n            }\n            tmp2 = tmp2->column_name_list_;\n          }\n        }\n      }\n\n    }\n#line 5216 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 164:\n#line 1936 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_actions_t) = new OptForeignKeyActions();\n      (yyval.opt_foreign_key_actions_t)->case_idx_ = CASE0;\n      (yyval.opt_foreign_key_actions_t)->foreign_key_actions_ =\n          (yyvsp[0].foreign_key_actions_t);\n\n    }\n#line 5227 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 165:\n#line 1942 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_foreign_key_actions_t) = new OptForeignKeyActions();\n      (yyval.opt_foreign_key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 5237 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 166:\n#line 1950 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE0;\n\n    }\n#line 5247 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 167:\n#line 1955 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 5257 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 168:\n#line 1960 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE2;\n\n    }\n#line 5267 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 169:\n#line 1965 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE3;\n      (yyval.foreign_key_actions_t)->key_actions_ = (yyvsp[0].key_actions_t);\n\n    }\n#line 5278 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 170:\n#line 1971 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.foreign_key_actions_t) = new ForeignKeyActions();\n      (yyval.foreign_key_actions_t)->case_idx_ = CASE4;\n      (yyval.foreign_key_actions_t)->key_actions_ = (yyvsp[0].key_actions_t);\n\n    }\n#line 5289 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 171:\n#line 1980 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE0;\n\n    }\n#line 5299 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 172:\n#line 1985 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE1;\n\n    }\n#line 5309 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 173:\n#line 1990 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE2;\n\n    }\n#line 5319 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 174:\n#line 1995 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE3;\n\n    }\n#line 5329 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 175:\n#line 2000 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.key_actions_t) = new KeyActions();\n      (yyval.key_actions_t)->case_idx_ = CASE4;\n\n    }\n#line 5339 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 176:\n#line 2008 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE0;\n      (yyval.opt_constraint_attribute_spec_t)->opt_initial_time_ =\n          (yyvsp[0].opt_initial_time_t);\n\n    }\n#line 5350 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 177:\n#line 2014 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE1;\n      (yyval.opt_constraint_attribute_spec_t)->opt_initial_time_ =\n          (yyvsp[0].opt_initial_time_t);\n\n    }\n#line 5361 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 178:\n#line 2020 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_constraint_attribute_spec_t) =\n          new OptConstraintAttributeSpec();\n      (yyval.opt_constraint_attribute_spec_t)->case_idx_ = CASE2;\n\n    }\n#line 5371 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 179:\n#line 2028 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE0;\n\n    }\n#line 5381 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 180:\n#line 2033 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE1;\n\n    }\n#line 5391 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 181:\n#line 2038 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_initial_time_t) = new OptInitialTime();\n      (yyval.opt_initial_time_t)->case_idx_ = CASE2;\n\n    }\n#line 5401 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 182:\n#line 2046 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.constraint_name_t) = new ConstraintName();\n      (yyval.constraint_name_t)->case_idx_ = CASE0;\n      (yyval.constraint_name_t)->name_ = (yyvsp[0].name_t);\n\n    }\n#line 5412 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 183:\n#line 2055 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE0;\n\n    }\n#line 5422 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 184:\n#line 2060 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE1;\n\n    }\n#line 5432 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 185:\n#line 2065 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE2;\n\n    }\n#line 5442 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 186:\n#line 2070 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE3;\n\n    }\n#line 5452 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 187:\n#line 2075 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE4;\n\n    }\n#line 5462 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 188:\n#line 2080 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE5;\n\n    }\n#line 5472 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 189:\n#line 2085 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE6;\n\n    }\n#line 5482 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 190:\n#line 2090 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_temp_t) = new OptTemp();\n      (yyval.opt_temp_t)->case_idx_ = CASE7;\n\n    }\n#line 5492 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 191:\n#line 2098 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE0;\n\n    }\n#line 5502 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 192:\n#line 2103 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE1;\n\n    }\n#line 5512 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 193:\n#line 2108 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE2;\n\n    }\n#line 5522 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 194:\n#line 2113 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_check_option_t) = new OptCheckOption();\n      (yyval.opt_check_option_t)->case_idx_ = CASE3;\n\n    }\n#line 5532 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 195:\n#line 2121 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_name_list_p_t) = new OptColumnNameListP();\n      (yyval.opt_column_name_list_p_t)->case_idx_ = CASE0;\n      (yyval.opt_column_name_list_p_t)->column_name_list_ =\n          (yyvsp[-1].column_name_list_t);\n\n    }\n#line 5543 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 196:\n#line 2127 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_name_list_p_t) = new OptColumnNameListP();\n      (yyval.opt_column_name_list_p_t)->case_idx_ = CASE1;\n\n    }\n#line 5553 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 197:\n#line 2135 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_list_t) = new SetClauseList();\n      (yyval.set_clause_list_t)->case_idx_ = CASE0;\n      (yyval.set_clause_list_t)->set_clause_ = (yyvsp[0].set_clause_t);\n\n    }\n#line 5564 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 198:\n#line 2141 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_list_t) = new SetClauseList();\n      (yyval.set_clause_list_t)->case_idx_ = CASE1;\n      (yyval.set_clause_list_t)->set_clause_ = (yyvsp[-2].set_clause_t);\n      (yyval.set_clause_list_t)->set_clause_list_ =\n          (yyvsp[0].set_clause_list_t);\n\n    }\n#line 5576 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 199:\n#line 2151 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_t) = new SetClause();\n      (yyval.set_clause_t)->case_idx_ = CASE0;\n      (yyval.set_clause_t)->column_name_ = (yyvsp[-2].column_name_t);\n      (yyval.set_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 5588 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 200:\n#line 2158 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_clause_t) = new SetClause();\n      (yyval.set_clause_t)->case_idx_ = CASE1;\n      (yyval.set_clause_t)->column_name_list_ = (yyvsp[-3].column_name_list_t);\n      (yyval.set_clause_t)->expr_ = (yyvsp[0].expr_t);\n\n    }\n#line 5600 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 201:\n#line 2168 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE0;\n      (yyval.expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 5611 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 202:\n#line 2174 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE1;\n      (yyval.expr_t)->between_expr_ = (yyvsp[0].between_expr_t);\n\n    }\n#line 5622 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 203:\n#line 2180 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE2;\n      (yyval.expr_t)->exists_expr_ = (yyvsp[0].exists_expr_t);\n\n    }\n#line 5633 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 204:\n#line 2186 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE3;\n      (yyval.expr_t)->in_expr_ = (yyvsp[0].in_expr_t);\n\n    }\n#line 5644 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 205:\n#line 2192 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE4;\n      (yyval.expr_t)->cast_expr_ = (yyvsp[0].cast_expr_t);\n\n    }\n#line 5655 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 206:\n#line 2198 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = new Expr();\n      (yyval.expr_t)->case_idx_ = CASE5;\n      (yyval.expr_t)->logic_expr_ = (yyvsp[0].logic_expr_t);\n\n    }\n#line 5666 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 207:\n#line 2207 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE0;\n      (yyval.operand_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 5677 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 208:\n#line 2213 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE1;\n      (yyval.operand_t)->array_index_ = (yyvsp[0].array_index_t);\n\n    }\n#line 5688 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 209:\n#line 2219 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE2;\n      (yyval.operand_t)->scalar_expr_ = (yyvsp[0].scalar_expr_t);\n\n    }\n#line 5699 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 210:\n#line 2225 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE3;\n      (yyval.operand_t)->unary_expr_ = (yyvsp[0].unary_expr_t);\n\n    }\n#line 5710 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 211:\n#line 2231 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE4;\n      (yyval.operand_t)->binary_expr_ = (yyvsp[0].binary_expr_t);\n\n    }\n#line 5721 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 212:\n#line 2237 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE5;\n      (yyval.operand_t)->case_expr_ = (yyvsp[0].case_expr_t);\n\n    }\n#line 5732 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 213:\n#line 2243 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE6;\n      (yyval.operand_t)->extract_expr_ = (yyvsp[0].extract_expr_t);\n\n    }\n#line 5743 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 214:\n#line 2249 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->case_idx_ = CASE7;\n      (yyval.operand_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 5754 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 215:\n#line 2258 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.cast_expr_t) = new CastExpr();\n      (yyval.cast_expr_t)->case_idx_ = CASE0;\n      (yyval.cast_expr_t)->expr_ = (yyvsp[-3].expr_t);\n      (yyval.cast_expr_t)->type_name_ = (yyvsp[-1].type_name_t);\n\n    }\n#line 5766 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 216:\n#line 2268 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->case_idx_ = CASE0;\n      (yyval.scalar_expr_t)->column_name_ = (yyvsp[0].column_name_t);\n\n    }\n#line 5777 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 217:\n#line 2274 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->case_idx_ = CASE1;\n      (yyval.scalar_expr_t)->literal_ = (yyvsp[0].literal_t);\n\n    }\n#line 5788 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 218:\n#line 2283 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE0;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 5799 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 219:\n#line 2289 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE1;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n\n    }\n#line 5810 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 220:\n#line 2295 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE2;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-1].operand_t);\n\n    }\n#line 5821 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 221:\n#line 2301 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE3;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-2].operand_t);\n\n    }\n#line 5832 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 222:\n#line 2307 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE4;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-3].operand_t);\n\n    }\n#line 5843 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 223:\n#line 2313 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE5;\n\n    }\n#line 5853 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 224:\n#line 2318 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->case_idx_ = CASE6;\n\n    }\n#line 5863 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 225:\n#line 2326 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE0;\n      (yyval.binary_expr_t)->comp_expr_ = (yyvsp[0].comp_expr_t);\n\n    }\n#line 5874 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 226:\n#line 2332 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE1;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->binary_op_ = (yyvsp[-1].binary_op_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 5887 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 227:\n#line 2340 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE2;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 5899 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 228:\n#line 2347 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->case_idx_ = CASE3;\n      (yyval.binary_expr_t)->operand_1_ = (yyvsp[-3].operand_t);\n      (yyval.binary_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 5911 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 229:\n#line 2357 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->case_idx_ = CASE0;\n      (yyval.logic_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 5923 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 230:\n#line 2364 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->case_idx_ = CASE1;\n      (yyval.logic_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 5935 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 231:\n#line 2374 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE0;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.in_expr_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 5948 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 232:\n#line 2382 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE1;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.in_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n\n    }\n#line 5961 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 233:\n#line 2390 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->case_idx_ = CASE2;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.in_expr_t)->opt_not_ = (yyvsp[-2].opt_not_t);\n      (yyval.in_expr_t)->table_name_ = (yyvsp[0].table_name_t);\n\n    }\n#line 5974 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 234:\n#line 2401 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE0;\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n\n    }\n#line 5986 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 235:\n#line 2408 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE1;\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n\n    }\n#line 5997 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 236:\n#line 2414 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE2;\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-4].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n      (yyval.case_expr_t)->expr_2_ = (yyvsp[-1].expr_t);\n\n    }\n#line 6010 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 237:\n#line 2422 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->case_idx_ = CASE3;\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n      (yyval.case_expr_t)->expr_1_ = (yyvsp[-1].expr_t);\n\n    }\n#line 6022 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 238:\n#line 2432 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.between_expr_t) = new BetweenExpr();\n      (yyval.between_expr_t)->case_idx_ = CASE0;\n      (yyval.between_expr_t)->operand_1_ = (yyvsp[-4].operand_t);\n      (yyval.between_expr_t)->operand_2_ = (yyvsp[-2].operand_t);\n      (yyval.between_expr_t)->operand_3_ = (yyvsp[0].operand_t);\n\n    }\n#line 6035 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 239:\n#line 2440 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.between_expr_t) = new BetweenExpr();\n      (yyval.between_expr_t)->case_idx_ = CASE1;\n      (yyval.between_expr_t)->operand_1_ = (yyvsp[-5].operand_t);\n      (yyval.between_expr_t)->operand_2_ = (yyvsp[-2].operand_t);\n      (yyval.between_expr_t)->operand_3_ = (yyvsp[0].operand_t);\n\n    }\n#line 6048 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 240:\n#line 2451 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.exists_expr_t) = new ExistsExpr();\n      (yyval.exists_expr_t)->case_idx_ = CASE0;\n      (yyval.exists_expr_t)->opt_not_ = (yyvsp[-4].opt_not_t);\n      (yyval.exists_expr_t)->select_no_parens_ = (yyvsp[-1].select_no_parens_t);\n\n    }\n#line 6060 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 241:\n#line 2461 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t) = new CaseList();\n      (yyval.case_list_t)->case_idx_ = CASE0;\n      (yyval.case_list_t)->case_clause_ = (yyvsp[0].case_clause_t);\n\n    }\n#line 6071 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 242:\n#line 2467 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t) = new CaseList();\n      (yyval.case_list_t)->case_idx_ = CASE1;\n      (yyval.case_list_t)->case_clause_ = (yyvsp[-1].case_clause_t);\n      (yyval.case_list_t)->case_list_ = (yyvsp[0].case_list_t);\n\n    }\n#line 6083 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 243:\n#line 2477 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_clause_t) = new CaseClause();\n      (yyval.case_clause_t)->case_idx_ = CASE0;\n      (yyval.case_clause_t)->expr_1_ = (yyvsp[-2].expr_t);\n      (yyval.case_clause_t)->expr_2_ = (yyvsp[0].expr_t);\n\n    }\n#line 6095 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 244:\n#line 2487 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE0;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6107 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 245:\n#line 2494 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE1;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6119 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 246:\n#line 2501 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE2;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6131 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 247:\n#line 2508 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE3;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6143 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 248:\n#line 2515 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE4;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6155 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 249:\n#line 2522 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->case_idx_ = CASE5;\n      (yyval.comp_expr_t)->operand_1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand_2_ = (yyvsp[0].operand_t);\n\n    }\n#line 6167 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 250:\n#line 2532 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.extract_expr_t) = new ExtractExpr();\n      (yyval.extract_expr_t)->case_idx_ = CASE0;\n      (yyval.extract_expr_t)->datetime_field_ = (yyvsp[-3].datetime_field_t);\n      (yyval.extract_expr_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 6179 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 251:\n#line 2542 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE0;\n\n    }\n#line 6189 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 252:\n#line 2547 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE1;\n\n    }\n#line 6199 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 253:\n#line 2552 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE2;\n\n    }\n#line 6209 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 254:\n#line 2557 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE3;\n\n    }\n#line 6219 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 255:\n#line 2562 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE4;\n\n    }\n#line 6229 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 256:\n#line 2567 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->case_idx_ = CASE5;\n\n    }\n#line 6239 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 257:\n#line 2575 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.array_index_t) = new ArrayIndex();\n      (yyval.array_index_t)->case_idx_ = CASE0;\n      (yyval.array_index_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.array_index_t)->int_literal_ = (yyvsp[-1].int_literal_t);\n\n    }\n#line 6251 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 258:\n#line 2585 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE0;\n      (yyval.literal_t)->string_literal_ = (yyvsp[0].string_literal_t);\n\n    }\n#line 6262 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 259:\n#line 2591 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE1;\n      (yyval.literal_t)->bool_literal_ = (yyvsp[0].bool_literal_t);\n\n    }\n#line 6273 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 260:\n#line 2597 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = new Literal();\n      (yyval.literal_t)->case_idx_ = CASE2;\n      (yyval.literal_t)->num_literal_ = (yyvsp[0].num_literal_t);\n\n    }\n#line 6284 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 261:\n#line 2606 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.string_literal_t) = new StringLiteral();\n      (yyval.string_literal_t)->string_val_ = (yyvsp[0].sval);\n      free((yyvsp[0].sval));\n\n    }\n#line 6295 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 262:\n#line 2615 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->case_idx_ = CASE0;\n\n    }\n#line 6305 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 263:\n#line 2620 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->case_idx_ = CASE1;\n\n    }\n#line 6315 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 264:\n#line 2628 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->case_idx_ = CASE0;\n      (yyval.num_literal_t)->int_literal_ = (yyvsp[0].int_literal_t);\n\n    }\n#line 6326 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 265:\n#line 2634 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->case_idx_ = CASE1;\n      (yyval.num_literal_t)->float_literal_ = (yyvsp[0].float_literal_t);\n\n    }\n#line 6337 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 266:\n#line 2643 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.int_literal_t) = new IntLiteral();\n      (yyval.int_literal_t)->int_val_ = (yyvsp[0].ival);\n\n    }\n#line 6347 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 267:\n#line 2651 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.float_literal_t) = new FloatLiteral();\n      (yyval.float_literal_t)->float_val_ = (yyvsp[0].fval);\n\n    }\n#line 6357 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 268:\n#line 2659 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->case_idx_ = CASE0;\n\n    }\n#line 6367 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 269:\n#line 2664 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->case_idx_ = CASE1;\n\n    }\n#line 6377 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 270:\n#line 2672 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_not_exist_t) = new OptIfNotExist();\n      (yyval.opt_if_not_exist_t)->case_idx_ = CASE0;\n\n    }\n#line 6387 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 271:\n#line 2677 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_not_exist_t) = new OptIfNotExist();\n      (yyval.opt_if_not_exist_t)->case_idx_ = CASE1;\n\n    }\n#line 6397 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 272:\n#line 2685 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_exist_t) = new OptIfExist();\n      (yyval.opt_if_exist_t)->case_idx_ = CASE0;\n\n    }\n#line 6407 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 273:\n#line 2690 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_if_exist_t) = new OptIfExist();\n      (yyval.opt_if_exist_t)->case_idx_ = CASE1;\n\n    }\n#line 6417 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 274:\n#line 2698 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.identifier_t) = new Identifier();\n      (yyval.identifier_t)->string_val_ = (yyvsp[0].sval);\n      free((yyvsp[0].sval));\n\n    }\n#line 6428 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 275:\n#line 2707 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_name_t) = new TableName();\n      (yyval.table_name_t)->case_idx_ = CASE0;\n      (yyval.table_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.table_name_t)) {\n        auto tmp1 = (yyval.table_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataTableName;\n          tmp1->scope_ = 1;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 6448 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 276:\n#line 2725 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->case_idx_ = CASE0;\n      (yyval.column_name_t)->identifier_ = (yyvsp[0].identifier_t);\n      if ((yyval.column_name_t)) {\n        auto tmp1 = (yyval.column_name_t)->identifier_;\n        if (tmp1) {\n          tmp1->data_type_ = kDataColumnName;\n          tmp1->scope_ = 2;\n          tmp1->data_flag_ = (DATAFLAG)8;\n        }\n      }\n\n    }\n#line 6468 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 277:\n#line 2743 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_unique_t) = new OptUnique();\n      (yyval.opt_unique_t)->case_idx_ = CASE0;\n\n    }\n#line 6478 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 278:\n#line 2748 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_unique_t) = new OptUnique();\n      (yyval.opt_unique_t)->case_idx_ = CASE1;\n\n    }\n#line 6488 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 279:\n#line 2756 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.view_name_t) = new ViewName();\n      (yyval.view_name_t)->case_idx_ = CASE0;\n      (yyval.view_name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 6499 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 280:\n#line 2765 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE0;\n\n    }\n#line 6509 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 281:\n#line 2770 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE1;\n\n    }\n#line 6519 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 282:\n#line 2775 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE2;\n\n    }\n#line 6529 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 283:\n#line 2780 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE3;\n\n    }\n#line 6539 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 284:\n#line 2785 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_op_t) = new BinaryOp();\n      (yyval.binary_op_t)->case_idx_ = CASE4;\n\n    }\n#line 6549 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 285:\n#line 2793 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_t) = new OptNot();\n      (yyval.opt_not_t)->case_idx_ = CASE0;\n\n    }\n#line 6559 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 286:\n#line 2798 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_t) = new OptNot();\n      (yyval.opt_not_t)->case_idx_ = CASE1;\n\n    }\n#line 6569 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 287:\n#line 2806 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.name_t) = new Name();\n      (yyval.name_t)->case_idx_ = CASE0;\n      (yyval.name_t)->identifier_ = (yyvsp[0].identifier_t);\n\n    }\n#line 6580 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 288:\n#line 2815 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.type_name_t) = new TypeName();\n      (yyval.type_name_t)->case_idx_ = CASE0;\n      (yyval.type_name_t)->numeric_type_ = (yyvsp[0].numeric_type_t);\n\n    }\n#line 6591 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 289:\n#line 2821 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.type_name_t) = new TypeName();\n      (yyval.type_name_t)->case_idx_ = CASE1;\n      (yyval.type_name_t)->character_type_ = (yyvsp[0].character_type_t);\n\n    }\n#line 6602 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 290:\n#line 2830 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_type_t) = new CharacterType();\n      (yyval.character_type_t)->case_idx_ = CASE0;\n      (yyval.character_type_t)->character_with_length_ =\n          (yyvsp[0].character_with_length_t);\n\n    }\n#line 6613 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 291:\n#line 2836 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_type_t) = new CharacterType();\n      (yyval.character_type_t)->case_idx_ = CASE1;\n      (yyval.character_type_t)->character_without_length_ =\n          (yyvsp[0].character_without_length_t);\n\n    }\n#line 6624 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 292:\n#line 2845 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_with_length_t) = new CharacterWithLength();\n      (yyval.character_with_length_t)->case_idx_ = CASE0;\n      (yyval.character_with_length_t)->character_conflicta_ =\n          (yyvsp[-3].character_conflicta_t);\n      (yyval.character_with_length_t)->int_literal_ = (yyvsp[-1].int_literal_t);\n\n    }\n#line 6636 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 293:\n#line 2855 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_without_length_t) = new CharacterWithoutLength();\n      (yyval.character_without_length_t)->case_idx_ = CASE0;\n      (yyval.character_without_length_t)->character_conflicta_ =\n          (yyvsp[0].character_conflicta_t);\n\n    }\n#line 6647 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 294:\n#line 2864 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE0;\n      (yyval.character_conflicta_t)->opt_varying_ = (yyvsp[0].opt_varying_t);\n\n    }\n#line 6658 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 295:\n#line 2870 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE1;\n      (yyval.character_conflicta_t)->opt_varying_ = (yyvsp[0].opt_varying_t);\n\n    }\n#line 6669 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 296:\n#line 2876 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE2;\n\n    }\n#line 6679 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 297:\n#line 2881 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE3;\n\n    }\n#line 6689 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 298:\n#line 2886 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE4;\n      (yyval.character_conflicta_t)->opt_varying_ = (yyvsp[0].opt_varying_t);\n\n    }\n#line 6700 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 299:\n#line 2892 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE5;\n      (yyval.character_conflicta_t)->opt_varying_ = (yyvsp[0].opt_varying_t);\n\n    }\n#line 6711 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 300:\n#line 2898 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.character_conflicta_t) = new CharacterConflicta();\n      (yyval.character_conflicta_t)->case_idx_ = CASE6;\n      (yyval.character_conflicta_t)->opt_varying_ = (yyvsp[0].opt_varying_t);\n\n    }\n#line 6722 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 301:\n#line 2907 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_varying_t) = new OptVarying();\n      (yyval.opt_varying_t)->case_idx_ = CASE0;\n\n    }\n#line 6732 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 302:\n#line 2912 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_varying_t) = new OptVarying();\n      (yyval.opt_varying_t)->case_idx_ = CASE1;\n\n    }\n#line 6742 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 303:\n#line 2920 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE0;\n\n    }\n#line 6752 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 304:\n#line 2925 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE1;\n\n    }\n#line 6762 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 305:\n#line 2930 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE2;\n\n    }\n#line 6772 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 306:\n#line 2935 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE3;\n\n    }\n#line 6782 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 307:\n#line 2940 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE4;\n\n    }\n#line 6792 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 308:\n#line 2945 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE5;\n\n    }\n#line 6802 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 309:\n#line 2950 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE6;\n\n    }\n#line 6812 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 310:\n#line 2955 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE7;\n\n    }\n#line 6822 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 311:\n#line 2960 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE8;\n\n    }\n#line 6832 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 312:\n#line 2965 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE9;\n\n    }\n#line 6842 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 313:\n#line 2970 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.numeric_type_t) = new NumericType();\n      (yyval.numeric_type_t)->case_idx_ = CASE10;\n\n    }\n#line 6852 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 314:\n#line 2978 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_constraint_list_t) = new OptTableConstraintList();\n      (yyval.opt_table_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.opt_table_constraint_list_t)->table_constraint_list_ =\n          (yyvsp[0].table_constraint_list_t);\n\n    }\n#line 6863 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 315:\n#line 2984 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_table_constraint_list_t) = new OptTableConstraintList();\n      (yyval.opt_table_constraint_list_t)->case_idx_ = CASE1;\n\n    }\n#line 6873 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 316:\n#line 2992 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_list_t) = new TableConstraintList();\n      (yyval.table_constraint_list_t)->case_idx_ = CASE0;\n      (yyval.table_constraint_list_t)->table_constraint_ =\n          (yyvsp[0].table_constraint_t);\n\n    }\n#line 6884 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 317:\n#line 2998 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_list_t) = new TableConstraintList();\n      (yyval.table_constraint_list_t)->case_idx_ = CASE1;\n      (yyval.table_constraint_list_t)->table_constraint_ =\n          (yyvsp[-2].table_constraint_t);\n      (yyval.table_constraint_list_t)->table_constraint_list_ =\n          (yyvsp[0].table_constraint_list_t);\n\n    }\n#line 6896 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 318:\n#line 3008 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE0;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-5].constraint_name_t);\n      (yyval.table_constraint_t)->indexed_column_list_ =\n          (yyvsp[-1].indexed_column_list_t);\n\n    }\n#line 6908 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 319:\n#line 3015 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE1;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-4].constraint_name_t);\n      (yyval.table_constraint_t)->indexed_column_list_ =\n          (yyvsp[-1].indexed_column_list_t);\n\n    }\n#line 6920 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 320:\n#line 3022 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE2;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-4].constraint_name_t);\n      (yyval.table_constraint_t)->expr_ = (yyvsp[-1].expr_t);\n\n    }\n#line 6932 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 321:\n#line 3029 \"bison.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_constraint_t) = new TableConstraint();\n      (yyval.table_constraint_t)->case_idx_ = CASE3;\n      (yyval.table_constraint_t)->constraint_name_ =\n          (yyvsp[-6].constraint_name_t);\n      (yyval.table_constraint_t)->column_name_list_ =\n          (yyvsp[-2].column_name_list_t);\n      (yyval.table_constraint_t)->foreign_clause_ = (yyvsp[0].foreign_clause_t);\n      if ((yyval.table_constraint_t)) {\n        auto tmp1 = (yyval.table_constraint_t)->column_name_list_;\n        while (tmp1) {\n          auto tmp2 = tmp1->column_name_;\n          if (tmp2) {\n            auto tmp3 = tmp2->identifier_;\n            if (tmp3) {\n              tmp3->data_type_ = kDataColumnName;\n              tmp3->scope_ = 2;\n              tmp3->data_flag_ = (DATAFLAG)8;\n            }\n          }\n          tmp1 = tmp1->column_name_list_;\n        }\n      }\n\n    }\n#line 6961 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n#line 6965 \"bison_parser.cpp\" /* yacc.c:1652  */\n    default:\n      break;\n  }\n  /* User semantic actions sometimes alter yychar, and that requires\n     that yytoken be updated with the new translation.  We take the\n     approach of translating immediately before every use of yytoken.\n     One alternative is translating here after every semantic action,\n     but that translation would be missed if the semantic action invokes\n     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or\n     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an\n     incorrect destructor might then be invoked immediately.  In the\n     case of YYERROR or YYBACKUP, subsequent parser actions might lead\n     to an incorrect destructor call or verbose syntax error message\n     before the lookahead is translated.  */\n  YY_SYMBOL_PRINT(\"-> $$ =\", yyr1[yyn], &yyval, &yyloc);\n\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n\n  *++yyvsp = yyval;\n  *++yylsp = yyloc;\n\n  /* Now 'shift' the result of the reduction.  Determine what state\n     that goes to, based on the state we popped back to and the rule\n     number reduced by.  */\n  {\n    const int yylhs = yyr1[yyn] - YYNTOKENS;\n    const int yyi = yypgoto[yylhs] + *yyssp;\n    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp\n                   ? yytable[yyi]\n                   : yydefgoto[yylhs]);\n  }\n\n  goto yynewstate;\n\n/*--------------------------------------.\n| yyerrlab -- here on detecting error.  |\n`--------------------------------------*/\nyyerrlab:\n  /* Make sure we have latest lookahead translation.  See comments at\n     user semantic actions for why this is necessary.  */\n  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE(yychar);\n\n  /* If not already recovering from an error, report this error.  */\n  if (!yyerrstatus) {\n    ++yynerrs;\n#if !YYERROR_VERBOSE\n    yyerror(&yylloc, result, scanner, YY_(\"syntax error\"));\n#else\n#define YYSYNTAX_ERROR yysyntax_error(&yymsg_alloc, &yymsg, yyssp, yytoken)\n    {\n      char const *yymsgp = YY_(\"syntax error\");\n      int yysyntax_error_status;\n      yysyntax_error_status = YYSYNTAX_ERROR;\n      if (yysyntax_error_status == 0)\n        yymsgp = yymsg;\n      else if (yysyntax_error_status == 1) {\n        if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n        yymsg = (char *)YYSTACK_ALLOC(yymsg_alloc);\n        if (!yymsg) {\n          yymsg = yymsgbuf;\n          yymsg_alloc = sizeof yymsgbuf;\n          yysyntax_error_status = 2;\n        } else {\n          yysyntax_error_status = YYSYNTAX_ERROR;\n          yymsgp = yymsg;\n        }\n      }\n      yyerror(&yylloc, result, scanner, yymsgp);\n      if (yysyntax_error_status == 2) goto yyexhaustedlab;\n    }\n#undef YYSYNTAX_ERROR\n#endif\n  }\n\n  yyerror_range[1] = yylloc;\n\n  if (yyerrstatus == 3) {\n    /* If just tried and failed to reuse lookahead token after an\n       error, discard it.  */\n\n    if (yychar <= YYEOF) {\n      /* Return failure if at end of input.  */\n      if (yychar == YYEOF) YYABORT;\n    } else {\n      yydestruct(\"Error: discarding\", yytoken, &yylval, &yylloc, result,\n                 scanner);\n      yychar = YYEMPTY;\n    }\n  }\n\n  /* Else will try to reuse lookahead token after shifting the error\n     token.  */\n  goto yyerrlab1;\n\n/*---------------------------------------------------.\n| yyerrorlab -- error raised explicitly by YYERROR.  |\n`---------------------------------------------------*/\nyyerrorlab:\n  /* Pacify compilers when the user code never invokes YYERROR and the\n     label yyerrorlab therefore never appears in user code.  */\n  if (0) YYERROR;\n\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYERROR.  */\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n  yystate = *yyssp;\n  goto yyerrlab1;\n\n/*-------------------------------------------------------------.\n| yyerrlab1 -- common code for both syntax error and YYERROR.  |\n`-------------------------------------------------------------*/\nyyerrlab1:\n  yyerrstatus = 3; /* Each real token shifted decrements this.  */\n\n  for (;;) {\n    yyn = yypact[yystate];\n    if (!yypact_value_is_default(yyn)) {\n      yyn += YYTERROR;\n      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) {\n        yyn = yytable[yyn];\n        if (0 < yyn) break;\n      }\n    }\n\n    /* Pop the current state because it cannot handle the error token.  */\n    if (yyssp == yyss) YYABORT;\n\n    yyerror_range[1] = *yylsp;\n    yydestruct(\"Error: popping\", yystos[yystate], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n    yystate = *yyssp;\n    YY_STACK_PRINT(yyss, yyssp);\n  }\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n\n  yyerror_range[2] = yylloc;\n  /* Using YYLLOC is tempting, but would change the location of\n     the lookahead.  YYLOC is available though.  */\n  YYLLOC_DEFAULT(yyloc, yyerror_range, 2);\n  *++yylsp = yyloc;\n\n  /* Shift the error token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yystos[yyn], yyvsp, yylsp);\n\n  yystate = yyn;\n  goto yynewstate;\n\n/*-------------------------------------.\n| yyacceptlab -- YYACCEPT comes here.  |\n`-------------------------------------*/\nyyacceptlab:\n  yyresult = 0;\n  goto yyreturn;\n\n/*-----------------------------------.\n| yyabortlab -- YYABORT comes here.  |\n`-----------------------------------*/\nyyabortlab:\n  yyresult = 1;\n  goto yyreturn;\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n/*-------------------------------------------------.\n| yyexhaustedlab -- memory exhaustion comes here.  |\n`-------------------------------------------------*/\nyyexhaustedlab:\n  yyerror(&yylloc, result, scanner, YY_(\"memory exhausted\"));\n  yyresult = 2;\n  /* Fall through.  */\n#endif\n\n/*-----------------------------------------------------.\n| yyreturn -- parsing is finished, return the result.  |\n`-----------------------------------------------------*/\nyyreturn:\n  if (yychar != YYEMPTY) {\n    /* Make sure we have latest lookahead translation.  See comments at\n       user semantic actions for why this is necessary.  */\n    yytoken = YYTRANSLATE(yychar);\n    yydestruct(\"Cleanup: discarding lookahead\", yytoken, &yylval, &yylloc,\n               result, scanner);\n  }\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYABORT or YYACCEPT.  */\n  YYPOPSTACK(yylen);\n  YY_STACK_PRINT(yyss, yyssp);\n  while (yyssp != yyss) {\n    yydestruct(\"Cleanup: popping\", yystos[*yyssp], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n  }\n#ifndef yyoverflow\n  if (yyss != yyssa) YYSTACK_FREE(yyss);\n#endif\n#if YYERROR_VERBOSE\n  if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n#endif\n  return yyresult;\n}\n#line 3055 \"bison.y\" /* yacc.c:1918  */\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/bison_parser.h",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison interface for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n#ifndef YY_FF_BISON_PARSER_H_INCLUDED\n#define YY_FF_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef FF_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define FF_DEBUG 1\n#else\n#define FF_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define FF_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined FF_DEBUG */\n#if FF_DEBUG\nextern int ff_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 8 \"bison.y\" /* yacc.c:1921  */\n\n#include \"../include/ast.h\"\n#include \"parser_typedef.h\"\n\n#line 61 \"bison_parser.h\" /* yacc.c:1921  */\n\n/* Token type.  */\n#ifndef FF_TOKENTYPE\n#define FF_TOKENTYPE\nenum ff_tokentype {\n  SQL_OP_NOTEQUAL = 258,\n  SQL_SIMPLE = 259,\n  SQL_TEXT = 260,\n  SQL_OVER = 261,\n  SQL_BETWEEN = 262,\n  SQL_OP_SEMI = 263,\n  SQL_BIGINT = 264,\n  SQL_LIMIT = 265,\n  SQL_WITH = 266,\n  SQL_ORDER = 267,\n  SQL_LAST = 268,\n  SQL_UNBOUNDED = 269,\n  SQL_PRECEDING = 270,\n  SQL_EXCEPT = 271,\n  SQL_NUMERIC = 272,\n  SQL_OP_LESSTHAN = 273,\n  SQL_PROCEDURE = 274,\n  SQL_ACTION = 275,\n  SQL_FIRST = 276,\n  SQL_OP_GREATEREQ = 277,\n  SQL_CHECK = 278,\n  SQL_FULL = 279,\n  SQL_NATURAL = 280,\n  SQL_DOUBLE = 281,\n  SQL_NATIONAL = 282,\n  SQL_OP_ADD = 283,\n  SQL_CURRENT = 284,\n  SQL_TRIGGER = 285,\n  SQL_OP_SUB = 286,\n  SQL_FALSE = 287,\n  SQL_UNIQUE = 288,\n  SQL_WHERE = 289,\n  SQL_MINUTE = 290,\n  SQL_BEFORE = 291,\n  SQL_ON = 292,\n  SQL_PARTIAL = 293,\n  SQL_OF = 294,\n  SQL_AFTER = 295,\n  SQL_PRIMARY = 296,\n  SQL_MONTH = 297,\n  SQL_DEFERRED = 298,\n  SQL_OP_DOUBLE_DOLLAR = 299,\n  SQL_VARYING = 300,\n  SQL_OP_GREATERTHAN = 301,\n  SQL_OR = 302,\n  SQL_PLPGSQL = 303,\n  SQL_DELETE = 304,\n  SQL_INDEX = 305,\n  SQL_RETURN = 306,\n  SQL_OP_MUL = 307,\n  SQL_FOREIGN = 308,\n  SQL_RESTRICT = 309,\n  SQL_FOLLOWING = 310,\n  SQL_TIES = 311,\n  SQL_DEC = 312,\n  SQL_SELECT = 313,\n  SQL_BEGIN = 314,\n  SQL_LANGUAGE = 315,\n  SQL_DISTINCT = 316,\n  SQL_TRUE = 317,\n  SQL_BY = 318,\n  SQL_OP_MOD = 319,\n  SQL_VALUES = 320,\n  SQL_IS = 321,\n  SQL_ROW = 322,\n  SQL_FUNCTION = 323,\n  SQL_END = 324,\n  SQL_RECURSIVE = 325,\n  SQL_FOR = 326,\n  SQL_UNION = 327,\n  SQL_NULLS = 328,\n  SQL_UPDATE = 329,\n  SQL_ELSE = 330,\n  SQL_RANGE = 331,\n  SQL_OFFSET = 332,\n  SQL_INDEXED = 333,\n  SQL_INSTEAD = 334,\n  SQL_NCHAR = 335,\n  SQL_AND = 336,\n  SQL_REINDEX = 337,\n  SQL_INITIALLY = 338,\n  SQL_YEAR = 339,\n  SQL_PRECISION = 340,\n  SQL_FILTER = 341,\n  SQL_NOT = 342,\n  SQL_VIEW = 343,\n  SQL_DEFFERRABLE = 344,\n  SQL_REAL = 345,\n  SQL_THEN = 346,\n  SQL_OPTION = 347,\n  SQL_DEFAULT = 348,\n  SQL_GLOBAL = 349,\n  SQL_CROSS = 350,\n  SQL_CHAR = 351,\n  SQL_REFERENCES = 352,\n  SQL_OP_XOR = 353,\n  SQL_GROUP = 354,\n  SQL_CASE = 355,\n  SQL_SET = 356,\n  SQL_HOUR = 357,\n  SQL_NO = 358,\n  SQL_COLUMN = 359,\n  SQL_LOCAL = 360,\n  SQL_DROP = 361,\n  SQL_REPLACE = 362,\n  SQL_ASC = 363,\n  SQL_OP_COMMA = 364,\n  SQL_TABLE = 365,\n  SQL_ARRAY = 366,\n  SQL_IF = 367,\n  SQL_EXTRACT = 368,\n  SQL_LEFT = 369,\n  SQL_OUTER = 370,\n  SQL_DECIMAL = 371,\n  SQL_PARTITION = 372,\n  SQL_CASCADE = 373,\n  SQL_ADD = 374,\n  SQL_OTHERS = 375,\n  SQL_OP_LESSEQ = 376,\n  SQL_MATCH = 377,\n  SQL_ALL = 378,\n  SQL_ROWS = 379,\n  SQL_JOIN = 380,\n  SQL_LIKE = 381,\n  SQL_INTEGER = 382,\n  SQL_OP_RP = 383,\n  SQL_INT = 384,\n  SQL_BOOLEAN = 385,\n  SQL_KEY = 386,\n  SQL_EACH = 387,\n  SQL_USING = 388,\n  SQL_RENAME = 389,\n  SQL_DO = 390,\n  SQL_FLOAT = 391,\n  SQL_OP_LP = 392,\n  SQL_CHARACTER = 393,\n  SQL_UMINUS = 394,\n  SQL_CAST = 395,\n  SQL_GROUPS = 396,\n  SQL_NULL = 397,\n  SQL_SMALLINT = 398,\n  SQL_INSERT = 399,\n  SQL_TEMPORARY = 400,\n  SQL_CONSTRAINT = 401,\n  SQL_CREATE = 402,\n  SQL_OP_LBRACKET = 403,\n  SQL_WHEN = 404,\n  SQL_IMMEDIATE = 405,\n  SQL_TO = 406,\n  SQL_EXCLUDE = 407,\n  SQL_DAY = 408,\n  SQL_CONFLICT = 409,\n  SQL_OP_RBRACKET = 410,\n  SQL_EXECUTE = 411,\n  SQL_EXISTS = 412,\n  SQL_INTO = 413,\n  SQL_OP_DIVIDE = 414,\n  SQL_CASCADED = 415,\n  SQL_ISNULL = 416,\n  SQL_AS = 417,\n  SQL_INNER = 418,\n  SQL_INTERSECT = 419,\n  SQL_IN = 420,\n  SQL_OP_EQUAL = 421,\n  SQL_VARCHAR = 422,\n  SQL_ALTER = 423,\n  SQL_DESC = 424,\n  SQL_FROM = 425,\n  SQL_TEMP = 426,\n  SQL_UNLOGGED = 427,\n  SQL_SECOND = 428,\n  SQL_WINDOW = 429,\n  SQL_NOTHING = 430,\n  SQL_HAVING = 431,\n  SQL_INTLITERAL = 432,\n  SQL_STRINGLITERAL = 433,\n  SQL_FLOATLITERAL = 434,\n  SQL_IDENTIFIER = 435\n};\n#endif\n\n/* Value type.  */\n#if !defined FF_STYPE && !defined FF_STYPE_IS_DECLARED\n#line 30 \"bison.y\" /* yacc.c:1921  */\nunion FF_STYPE {\n#line 30 \"bison.y\" /* yacc.c:1921  */\n\n  long ival;\n  char* sval;\n  double fval;\n  Program* program_t;\n  Stmtlist* stmtlist_t;\n  Stmt* stmt_t;\n  CreateStmt* create_stmt_t;\n  DropStmt* drop_stmt_t;\n  AlterStmt* alter_stmt_t;\n  SelectStmt* select_stmt_t;\n  SelectWithParens* select_with_parens_t;\n  SelectNoParens* select_no_parens_t;\n  SelectClauseList* select_clause_list_t;\n  SelectClause* select_clause_t;\n  CombineClause* combine_clause_t;\n  OptFromClause* opt_from_clause_t;\n  SelectTarget* select_target_t;\n  OptWindowClause* opt_window_clause_t;\n  WindowClause* window_clause_t;\n  WindowDefList* window_def_list_t;\n  WindowDef* window_def_t;\n  WindowName* window_name_t;\n  Window* window_t;\n  OptPartition* opt_partition_t;\n  OptFrameClause* opt_frame_clause_t;\n  RangeOrRows* range_or_rows_t;\n  FrameBoundStart* frame_bound_start_t;\n  FrameBoundEnd* frame_bound_end_t;\n  FrameBound* frame_bound_t;\n  OptFrameExclude* opt_frame_exclude_t;\n  FrameExclude* frame_exclude_t;\n  OptExistWindowName* opt_exist_window_name_t;\n  OptGroupClause* opt_group_clause_t;\n  OptHavingClause* opt_having_clause_t;\n  OptWhereClause* opt_where_clause_t;\n  WhereClause* where_clause_t;\n  FromClause* from_clause_t;\n  TableRef* table_ref_t;\n  OptOnOrUsing* opt_on_or_using_t;\n  OnOrUsing* on_or_using_t;\n  ColumnNameList* column_name_list_t;\n  OptTablePrefix* opt_table_prefix_t;\n  JoinOp* join_op_t;\n  OptJoinType* opt_join_type_t;\n  ExprList* expr_list_t;\n  OptLimitClause* opt_limit_clause_t;\n  LimitClause* limit_clause_t;\n  OptOrderClause* opt_order_clause_t;\n  OptOrderNulls* opt_order_nulls_t;\n  OrderItemList* order_item_list_t;\n  OrderItem* order_item_t;\n  OptOrderBehavior* opt_order_behavior_t;\n  OptWithClause* opt_with_clause_t;\n  CteTableList* cte_table_list_t;\n  CteTable* cte_table_t;\n  CteTableName* cte_table_name_t;\n  OptAllOrDistinct* opt_all_or_distinct_t;\n  CreateTableStmt* create_table_stmt_t;\n  CreateIndexStmt* create_index_stmt_t;\n  CreateViewStmt* create_view_stmt_t;\n  DropIndexStmt* drop_index_stmt_t;\n  DropTableStmt* drop_table_stmt_t;\n  DropViewStmt* drop_view_stmt_t;\n  InsertStmt* insert_stmt_t;\n  InsertRest* insert_rest_t;\n  SuperValuesList* super_values_list_t;\n  ValuesList* values_list_t;\n  OptOnConflict* opt_on_conflict_t;\n  OptConflictExpr* opt_conflict_expr_t;\n  IndexedColumnList* indexed_column_list_t;\n  IndexedColumn* indexed_column_t;\n  UpdateStmt* update_stmt_t;\n  ReindexStmt* reindex_stmt_t;\n  AlterAction* alter_action_t;\n  ColumnDefList* column_def_list_t;\n  ColumnDef* column_def_t;\n  OptColumnConstraintList* opt_column_constraint_list_t;\n  ColumnConstraintList* column_constraint_list_t;\n  ColumnConstraint* column_constraint_t;\n  ConstraintType* constraint_type_t;\n  ForeignClause* foreign_clause_t;\n  OptForeignKeyActions* opt_foreign_key_actions_t;\n  ForeignKeyActions* foreign_key_actions_t;\n  KeyActions* key_actions_t;\n  OptConstraintAttributeSpec* opt_constraint_attribute_spec_t;\n  OptInitialTime* opt_initial_time_t;\n  ConstraintName* constraint_name_t;\n  OptTemp* opt_temp_t;\n  OptCheckOption* opt_check_option_t;\n  OptColumnNameListP* opt_column_name_list_p_t;\n  SetClauseList* set_clause_list_t;\n  SetClause* set_clause_t;\n  Expr* expr_t;\n  Operand* operand_t;\n  CastExpr* cast_expr_t;\n  ScalarExpr* scalar_expr_t;\n  UnaryExpr* unary_expr_t;\n  BinaryExpr* binary_expr_t;\n  LogicExpr* logic_expr_t;\n  InExpr* in_expr_t;\n  CaseExpr* case_expr_t;\n  BetweenExpr* between_expr_t;\n  ExistsExpr* exists_expr_t;\n  CaseList* case_list_t;\n  CaseClause* case_clause_t;\n  CompExpr* comp_expr_t;\n  ExtractExpr* extract_expr_t;\n  DatetimeField* datetime_field_t;\n  ArrayIndex* array_index_t;\n  Literal* literal_t;\n  StringLiteral* string_literal_t;\n  BoolLiteral* bool_literal_t;\n  NumLiteral* num_literal_t;\n  IntLiteral* int_literal_t;\n  FloatLiteral* float_literal_t;\n  OptColumn* opt_column_t;\n  OptIfNotExist* opt_if_not_exist_t;\n  OptIfExist* opt_if_exist_t;\n  Identifier* identifier_t;\n  TableName* table_name_t;\n  ColumnName* column_name_t;\n  OptUnique* opt_unique_t;\n  ViewName* view_name_t;\n  BinaryOp* binary_op_t;\n  OptNot* opt_not_t;\n  Name* name_t;\n  TypeName* type_name_t;\n  CharacterType* character_type_t;\n  CharacterWithLength* character_with_length_t;\n  CharacterWithoutLength* character_without_length_t;\n  CharacterConflicta* character_conflicta_t;\n  OptVarying* opt_varying_t;\n  NumericType* numeric_type_t;\n  OptTableConstraintList* opt_table_constraint_list_t;\n  TableConstraintList* table_constraint_list_t;\n  TableConstraint* table_constraint_t;\n\n#line 393 \"bison_parser.h\" /* yacc.c:1921  */\n};\n#line 30 \"bison.y\" /* yacc.c:1921  */\ntypedef union FF_STYPE FF_STYPE;\n#define FF_STYPE_IS_TRIVIAL 1\n#define FF_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined FF_LTYPE && !defined FF_LTYPE_IS_DECLARED\ntypedef struct FF_LTYPE FF_LTYPE;\nstruct FF_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define FF_LTYPE_IS_DECLARED 1\n#define FF_LTYPE_IS_TRIVIAL 1\n#endif\n\nint ff_parse(Program* result, yyscan_t scanner);\n\n#endif /* !YY_FF_BISON_PARSER_H_INCLUDED  */\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/bison_parser.output",
    "content": "Terminals unused in grammar\n\n   OVER\n   PROCEDURE\n   TRIGGER\n   BEFORE\n   OF\n   AFTER\n   OP_DOUBLE_DOLLAR\n   PLPGSQL\n   RETURN\n   BEGIN\n   LANGUAGE\n   FUNCTION\n   FOR\n   INDEXED\n   INSTEAD\n   FILTER\n   OP_XOR\n   ARRAY\n   EACH\n   EXECUTE\n\n\nState 502 conflicts: 1 shift/reduce\n\n\nGrammar\n\n    0 $accept: program $end\n\n    1 program: stmtlist\n\n    2 stmtlist: stmt OP_SEMI stmtlist\n    3         | stmt OP_SEMI\n\n    4 stmt: create_stmt\n    5     | drop_stmt\n    6     | select_stmt\n    7     | update_stmt\n    8     | insert_stmt\n    9     | alter_stmt\n   10     | reindex_stmt\n\n   11 create_stmt: create_table_stmt\n   12            | create_index_stmt\n   13            | create_view_stmt\n\n   14 drop_stmt: drop_index_stmt\n   15          | drop_table_stmt\n   16          | drop_view_stmt\n\n   17 alter_stmt: ALTER TABLE table_name alter_action\n\n   18 select_stmt: select_no_parens\n   19            | select_with_parens\n\n   20 select_with_parens: OP_LP select_no_parens OP_RP\n   21                   | OP_LP select_with_parens OP_RP\n\n   22 select_no_parens: opt_with_clause select_clause_list opt_order_clause opt_limit_clause\n\n   23 select_clause_list: select_clause\n   24                   | select_clause combine_clause select_clause_list\n\n   25 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n   26 combine_clause: UNION\n   27               | INTERSECT\n   28               | EXCEPT\n\n   29 opt_from_clause: from_clause\n   30                | %empty\n\n   31 select_target: expr_list\n\n   32 opt_window_clause: window_clause\n   33                  | %empty\n\n   34 window_clause: WINDOW window_def_list\n\n   35 window_def_list: window_def\n   36                | window_def OP_COMMA window_def_list\n\n   37 window_def: window_name AS OP_LP window OP_RP\n\n   38 window_name: identifier\n\n   39 window: opt_exist_window_name opt_partition opt_order_clause opt_frame_clause\n\n   40 opt_partition: PARTITION BY expr_list\n   41              | %empty\n\n   42 opt_frame_clause: range_or_rows frame_bound_start opt_frame_exclude\n   43                 | range_or_rows BETWEEN frame_bound_start AND frame_bound_end opt_frame_exclude\n   44                 | %empty\n\n   45 range_or_rows: RANGE\n   46              | ROWS\n   47              | GROUPS\n\n   48 frame_bound_start: frame_bound\n   49                  | UNBOUNDED PRECEDING\n\n   50 frame_bound_end: frame_bound\n   51                | UNBOUNDED FOLLOWING\n\n   52 frame_bound: expr PRECEDING\n   53            | expr FOLLOWING\n   54            | CURRENT ROW\n\n   55 opt_frame_exclude: EXCLUDE frame_exclude\n   56                  | %empty\n\n   57 frame_exclude: NO OTHERS\n   58              | CURRENT ROW\n   59              | GROUP\n   60              | TIES\n\n   61 opt_exist_window_name: identifier\n   62                      | %empty\n\n   63 opt_group_clause: GROUP BY expr_list opt_having_clause\n   64                 | %empty\n\n   65 opt_having_clause: HAVING expr\n   66                  | %empty\n\n   67 opt_where_clause: where_clause\n   68                 | %empty\n\n   69 where_clause: WHERE expr\n\n   70 from_clause: FROM table_ref\n\n   71 table_ref: opt_table_prefix table_name opt_on_or_using\n   72          | opt_table_prefix OP_LP select_no_parens OP_RP opt_on_or_using\n   73          | opt_table_prefix OP_LP table_ref OP_RP opt_on_or_using\n\n   74 opt_on_or_using: on_or_using\n   75                | %empty\n\n   76 on_or_using: ON expr\n   77            | USING OP_LP column_name_list OP_RP\n\n   78 column_name_list: column_name\n   79                 | column_name OP_COMMA column_name_list\n\n   80 opt_table_prefix: table_ref join_op\n   81                 | %empty\n\n   82 join_op: OP_COMMA\n   83        | JOIN\n   84        | NATURAL opt_join_type JOIN\n\n   85 opt_join_type: LEFT\n   86              | LEFT OUTER\n   87              | INNER\n   88              | CROSS\n   89              | %empty\n\n   90 expr_list: expr OP_COMMA expr_list\n   91          | expr\n\n   92 opt_limit_clause: limit_clause\n   93                 | %empty\n\n   94 limit_clause: LIMIT expr\n   95             | LIMIT expr OFFSET expr\n   96             | LIMIT expr OP_COMMA expr\n\n   97 opt_order_clause: ORDER BY order_item_list\n   98                 | %empty\n\n   99 opt_order_nulls: NULLS FIRST\n  100                | NULLS LAST\n  101                | %empty\n\n  102 order_item_list: order_item\n  103                | order_item OP_COMMA order_item_list\n\n  104 order_item: expr opt_order_behavior opt_order_nulls\n\n  105 opt_order_behavior: ASC\n  106                   | DESC\n  107                   | %empty\n\n  108 opt_with_clause: WITH cte_table_list\n  109                | WITH RECURSIVE cte_table_list\n  110                | %empty\n\n  111 cte_table_list: cte_table\n  112               | cte_table OP_COMMA cte_table_list\n\n  113 cte_table: cte_table_name AS OP_LP select_stmt OP_RP\n\n  114 cte_table_name: table_name opt_column_name_list_p\n\n  115 opt_all_or_distinct: ALL\n  116                    | DISTINCT\n  117                    | %empty\n\n  118 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name AS select_stmt\n  119                  | CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  122                 | CREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  123                 | CREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n  125 drop_index_stmt: DROP INDEX opt_if_exist table_name\n\n  126 drop_table_stmt: DROP TABLE opt_if_exist table_name\n\n  127 drop_view_stmt: DROP VIEW opt_if_exist view_name\n\n  128 insert_stmt: opt_with_clause INSERT INTO table_name insert_rest opt_on_conflict\n\n  129 insert_rest: opt_column_name_list_p select_no_parens\n  130            | opt_column_name_list_p DEFAULT VALUES\n  131            | opt_column_name_list_p VALUES super_values_list\n\n  132 super_values_list: values_list\n  133                  | values_list OP_COMMA super_values_list\n\n  134 values_list: OP_LP expr_list OP_RP\n\n  135 opt_on_conflict: ON CONFLICT opt_conflict_expr DO NOTHING\n  136                | ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause\n  137                | %empty\n\n  138 opt_conflict_expr: OP_LP indexed_column_list OP_RP where_clause\n  139                  | %empty\n\n  140 indexed_column_list: indexed_column\n  141                    | indexed_column OP_COMMA indexed_column_list\n\n  142 indexed_column: expr opt_order_behavior\n\n  143 update_stmt: opt_with_clause UPDATE table_name SET set_clause_list opt_where_clause\n\n  144 reindex_stmt: REINDEX TABLE table_name\n  145             | REINDEX INDEX table_name\n\n  146 alter_action: RENAME TO table_name\n  147             | RENAME opt_column column_name TO column_name\n  148             | ADD opt_column column_def\n\n  149 column_def_list: column_def\n  150                | column_def OP_COMMA column_def_list\n\n  151 column_def: identifier type_name opt_column_constraint_list\n\n  152 opt_column_constraint_list: column_constraint_list\n  153                           | %empty\n\n  154 column_constraint_list: column_constraint\n  155                       | column_constraint column_constraint_list\n\n  156 column_constraint: constraint_type\n\n  157 constraint_type: PRIMARY KEY\n  158                | NOT NULL\n  159                | UNIQUE\n  160                | CHECK OP_LP expr OP_RP\n  161                | foreign_clause\n\n  162 foreign_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n  163 opt_foreign_key_actions: foreign_key_actions\n  164                        | %empty\n\n  165 foreign_key_actions: MATCH FULL\n  166                    | MATCH PARTIAL\n  167                    | MATCH SIMPLE\n  168                    | ON UPDATE key_actions\n  169                    | ON DELETE key_actions\n\n  170 key_actions: SET NULL\n  171            | SET DEFAULT\n  172            | CASCADE\n  173            | RESTRICT\n  174            | NO ACTION\n\n  175 opt_constraint_attribute_spec: DEFFERRABLE opt_initial_time\n  176                              | NOT DEFFERRABLE opt_initial_time\n  177                              | %empty\n\n  178 opt_initial_time: INITIALLY DEFERRED\n  179                 | INITIALLY IMMEDIATE\n  180                 | %empty\n\n  181 constraint_name: CONSTRAINT name\n\n  182 opt_temp: TEMPORARY\n  183         | TEMP\n  184         | LOCAL TEMPORARY\n  185         | LOCAL TEMP\n  186         | GLOBAL TEMPORARY\n  187         | GLOBAL TEMP\n  188         | UNLOGGED\n  189         | %empty\n\n  190 opt_check_option: WITH CHECK OPTION\n  191                 | WITH CASCADED CHECK OPTION\n  192                 | WITH LOCAL CHECK OPTION\n  193                 | %empty\n\n  194 opt_column_name_list_p: OP_LP column_name_list OP_RP\n  195                       | %empty\n\n  196 set_clause_list: set_clause\n  197                | set_clause OP_COMMA set_clause_list\n\n  198 set_clause: column_name OP_EQUAL expr\n  199           | OP_LP column_name_list OP_RP OP_EQUAL expr\n\n  200 expr: operand\n  201     | between_expr\n  202     | exists_expr\n  203     | in_expr\n  204     | cast_expr\n  205     | logic_expr\n\n  206 operand: OP_LP expr_list OP_RP\n  207        | array_index\n  208        | scalar_expr\n  209        | unary_expr\n  210        | binary_expr\n  211        | case_expr\n  212        | extract_expr\n  213        | OP_LP select_no_parens OP_RP\n\n  214 cast_expr: CAST OP_LP expr AS type_name OP_RP\n\n  215 scalar_expr: column_name\n  216            | literal\n\n  217 unary_expr: OP_SUB operand\n  218           | NOT operand\n  219           | operand ISNULL\n  220           | operand IS NULL\n  221           | operand IS NOT NULL\n  222           | NULL\n  223           | OP_MUL\n\n  224 binary_expr: comp_expr\n  225            | operand binary_op operand\n  226            | operand LIKE operand\n  227            | operand NOT LIKE operand\n\n  228 logic_expr: expr AND expr\n  229           | expr OR expr\n\n  230 in_expr: operand opt_not IN OP_LP select_no_parens OP_RP\n  231        | operand opt_not IN OP_LP expr_list OP_RP\n  232        | operand opt_not IN table_name\n\n  233 case_expr: CASE expr case_list END\n  234          | CASE case_list END\n  235          | CASE expr case_list ELSE expr END\n  236          | CASE case_list ELSE expr END\n\n  237 between_expr: operand BETWEEN operand AND operand\n  238             | operand NOT BETWEEN operand AND operand\n\n  239 exists_expr: opt_not EXISTS OP_LP select_no_parens OP_RP\n\n  240 case_list: case_clause\n  241          | case_clause case_list\n\n  242 case_clause: WHEN expr THEN expr\n\n  243 comp_expr: operand OP_EQUAL operand\n  244          | operand OP_NOTEQUAL operand\n  245          | operand OP_GREATERTHAN operand\n  246          | operand OP_LESSTHAN operand\n  247          | operand OP_LESSEQ operand\n  248          | operand OP_GREATEREQ operand\n\n  249 extract_expr: EXTRACT OP_LP datetime_field FROM expr OP_RP\n\n  250 datetime_field: SECOND\n  251               | MINUTE\n  252               | HOUR\n  253               | DAY\n  254               | MONTH\n  255               | YEAR\n\n  256 array_index: operand OP_LBRACKET int_literal OP_RBRACKET\n\n  257 literal: string_literal\n  258        | bool_literal\n  259        | num_literal\n\n  260 string_literal: STRINGLITERAL\n\n  261 bool_literal: TRUE\n  262             | FALSE\n\n  263 num_literal: int_literal\n  264            | float_literal\n\n  265 int_literal: INTLITERAL\n\n  266 float_literal: FLOATLITERAL\n\n  267 opt_column: COLUMN\n  268           | %empty\n\n  269 opt_if_not_exist: IF NOT EXISTS\n  270                 | %empty\n\n  271 opt_if_exist: IF EXISTS\n  272             | %empty\n\n  273 identifier: IDENTIFIER\n\n  274 table_name: identifier\n\n  275 column_name: identifier\n\n  276 opt_unique: UNIQUE\n  277           | %empty\n\n  278 view_name: identifier\n\n  279 binary_op: OP_ADD\n  280          | OP_SUB\n  281          | OP_DIVIDE\n  282          | OP_MOD\n  283          | OP_MUL\n\n  284 opt_not: NOT\n  285        | %empty\n\n  286 name: identifier\n\n  287 type_name: numeric_type\n  288          | character_type\n\n  289 character_type: character_with_length\n  290               | character_without_length\n\n  291 character_with_length: character_conflicta OP_LP int_literal OP_RP\n\n  292 character_without_length: character_conflicta\n\n  293 character_conflicta: CHARACTER opt_varying\n  294                    | CHAR opt_varying\n  295                    | VARCHAR\n  296                    | TEXT\n  297                    | NATIONAL CHARACTER opt_varying\n  298                    | NATIONAL CHAR opt_varying\n  299                    | NCHAR opt_varying\n\n  300 opt_varying: VARYING\n  301            | %empty\n\n  302 numeric_type: INT\n  303             | INTEGER\n  304             | SMALLINT\n  305             | BIGINT\n  306             | REAL\n  307             | FLOAT\n  308             | DOUBLE PRECISION\n  309             | DECIMAL\n  310             | DEC\n  311             | NUMERIC\n  312             | BOOLEAN\n\n  313 opt_table_constraint_list: table_constraint_list\n  314                          | %empty\n\n  315 table_constraint_list: table_constraint\n  316                      | table_constraint OP_COMMA table_constraint_list\n\n  317 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP\n  318                 | constraint_name UNIQUE OP_LP indexed_column_list OP_RP\n  319                 | constraint_name CHECK OP_LP expr OP_RP\n  320                 | constraint_name FOREIGN KEY OP_LP column_name_list OP_RP foreign_clause\n\n\nTerminals, with rules where they appear\n\n$end (0) 0\nerror (256)\nOP_NOTEQUAL (258) 244\nSIMPLE (259) 167\nTEXT (260) 296\nOVER (261)\nBETWEEN (262) 43 237 238\nOP_SEMI (263) 2 3\nBIGINT (264) 305\nLIMIT (265) 94 95 96\nWITH (266) 108 109 190 191 192\nORDER (267) 97\nLAST (268) 100\nUNBOUNDED (269) 49 51\nPRECEDING (270) 49 52\nEXCEPT (271) 28\nNUMERIC (272) 311\nOP_LESSTHAN (273) 246\nPROCEDURE (274)\nACTION (275) 174\nFIRST (276) 99\nOP_GREATEREQ (277) 248\nCHECK (278) 160 190 191 192 319\nFULL (279) 165\nNATURAL (280) 84\nDOUBLE (281) 308\nNATIONAL (282) 297 298\nOP_ADD (283) 279\nCURRENT (284) 54 58\nTRIGGER (285)\nOP_SUB (286) 217 280\nFALSE (287) 262\nUNIQUE (288) 159 276 318\nWHERE (289) 69\nMINUTE (290) 251\nBEFORE (291)\nON (292) 76 120 135 136 168 169\nPARTIAL (293) 166\nOF (294)\nAFTER (295)\nPRIMARY (296) 157 317\nMONTH (297) 254\nDEFERRED (298) 178\nOP_DOUBLE_DOLLAR (299)\nVARYING (300) 300\nOP_GREATERTHAN (301) 245\nOR (302) 123 124 229\nPLPGSQL (303)\nDELETE (304) 169\nINDEX (305) 120 125 145\nRETURN (306)\nOP_MUL (307) 223 283\nFOREIGN (308) 320\nRESTRICT (309) 173\nFOLLOWING (310) 51 53\nTIES (311) 60\nDEC (312) 310\nSELECT (313) 25\nBEGIN (314)\nLANGUAGE (315)\nDISTINCT (316) 116\nTRUE (317) 261\nBY (318) 40 63 97\nOP_MOD (319) 282\nVALUES (320) 130 131\nIS (321) 220 221\nROW (322) 54 58\nFUNCTION (323)\nEND (324) 233 234 235 236\nRECURSIVE (325) 109 122 124\nFOR (326)\nUNION (327) 26\nNULLS (328) 99 100\nUPDATE (329) 136 143 168\nELSE (330) 235 236\nRANGE (331) 45\nOFFSET (332) 95\nINDEXED (333)\nINSTEAD (334)\nNCHAR (335) 299\nAND (336) 43 228 237 238\nREINDEX (337) 144 145\nINITIALLY (338) 178 179\nYEAR (339) 255\nPRECISION (340) 308\nFILTER (341)\nNOT (342) 158 176 218 221 227 238 269 284\nVIEW (343) 121 122 123 124 127\nDEFFERRABLE (344) 175 176\nREAL (345) 306\nTHEN (346) 242\nOPTION (347) 190 191 192\nDEFAULT (348) 130 171\nGLOBAL (349) 186 187\nCROSS (350) 88\nCHAR (351) 294 298\nREFERENCES (352) 162\nOP_XOR (353)\nGROUP (354) 59 63\nCASE (355) 233 234 235 236\nSET (356) 143 170 171\nHOUR (357) 252\nNO (358) 57 174\nCOLUMN (359) 267\nLOCAL (360) 184 185 192\nDROP (361) 125 126 127\nREPLACE (362) 123 124\nASC (363) 105\nOP_COMMA (364) 36 79 82 90 96 103 112 133 141 150 197 316\nTABLE (365) 17 118 119 126 144\nARRAY (366)\nIF (367) 269 271\nEXTRACT (368) 249\nLEFT (369) 85 86\nOUTER (370) 86\nDECIMAL (371) 309\nPARTITION (372) 40\nCASCADE (373) 172\nADD (374) 148\nOTHERS (375) 57\nOP_LESSEQ (376) 247\nMATCH (377) 165 166 167\nALL (378) 115\nROWS (379) 46\nJOIN (380) 83 84\nLIKE (381) 226 227\nINTEGER (382) 303\nOP_RP (383) 20 21 37 72 73 77 113 119 120 134 138 160 194 199 206 213\n    214 230 231 239 249 291 317 318 319 320\nINT (384) 302\nBOOLEAN (385) 312\nKEY (386) 157 317 320\nEACH (387)\nUSING (388) 77\nRENAME (389) 146 147\nDO (390) 135 136\nFLOAT (391) 307\nOP_LP (392) 20 21 37 72 73 77 113 119 120 134 138 160 194 199 206 213\n    214 230 231 239 249 291 317 318 319 320\nCHARACTER (393) 293 297\nUMINUS (394)\nCAST (395) 214\nGROUPS (396) 47\nNULL (397) 158 170 220 221 222\nSMALLINT (398) 304\nINSERT (399) 128\nTEMPORARY (400) 182 184 186\nCONSTRAINT (401) 181\nCREATE (402) 118 119 120 121 122 123 124\nOP_LBRACKET (403) 256\nWHEN (404) 242\nIMMEDIATE (405) 179\nTO (406) 146 147\nEXCLUDE (407) 55\nDAY (408) 253\nCONFLICT (409) 135 136\nOP_RBRACKET (410) 256\nEXECUTE (411)\nEXISTS (412) 239 269 271\nINTO (413) 128\nOP_DIVIDE (414) 281\nCASCADED (415) 191\nISNULL (416) 219\nAS (417) 37 113 118 121 122 123 124 214\nINNER (418) 87\nINTERSECT (419) 27\nIN (420) 230 231 232\nOP_EQUAL (421) 198 199 243\nVARCHAR (422) 295\nALTER (423) 17\nDESC (424) 106\nFROM (425) 70 249\nTEMP (426) 183 185 187\nUNLOGGED (427) 188\nSECOND (428) 250\nWINDOW (429) 34\nNOTHING (430) 135\nHAVING (431) 65\nINTLITERAL <ival> (432) 265\nSTRINGLITERAL <sval> (433) 260\nFLOATLITERAL <fval> (434) 266\nIDENTIFIER <sval> (435) 273\n\n\nNonterminals, with rules where they appear\n\n$accept (181)\n    on left: 0\nprogram <program_t> (182)\n    on left: 1, on right: 0\nstmtlist <stmtlist_t> (183)\n    on left: 2 3, on right: 1 2\nstmt <stmt_t> (184)\n    on left: 4 5 6 7 8 9 10, on right: 2 3\ncreate_stmt <create_stmt_t> (185)\n    on left: 11 12 13, on right: 4\ndrop_stmt <drop_stmt_t> (186)\n    on left: 14 15 16, on right: 5\nalter_stmt <alter_stmt_t> (187)\n    on left: 17, on right: 9\nselect_stmt <select_stmt_t> (188)\n    on left: 18 19, on right: 6 113 118 121 122 123 124\nselect_with_parens <select_with_parens_t> (189)\n    on left: 20 21, on right: 19 21\nselect_no_parens <select_no_parens_t> (190)\n    on left: 22, on right: 18 20 72 129 213 230 239\nselect_clause_list <select_clause_list_t> (191)\n    on left: 23 24, on right: 22 24\nselect_clause <select_clause_t> (192)\n    on left: 25, on right: 23 24\ncombine_clause <combine_clause_t> (193)\n    on left: 26 27 28, on right: 24\nopt_from_clause <opt_from_clause_t> (194)\n    on left: 29 30, on right: 25\nselect_target <select_target_t> (195)\n    on left: 31, on right: 25\nopt_window_clause <opt_window_clause_t> (196)\n    on left: 32 33, on right: 25\nwindow_clause <window_clause_t> (197)\n    on left: 34, on right: 32\nwindow_def_list <window_def_list_t> (198)\n    on left: 35 36, on right: 34 36\nwindow_def <window_def_t> (199)\n    on left: 37, on right: 35 36\nwindow_name <window_name_t> (200)\n    on left: 38, on right: 37\nwindow <window_t> (201)\n    on left: 39, on right: 37\nopt_partition <opt_partition_t> (202)\n    on left: 40 41, on right: 39\nopt_frame_clause <opt_frame_clause_t> (203)\n    on left: 42 43 44, on right: 39\nrange_or_rows <range_or_rows_t> (204)\n    on left: 45 46 47, on right: 42 43\nframe_bound_start <frame_bound_start_t> (205)\n    on left: 48 49, on right: 42 43\nframe_bound_end <frame_bound_end_t> (206)\n    on left: 50 51, on right: 43\nframe_bound <frame_bound_t> (207)\n    on left: 52 53 54, on right: 48 50\nopt_frame_exclude <opt_frame_exclude_t> (208)\n    on left: 55 56, on right: 42 43\nframe_exclude <frame_exclude_t> (209)\n    on left: 57 58 59 60, on right: 55\nopt_exist_window_name <opt_exist_window_name_t> (210)\n    on left: 61 62, on right: 39\nopt_group_clause <opt_group_clause_t> (211)\n    on left: 63 64, on right: 25\nopt_having_clause <opt_having_clause_t> (212)\n    on left: 65 66, on right: 63\nopt_where_clause <opt_where_clause_t> (213)\n    on left: 67 68, on right: 25 120 143\nwhere_clause <where_clause_t> (214)\n    on left: 69, on right: 67 136 138\nfrom_clause <from_clause_t> (215)\n    on left: 70, on right: 29\ntable_ref <table_ref_t> (216)\n    on left: 71 72 73, on right: 70 73 80\nopt_on_or_using <opt_on_or_using_t> (217)\n    on left: 74 75, on right: 71 72 73\non_or_using <on_or_using_t> (218)\n    on left: 76 77, on right: 74\ncolumn_name_list <column_name_list_t> (219)\n    on left: 78 79, on right: 77 79 194 199 320\nopt_table_prefix <opt_table_prefix_t> (220)\n    on left: 80 81, on right: 71 72 73\njoin_op <join_op_t> (221)\n    on left: 82 83 84, on right: 80\nopt_join_type <opt_join_type_t> (222)\n    on left: 85 86 87 88 89, on right: 84\nexpr_list <expr_list_t> (223)\n    on left: 90 91, on right: 31 40 63 90 134 206 231\nopt_limit_clause <opt_limit_clause_t> (224)\n    on left: 92 93, on right: 22\nlimit_clause <limit_clause_t> (225)\n    on left: 94 95 96, on right: 92\nopt_order_clause <opt_order_clause_t> (226)\n    on left: 97 98, on right: 22 39\nopt_order_nulls <opt_order_nulls_t> (227)\n    on left: 99 100 101, on right: 104\norder_item_list <order_item_list_t> (228)\n    on left: 102 103, on right: 97 103\norder_item <order_item_t> (229)\n    on left: 104, on right: 102 103\nopt_order_behavior <opt_order_behavior_t> (230)\n    on left: 105 106 107, on right: 104 142\nopt_with_clause <opt_with_clause_t> (231)\n    on left: 108 109 110, on right: 22 128 143\ncte_table_list <cte_table_list_t> (232)\n    on left: 111 112, on right: 108 109 112\ncte_table <cte_table_t> (233)\n    on left: 113, on right: 111 112\ncte_table_name <cte_table_name_t> (234)\n    on left: 114, on right: 113\nopt_all_or_distinct <opt_all_or_distinct_t> (235)\n    on left: 115 116 117, on right: 25\ncreate_table_stmt <create_table_stmt_t> (236)\n    on left: 118 119, on right: 11\ncreate_index_stmt <create_index_stmt_t> (237)\n    on left: 120, on right: 12\ncreate_view_stmt <create_view_stmt_t> (238)\n    on left: 121 122 123 124, on right: 13\ndrop_index_stmt <drop_index_stmt_t> (239)\n    on left: 125, on right: 14\ndrop_table_stmt <drop_table_stmt_t> (240)\n    on left: 126, on right: 15\ndrop_view_stmt <drop_view_stmt_t> (241)\n    on left: 127, on right: 16\ninsert_stmt <insert_stmt_t> (242)\n    on left: 128, on right: 8\ninsert_rest <insert_rest_t> (243)\n    on left: 129 130 131, on right: 128\nsuper_values_list <super_values_list_t> (244)\n    on left: 132 133, on right: 131 133\nvalues_list <values_list_t> (245)\n    on left: 134, on right: 132 133\nopt_on_conflict <opt_on_conflict_t> (246)\n    on left: 135 136 137, on right: 128\nopt_conflict_expr <opt_conflict_expr_t> (247)\n    on left: 138 139, on right: 135 136\nindexed_column_list <indexed_column_list_t> (248)\n    on left: 140 141, on right: 120 138 141 317 318\nindexed_column <indexed_column_t> (249)\n    on left: 142, on right: 140 141\nupdate_stmt <update_stmt_t> (250)\n    on left: 143, on right: 7\nreindex_stmt <reindex_stmt_t> (251)\n    on left: 144 145, on right: 10\nalter_action <alter_action_t> (252)\n    on left: 146 147 148, on right: 17\ncolumn_def_list <column_def_list_t> (253)\n    on left: 149 150, on right: 119 150\ncolumn_def <column_def_t> (254)\n    on left: 151, on right: 148 149 150\nopt_column_constraint_list <opt_column_constraint_list_t> (255)\n    on left: 152 153, on right: 151\ncolumn_constraint_list <column_constraint_list_t> (256)\n    on left: 154 155, on right: 152 155\ncolumn_constraint <column_constraint_t> (257)\n    on left: 156, on right: 154 155\nconstraint_type <constraint_type_t> (258)\n    on left: 157 158 159 160 161, on right: 156\nforeign_clause <foreign_clause_t> (259)\n    on left: 162, on right: 161 320\nopt_foreign_key_actions <opt_foreign_key_actions_t> (260)\n    on left: 163 164, on right: 162\nforeign_key_actions <foreign_key_actions_t> (261)\n    on left: 165 166 167 168 169, on right: 163\nkey_actions <key_actions_t> (262)\n    on left: 170 171 172 173 174, on right: 168 169\nopt_constraint_attribute_spec <opt_constraint_attribute_spec_t> (263)\n    on left: 175 176 177, on right: 162\nopt_initial_time <opt_initial_time_t> (264)\n    on left: 178 179 180, on right: 175 176\nconstraint_name <constraint_name_t> (265)\n    on left: 181, on right: 317 318 319 320\nopt_temp <opt_temp_t> (266)\n    on left: 182 183 184 185 186 187 188 189, on right: 118 119 121\n    122 123 124\nopt_check_option <opt_check_option_t> (267)\n    on left: 190 191 192 193, on right: 121 122 123 124\nopt_column_name_list_p <opt_column_name_list_p_t> (268)\n    on left: 194 195, on right: 114 121 122 123 124 129 130 131 162\nset_clause_list <set_clause_list_t> (269)\n    on left: 196 197, on right: 136 143 197\nset_clause <set_clause_t> (270)\n    on left: 198 199, on right: 196 197\nexpr <expr_t> (271)\n    on left: 200 201 202 203 204 205, on right: 52 53 65 69 76 90 91\n    94 95 96 104 142 160 198 199 214 228 229 233 235 236 242 249 319\noperand <operand_t> (272)\n    on left: 206 207 208 209 210 211 212 213, on right: 200 217 218\n    219 220 221 225 226 227 230 231 232 237 238 243 244 245 246 247\n    248 256\ncast_expr <cast_expr_t> (273)\n    on left: 214, on right: 204\nscalar_expr <scalar_expr_t> (274)\n    on left: 215 216, on right: 208\nunary_expr <unary_expr_t> (275)\n    on left: 217 218 219 220 221 222 223, on right: 209\nbinary_expr <binary_expr_t> (276)\n    on left: 224 225 226 227, on right: 210\nlogic_expr <logic_expr_t> (277)\n    on left: 228 229, on right: 205\nin_expr <in_expr_t> (278)\n    on left: 230 231 232, on right: 203\ncase_expr <case_expr_t> (279)\n    on left: 233 234 235 236, on right: 211\nbetween_expr <between_expr_t> (280)\n    on left: 237 238, on right: 201\nexists_expr <exists_expr_t> (281)\n    on left: 239, on right: 202\ncase_list <case_list_t> (282)\n    on left: 240 241, on right: 233 234 235 236 241\ncase_clause <case_clause_t> (283)\n    on left: 242, on right: 240 241\ncomp_expr <comp_expr_t> (284)\n    on left: 243 244 245 246 247 248, on right: 224\nextract_expr <extract_expr_t> (285)\n    on left: 249, on right: 212\ndatetime_field <datetime_field_t> (286)\n    on left: 250 251 252 253 254 255, on right: 249\narray_index <array_index_t> (287)\n    on left: 256, on right: 207\nliteral <literal_t> (288)\n    on left: 257 258 259, on right: 216\nstring_literal <string_literal_t> (289)\n    on left: 260, on right: 257\nbool_literal <bool_literal_t> (290)\n    on left: 261 262, on right: 258\nnum_literal <num_literal_t> (291)\n    on left: 263 264, on right: 259\nint_literal <int_literal_t> (292)\n    on left: 265, on right: 256 263 291\nfloat_literal <float_literal_t> (293)\n    on left: 266, on right: 264\nopt_column <opt_column_t> (294)\n    on left: 267 268, on right: 147 148\nopt_if_not_exist <opt_if_not_exist_t> (295)\n    on left: 269 270, on right: 118 119 120\nopt_if_exist <opt_if_exist_t> (296)\n    on left: 271 272, on right: 125 126 127\nidentifier <identifier_t> (297)\n    on left: 273, on right: 38 61 151 274 275 278 286\ntable_name <table_name_t> (298)\n    on left: 274, on right: 17 71 114 118 119 120 125 126 128 143 144\n    145 146 162 232\ncolumn_name <column_name_t> (299)\n    on left: 275, on right: 78 79 147 198 215\nopt_unique <opt_unique_t> (300)\n    on left: 276 277, on right: 120\nview_name <view_name_t> (301)\n    on left: 278, on right: 121 122 123 124 127\nbinary_op <binary_op_t> (302)\n    on left: 279 280 281 282 283, on right: 225\nopt_not <opt_not_t> (303)\n    on left: 284 285, on right: 230 231 232 239\nname <name_t> (304)\n    on left: 286, on right: 181\ntype_name <type_name_t> (305)\n    on left: 287 288, on right: 151 214\ncharacter_type <character_type_t> (306)\n    on left: 289 290, on right: 288\ncharacter_with_length <character_with_length_t> (307)\n    on left: 291, on right: 289\ncharacter_without_length <character_without_length_t> (308)\n    on left: 292, on right: 290\ncharacter_conflicta <character_conflicta_t> (309)\n    on left: 293 294 295 296 297 298 299, on right: 291 292\nopt_varying <opt_varying_t> (310)\n    on left: 300 301, on right: 293 294 297 298 299\nnumeric_type <numeric_type_t> (311)\n    on left: 302 303 304 305 306 307 308 309 310 311 312, on right:\n    287\nopt_table_constraint_list <opt_table_constraint_list_t> (312)\n    on left: 313 314, on right: 119\ntable_constraint_list <table_constraint_list_t> (313)\n    on left: 315 316, on right: 313 316\ntable_constraint <table_constraint_t> (314)\n    on left: 317 318 319 320, on right: 315 316\n\n\nState 0\n\n    0 $accept: . program $end\n\n    WITH     shift, and go to state 1\n    REINDEX  shift, and go to state 2\n    DROP     shift, and go to state 3\n    OP_LP    shift, and go to state 4\n    CREATE   shift, and go to state 5\n    ALTER    shift, and go to state 6\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    program             go to state 7\n    stmtlist            go to state 8\n    stmt                go to state 9\n    create_stmt         go to state 10\n    drop_stmt           go to state 11\n    alter_stmt          go to state 12\n    select_stmt         go to state 13\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 16\n    create_table_stmt   go to state 17\n    create_index_stmt   go to state 18\n    create_view_stmt    go to state 19\n    drop_index_stmt     go to state 20\n    drop_table_stmt     go to state 21\n    drop_view_stmt      go to state 22\n    insert_stmt         go to state 23\n    update_stmt         go to state 24\n    reindex_stmt        go to state 25\n\n\nState 1\n\n  108 opt_with_clause: WITH . cte_table_list\n  109                | WITH . RECURSIVE cte_table_list\n\n    RECURSIVE   shift, and go to state 26\n    IDENTIFIER  shift, and go to state 27\n\n    cte_table_list  go to state 28\n    cte_table       go to state 29\n    cte_table_name  go to state 30\n    identifier      go to state 31\n    table_name      go to state 32\n\n\nState 2\n\n  144 reindex_stmt: REINDEX . TABLE table_name\n  145             | REINDEX . INDEX table_name\n\n    INDEX  shift, and go to state 33\n    TABLE  shift, and go to state 34\n\n\nState 3\n\n  125 drop_index_stmt: DROP . INDEX opt_if_exist table_name\n  126 drop_table_stmt: DROP . TABLE opt_if_exist table_name\n  127 drop_view_stmt: DROP . VIEW opt_if_exist view_name\n\n    INDEX  shift, and go to state 35\n    VIEW   shift, and go to state 36\n    TABLE  shift, and go to state 37\n\n\nState 4\n\n   20 select_with_parens: OP_LP . select_no_parens OP_RP\n   21                   | OP_LP . select_with_parens OP_RP\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_with_parens  go to state 38\n    select_no_parens    go to state 39\n    opt_with_clause     go to state 40\n\n\nState 5\n\n  118 create_table_stmt: CREATE . opt_temp TABLE opt_if_not_exist table_name AS select_stmt\n  119                  | CREATE . opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP\n  120 create_index_stmt: CREATE . opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n  121 create_view_stmt: CREATE . opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  122                 | CREATE . opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  123                 | CREATE . OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE . OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    UNIQUE     shift, and go to state 41\n    OR         shift, and go to state 42\n    GLOBAL     shift, and go to state 43\n    LOCAL      shift, and go to state 44\n    TEMPORARY  shift, and go to state 45\n    TEMP       shift, and go to state 46\n    UNLOGGED   shift, and go to state 47\n\n    INDEX     reduce using rule 277 (opt_unique)\n    $default  reduce using rule 189 (opt_temp)\n\n    opt_temp    go to state 48\n    opt_unique  go to state 49\n\n\nState 6\n\n   17 alter_stmt: ALTER . TABLE table_name alter_action\n\n    TABLE  shift, and go to state 50\n\n\nState 7\n\n    0 $accept: program . $end\n\n    $end  shift, and go to state 51\n\n\nState 8\n\n    1 program: stmtlist .\n\n    $default  reduce using rule 1 (program)\n\n\nState 9\n\n    2 stmtlist: stmt . OP_SEMI stmtlist\n    3         | stmt . OP_SEMI\n\n    OP_SEMI  shift, and go to state 52\n\n\nState 10\n\n    4 stmt: create_stmt .\n\n    $default  reduce using rule 4 (stmt)\n\n\nState 11\n\n    5 stmt: drop_stmt .\n\n    $default  reduce using rule 5 (stmt)\n\n\nState 12\n\n    9 stmt: alter_stmt .\n\n    $default  reduce using rule 9 (stmt)\n\n\nState 13\n\n    6 stmt: select_stmt .\n\n    $default  reduce using rule 6 (stmt)\n\n\nState 14\n\n   19 select_stmt: select_with_parens .\n\n    $default  reduce using rule 19 (select_stmt)\n\n\nState 15\n\n   18 select_stmt: select_no_parens .\n\n    $default  reduce using rule 18 (select_stmt)\n\n\nState 16\n\n   22 select_no_parens: opt_with_clause . select_clause_list opt_order_clause opt_limit_clause\n  128 insert_stmt: opt_with_clause . INSERT INTO table_name insert_rest opt_on_conflict\n  143 update_stmt: opt_with_clause . UPDATE table_name SET set_clause_list opt_where_clause\n\n    SELECT  shift, and go to state 53\n    UPDATE  shift, and go to state 54\n    INSERT  shift, and go to state 55\n\n    select_clause_list  go to state 56\n    select_clause       go to state 57\n\n\nState 17\n\n   11 create_stmt: create_table_stmt .\n\n    $default  reduce using rule 11 (create_stmt)\n\n\nState 18\n\n   12 create_stmt: create_index_stmt .\n\n    $default  reduce using rule 12 (create_stmt)\n\n\nState 19\n\n   13 create_stmt: create_view_stmt .\n\n    $default  reduce using rule 13 (create_stmt)\n\n\nState 20\n\n   14 drop_stmt: drop_index_stmt .\n\n    $default  reduce using rule 14 (drop_stmt)\n\n\nState 21\n\n   15 drop_stmt: drop_table_stmt .\n\n    $default  reduce using rule 15 (drop_stmt)\n\n\nState 22\n\n   16 drop_stmt: drop_view_stmt .\n\n    $default  reduce using rule 16 (drop_stmt)\n\n\nState 23\n\n    8 stmt: insert_stmt .\n\n    $default  reduce using rule 8 (stmt)\n\n\nState 24\n\n    7 stmt: update_stmt .\n\n    $default  reduce using rule 7 (stmt)\n\n\nState 25\n\n   10 stmt: reindex_stmt .\n\n    $default  reduce using rule 10 (stmt)\n\n\nState 26\n\n  109 opt_with_clause: WITH RECURSIVE . cte_table_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    cte_table_list  go to state 58\n    cte_table       go to state 29\n    cte_table_name  go to state 30\n    identifier      go to state 31\n    table_name      go to state 32\n\n\nState 27\n\n  273 identifier: IDENTIFIER .\n\n    $default  reduce using rule 273 (identifier)\n\n\nState 28\n\n  108 opt_with_clause: WITH cte_table_list .\n\n    $default  reduce using rule 108 (opt_with_clause)\n\n\nState 29\n\n  111 cte_table_list: cte_table .\n  112               | cte_table . OP_COMMA cte_table_list\n\n    OP_COMMA  shift, and go to state 59\n\n    $default  reduce using rule 111 (cte_table_list)\n\n\nState 30\n\n  113 cte_table: cte_table_name . AS OP_LP select_stmt OP_RP\n\n    AS  shift, and go to state 60\n\n\nState 31\n\n  274 table_name: identifier .\n\n    $default  reduce using rule 274 (table_name)\n\n\nState 32\n\n  114 cte_table_name: table_name . opt_column_name_list_p\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 62\n\n\nState 33\n\n  145 reindex_stmt: REINDEX INDEX . table_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 63\n\n\nState 34\n\n  144 reindex_stmt: REINDEX TABLE . table_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 64\n\n\nState 35\n\n  125 drop_index_stmt: DROP INDEX . opt_if_exist table_name\n\n    IF  shift, and go to state 65\n\n    $default  reduce using rule 272 (opt_if_exist)\n\n    opt_if_exist  go to state 66\n\n\nState 36\n\n  127 drop_view_stmt: DROP VIEW . opt_if_exist view_name\n\n    IF  shift, and go to state 65\n\n    $default  reduce using rule 272 (opt_if_exist)\n\n    opt_if_exist  go to state 67\n\n\nState 37\n\n  126 drop_table_stmt: DROP TABLE . opt_if_exist table_name\n\n    IF  shift, and go to state 65\n\n    $default  reduce using rule 272 (opt_if_exist)\n\n    opt_if_exist  go to state 68\n\n\nState 38\n\n   21 select_with_parens: OP_LP select_with_parens . OP_RP\n\n    OP_RP  shift, and go to state 69\n\n\nState 39\n\n   20 select_with_parens: OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 70\n\n\nState 40\n\n   22 select_no_parens: opt_with_clause . select_clause_list opt_order_clause opt_limit_clause\n\n    SELECT  shift, and go to state 53\n\n    select_clause_list  go to state 56\n    select_clause       go to state 57\n\n\nState 41\n\n  276 opt_unique: UNIQUE .\n\n    $default  reduce using rule 276 (opt_unique)\n\n\nState 42\n\n  123 create_view_stmt: CREATE OR . REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE OR . REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    REPLACE  shift, and go to state 71\n\n\nState 43\n\n  186 opt_temp: GLOBAL . TEMPORARY\n  187         | GLOBAL . TEMP\n\n    TEMPORARY  shift, and go to state 72\n    TEMP       shift, and go to state 73\n\n\nState 44\n\n  184 opt_temp: LOCAL . TEMPORARY\n  185         | LOCAL . TEMP\n\n    TEMPORARY  shift, and go to state 74\n    TEMP       shift, and go to state 75\n\n\nState 45\n\n  182 opt_temp: TEMPORARY .\n\n    $default  reduce using rule 182 (opt_temp)\n\n\nState 46\n\n  183 opt_temp: TEMP .\n\n    $default  reduce using rule 183 (opt_temp)\n\n\nState 47\n\n  188 opt_temp: UNLOGGED .\n\n    $default  reduce using rule 188 (opt_temp)\n\n\nState 48\n\n  118 create_table_stmt: CREATE opt_temp . TABLE opt_if_not_exist table_name AS select_stmt\n  119                  | CREATE opt_temp . TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP\n  121 create_view_stmt: CREATE opt_temp . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  122                 | CREATE opt_temp . RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    RECURSIVE  shift, and go to state 76\n    VIEW       shift, and go to state 77\n    TABLE      shift, and go to state 78\n\n\nState 49\n\n  120 create_index_stmt: CREATE opt_unique . INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n    INDEX  shift, and go to state 79\n\n\nState 50\n\n   17 alter_stmt: ALTER TABLE . table_name alter_action\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 80\n\n\nState 51\n\n    0 $accept: program $end .\n\n    $default  accept\n\n\nState 52\n\n    2 stmtlist: stmt OP_SEMI . stmtlist\n    3         | stmt OP_SEMI .\n\n    WITH     shift, and go to state 1\n    REINDEX  shift, and go to state 2\n    DROP     shift, and go to state 3\n    OP_LP    shift, and go to state 4\n    CREATE   shift, and go to state 5\n    ALTER    shift, and go to state 6\n\n    $end      reduce using rule 3 (stmtlist)\n    $default  reduce using rule 110 (opt_with_clause)\n\n    stmtlist            go to state 81\n    stmt                go to state 9\n    create_stmt         go to state 10\n    drop_stmt           go to state 11\n    alter_stmt          go to state 12\n    select_stmt         go to state 13\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 16\n    create_table_stmt   go to state 17\n    create_index_stmt   go to state 18\n    create_view_stmt    go to state 19\n    drop_index_stmt     go to state 20\n    drop_table_stmt     go to state 21\n    drop_view_stmt      go to state 22\n    insert_stmt         go to state 23\n    update_stmt         go to state 24\n    reindex_stmt        go to state 25\n\n\nState 53\n\n   25 select_clause: SELECT . opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    DISTINCT  shift, and go to state 82\n    ALL       shift, and go to state 83\n\n    $default  reduce using rule 117 (opt_all_or_distinct)\n\n    opt_all_or_distinct  go to state 84\n\n\nState 54\n\n  143 update_stmt: opt_with_clause UPDATE . table_name SET set_clause_list opt_where_clause\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 85\n\n\nState 55\n\n  128 insert_stmt: opt_with_clause INSERT . INTO table_name insert_rest opt_on_conflict\n\n    INTO  shift, and go to state 86\n\n\nState 56\n\n   22 select_no_parens: opt_with_clause select_clause_list . opt_order_clause opt_limit_clause\n\n    ORDER  shift, and go to state 87\n\n    $default  reduce using rule 98 (opt_order_clause)\n\n    opt_order_clause  go to state 88\n\n\nState 57\n\n   23 select_clause_list: select_clause .\n   24                   | select_clause . combine_clause select_clause_list\n\n    EXCEPT     shift, and go to state 89\n    UNION      shift, and go to state 90\n    INTERSECT  shift, and go to state 91\n\n    $default  reduce using rule 23 (select_clause_list)\n\n    combine_clause  go to state 92\n\n\nState 58\n\n  109 opt_with_clause: WITH RECURSIVE cte_table_list .\n\n    $default  reduce using rule 109 (opt_with_clause)\n\n\nState 59\n\n  112 cte_table_list: cte_table OP_COMMA . cte_table_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    cte_table_list  go to state 93\n    cte_table       go to state 29\n    cte_table_name  go to state 30\n    identifier      go to state 31\n    table_name      go to state 32\n\n\nState 60\n\n  113 cte_table: cte_table_name AS . OP_LP select_stmt OP_RP\n\n    OP_LP  shift, and go to state 94\n\n\nState 61\n\n  194 opt_column_name_list_p: OP_LP . column_name_list OP_RP\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_name_list  go to state 95\n    identifier        go to state 96\n    column_name       go to state 97\n\n\nState 62\n\n  114 cte_table_name: table_name opt_column_name_list_p .\n\n    $default  reduce using rule 114 (cte_table_name)\n\n\nState 63\n\n  145 reindex_stmt: REINDEX INDEX table_name .\n\n    $default  reduce using rule 145 (reindex_stmt)\n\n\nState 64\n\n  144 reindex_stmt: REINDEX TABLE table_name .\n\n    $default  reduce using rule 144 (reindex_stmt)\n\n\nState 65\n\n  271 opt_if_exist: IF . EXISTS\n\n    EXISTS  shift, and go to state 98\n\n\nState 66\n\n  125 drop_index_stmt: DROP INDEX opt_if_exist . table_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 99\n\n\nState 67\n\n  127 drop_view_stmt: DROP VIEW opt_if_exist . view_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 100\n    view_name   go to state 101\n\n\nState 68\n\n  126 drop_table_stmt: DROP TABLE opt_if_exist . table_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 102\n\n\nState 69\n\n   21 select_with_parens: OP_LP select_with_parens OP_RP .\n\n    $default  reduce using rule 21 (select_with_parens)\n\n\nState 70\n\n   20 select_with_parens: OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 20 (select_with_parens)\n\n\nState 71\n\n  123 create_view_stmt: CREATE OR REPLACE . opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE OR REPLACE . opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    GLOBAL     shift, and go to state 43\n    LOCAL      shift, and go to state 44\n    TEMPORARY  shift, and go to state 45\n    TEMP       shift, and go to state 46\n    UNLOGGED   shift, and go to state 47\n\n    $default  reduce using rule 189 (opt_temp)\n\n    opt_temp  go to state 103\n\n\nState 72\n\n  186 opt_temp: GLOBAL TEMPORARY .\n\n    $default  reduce using rule 186 (opt_temp)\n\n\nState 73\n\n  187 opt_temp: GLOBAL TEMP .\n\n    $default  reduce using rule 187 (opt_temp)\n\n\nState 74\n\n  184 opt_temp: LOCAL TEMPORARY .\n\n    $default  reduce using rule 184 (opt_temp)\n\n\nState 75\n\n  185 opt_temp: LOCAL TEMP .\n\n    $default  reduce using rule 185 (opt_temp)\n\n\nState 76\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    VIEW  shift, and go to state 104\n\n\nState 77\n\n  121 create_view_stmt: CREATE opt_temp VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 100\n    view_name   go to state 105\n\n\nState 78\n\n  118 create_table_stmt: CREATE opt_temp TABLE . opt_if_not_exist table_name AS select_stmt\n  119                  | CREATE opt_temp TABLE . opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP\n\n    IF  shift, and go to state 106\n\n    $default  reduce using rule 270 (opt_if_not_exist)\n\n    opt_if_not_exist  go to state 107\n\n\nState 79\n\n  120 create_index_stmt: CREATE opt_unique INDEX . opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n    IF  shift, and go to state 106\n\n    $default  reduce using rule 270 (opt_if_not_exist)\n\n    opt_if_not_exist  go to state 108\n\n\nState 80\n\n   17 alter_stmt: ALTER TABLE table_name . alter_action\n\n    ADD     shift, and go to state 109\n    RENAME  shift, and go to state 110\n\n    alter_action  go to state 111\n\n\nState 81\n\n    2 stmtlist: stmt OP_SEMI stmtlist .\n\n    $default  reduce using rule 2 (stmtlist)\n\n\nState 82\n\n  116 opt_all_or_distinct: DISTINCT .\n\n    $default  reduce using rule 116 (opt_all_or_distinct)\n\n\nState 83\n\n  115 opt_all_or_distinct: ALL .\n\n    $default  reduce using rule 115 (opt_all_or_distinct)\n\n\nState 84\n\n   25 select_clause: SELECT opt_all_or_distinct . select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    select_target   go to state 125\n    expr_list       go to state 126\n    expr            go to state 127\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 85\n\n  143 update_stmt: opt_with_clause UPDATE table_name . SET set_clause_list opt_where_clause\n\n    SET  shift, and go to state 149\n\n\nState 86\n\n  128 insert_stmt: opt_with_clause INSERT INTO . table_name insert_rest opt_on_conflict\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 150\n\n\nState 87\n\n   97 opt_order_clause: ORDER . BY order_item_list\n\n    BY  shift, and go to state 151\n\n\nState 88\n\n   22 select_no_parens: opt_with_clause select_clause_list opt_order_clause . opt_limit_clause\n\n    LIMIT  shift, and go to state 152\n\n    $default  reduce using rule 93 (opt_limit_clause)\n\n    opt_limit_clause  go to state 153\n    limit_clause      go to state 154\n\n\nState 89\n\n   28 combine_clause: EXCEPT .\n\n    $default  reduce using rule 28 (combine_clause)\n\n\nState 90\n\n   26 combine_clause: UNION .\n\n    $default  reduce using rule 26 (combine_clause)\n\n\nState 91\n\n   27 combine_clause: INTERSECT .\n\n    $default  reduce using rule 27 (combine_clause)\n\n\nState 92\n\n   24 select_clause_list: select_clause combine_clause . select_clause_list\n\n    SELECT  shift, and go to state 53\n\n    select_clause_list  go to state 155\n    select_clause       go to state 57\n\n\nState 93\n\n  112 cte_table_list: cte_table OP_COMMA cte_table_list .\n\n    $default  reduce using rule 112 (cte_table_list)\n\n\nState 94\n\n  113 cte_table: cte_table_name AS OP_LP . select_stmt OP_RP\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 156\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 95\n\n  194 opt_column_name_list_p: OP_LP column_name_list . OP_RP\n\n    OP_RP  shift, and go to state 157\n\n\nState 96\n\n  275 column_name: identifier .\n\n    $default  reduce using rule 275 (column_name)\n\n\nState 97\n\n   78 column_name_list: column_name .\n   79                 | column_name . OP_COMMA column_name_list\n\n    OP_COMMA  shift, and go to state 158\n\n    $default  reduce using rule 78 (column_name_list)\n\n\nState 98\n\n  271 opt_if_exist: IF EXISTS .\n\n    $default  reduce using rule 271 (opt_if_exist)\n\n\nState 99\n\n  125 drop_index_stmt: DROP INDEX opt_if_exist table_name .\n\n    $default  reduce using rule 125 (drop_index_stmt)\n\n\nState 100\n\n  278 view_name: identifier .\n\n    $default  reduce using rule 278 (view_name)\n\n\nState 101\n\n  127 drop_view_stmt: DROP VIEW opt_if_exist view_name .\n\n    $default  reduce using rule 127 (drop_view_stmt)\n\n\nState 102\n\n  126 drop_table_stmt: DROP TABLE opt_if_exist table_name .\n\n    $default  reduce using rule 126 (drop_table_stmt)\n\n\nState 103\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n  124                 | CREATE OR REPLACE opt_temp . RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    RECURSIVE  shift, and go to state 159\n    VIEW       shift, and go to state 160\n\n\nState 104\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 100\n    view_name   go to state 161\n\n\nState 105\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 162\n\n\nState 106\n\n  269 opt_if_not_exist: IF . NOT EXISTS\n\n    NOT  shift, and go to state 163\n\n\nState 107\n\n  118 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist . table_name AS select_stmt\n  119                  | CREATE opt_temp TABLE opt_if_not_exist . table_name OP_LP column_def_list opt_table_constraint_list OP_RP\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 164\n\n\nState 108\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist . table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 165\n\n\nState 109\n\n  148 alter_action: ADD . opt_column column_def\n\n    COLUMN  shift, and go to state 166\n\n    $default  reduce using rule 268 (opt_column)\n\n    opt_column  go to state 167\n\n\nState 110\n\n  146 alter_action: RENAME . TO table_name\n  147             | RENAME . opt_column column_name TO column_name\n\n    COLUMN  shift, and go to state 166\n    TO      shift, and go to state 168\n\n    $default  reduce using rule 268 (opt_column)\n\n    opt_column  go to state 169\n\n\nState 111\n\n   17 alter_stmt: ALTER TABLE table_name alter_action .\n\n    $default  reduce using rule 17 (alter_stmt)\n\n\nState 112\n\n  217 unary_expr: OP_SUB . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 171\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 113\n\n  262 bool_literal: FALSE .\n\n    $default  reduce using rule 262 (bool_literal)\n\n\nState 114\n\n  223 unary_expr: OP_MUL .\n\n    $default  reduce using rule 223 (unary_expr)\n\n\nState 115\n\n  261 bool_literal: TRUE .\n\n    $default  reduce using rule 261 (bool_literal)\n\n\nState 116\n\n  218 unary_expr: NOT . operand\n  284 opt_not: NOT .\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 284 (opt_not)\n\n    operand         go to state 172\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 117\n\n  233 case_expr: CASE . expr case_list END\n  234          | CASE . case_list END\n  235          | CASE . expr case_list ELSE expr END\n  236          | CASE . case_list ELSE expr END\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    WHEN           shift, and go to state 173\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 174\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    case_list       go to state 175\n    case_clause     go to state 176\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 118\n\n  249 extract_expr: EXTRACT . OP_LP datetime_field FROM expr OP_RP\n\n    OP_LP  shift, and go to state 177\n\n\nState 119\n\n  206 operand: OP_LP . expr_list OP_RP\n  213        | OP_LP . select_no_parens OP_RP\n\n    WITH           shift, and go to state 1\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    EXISTS    reduce using rule 285 (opt_not)\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_no_parens  go to state 178\n    expr_list         go to state 179\n    opt_with_clause   go to state 40\n    expr              go to state 127\n    operand           go to state 128\n    cast_expr         go to state 129\n    scalar_expr       go to state 130\n    unary_expr        go to state 131\n    binary_expr       go to state 132\n    logic_expr        go to state 133\n    in_expr           go to state 134\n    case_expr         go to state 135\n    between_expr      go to state 136\n    exists_expr       go to state 137\n    comp_expr         go to state 138\n    extract_expr      go to state 139\n    array_index       go to state 140\n    literal           go to state 141\n    string_literal    go to state 142\n    bool_literal      go to state 143\n    num_literal       go to state 144\n    int_literal       go to state 145\n    float_literal     go to state 146\n    identifier        go to state 96\n    column_name       go to state 147\n    opt_not           go to state 148\n\n\nState 120\n\n  214 cast_expr: CAST . OP_LP expr AS type_name OP_RP\n\n    OP_LP  shift, and go to state 180\n\n\nState 121\n\n  222 unary_expr: NULL .\n\n    $default  reduce using rule 222 (unary_expr)\n\n\nState 122\n\n  265 int_literal: INTLITERAL .\n\n    $default  reduce using rule 265 (int_literal)\n\n\nState 123\n\n  260 string_literal: STRINGLITERAL .\n\n    $default  reduce using rule 260 (string_literal)\n\n\nState 124\n\n  266 float_literal: FLOATLITERAL .\n\n    $default  reduce using rule 266 (float_literal)\n\n\nState 125\n\n   25 select_clause: SELECT opt_all_or_distinct select_target . opt_from_clause opt_where_clause opt_group_clause opt_window_clause\n\n    FROM  shift, and go to state 181\n\n    $default  reduce using rule 30 (opt_from_clause)\n\n    opt_from_clause  go to state 182\n    from_clause      go to state 183\n\n\nState 126\n\n   31 select_target: expr_list .\n\n    $default  reduce using rule 31 (select_target)\n\n\nState 127\n\n   90 expr_list: expr . OP_COMMA expr_list\n   91          | expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR        shift, and go to state 184\n    AND       shift, and go to state 185\n    OP_COMMA  shift, and go to state 186\n\n    $default  reduce using rule 91 (expr_list)\n\n\nState 128\n\n  200 expr: operand .\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  230 in_expr: operand . opt_not IN OP_LP select_no_parens OP_RP\n  231        | operand . opt_not IN OP_LP expr_list OP_RP\n  232        | operand . opt_not IN table_name\n  237 between_expr: operand . BETWEEN operand AND operand\n  238             | operand . NOT BETWEEN operand AND operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    BETWEEN         shift, and go to state 188\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    NOT             shift, and go to state 197\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    IN        reduce using rule 285 (opt_not)\n    $default  reduce using rule 200 (expr)\n\n    binary_op  go to state 204\n    opt_not    go to state 205\n\n\nState 129\n\n  204 expr: cast_expr .\n\n    $default  reduce using rule 204 (expr)\n\n\nState 130\n\n  208 operand: scalar_expr .\n\n    $default  reduce using rule 208 (operand)\n\n\nState 131\n\n  209 operand: unary_expr .\n\n    $default  reduce using rule 209 (operand)\n\n\nState 132\n\n  210 operand: binary_expr .\n\n    $default  reduce using rule 210 (operand)\n\n\nState 133\n\n  205 expr: logic_expr .\n\n    $default  reduce using rule 205 (expr)\n\n\nState 134\n\n  203 expr: in_expr .\n\n    $default  reduce using rule 203 (expr)\n\n\nState 135\n\n  211 operand: case_expr .\n\n    $default  reduce using rule 211 (operand)\n\n\nState 136\n\n  201 expr: between_expr .\n\n    $default  reduce using rule 201 (expr)\n\n\nState 137\n\n  202 expr: exists_expr .\n\n    $default  reduce using rule 202 (expr)\n\n\nState 138\n\n  224 binary_expr: comp_expr .\n\n    $default  reduce using rule 224 (binary_expr)\n\n\nState 139\n\n  212 operand: extract_expr .\n\n    $default  reduce using rule 212 (operand)\n\n\nState 140\n\n  207 operand: array_index .\n\n    $default  reduce using rule 207 (operand)\n\n\nState 141\n\n  216 scalar_expr: literal .\n\n    $default  reduce using rule 216 (scalar_expr)\n\n\nState 142\n\n  257 literal: string_literal .\n\n    $default  reduce using rule 257 (literal)\n\n\nState 143\n\n  258 literal: bool_literal .\n\n    $default  reduce using rule 258 (literal)\n\n\nState 144\n\n  259 literal: num_literal .\n\n    $default  reduce using rule 259 (literal)\n\n\nState 145\n\n  263 num_literal: int_literal .\n\n    $default  reduce using rule 263 (num_literal)\n\n\nState 146\n\n  264 num_literal: float_literal .\n\n    $default  reduce using rule 264 (num_literal)\n\n\nState 147\n\n  215 scalar_expr: column_name .\n\n    $default  reduce using rule 215 (scalar_expr)\n\n\nState 148\n\n  239 exists_expr: opt_not . EXISTS OP_LP select_no_parens OP_RP\n\n    EXISTS  shift, and go to state 206\n\n\nState 149\n\n  143 update_stmt: opt_with_clause UPDATE table_name SET . set_clause_list opt_where_clause\n\n    OP_LP       shift, and go to state 207\n    IDENTIFIER  shift, and go to state 27\n\n    set_clause_list  go to state 208\n    set_clause       go to state 209\n    identifier       go to state 96\n    column_name      go to state 210\n\n\nState 150\n\n  128 insert_stmt: opt_with_clause INSERT INTO table_name . insert_rest opt_on_conflict\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    insert_rest             go to state 211\n    opt_column_name_list_p  go to state 212\n\n\nState 151\n\n   97 opt_order_clause: ORDER BY . order_item_list\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    order_item_list  go to state 213\n    order_item       go to state 214\n    expr             go to state 215\n    operand          go to state 128\n    cast_expr        go to state 129\n    scalar_expr      go to state 130\n    unary_expr       go to state 131\n    binary_expr      go to state 132\n    logic_expr       go to state 133\n    in_expr          go to state 134\n    case_expr        go to state 135\n    between_expr     go to state 136\n    exists_expr      go to state 137\n    comp_expr        go to state 138\n    extract_expr     go to state 139\n    array_index      go to state 140\n    literal          go to state 141\n    string_literal   go to state 142\n    bool_literal     go to state 143\n    num_literal      go to state 144\n    int_literal      go to state 145\n    float_literal    go to state 146\n    identifier       go to state 96\n    column_name      go to state 147\n    opt_not          go to state 148\n\n\nState 152\n\n   94 limit_clause: LIMIT . expr\n   95             | LIMIT . expr OFFSET expr\n   96             | LIMIT . expr OP_COMMA expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 216\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 153\n\n   22 select_no_parens: opt_with_clause select_clause_list opt_order_clause opt_limit_clause .\n\n    $default  reduce using rule 22 (select_no_parens)\n\n\nState 154\n\n   92 opt_limit_clause: limit_clause .\n\n    $default  reduce using rule 92 (opt_limit_clause)\n\n\nState 155\n\n   24 select_clause_list: select_clause combine_clause select_clause_list .\n\n    $default  reduce using rule 24 (select_clause_list)\n\n\nState 156\n\n  113 cte_table: cte_table_name AS OP_LP select_stmt . OP_RP\n\n    OP_RP  shift, and go to state 217\n\n\nState 157\n\n  194 opt_column_name_list_p: OP_LP column_name_list OP_RP .\n\n    $default  reduce using rule 194 (opt_column_name_list_p)\n\n\nState 158\n\n   79 column_name_list: column_name OP_COMMA . column_name_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_name_list  go to state 218\n    identifier        go to state 96\n    column_name       go to state 97\n\n\nState 159\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE . VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    VIEW  shift, and go to state 219\n\n\nState 160\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 100\n    view_name   go to state 220\n\n\nState 161\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 221\n\n\nState 162\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 222\n\n\nState 163\n\n  269 opt_if_not_exist: IF NOT . EXISTS\n\n    EXISTS  shift, and go to state 223\n\n\nState 164\n\n  118 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name . AS select_stmt\n  119                  | CREATE opt_temp TABLE opt_if_not_exist table_name . OP_LP column_def_list opt_table_constraint_list OP_RP\n\n    OP_LP  shift, and go to state 224\n    AS     shift, and go to state 225\n\n\nState 165\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name . ON table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n    ON  shift, and go to state 226\n\n\nState 166\n\n  267 opt_column: COLUMN .\n\n    $default  reduce using rule 267 (opt_column)\n\n\nState 167\n\n  148 alter_action: ADD opt_column . column_def\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_def  go to state 227\n    identifier  go to state 228\n\n\nState 168\n\n  146 alter_action: RENAME TO . table_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 229\n\n\nState 169\n\n  147 alter_action: RENAME opt_column . column_name TO column_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier   go to state 96\n    column_name  go to state 230\n\n\nState 170\n\n  218 unary_expr: NOT . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 172\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 171\n\n  217 unary_expr: OP_SUB operand .\n  219           | operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n\n    $default  reduce using rule 217 (unary_expr)\n\n    binary_op  go to state 204\n\n\nState 172\n\n  218 unary_expr: NOT operand .\n  219           | operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    $default  reduce using rule 218 (unary_expr)\n\n    binary_op  go to state 204\n\n\nState 173\n\n  242 case_clause: WHEN . expr THEN expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 232\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 174\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  233 case_expr: CASE expr . case_list END\n  235          | CASE expr . case_list ELSE expr END\n\n    OR    shift, and go to state 184\n    AND   shift, and go to state 185\n    WHEN  shift, and go to state 173\n\n    case_list    go to state 233\n    case_clause  go to state 176\n\n\nState 175\n\n  234 case_expr: CASE case_list . END\n  236          | CASE case_list . ELSE expr END\n\n    END   shift, and go to state 234\n    ELSE  shift, and go to state 235\n\n\nState 176\n\n  240 case_list: case_clause .\n  241          | case_clause . case_list\n\n    WHEN  shift, and go to state 173\n\n    $default  reduce using rule 240 (case_list)\n\n    case_list    go to state 236\n    case_clause  go to state 176\n\n\nState 177\n\n  249 extract_expr: EXTRACT OP_LP . datetime_field FROM expr OP_RP\n\n    MINUTE  shift, and go to state 237\n    MONTH   shift, and go to state 238\n    YEAR    shift, and go to state 239\n    HOUR    shift, and go to state 240\n    DAY     shift, and go to state 241\n    SECOND  shift, and go to state 242\n\n    datetime_field  go to state 243\n\n\nState 178\n\n  213 operand: OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 244\n\n\nState 179\n\n  206 operand: OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 245\n\n\nState 180\n\n  214 cast_expr: CAST OP_LP . expr AS type_name OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 246\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 181\n\n   70 from_clause: FROM . table_ref\n\n    $default  reduce using rule 81 (opt_table_prefix)\n\n    table_ref         go to state 247\n    opt_table_prefix  go to state 248\n\n\nState 182\n\n   25 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause . opt_where_clause opt_group_clause opt_window_clause\n\n    WHERE  shift, and go to state 249\n\n    $default  reduce using rule 68 (opt_where_clause)\n\n    opt_where_clause  go to state 250\n    where_clause      go to state 251\n\n\nState 183\n\n   29 opt_from_clause: from_clause .\n\n    $default  reduce using rule 29 (opt_from_clause)\n\n\nState 184\n\n  229 logic_expr: expr OR . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 252\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 185\n\n  228 logic_expr: expr AND . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 253\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 186\n\n   90 expr_list: expr OP_COMMA . expr_list\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr_list       go to state 254\n    expr            go to state 127\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 187\n\n  244 comp_expr: operand OP_NOTEQUAL . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 255\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 188\n\n  237 between_expr: operand BETWEEN . operand AND operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 256\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 189\n\n  246 comp_expr: operand OP_LESSTHAN . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 257\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 190\n\n  248 comp_expr: operand OP_GREATEREQ . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 258\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 191\n\n  279 binary_op: OP_ADD .\n\n    $default  reduce using rule 279 (binary_op)\n\n\nState 192\n\n  280 binary_op: OP_SUB .\n\n    $default  reduce using rule 280 (binary_op)\n\n\nState 193\n\n  245 comp_expr: operand OP_GREATERTHAN . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 259\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 194\n\n  283 binary_op: OP_MUL .\n\n    $default  reduce using rule 283 (binary_op)\n\n\nState 195\n\n  282 binary_op: OP_MOD .\n\n    $default  reduce using rule 282 (binary_op)\n\n\nState 196\n\n  220 unary_expr: operand IS . NULL\n  221           | operand IS . NOT NULL\n\n    NOT   shift, and go to state 260\n    NULL  shift, and go to state 261\n\n\nState 197\n\n  227 binary_expr: operand NOT . LIKE operand\n  238 between_expr: operand NOT . BETWEEN operand AND operand\n  284 opt_not: NOT .\n\n    BETWEEN  shift, and go to state 262\n    LIKE     shift, and go to state 263\n\n    $default  reduce using rule 284 (opt_not)\n\n\nState 198\n\n  247 comp_expr: operand OP_LESSEQ . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 264\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 199\n\n  226 binary_expr: operand LIKE . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 265\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 200\n\n  256 array_index: operand OP_LBRACKET . int_literal OP_RBRACKET\n\n    INTLITERAL  shift, and go to state 122\n\n    int_literal  go to state 266\n\n\nState 201\n\n  281 binary_op: OP_DIVIDE .\n\n    $default  reduce using rule 281 (binary_op)\n\n\nState 202\n\n  219 unary_expr: operand ISNULL .\n\n    $default  reduce using rule 219 (unary_expr)\n\n\nState 203\n\n  243 comp_expr: operand OP_EQUAL . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 267\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 204\n\n  225 binary_expr: operand binary_op . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 268\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 205\n\n  230 in_expr: operand opt_not . IN OP_LP select_no_parens OP_RP\n  231        | operand opt_not . IN OP_LP expr_list OP_RP\n  232        | operand opt_not . IN table_name\n\n    IN  shift, and go to state 269\n\n\nState 206\n\n  239 exists_expr: opt_not EXISTS . OP_LP select_no_parens OP_RP\n\n    OP_LP  shift, and go to state 270\n\n\nState 207\n\n  199 set_clause: OP_LP . column_name_list OP_RP OP_EQUAL expr\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_name_list  go to state 271\n    identifier        go to state 96\n    column_name       go to state 97\n\n\nState 208\n\n  143 update_stmt: opt_with_clause UPDATE table_name SET set_clause_list . opt_where_clause\n\n    WHERE  shift, and go to state 249\n\n    $default  reduce using rule 68 (opt_where_clause)\n\n    opt_where_clause  go to state 272\n    where_clause      go to state 251\n\n\nState 209\n\n  196 set_clause_list: set_clause .\n  197                | set_clause . OP_COMMA set_clause_list\n\n    OP_COMMA  shift, and go to state 273\n\n    $default  reduce using rule 196 (set_clause_list)\n\n\nState 210\n\n  198 set_clause: column_name . OP_EQUAL expr\n\n    OP_EQUAL  shift, and go to state 274\n\n\nState 211\n\n  128 insert_stmt: opt_with_clause INSERT INTO table_name insert_rest . opt_on_conflict\n\n    ON  shift, and go to state 275\n\n    $default  reduce using rule 137 (opt_on_conflict)\n\n    opt_on_conflict  go to state 276\n\n\nState 212\n\n  129 insert_rest: opt_column_name_list_p . select_no_parens\n  130            | opt_column_name_list_p . DEFAULT VALUES\n  131            | opt_column_name_list_p . VALUES super_values_list\n\n    WITH     shift, and go to state 1\n    VALUES   shift, and go to state 277\n    DEFAULT  shift, and go to state 278\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_no_parens  go to state 279\n    opt_with_clause   go to state 40\n\n\nState 213\n\n   97 opt_order_clause: ORDER BY order_item_list .\n\n    $default  reduce using rule 97 (opt_order_clause)\n\n\nState 214\n\n  102 order_item_list: order_item .\n  103                | order_item . OP_COMMA order_item_list\n\n    OP_COMMA  shift, and go to state 280\n\n    $default  reduce using rule 102 (order_item_list)\n\n\nState 215\n\n  104 order_item: expr . opt_order_behavior opt_order_nulls\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR    shift, and go to state 184\n    AND   shift, and go to state 185\n    ASC   shift, and go to state 281\n    DESC  shift, and go to state 282\n\n    $default  reduce using rule 107 (opt_order_behavior)\n\n    opt_order_behavior  go to state 283\n\n\nState 216\n\n   94 limit_clause: LIMIT expr .\n   95             | LIMIT expr . OFFSET expr\n   96             | LIMIT expr . OP_COMMA expr\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR        shift, and go to state 184\n    OFFSET    shift, and go to state 284\n    AND       shift, and go to state 185\n    OP_COMMA  shift, and go to state 285\n\n    $default  reduce using rule 94 (limit_clause)\n\n\nState 217\n\n  113 cte_table: cte_table_name AS OP_LP select_stmt OP_RP .\n\n    $default  reduce using rule 113 (cte_table)\n\n\nState 218\n\n   79 column_name_list: column_name OP_COMMA column_name_list .\n\n    $default  reduce using rule 79 (column_name_list)\n\n\nState 219\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW . view_name opt_column_name_list_p AS select_stmt opt_check_option\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 100\n    view_name   go to state 286\n\n\nState 220\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 287\n\n\nState 221\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 288\n\n\nState 222\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 289\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 223\n\n  269 opt_if_not_exist: IF NOT EXISTS .\n\n    $default  reduce using rule 269 (opt_if_not_exist)\n\n\nState 224\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP . column_def_list opt_table_constraint_list OP_RP\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_def_list  go to state 290\n    column_def       go to state 291\n    identifier       go to state 228\n\n\nState 225\n\n  118 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name AS . select_stmt\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 292\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 226\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON . table_name OP_LP indexed_column_list OP_RP opt_where_clause\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 293\n\n\nState 227\n\n  148 alter_action: ADD opt_column column_def .\n\n    $default  reduce using rule 148 (alter_action)\n\n\nState 228\n\n  151 column_def: identifier . type_name opt_column_constraint_list\n\n    TEXT       shift, and go to state 294\n    BIGINT     shift, and go to state 295\n    NUMERIC    shift, and go to state 296\n    DOUBLE     shift, and go to state 297\n    NATIONAL   shift, and go to state 298\n    DEC        shift, and go to state 299\n    NCHAR      shift, and go to state 300\n    REAL       shift, and go to state 301\n    CHAR       shift, and go to state 302\n    DECIMAL    shift, and go to state 303\n    INTEGER    shift, and go to state 304\n    INT        shift, and go to state 305\n    BOOLEAN    shift, and go to state 306\n    FLOAT      shift, and go to state 307\n    CHARACTER  shift, and go to state 308\n    SMALLINT   shift, and go to state 309\n    VARCHAR    shift, and go to state 310\n\n    type_name                 go to state 311\n    character_type            go to state 312\n    character_with_length     go to state 313\n    character_without_length  go to state 314\n    character_conflicta       go to state 315\n    numeric_type              go to state 316\n\n\nState 229\n\n  146 alter_action: RENAME TO table_name .\n\n    $default  reduce using rule 146 (alter_action)\n\n\nState 230\n\n  147 alter_action: RENAME opt_column column_name . TO column_name\n\n    TO  shift, and go to state 317\n\n\nState 231\n\n  227 binary_expr: operand NOT . LIKE operand\n\n    LIKE  shift, and go to state 263\n\n\nState 232\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  242 case_clause: WHEN expr . THEN expr\n\n    OR    shift, and go to state 184\n    AND   shift, and go to state 185\n    THEN  shift, and go to state 318\n\n\nState 233\n\n  233 case_expr: CASE expr case_list . END\n  235          | CASE expr case_list . ELSE expr END\n\n    END   shift, and go to state 319\n    ELSE  shift, and go to state 320\n\n\nState 234\n\n  234 case_expr: CASE case_list END .\n\n    $default  reduce using rule 234 (case_expr)\n\n\nState 235\n\n  236 case_expr: CASE case_list ELSE . expr END\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 321\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 236\n\n  241 case_list: case_clause case_list .\n\n    $default  reduce using rule 241 (case_list)\n\n\nState 237\n\n  251 datetime_field: MINUTE .\n\n    $default  reduce using rule 251 (datetime_field)\n\n\nState 238\n\n  254 datetime_field: MONTH .\n\n    $default  reduce using rule 254 (datetime_field)\n\n\nState 239\n\n  255 datetime_field: YEAR .\n\n    $default  reduce using rule 255 (datetime_field)\n\n\nState 240\n\n  252 datetime_field: HOUR .\n\n    $default  reduce using rule 252 (datetime_field)\n\n\nState 241\n\n  253 datetime_field: DAY .\n\n    $default  reduce using rule 253 (datetime_field)\n\n\nState 242\n\n  250 datetime_field: SECOND .\n\n    $default  reduce using rule 250 (datetime_field)\n\n\nState 243\n\n  249 extract_expr: EXTRACT OP_LP datetime_field . FROM expr OP_RP\n\n    FROM  shift, and go to state 322\n\n\nState 244\n\n  213 operand: OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 213 (operand)\n\n\nState 245\n\n  206 operand: OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 206 (operand)\n\n\nState 246\n\n  214 cast_expr: CAST OP_LP expr . AS type_name OP_RP\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n    AS   shift, and go to state 323\n\n\nState 247\n\n   70 from_clause: FROM table_ref .\n   80 opt_table_prefix: table_ref . join_op\n\n    NATURAL   shift, and go to state 324\n    OP_COMMA  shift, and go to state 325\n    JOIN      shift, and go to state 326\n\n    $default  reduce using rule 70 (from_clause)\n\n    join_op  go to state 327\n\n\nState 248\n\n   71 table_ref: opt_table_prefix . table_name opt_on_or_using\n   72          | opt_table_prefix . OP_LP select_no_parens OP_RP opt_on_or_using\n   73          | opt_table_prefix . OP_LP table_ref OP_RP opt_on_or_using\n\n    OP_LP       shift, and go to state 328\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 329\n\n\nState 249\n\n   69 where_clause: WHERE . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 330\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 250\n\n   25 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause . opt_group_clause opt_window_clause\n\n    GROUP  shift, and go to state 331\n\n    $default  reduce using rule 64 (opt_group_clause)\n\n    opt_group_clause  go to state 332\n\n\nState 251\n\n   67 opt_where_clause: where_clause .\n\n    $default  reduce using rule 67 (opt_where_clause)\n\n\nState 252\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  229           | expr OR expr .\n\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 229 (logic_expr)\n\n\nState 253\n\n  228 logic_expr: expr . AND expr\n  228           | expr AND expr .\n  229           | expr . OR expr\n\n    $default  reduce using rule 228 (logic_expr)\n\n\nState 254\n\n   90 expr_list: expr OP_COMMA expr_list .\n\n    $default  reduce using rule 90 (expr_list)\n\n\nState 255\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  244          | operand OP_NOTEQUAL operand .\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    OP_LESSEQ       shift, and go to state 198\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 244 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 256\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  237 between_expr: operand BETWEEN operand . AND operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    AND             shift, and go to state 333\n    NOT             shift, and go to state 231\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    binary_op  go to state 204\n\n\nState 257\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  246          | operand OP_LESSTHAN operand .\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 191\n    OP_SUB       shift, and go to state 192\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    IS           shift, and go to state 196\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n    ISNULL       shift, and go to state 202\n\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 246 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 258\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  248          | operand OP_GREATEREQ operand .\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 191\n    OP_SUB       shift, and go to state 192\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    IS           shift, and go to state 196\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n    ISNULL       shift, and go to state 202\n\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 248 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 259\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  245          | operand OP_GREATERTHAN operand .\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 191\n    OP_SUB       shift, and go to state 192\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    IS           shift, and go to state 196\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n    ISNULL       shift, and go to state 202\n\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 245 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 260\n\n  221 unary_expr: operand IS NOT . NULL\n\n    NULL  shift, and go to state 334\n\n\nState 261\n\n  220 unary_expr: operand IS NULL .\n\n    $default  reduce using rule 220 (unary_expr)\n\n\nState 262\n\n  238 between_expr: operand NOT BETWEEN . operand AND operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 335\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 263\n\n  227 binary_expr: operand NOT LIKE . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 336\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 264\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  247          | operand OP_LESSEQ operand .\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_ADD       shift, and go to state 191\n    OP_SUB       shift, and go to state 192\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    IS           shift, and go to state 196\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n    ISNULL       shift, and go to state 202\n\n    OP_LESSTHAN     error (nonassociative)\n    OP_GREATEREQ    error (nonassociative)\n    OP_GREATERTHAN  error (nonassociative)\n    OP_LESSEQ       error (nonassociative)\n\n    $default  reduce using rule 247 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 265\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  226            | operand LIKE operand .\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    OP_LESSEQ       shift, and go to state 198\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 226 (binary_expr)\n\n    binary_op  go to state 204\n\n\nState 266\n\n  256 array_index: operand OP_LBRACKET int_literal . OP_RBRACKET\n\n    OP_RBRACKET  shift, and go to state 337\n\n\nState 267\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  243          | operand OP_EQUAL operand .\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    OP_LESSEQ       shift, and go to state 198\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 243 (comp_expr)\n\n    binary_op  go to state 204\n\n\nState 268\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  225            | operand binary_op operand .\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_MUL       shift, and go to state 194\n    OP_MOD       shift, and go to state 195\n    OP_LBRACKET  shift, and go to state 200\n    OP_DIVIDE    shift, and go to state 201\n\n    $default  reduce using rule 225 (binary_expr)\n\n    binary_op  go to state 204\n\n\nState 269\n\n  230 in_expr: operand opt_not IN . OP_LP select_no_parens OP_RP\n  231        | operand opt_not IN . OP_LP expr_list OP_RP\n  232        | operand opt_not IN . table_name\n\n    OP_LP       shift, and go to state 338\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 339\n\n\nState 270\n\n  239 exists_expr: opt_not EXISTS OP_LP . select_no_parens OP_RP\n\n    WITH  shift, and go to state 1\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_no_parens  go to state 340\n    opt_with_clause   go to state 40\n\n\nState 271\n\n  199 set_clause: OP_LP column_name_list . OP_RP OP_EQUAL expr\n\n    OP_RP  shift, and go to state 341\n\n\nState 272\n\n  143 update_stmt: opt_with_clause UPDATE table_name SET set_clause_list opt_where_clause .\n\n    $default  reduce using rule 143 (update_stmt)\n\n\nState 273\n\n  197 set_clause_list: set_clause OP_COMMA . set_clause_list\n\n    OP_LP       shift, and go to state 207\n    IDENTIFIER  shift, and go to state 27\n\n    set_clause_list  go to state 342\n    set_clause       go to state 209\n    identifier       go to state 96\n    column_name      go to state 210\n\n\nState 274\n\n  198 set_clause: column_name OP_EQUAL . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 343\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 275\n\n  135 opt_on_conflict: ON . CONFLICT opt_conflict_expr DO NOTHING\n  136                | ON . CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause\n\n    CONFLICT  shift, and go to state 344\n\n\nState 276\n\n  128 insert_stmt: opt_with_clause INSERT INTO table_name insert_rest opt_on_conflict .\n\n    $default  reduce using rule 128 (insert_stmt)\n\n\nState 277\n\n  131 insert_rest: opt_column_name_list_p VALUES . super_values_list\n\n    OP_LP  shift, and go to state 345\n\n    super_values_list  go to state 346\n    values_list        go to state 347\n\n\nState 278\n\n  130 insert_rest: opt_column_name_list_p DEFAULT . VALUES\n\n    VALUES  shift, and go to state 348\n\n\nState 279\n\n  129 insert_rest: opt_column_name_list_p select_no_parens .\n\n    $default  reduce using rule 129 (insert_rest)\n\n\nState 280\n\n  103 order_item_list: order_item OP_COMMA . order_item_list\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    order_item_list  go to state 349\n    order_item       go to state 214\n    expr             go to state 215\n    operand          go to state 128\n    cast_expr        go to state 129\n    scalar_expr      go to state 130\n    unary_expr       go to state 131\n    binary_expr      go to state 132\n    logic_expr       go to state 133\n    in_expr          go to state 134\n    case_expr        go to state 135\n    between_expr     go to state 136\n    exists_expr      go to state 137\n    comp_expr        go to state 138\n    extract_expr     go to state 139\n    array_index      go to state 140\n    literal          go to state 141\n    string_literal   go to state 142\n    bool_literal     go to state 143\n    num_literal      go to state 144\n    int_literal      go to state 145\n    float_literal    go to state 146\n    identifier       go to state 96\n    column_name      go to state 147\n    opt_not          go to state 148\n\n\nState 281\n\n  105 opt_order_behavior: ASC .\n\n    $default  reduce using rule 105 (opt_order_behavior)\n\n\nState 282\n\n  106 opt_order_behavior: DESC .\n\n    $default  reduce using rule 106 (opt_order_behavior)\n\n\nState 283\n\n  104 order_item: expr opt_order_behavior . opt_order_nulls\n\n    NULLS  shift, and go to state 350\n\n    $default  reduce using rule 101 (opt_order_nulls)\n\n    opt_order_nulls  go to state 351\n\n\nState 284\n\n   95 limit_clause: LIMIT expr OFFSET . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 352\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 285\n\n   96 limit_clause: LIMIT expr OP_COMMA . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 353\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 286\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name . opt_column_name_list_p AS select_stmt opt_check_option\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 354\n\n\nState 287\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 355\n\n\nState 288\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 356\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 289\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 357\n\n    $default  reduce using rule 193 (opt_check_option)\n\n    opt_check_option  go to state 358\n\n\nState 290\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list . opt_table_constraint_list OP_RP\n\n    CONSTRAINT  shift, and go to state 359\n\n    $default  reduce using rule 314 (opt_table_constraint_list)\n\n    constraint_name            go to state 360\n    opt_table_constraint_list  go to state 361\n    table_constraint_list      go to state 362\n    table_constraint           go to state 363\n\n\nState 291\n\n  149 column_def_list: column_def .\n  150                | column_def . OP_COMMA column_def_list\n\n    OP_COMMA  shift, and go to state 364\n\n    $default  reduce using rule 149 (column_def_list)\n\n\nState 292\n\n  118 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name AS select_stmt .\n\n    $default  reduce using rule 118 (create_table_stmt)\n\n\nState 293\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name . OP_LP indexed_column_list OP_RP opt_where_clause\n\n    OP_LP  shift, and go to state 365\n\n\nState 294\n\n  296 character_conflicta: TEXT .\n\n    $default  reduce using rule 296 (character_conflicta)\n\n\nState 295\n\n  305 numeric_type: BIGINT .\n\n    $default  reduce using rule 305 (numeric_type)\n\n\nState 296\n\n  311 numeric_type: NUMERIC .\n\n    $default  reduce using rule 311 (numeric_type)\n\n\nState 297\n\n  308 numeric_type: DOUBLE . PRECISION\n\n    PRECISION  shift, and go to state 366\n\n\nState 298\n\n  297 character_conflicta: NATIONAL . CHARACTER opt_varying\n  298                    | NATIONAL . CHAR opt_varying\n\n    CHAR       shift, and go to state 367\n    CHARACTER  shift, and go to state 368\n\n\nState 299\n\n  310 numeric_type: DEC .\n\n    $default  reduce using rule 310 (numeric_type)\n\n\nState 300\n\n  299 character_conflicta: NCHAR . opt_varying\n\n    VARYING  shift, and go to state 369\n\n    $default  reduce using rule 301 (opt_varying)\n\n    opt_varying  go to state 370\n\n\nState 301\n\n  306 numeric_type: REAL .\n\n    $default  reduce using rule 306 (numeric_type)\n\n\nState 302\n\n  294 character_conflicta: CHAR . opt_varying\n\n    VARYING  shift, and go to state 369\n\n    $default  reduce using rule 301 (opt_varying)\n\n    opt_varying  go to state 371\n\n\nState 303\n\n  309 numeric_type: DECIMAL .\n\n    $default  reduce using rule 309 (numeric_type)\n\n\nState 304\n\n  303 numeric_type: INTEGER .\n\n    $default  reduce using rule 303 (numeric_type)\n\n\nState 305\n\n  302 numeric_type: INT .\n\n    $default  reduce using rule 302 (numeric_type)\n\n\nState 306\n\n  312 numeric_type: BOOLEAN .\n\n    $default  reduce using rule 312 (numeric_type)\n\n\nState 307\n\n  307 numeric_type: FLOAT .\n\n    $default  reduce using rule 307 (numeric_type)\n\n\nState 308\n\n  293 character_conflicta: CHARACTER . opt_varying\n\n    VARYING  shift, and go to state 369\n\n    $default  reduce using rule 301 (opt_varying)\n\n    opt_varying  go to state 372\n\n\nState 309\n\n  304 numeric_type: SMALLINT .\n\n    $default  reduce using rule 304 (numeric_type)\n\n\nState 310\n\n  295 character_conflicta: VARCHAR .\n\n    $default  reduce using rule 295 (character_conflicta)\n\n\nState 311\n\n  151 column_def: identifier type_name . opt_column_constraint_list\n\n    CHECK       shift, and go to state 373\n    UNIQUE      shift, and go to state 374\n    PRIMARY     shift, and go to state 375\n    NOT         shift, and go to state 376\n    REFERENCES  shift, and go to state 377\n\n    $default  reduce using rule 153 (opt_column_constraint_list)\n\n    opt_column_constraint_list  go to state 378\n    column_constraint_list      go to state 379\n    column_constraint           go to state 380\n    constraint_type             go to state 381\n    foreign_clause              go to state 382\n\n\nState 312\n\n  288 type_name: character_type .\n\n    $default  reduce using rule 288 (type_name)\n\n\nState 313\n\n  289 character_type: character_with_length .\n\n    $default  reduce using rule 289 (character_type)\n\n\nState 314\n\n  290 character_type: character_without_length .\n\n    $default  reduce using rule 290 (character_type)\n\n\nState 315\n\n  291 character_with_length: character_conflicta . OP_LP int_literal OP_RP\n  292 character_without_length: character_conflicta .\n\n    OP_LP  shift, and go to state 383\n\n    $default  reduce using rule 292 (character_without_length)\n\n\nState 316\n\n  287 type_name: numeric_type .\n\n    $default  reduce using rule 287 (type_name)\n\n\nState 317\n\n  147 alter_action: RENAME opt_column column_name TO . column_name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier   go to state 96\n    column_name  go to state 384\n\n\nState 318\n\n  242 case_clause: WHEN expr THEN . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 385\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 319\n\n  233 case_expr: CASE expr case_list END .\n\n    $default  reduce using rule 233 (case_expr)\n\n\nState 320\n\n  235 case_expr: CASE expr case_list ELSE . expr END\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 386\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 321\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  236 case_expr: CASE case_list ELSE expr . END\n\n    OR   shift, and go to state 184\n    END  shift, and go to state 387\n    AND  shift, and go to state 185\n\n\nState 322\n\n  249 extract_expr: EXTRACT OP_LP datetime_field FROM . expr OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 388\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 323\n\n  214 cast_expr: CAST OP_LP expr AS . type_name OP_RP\n\n    TEXT       shift, and go to state 294\n    BIGINT     shift, and go to state 295\n    NUMERIC    shift, and go to state 296\n    DOUBLE     shift, and go to state 297\n    NATIONAL   shift, and go to state 298\n    DEC        shift, and go to state 299\n    NCHAR      shift, and go to state 300\n    REAL       shift, and go to state 301\n    CHAR       shift, and go to state 302\n    DECIMAL    shift, and go to state 303\n    INTEGER    shift, and go to state 304\n    INT        shift, and go to state 305\n    BOOLEAN    shift, and go to state 306\n    FLOAT      shift, and go to state 307\n    CHARACTER  shift, and go to state 308\n    SMALLINT   shift, and go to state 309\n    VARCHAR    shift, and go to state 310\n\n    type_name                 go to state 389\n    character_type            go to state 312\n    character_with_length     go to state 313\n    character_without_length  go to state 314\n    character_conflicta       go to state 315\n    numeric_type              go to state 316\n\n\nState 324\n\n   84 join_op: NATURAL . opt_join_type JOIN\n\n    CROSS  shift, and go to state 390\n    LEFT   shift, and go to state 391\n    INNER  shift, and go to state 392\n\n    $default  reduce using rule 89 (opt_join_type)\n\n    opt_join_type  go to state 393\n\n\nState 325\n\n   82 join_op: OP_COMMA .\n\n    $default  reduce using rule 82 (join_op)\n\n\nState 326\n\n   83 join_op: JOIN .\n\n    $default  reduce using rule 83 (join_op)\n\n\nState 327\n\n   80 opt_table_prefix: table_ref join_op .\n\n    $default  reduce using rule 80 (opt_table_prefix)\n\n\nState 328\n\n   72 table_ref: opt_table_prefix OP_LP . select_no_parens OP_RP opt_on_or_using\n   73          | opt_table_prefix OP_LP . table_ref OP_RP opt_on_or_using\n\n    WITH  shift, and go to state 1\n\n    SELECT    reduce using rule 110 (opt_with_clause)\n    $default  reduce using rule 81 (opt_table_prefix)\n\n    select_no_parens  go to state 394\n    table_ref         go to state 395\n    opt_table_prefix  go to state 248\n    opt_with_clause   go to state 40\n\n\nState 329\n\n   71 table_ref: opt_table_prefix table_name . opt_on_or_using\n\n    ON     shift, and go to state 396\n    USING  shift, and go to state 397\n\n    $default  reduce using rule 75 (opt_on_or_using)\n\n    opt_on_or_using  go to state 398\n    on_or_using      go to state 399\n\n\nState 330\n\n   69 where_clause: WHERE expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 69 (where_clause)\n\n\nState 331\n\n   63 opt_group_clause: GROUP . BY expr_list opt_having_clause\n\n    BY  shift, and go to state 400\n\n\nState 332\n\n   25 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause . opt_window_clause\n\n    WINDOW  shift, and go to state 401\n\n    $default  reduce using rule 33 (opt_window_clause)\n\n    opt_window_clause  go to state 402\n    window_clause      go to state 403\n\n\nState 333\n\n  237 between_expr: operand BETWEEN operand AND . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 404\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 334\n\n  221 unary_expr: operand IS NOT NULL .\n\n    $default  reduce using rule 221 (unary_expr)\n\n\nState 335\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  238 between_expr: operand NOT BETWEEN operand . AND operand\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    AND             shift, and go to state 405\n    NOT             shift, and go to state 231\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    binary_op  go to state 204\n\n\nState 336\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  227            | operand NOT LIKE operand .\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    OP_LESSEQ       shift, and go to state 198\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n\n    OP_NOTEQUAL  error (nonassociative)\n    LIKE         error (nonassociative)\n    OP_EQUAL     error (nonassociative)\n\n    $default  reduce using rule 227 (binary_expr)\n\n    binary_op  go to state 204\n\n\nState 337\n\n  256 array_index: operand OP_LBRACKET int_literal OP_RBRACKET .\n\n    $default  reduce using rule 256 (array_index)\n\n\nState 338\n\n  230 in_expr: operand opt_not IN OP_LP . select_no_parens OP_RP\n  231        | operand opt_not IN OP_LP . expr_list OP_RP\n\n    WITH           shift, and go to state 1\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    EXISTS    reduce using rule 285 (opt_not)\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_no_parens  go to state 406\n    expr_list         go to state 407\n    opt_with_clause   go to state 40\n    expr              go to state 127\n    operand           go to state 128\n    cast_expr         go to state 129\n    scalar_expr       go to state 130\n    unary_expr        go to state 131\n    binary_expr       go to state 132\n    logic_expr        go to state 133\n    in_expr           go to state 134\n    case_expr         go to state 135\n    between_expr      go to state 136\n    exists_expr       go to state 137\n    comp_expr         go to state 138\n    extract_expr      go to state 139\n    array_index       go to state 140\n    literal           go to state 141\n    string_literal    go to state 142\n    bool_literal      go to state 143\n    num_literal       go to state 144\n    int_literal       go to state 145\n    float_literal     go to state 146\n    identifier        go to state 96\n    column_name       go to state 147\n    opt_not           go to state 148\n\n\nState 339\n\n  232 in_expr: operand opt_not IN table_name .\n\n    $default  reduce using rule 232 (in_expr)\n\n\nState 340\n\n  239 exists_expr: opt_not EXISTS OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 408\n\n\nState 341\n\n  199 set_clause: OP_LP column_name_list OP_RP . OP_EQUAL expr\n\n    OP_EQUAL  shift, and go to state 409\n\n\nState 342\n\n  197 set_clause_list: set_clause OP_COMMA set_clause_list .\n\n    $default  reduce using rule 197 (set_clause_list)\n\n\nState 343\n\n  198 set_clause: column_name OP_EQUAL expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 198 (set_clause)\n\n\nState 344\n\n  135 opt_on_conflict: ON CONFLICT . opt_conflict_expr DO NOTHING\n  136                | ON CONFLICT . opt_conflict_expr DO UPDATE set_clause_list where_clause\n\n    OP_LP  shift, and go to state 410\n\n    $default  reduce using rule 139 (opt_conflict_expr)\n\n    opt_conflict_expr  go to state 411\n\n\nState 345\n\n  134 values_list: OP_LP . expr_list OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr_list       go to state 412\n    expr            go to state 127\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 346\n\n  131 insert_rest: opt_column_name_list_p VALUES super_values_list .\n\n    $default  reduce using rule 131 (insert_rest)\n\n\nState 347\n\n  132 super_values_list: values_list .\n  133                  | values_list . OP_COMMA super_values_list\n\n    OP_COMMA  shift, and go to state 413\n\n    $default  reduce using rule 132 (super_values_list)\n\n\nState 348\n\n  130 insert_rest: opt_column_name_list_p DEFAULT VALUES .\n\n    $default  reduce using rule 130 (insert_rest)\n\n\nState 349\n\n  103 order_item_list: order_item OP_COMMA order_item_list .\n\n    $default  reduce using rule 103 (order_item_list)\n\n\nState 350\n\n   99 opt_order_nulls: NULLS . FIRST\n  100                | NULLS . LAST\n\n    LAST   shift, and go to state 414\n    FIRST  shift, and go to state 415\n\n\nState 351\n\n  104 order_item: expr opt_order_behavior opt_order_nulls .\n\n    $default  reduce using rule 104 (order_item)\n\n\nState 352\n\n   95 limit_clause: LIMIT expr OFFSET expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 95 (limit_clause)\n\n\nState 353\n\n   96 limit_clause: LIMIT expr OP_COMMA expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 96 (limit_clause)\n\n\nState 354\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p . AS select_stmt opt_check_option\n\n    AS  shift, and go to state 416\n\n\nState 355\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 417\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 356\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 357\n\n    $default  reduce using rule 193 (opt_check_option)\n\n    opt_check_option  go to state 418\n\n\nState 357\n\n  190 opt_check_option: WITH . CHECK OPTION\n  191                 | WITH . CASCADED CHECK OPTION\n  192                 | WITH . LOCAL CHECK OPTION\n\n    CHECK     shift, and go to state 419\n    LOCAL     shift, and go to state 420\n    CASCADED  shift, and go to state 421\n\n\nState 358\n\n  121 create_view_stmt: CREATE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 121 (create_view_stmt)\n\n\nState 359\n\n  181 constraint_name: CONSTRAINT . name\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 422\n    name        go to state 423\n\n\nState 360\n\n  317 table_constraint: constraint_name . PRIMARY KEY OP_LP indexed_column_list OP_RP\n  318                 | constraint_name . UNIQUE OP_LP indexed_column_list OP_RP\n  319                 | constraint_name . CHECK OP_LP expr OP_RP\n  320                 | constraint_name . FOREIGN KEY OP_LP column_name_list OP_RP foreign_clause\n\n    CHECK    shift, and go to state 424\n    UNIQUE   shift, and go to state 425\n    PRIMARY  shift, and go to state 426\n    FOREIGN  shift, and go to state 427\n\n\nState 361\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list . OP_RP\n\n    OP_RP  shift, and go to state 428\n\n\nState 362\n\n  313 opt_table_constraint_list: table_constraint_list .\n\n    $default  reduce using rule 313 (opt_table_constraint_list)\n\n\nState 363\n\n  315 table_constraint_list: table_constraint .\n  316                      | table_constraint . OP_COMMA table_constraint_list\n\n    OP_COMMA  shift, and go to state 429\n\n    $default  reduce using rule 315 (table_constraint_list)\n\n\nState 364\n\n  150 column_def_list: column_def OP_COMMA . column_def_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_def_list  go to state 430\n    column_def       go to state 291\n    identifier       go to state 228\n\n\nState 365\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP . indexed_column_list OP_RP opt_where_clause\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    indexed_column_list  go to state 431\n    indexed_column       go to state 432\n    expr                 go to state 433\n    operand              go to state 128\n    cast_expr            go to state 129\n    scalar_expr          go to state 130\n    unary_expr           go to state 131\n    binary_expr          go to state 132\n    logic_expr           go to state 133\n    in_expr              go to state 134\n    case_expr            go to state 135\n    between_expr         go to state 136\n    exists_expr          go to state 137\n    comp_expr            go to state 138\n    extract_expr         go to state 139\n    array_index          go to state 140\n    literal              go to state 141\n    string_literal       go to state 142\n    bool_literal         go to state 143\n    num_literal          go to state 144\n    int_literal          go to state 145\n    float_literal        go to state 146\n    identifier           go to state 96\n    column_name          go to state 147\n    opt_not              go to state 148\n\n\nState 366\n\n  308 numeric_type: DOUBLE PRECISION .\n\n    $default  reduce using rule 308 (numeric_type)\n\n\nState 367\n\n  298 character_conflicta: NATIONAL CHAR . opt_varying\n\n    VARYING  shift, and go to state 369\n\n    $default  reduce using rule 301 (opt_varying)\n\n    opt_varying  go to state 434\n\n\nState 368\n\n  297 character_conflicta: NATIONAL CHARACTER . opt_varying\n\n    VARYING  shift, and go to state 369\n\n    $default  reduce using rule 301 (opt_varying)\n\n    opt_varying  go to state 435\n\n\nState 369\n\n  300 opt_varying: VARYING .\n\n    $default  reduce using rule 300 (opt_varying)\n\n\nState 370\n\n  299 character_conflicta: NCHAR opt_varying .\n\n    $default  reduce using rule 299 (character_conflicta)\n\n\nState 371\n\n  294 character_conflicta: CHAR opt_varying .\n\n    $default  reduce using rule 294 (character_conflicta)\n\n\nState 372\n\n  293 character_conflicta: CHARACTER opt_varying .\n\n    $default  reduce using rule 293 (character_conflicta)\n\n\nState 373\n\n  160 constraint_type: CHECK . OP_LP expr OP_RP\n\n    OP_LP  shift, and go to state 436\n\n\nState 374\n\n  159 constraint_type: UNIQUE .\n\n    $default  reduce using rule 159 (constraint_type)\n\n\nState 375\n\n  157 constraint_type: PRIMARY . KEY\n\n    KEY  shift, and go to state 437\n\n\nState 376\n\n  158 constraint_type: NOT . NULL\n\n    NULL  shift, and go to state 438\n\n\nState 377\n\n  162 foreign_clause: REFERENCES . table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n    IDENTIFIER  shift, and go to state 27\n\n    identifier  go to state 31\n    table_name  go to state 439\n\n\nState 378\n\n  151 column_def: identifier type_name opt_column_constraint_list .\n\n    $default  reduce using rule 151 (column_def)\n\n\nState 379\n\n  152 opt_column_constraint_list: column_constraint_list .\n\n    $default  reduce using rule 152 (opt_column_constraint_list)\n\n\nState 380\n\n  154 column_constraint_list: column_constraint .\n  155                       | column_constraint . column_constraint_list\n\n    CHECK       shift, and go to state 373\n    UNIQUE      shift, and go to state 374\n    PRIMARY     shift, and go to state 375\n    NOT         shift, and go to state 376\n    REFERENCES  shift, and go to state 377\n\n    $default  reduce using rule 154 (column_constraint_list)\n\n    column_constraint_list  go to state 440\n    column_constraint       go to state 380\n    constraint_type         go to state 381\n    foreign_clause          go to state 382\n\n\nState 381\n\n  156 column_constraint: constraint_type .\n\n    $default  reduce using rule 156 (column_constraint)\n\n\nState 382\n\n  161 constraint_type: foreign_clause .\n\n    $default  reduce using rule 161 (constraint_type)\n\n\nState 383\n\n  291 character_with_length: character_conflicta OP_LP . int_literal OP_RP\n\n    INTLITERAL  shift, and go to state 122\n\n    int_literal  go to state 441\n\n\nState 384\n\n  147 alter_action: RENAME opt_column column_name TO column_name .\n\n    $default  reduce using rule 147 (alter_action)\n\n\nState 385\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  242 case_clause: WHEN expr THEN expr .\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 242 (case_clause)\n\n\nState 386\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  235 case_expr: CASE expr case_list ELSE expr . END\n\n    OR   shift, and go to state 184\n    END  shift, and go to state 442\n    AND  shift, and go to state 185\n\n\nState 387\n\n  236 case_expr: CASE case_list ELSE expr END .\n\n    $default  reduce using rule 236 (case_expr)\n\n\nState 388\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  249 extract_expr: EXTRACT OP_LP datetime_field FROM expr . OP_RP\n\n    OR     shift, and go to state 184\n    AND    shift, and go to state 185\n    OP_RP  shift, and go to state 443\n\n\nState 389\n\n  214 cast_expr: CAST OP_LP expr AS type_name . OP_RP\n\n    OP_RP  shift, and go to state 444\n\n\nState 390\n\n   88 opt_join_type: CROSS .\n\n    $default  reduce using rule 88 (opt_join_type)\n\n\nState 391\n\n   85 opt_join_type: LEFT .\n   86              | LEFT . OUTER\n\n    OUTER  shift, and go to state 445\n\n    $default  reduce using rule 85 (opt_join_type)\n\n\nState 392\n\n   87 opt_join_type: INNER .\n\n    $default  reduce using rule 87 (opt_join_type)\n\n\nState 393\n\n   84 join_op: NATURAL opt_join_type . JOIN\n\n    JOIN  shift, and go to state 446\n\n\nState 394\n\n   72 table_ref: opt_table_prefix OP_LP select_no_parens . OP_RP opt_on_or_using\n\n    OP_RP  shift, and go to state 447\n\n\nState 395\n\n   73 table_ref: opt_table_prefix OP_LP table_ref . OP_RP opt_on_or_using\n   80 opt_table_prefix: table_ref . join_op\n\n    NATURAL   shift, and go to state 324\n    OP_COMMA  shift, and go to state 325\n    JOIN      shift, and go to state 326\n    OP_RP     shift, and go to state 448\n\n    join_op  go to state 327\n\n\nState 396\n\n   76 on_or_using: ON . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 449\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 397\n\n   77 on_or_using: USING . OP_LP column_name_list OP_RP\n\n    OP_LP  shift, and go to state 450\n\n\nState 398\n\n   71 table_ref: opt_table_prefix table_name opt_on_or_using .\n\n    $default  reduce using rule 71 (table_ref)\n\n\nState 399\n\n   74 opt_on_or_using: on_or_using .\n\n    $default  reduce using rule 74 (opt_on_or_using)\n\n\nState 400\n\n   63 opt_group_clause: GROUP BY . expr_list opt_having_clause\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr_list       go to state 451\n    expr            go to state 127\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 401\n\n   34 window_clause: WINDOW . window_def_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    window_def_list  go to state 452\n    window_def       go to state 453\n    window_name      go to state 454\n    identifier       go to state 455\n\n\nState 402\n\n   25 select_clause: SELECT opt_all_or_distinct select_target opt_from_clause opt_where_clause opt_group_clause opt_window_clause .\n\n    $default  reduce using rule 25 (select_clause)\n\n\nState 403\n\n   32 opt_window_clause: window_clause .\n\n    $default  reduce using rule 32 (opt_window_clause)\n\n\nState 404\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  237 between_expr: operand BETWEEN operand AND operand .\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    NOT             shift, and go to state 231\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    $default  reduce using rule 237 (between_expr)\n\n    binary_op  go to state 204\n\n\nState 405\n\n  238 between_expr: operand NOT BETWEEN operand AND . operand\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 170\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    operand         go to state 456\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    case_expr       go to state 135\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n\n\nState 406\n\n  230 in_expr: operand opt_not IN OP_LP select_no_parens . OP_RP\n\n    OP_RP  shift, and go to state 457\n\n\nState 407\n\n  231 in_expr: operand opt_not IN OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 458\n\n\nState 408\n\n  239 exists_expr: opt_not EXISTS OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 239 (exists_expr)\n\n\nState 409\n\n  199 set_clause: OP_LP column_name_list OP_RP OP_EQUAL . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 459\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 410\n\n  138 opt_conflict_expr: OP_LP . indexed_column_list OP_RP where_clause\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    indexed_column_list  go to state 460\n    indexed_column       go to state 432\n    expr                 go to state 433\n    operand              go to state 128\n    cast_expr            go to state 129\n    scalar_expr          go to state 130\n    unary_expr           go to state 131\n    binary_expr          go to state 132\n    logic_expr           go to state 133\n    in_expr              go to state 134\n    case_expr            go to state 135\n    between_expr         go to state 136\n    exists_expr          go to state 137\n    comp_expr            go to state 138\n    extract_expr         go to state 139\n    array_index          go to state 140\n    literal              go to state 141\n    string_literal       go to state 142\n    bool_literal         go to state 143\n    num_literal          go to state 144\n    int_literal          go to state 145\n    float_literal        go to state 146\n    identifier           go to state 96\n    column_name          go to state 147\n    opt_not              go to state 148\n\n\nState 411\n\n  135 opt_on_conflict: ON CONFLICT opt_conflict_expr . DO NOTHING\n  136                | ON CONFLICT opt_conflict_expr . DO UPDATE set_clause_list where_clause\n\n    DO  shift, and go to state 461\n\n\nState 412\n\n  134 values_list: OP_LP expr_list . OP_RP\n\n    OP_RP  shift, and go to state 462\n\n\nState 413\n\n  133 super_values_list: values_list OP_COMMA . super_values_list\n\n    OP_LP  shift, and go to state 345\n\n    super_values_list  go to state 463\n    values_list        go to state 347\n\n\nState 414\n\n  100 opt_order_nulls: NULLS LAST .\n\n    $default  reduce using rule 100 (opt_order_nulls)\n\n\nState 415\n\n   99 opt_order_nulls: NULLS FIRST .\n\n    $default  reduce using rule 99 (opt_order_nulls)\n\n\nState 416\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS . select_stmt opt_check_option\n\n    WITH   shift, and go to state 1\n    OP_LP  shift, and go to state 4\n\n    $default  reduce using rule 110 (opt_with_clause)\n\n    select_stmt         go to state 464\n    select_with_parens  go to state 14\n    select_no_parens    go to state 15\n    opt_with_clause     go to state 40\n\n\nState 417\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 357\n\n    $default  reduce using rule 193 (opt_check_option)\n\n    opt_check_option  go to state 465\n\n\nState 418\n\n  122 create_view_stmt: CREATE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 122 (create_view_stmt)\n\n\nState 419\n\n  190 opt_check_option: WITH CHECK . OPTION\n\n    OPTION  shift, and go to state 466\n\n\nState 420\n\n  192 opt_check_option: WITH LOCAL . CHECK OPTION\n\n    CHECK  shift, and go to state 467\n\n\nState 421\n\n  191 opt_check_option: WITH CASCADED . CHECK OPTION\n\n    CHECK  shift, and go to state 468\n\n\nState 422\n\n  286 name: identifier .\n\n    $default  reduce using rule 286 (name)\n\n\nState 423\n\n  181 constraint_name: CONSTRAINT name .\n\n    $default  reduce using rule 181 (constraint_name)\n\n\nState 424\n\n  319 table_constraint: constraint_name CHECK . OP_LP expr OP_RP\n\n    OP_LP  shift, and go to state 469\n\n\nState 425\n\n  318 table_constraint: constraint_name UNIQUE . OP_LP indexed_column_list OP_RP\n\n    OP_LP  shift, and go to state 470\n\n\nState 426\n\n  317 table_constraint: constraint_name PRIMARY . KEY OP_LP indexed_column_list OP_RP\n\n    KEY  shift, and go to state 471\n\n\nState 427\n\n  320 table_constraint: constraint_name FOREIGN . KEY OP_LP column_name_list OP_RP foreign_clause\n\n    KEY  shift, and go to state 472\n\n\nState 428\n\n  119 create_table_stmt: CREATE opt_temp TABLE opt_if_not_exist table_name OP_LP column_def_list opt_table_constraint_list OP_RP .\n\n    $default  reduce using rule 119 (create_table_stmt)\n\n\nState 429\n\n  316 table_constraint_list: table_constraint OP_COMMA . table_constraint_list\n\n    CONSTRAINT  shift, and go to state 359\n\n    constraint_name        go to state 360\n    table_constraint_list  go to state 473\n    table_constraint       go to state 363\n\n\nState 430\n\n  150 column_def_list: column_def OP_COMMA column_def_list .\n\n    $default  reduce using rule 150 (column_def_list)\n\n\nState 431\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list . OP_RP opt_where_clause\n\n    OP_RP  shift, and go to state 474\n\n\nState 432\n\n  140 indexed_column_list: indexed_column .\n  141                    | indexed_column . OP_COMMA indexed_column_list\n\n    OP_COMMA  shift, and go to state 475\n\n    $default  reduce using rule 140 (indexed_column_list)\n\n\nState 433\n\n  142 indexed_column: expr . opt_order_behavior\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR    shift, and go to state 184\n    AND   shift, and go to state 185\n    ASC   shift, and go to state 281\n    DESC  shift, and go to state 282\n\n    $default  reduce using rule 107 (opt_order_behavior)\n\n    opt_order_behavior  go to state 476\n\n\nState 434\n\n  298 character_conflicta: NATIONAL CHAR opt_varying .\n\n    $default  reduce using rule 298 (character_conflicta)\n\n\nState 435\n\n  297 character_conflicta: NATIONAL CHARACTER opt_varying .\n\n    $default  reduce using rule 297 (character_conflicta)\n\n\nState 436\n\n  160 constraint_type: CHECK OP_LP . expr OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 477\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 437\n\n  157 constraint_type: PRIMARY KEY .\n\n    $default  reduce using rule 157 (constraint_type)\n\n\nState 438\n\n  158 constraint_type: NOT NULL .\n\n    $default  reduce using rule 158 (constraint_type)\n\n\nState 439\n\n  162 foreign_clause: REFERENCES table_name . opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec\n\n    OP_LP  shift, and go to state 61\n\n    $default  reduce using rule 195 (opt_column_name_list_p)\n\n    opt_column_name_list_p  go to state 478\n\n\nState 440\n\n  155 column_constraint_list: column_constraint column_constraint_list .\n\n    $default  reduce using rule 155 (column_constraint_list)\n\n\nState 441\n\n  291 character_with_length: character_conflicta OP_LP int_literal . OP_RP\n\n    OP_RP  shift, and go to state 479\n\n\nState 442\n\n  235 case_expr: CASE expr case_list ELSE expr END .\n\n    $default  reduce using rule 235 (case_expr)\n\n\nState 443\n\n  249 extract_expr: EXTRACT OP_LP datetime_field FROM expr OP_RP .\n\n    $default  reduce using rule 249 (extract_expr)\n\n\nState 444\n\n  214 cast_expr: CAST OP_LP expr AS type_name OP_RP .\n\n    $default  reduce using rule 214 (cast_expr)\n\n\nState 445\n\n   86 opt_join_type: LEFT OUTER .\n\n    $default  reduce using rule 86 (opt_join_type)\n\n\nState 446\n\n   84 join_op: NATURAL opt_join_type JOIN .\n\n    $default  reduce using rule 84 (join_op)\n\n\nState 447\n\n   72 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP . opt_on_or_using\n\n    ON     shift, and go to state 396\n    USING  shift, and go to state 397\n\n    $default  reduce using rule 75 (opt_on_or_using)\n\n    opt_on_or_using  go to state 480\n    on_or_using      go to state 399\n\n\nState 448\n\n   73 table_ref: opt_table_prefix OP_LP table_ref OP_RP . opt_on_or_using\n\n    ON     shift, and go to state 396\n    USING  shift, and go to state 397\n\n    $default  reduce using rule 75 (opt_on_or_using)\n\n    opt_on_or_using  go to state 481\n    on_or_using      go to state 399\n\n\nState 449\n\n   76 on_or_using: ON expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 76 (on_or_using)\n\n\nState 450\n\n   77 on_or_using: USING OP_LP . column_name_list OP_RP\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_name_list  go to state 482\n    identifier        go to state 96\n    column_name       go to state 97\n\n\nState 451\n\n   63 opt_group_clause: GROUP BY expr_list . opt_having_clause\n\n    HAVING  shift, and go to state 483\n\n    $default  reduce using rule 66 (opt_having_clause)\n\n    opt_having_clause  go to state 484\n\n\nState 452\n\n   34 window_clause: WINDOW window_def_list .\n\n    $default  reduce using rule 34 (window_clause)\n\n\nState 453\n\n   35 window_def_list: window_def .\n   36                | window_def . OP_COMMA window_def_list\n\n    OP_COMMA  shift, and go to state 485\n\n    $default  reduce using rule 35 (window_def_list)\n\n\nState 454\n\n   37 window_def: window_name . AS OP_LP window OP_RP\n\n    AS  shift, and go to state 486\n\n\nState 455\n\n   38 window_name: identifier .\n\n    $default  reduce using rule 38 (window_name)\n\n\nState 456\n\n  219 unary_expr: operand . ISNULL\n  220           | operand . IS NULL\n  221           | operand . IS NOT NULL\n  225 binary_expr: operand . binary_op operand\n  226            | operand . LIKE operand\n  227            | operand . NOT LIKE operand\n  238 between_expr: operand NOT BETWEEN operand AND operand .\n  243 comp_expr: operand . OP_EQUAL operand\n  244          | operand . OP_NOTEQUAL operand\n  245          | operand . OP_GREATERTHAN operand\n  246          | operand . OP_LESSTHAN operand\n  247          | operand . OP_LESSEQ operand\n  248          | operand . OP_GREATEREQ operand\n  256 array_index: operand . OP_LBRACKET int_literal OP_RBRACKET\n\n    OP_NOTEQUAL     shift, and go to state 187\n    OP_LESSTHAN     shift, and go to state 189\n    OP_GREATEREQ    shift, and go to state 190\n    OP_ADD          shift, and go to state 191\n    OP_SUB          shift, and go to state 192\n    OP_GREATERTHAN  shift, and go to state 193\n    OP_MUL          shift, and go to state 194\n    OP_MOD          shift, and go to state 195\n    IS              shift, and go to state 196\n    NOT             shift, and go to state 231\n    OP_LESSEQ       shift, and go to state 198\n    LIKE            shift, and go to state 199\n    OP_LBRACKET     shift, and go to state 200\n    OP_DIVIDE       shift, and go to state 201\n    ISNULL          shift, and go to state 202\n    OP_EQUAL        shift, and go to state 203\n\n    $default  reduce using rule 238 (between_expr)\n\n    binary_op  go to state 204\n\n\nState 457\n\n  230 in_expr: operand opt_not IN OP_LP select_no_parens OP_RP .\n\n    $default  reduce using rule 230 (in_expr)\n\n\nState 458\n\n  231 in_expr: operand opt_not IN OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 231 (in_expr)\n\n\nState 459\n\n  199 set_clause: OP_LP column_name_list OP_RP OP_EQUAL expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 199 (set_clause)\n\n\nState 460\n\n  138 opt_conflict_expr: OP_LP indexed_column_list . OP_RP where_clause\n\n    OP_RP  shift, and go to state 487\n\n\nState 461\n\n  135 opt_on_conflict: ON CONFLICT opt_conflict_expr DO . NOTHING\n  136                | ON CONFLICT opt_conflict_expr DO . UPDATE set_clause_list where_clause\n\n    UPDATE   shift, and go to state 488\n    NOTHING  shift, and go to state 489\n\n\nState 462\n\n  134 values_list: OP_LP expr_list OP_RP .\n\n    $default  reduce using rule 134 (values_list)\n\n\nState 463\n\n  133 super_values_list: values_list OP_COMMA super_values_list .\n\n    $default  reduce using rule 133 (super_values_list)\n\n\nState 464\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt . opt_check_option\n\n    WITH  shift, and go to state 357\n\n    $default  reduce using rule 193 (opt_check_option)\n\n    opt_check_option  go to state 490\n\n\nState 465\n\n  123 create_view_stmt: CREATE OR REPLACE opt_temp VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 123 (create_view_stmt)\n\n\nState 466\n\n  190 opt_check_option: WITH CHECK OPTION .\n\n    $default  reduce using rule 190 (opt_check_option)\n\n\nState 467\n\n  192 opt_check_option: WITH LOCAL CHECK . OPTION\n\n    OPTION  shift, and go to state 491\n\n\nState 468\n\n  191 opt_check_option: WITH CASCADED CHECK . OPTION\n\n    OPTION  shift, and go to state 492\n\n\nState 469\n\n  319 table_constraint: constraint_name CHECK OP_LP . expr OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 493\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 470\n\n  318 table_constraint: constraint_name UNIQUE OP_LP . indexed_column_list OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    indexed_column_list  go to state 494\n    indexed_column       go to state 432\n    expr                 go to state 433\n    operand              go to state 128\n    cast_expr            go to state 129\n    scalar_expr          go to state 130\n    unary_expr           go to state 131\n    binary_expr          go to state 132\n    logic_expr           go to state 133\n    in_expr              go to state 134\n    case_expr            go to state 135\n    between_expr         go to state 136\n    exists_expr          go to state 137\n    comp_expr            go to state 138\n    extract_expr         go to state 139\n    array_index          go to state 140\n    literal              go to state 141\n    string_literal       go to state 142\n    bool_literal         go to state 143\n    num_literal          go to state 144\n    int_literal          go to state 145\n    float_literal        go to state 146\n    identifier           go to state 96\n    column_name          go to state 147\n    opt_not              go to state 148\n\n\nState 471\n\n  317 table_constraint: constraint_name PRIMARY KEY . OP_LP indexed_column_list OP_RP\n\n    OP_LP  shift, and go to state 495\n\n\nState 472\n\n  320 table_constraint: constraint_name FOREIGN KEY . OP_LP column_name_list OP_RP foreign_clause\n\n    OP_LP  shift, and go to state 496\n\n\nState 473\n\n  316 table_constraint_list: table_constraint OP_COMMA table_constraint_list .\n\n    $default  reduce using rule 316 (table_constraint_list)\n\n\nState 474\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP . opt_where_clause\n\n    WHERE  shift, and go to state 249\n\n    $default  reduce using rule 68 (opt_where_clause)\n\n    opt_where_clause  go to state 497\n    where_clause      go to state 251\n\n\nState 475\n\n  141 indexed_column_list: indexed_column OP_COMMA . indexed_column_list\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    indexed_column_list  go to state 498\n    indexed_column       go to state 432\n    expr                 go to state 433\n    operand              go to state 128\n    cast_expr            go to state 129\n    scalar_expr          go to state 130\n    unary_expr           go to state 131\n    binary_expr          go to state 132\n    logic_expr           go to state 133\n    in_expr              go to state 134\n    case_expr            go to state 135\n    between_expr         go to state 136\n    exists_expr          go to state 137\n    comp_expr            go to state 138\n    extract_expr         go to state 139\n    array_index          go to state 140\n    literal              go to state 141\n    string_literal       go to state 142\n    bool_literal         go to state 143\n    num_literal          go to state 144\n    int_literal          go to state 145\n    float_literal        go to state 146\n    identifier           go to state 96\n    column_name          go to state 147\n    opt_not              go to state 148\n\n\nState 476\n\n  142 indexed_column: expr opt_order_behavior .\n\n    $default  reduce using rule 142 (indexed_column)\n\n\nState 477\n\n  160 constraint_type: CHECK OP_LP expr . OP_RP\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR     shift, and go to state 184\n    AND    shift, and go to state 185\n    OP_RP  shift, and go to state 499\n\n\nState 478\n\n  162 foreign_clause: REFERENCES table_name opt_column_name_list_p . opt_foreign_key_actions opt_constraint_attribute_spec\n\n    ON     shift, and go to state 500\n    MATCH  shift, and go to state 501\n\n    $default  reduce using rule 164 (opt_foreign_key_actions)\n\n    opt_foreign_key_actions  go to state 502\n    foreign_key_actions      go to state 503\n\n\nState 479\n\n  291 character_with_length: character_conflicta OP_LP int_literal OP_RP .\n\n    $default  reduce using rule 291 (character_with_length)\n\n\nState 480\n\n   72 table_ref: opt_table_prefix OP_LP select_no_parens OP_RP opt_on_or_using .\n\n    $default  reduce using rule 72 (table_ref)\n\n\nState 481\n\n   73 table_ref: opt_table_prefix OP_LP table_ref OP_RP opt_on_or_using .\n\n    $default  reduce using rule 73 (table_ref)\n\n\nState 482\n\n   77 on_or_using: USING OP_LP column_name_list . OP_RP\n\n    OP_RP  shift, and go to state 504\n\n\nState 483\n\n   65 opt_having_clause: HAVING . expr\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr            go to state 505\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 484\n\n   63 opt_group_clause: GROUP BY expr_list opt_having_clause .\n\n    $default  reduce using rule 63 (opt_group_clause)\n\n\nState 485\n\n   36 window_def_list: window_def OP_COMMA . window_def_list\n\n    IDENTIFIER  shift, and go to state 27\n\n    window_def_list  go to state 506\n    window_def       go to state 453\n    window_name      go to state 454\n    identifier       go to state 455\n\n\nState 486\n\n   37 window_def: window_name AS . OP_LP window OP_RP\n\n    OP_LP  shift, and go to state 507\n\n\nState 487\n\n  138 opt_conflict_expr: OP_LP indexed_column_list OP_RP . where_clause\n\n    WHERE  shift, and go to state 249\n\n    where_clause  go to state 508\n\n\nState 488\n\n  136 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE . set_clause_list where_clause\n\n    OP_LP       shift, and go to state 207\n    IDENTIFIER  shift, and go to state 27\n\n    set_clause_list  go to state 509\n    set_clause       go to state 209\n    identifier       go to state 96\n    column_name      go to state 210\n\n\nState 489\n\n  135 opt_on_conflict: ON CONFLICT opt_conflict_expr DO NOTHING .\n\n    $default  reduce using rule 135 (opt_on_conflict)\n\n\nState 490\n\n  124 create_view_stmt: CREATE OR REPLACE opt_temp RECURSIVE VIEW view_name opt_column_name_list_p AS select_stmt opt_check_option .\n\n    $default  reduce using rule 124 (create_view_stmt)\n\n\nState 491\n\n  192 opt_check_option: WITH LOCAL CHECK OPTION .\n\n    $default  reduce using rule 192 (opt_check_option)\n\n\nState 492\n\n  191 opt_check_option: WITH CASCADED CHECK OPTION .\n\n    $default  reduce using rule 191 (opt_check_option)\n\n\nState 493\n\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n  319 table_constraint: constraint_name CHECK OP_LP expr . OP_RP\n\n    OR     shift, and go to state 184\n    AND    shift, and go to state 185\n    OP_RP  shift, and go to state 510\n\n\nState 494\n\n  318 table_constraint: constraint_name UNIQUE OP_LP indexed_column_list . OP_RP\n\n    OP_RP  shift, and go to state 511\n\n\nState 495\n\n  317 table_constraint: constraint_name PRIMARY KEY OP_LP . indexed_column_list OP_RP\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    indexed_column_list  go to state 512\n    indexed_column       go to state 432\n    expr                 go to state 433\n    operand              go to state 128\n    cast_expr            go to state 129\n    scalar_expr          go to state 130\n    unary_expr           go to state 131\n    binary_expr          go to state 132\n    logic_expr           go to state 133\n    in_expr              go to state 134\n    case_expr            go to state 135\n    between_expr         go to state 136\n    exists_expr          go to state 137\n    comp_expr            go to state 138\n    extract_expr         go to state 139\n    array_index          go to state 140\n    literal              go to state 141\n    string_literal       go to state 142\n    bool_literal         go to state 143\n    num_literal          go to state 144\n    int_literal          go to state 145\n    float_literal        go to state 146\n    identifier           go to state 96\n    column_name          go to state 147\n    opt_not              go to state 148\n\n\nState 496\n\n  320 table_constraint: constraint_name FOREIGN KEY OP_LP . column_name_list OP_RP foreign_clause\n\n    IDENTIFIER  shift, and go to state 27\n\n    column_name_list  go to state 513\n    identifier        go to state 96\n    column_name       go to state 97\n\n\nState 497\n\n  120 create_index_stmt: CREATE opt_unique INDEX opt_if_not_exist table_name ON table_name OP_LP indexed_column_list OP_RP opt_where_clause .\n\n    $default  reduce using rule 120 (create_index_stmt)\n\n\nState 498\n\n  141 indexed_column_list: indexed_column OP_COMMA indexed_column_list .\n\n    $default  reduce using rule 141 (indexed_column_list)\n\n\nState 499\n\n  160 constraint_type: CHECK OP_LP expr OP_RP .\n\n    $default  reduce using rule 160 (constraint_type)\n\n\nState 500\n\n  168 foreign_key_actions: ON . UPDATE key_actions\n  169                    | ON . DELETE key_actions\n\n    DELETE  shift, and go to state 514\n    UPDATE  shift, and go to state 515\n\n\nState 501\n\n  165 foreign_key_actions: MATCH . FULL\n  166                    | MATCH . PARTIAL\n  167                    | MATCH . SIMPLE\n\n    SIMPLE   shift, and go to state 516\n    FULL     shift, and go to state 517\n    PARTIAL  shift, and go to state 518\n\n\nState 502\n\n  162 foreign_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions . opt_constraint_attribute_spec\n\n    NOT          shift, and go to state 519\n    DEFFERRABLE  shift, and go to state 520\n\n    NOT       [reduce using rule 177 (opt_constraint_attribute_spec)]\n    $default  reduce using rule 177 (opt_constraint_attribute_spec)\n\n    opt_constraint_attribute_spec  go to state 521\n\n\nState 503\n\n  163 opt_foreign_key_actions: foreign_key_actions .\n\n    $default  reduce using rule 163 (opt_foreign_key_actions)\n\n\nState 504\n\n   77 on_or_using: USING OP_LP column_name_list OP_RP .\n\n    $default  reduce using rule 77 (on_or_using)\n\n\nState 505\n\n   65 opt_having_clause: HAVING expr .\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    OR   shift, and go to state 184\n    AND  shift, and go to state 185\n\n    $default  reduce using rule 65 (opt_having_clause)\n\n\nState 506\n\n   36 window_def_list: window_def OP_COMMA window_def_list .\n\n    $default  reduce using rule 36 (window_def_list)\n\n\nState 507\n\n   37 window_def: window_name AS OP_LP . window OP_RP\n\n    IDENTIFIER  shift, and go to state 27\n\n    $default  reduce using rule 62 (opt_exist_window_name)\n\n    window                 go to state 522\n    opt_exist_window_name  go to state 523\n    identifier             go to state 524\n\n\nState 508\n\n  138 opt_conflict_expr: OP_LP indexed_column_list OP_RP where_clause .\n\n    $default  reduce using rule 138 (opt_conflict_expr)\n\n\nState 509\n\n  136 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list . where_clause\n\n    WHERE  shift, and go to state 249\n\n    where_clause  go to state 525\n\n\nState 510\n\n  319 table_constraint: constraint_name CHECK OP_LP expr OP_RP .\n\n    $default  reduce using rule 319 (table_constraint)\n\n\nState 511\n\n  318 table_constraint: constraint_name UNIQUE OP_LP indexed_column_list OP_RP .\n\n    $default  reduce using rule 318 (table_constraint)\n\n\nState 512\n\n  317 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list . OP_RP\n\n    OP_RP  shift, and go to state 526\n\n\nState 513\n\n  320 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list . OP_RP foreign_clause\n\n    OP_RP  shift, and go to state 527\n\n\nState 514\n\n  169 foreign_key_actions: ON DELETE . key_actions\n\n    RESTRICT  shift, and go to state 528\n    SET       shift, and go to state 529\n    NO        shift, and go to state 530\n    CASCADE   shift, and go to state 531\n\n    key_actions  go to state 532\n\n\nState 515\n\n  168 foreign_key_actions: ON UPDATE . key_actions\n\n    RESTRICT  shift, and go to state 528\n    SET       shift, and go to state 529\n    NO        shift, and go to state 530\n    CASCADE   shift, and go to state 531\n\n    key_actions  go to state 533\n\n\nState 516\n\n  167 foreign_key_actions: MATCH SIMPLE .\n\n    $default  reduce using rule 167 (foreign_key_actions)\n\n\nState 517\n\n  165 foreign_key_actions: MATCH FULL .\n\n    $default  reduce using rule 165 (foreign_key_actions)\n\n\nState 518\n\n  166 foreign_key_actions: MATCH PARTIAL .\n\n    $default  reduce using rule 166 (foreign_key_actions)\n\n\nState 519\n\n  176 opt_constraint_attribute_spec: NOT . DEFFERRABLE opt_initial_time\n\n    DEFFERRABLE  shift, and go to state 534\n\n\nState 520\n\n  175 opt_constraint_attribute_spec: DEFFERRABLE . opt_initial_time\n\n    INITIALLY  shift, and go to state 535\n\n    $default  reduce using rule 180 (opt_initial_time)\n\n    opt_initial_time  go to state 536\n\n\nState 521\n\n  162 foreign_clause: REFERENCES table_name opt_column_name_list_p opt_foreign_key_actions opt_constraint_attribute_spec .\n\n    $default  reduce using rule 162 (foreign_clause)\n\n\nState 522\n\n   37 window_def: window_name AS OP_LP window . OP_RP\n\n    OP_RP  shift, and go to state 537\n\n\nState 523\n\n   39 window: opt_exist_window_name . opt_partition opt_order_clause opt_frame_clause\n\n    PARTITION  shift, and go to state 538\n\n    $default  reduce using rule 41 (opt_partition)\n\n    opt_partition  go to state 539\n\n\nState 524\n\n   61 opt_exist_window_name: identifier .\n\n    $default  reduce using rule 61 (opt_exist_window_name)\n\n\nState 525\n\n  136 opt_on_conflict: ON CONFLICT opt_conflict_expr DO UPDATE set_clause_list where_clause .\n\n    $default  reduce using rule 136 (opt_on_conflict)\n\n\nState 526\n\n  317 table_constraint: constraint_name PRIMARY KEY OP_LP indexed_column_list OP_RP .\n\n    $default  reduce using rule 317 (table_constraint)\n\n\nState 527\n\n  320 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list OP_RP . foreign_clause\n\n    REFERENCES  shift, and go to state 377\n\n    foreign_clause  go to state 540\n\n\nState 528\n\n  173 key_actions: RESTRICT .\n\n    $default  reduce using rule 173 (key_actions)\n\n\nState 529\n\n  170 key_actions: SET . NULL\n  171            | SET . DEFAULT\n\n    DEFAULT  shift, and go to state 541\n    NULL     shift, and go to state 542\n\n\nState 530\n\n  174 key_actions: NO . ACTION\n\n    ACTION  shift, and go to state 543\n\n\nState 531\n\n  172 key_actions: CASCADE .\n\n    $default  reduce using rule 172 (key_actions)\n\n\nState 532\n\n  169 foreign_key_actions: ON DELETE key_actions .\n\n    $default  reduce using rule 169 (foreign_key_actions)\n\n\nState 533\n\n  168 foreign_key_actions: ON UPDATE key_actions .\n\n    $default  reduce using rule 168 (foreign_key_actions)\n\n\nState 534\n\n  176 opt_constraint_attribute_spec: NOT DEFFERRABLE . opt_initial_time\n\n    INITIALLY  shift, and go to state 535\n\n    $default  reduce using rule 180 (opt_initial_time)\n\n    opt_initial_time  go to state 544\n\n\nState 535\n\n  178 opt_initial_time: INITIALLY . DEFERRED\n  179                 | INITIALLY . IMMEDIATE\n\n    DEFERRED   shift, and go to state 545\n    IMMEDIATE  shift, and go to state 546\n\n\nState 536\n\n  175 opt_constraint_attribute_spec: DEFFERRABLE opt_initial_time .\n\n    $default  reduce using rule 175 (opt_constraint_attribute_spec)\n\n\nState 537\n\n   37 window_def: window_name AS OP_LP window OP_RP .\n\n    $default  reduce using rule 37 (window_def)\n\n\nState 538\n\n   40 opt_partition: PARTITION . BY expr_list\n\n    BY  shift, and go to state 547\n\n\nState 539\n\n   39 window: opt_exist_window_name opt_partition . opt_order_clause opt_frame_clause\n\n    ORDER  shift, and go to state 87\n\n    $default  reduce using rule 98 (opt_order_clause)\n\n    opt_order_clause  go to state 548\n\n\nState 540\n\n  320 table_constraint: constraint_name FOREIGN KEY OP_LP column_name_list OP_RP foreign_clause .\n\n    $default  reduce using rule 320 (table_constraint)\n\n\nState 541\n\n  171 key_actions: SET DEFAULT .\n\n    $default  reduce using rule 171 (key_actions)\n\n\nState 542\n\n  170 key_actions: SET NULL .\n\n    $default  reduce using rule 170 (key_actions)\n\n\nState 543\n\n  174 key_actions: NO ACTION .\n\n    $default  reduce using rule 174 (key_actions)\n\n\nState 544\n\n  176 opt_constraint_attribute_spec: NOT DEFFERRABLE opt_initial_time .\n\n    $default  reduce using rule 176 (opt_constraint_attribute_spec)\n\n\nState 545\n\n  178 opt_initial_time: INITIALLY DEFERRED .\n\n    $default  reduce using rule 178 (opt_initial_time)\n\n\nState 546\n\n  179 opt_initial_time: INITIALLY IMMEDIATE .\n\n    $default  reduce using rule 179 (opt_initial_time)\n\n\nState 547\n\n   40 opt_partition: PARTITION BY . expr_list\n\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    expr_list       go to state 549\n    expr            go to state 127\n    operand         go to state 128\n    cast_expr       go to state 129\n    scalar_expr     go to state 130\n    unary_expr      go to state 131\n    binary_expr     go to state 132\n    logic_expr      go to state 133\n    in_expr         go to state 134\n    case_expr       go to state 135\n    between_expr    go to state 136\n    exists_expr     go to state 137\n    comp_expr       go to state 138\n    extract_expr    go to state 139\n    array_index     go to state 140\n    literal         go to state 141\n    string_literal  go to state 142\n    bool_literal    go to state 143\n    num_literal     go to state 144\n    int_literal     go to state 145\n    float_literal   go to state 146\n    identifier      go to state 96\n    column_name     go to state 147\n    opt_not         go to state 148\n\n\nState 548\n\n   39 window: opt_exist_window_name opt_partition opt_order_clause . opt_frame_clause\n\n    RANGE   shift, and go to state 550\n    ROWS    shift, and go to state 551\n    GROUPS  shift, and go to state 552\n\n    $default  reduce using rule 44 (opt_frame_clause)\n\n    opt_frame_clause  go to state 553\n    range_or_rows     go to state 554\n\n\nState 549\n\n   40 opt_partition: PARTITION BY expr_list .\n\n    $default  reduce using rule 40 (opt_partition)\n\n\nState 550\n\n   45 range_or_rows: RANGE .\n\n    $default  reduce using rule 45 (range_or_rows)\n\n\nState 551\n\n   46 range_or_rows: ROWS .\n\n    $default  reduce using rule 46 (range_or_rows)\n\n\nState 552\n\n   47 range_or_rows: GROUPS .\n\n    $default  reduce using rule 47 (range_or_rows)\n\n\nState 553\n\n   39 window: opt_exist_window_name opt_partition opt_order_clause opt_frame_clause .\n\n    $default  reduce using rule 39 (window)\n\n\nState 554\n\n   42 opt_frame_clause: range_or_rows . frame_bound_start opt_frame_exclude\n   43                 | range_or_rows . BETWEEN frame_bound_start AND frame_bound_end opt_frame_exclude\n\n    BETWEEN        shift, and go to state 555\n    UNBOUNDED      shift, and go to state 556\n    CURRENT        shift, and go to state 557\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    frame_bound_start  go to state 558\n    frame_bound        go to state 559\n    expr               go to state 560\n    operand            go to state 128\n    cast_expr          go to state 129\n    scalar_expr        go to state 130\n    unary_expr         go to state 131\n    binary_expr        go to state 132\n    logic_expr         go to state 133\n    in_expr            go to state 134\n    case_expr          go to state 135\n    between_expr       go to state 136\n    exists_expr        go to state 137\n    comp_expr          go to state 138\n    extract_expr       go to state 139\n    array_index        go to state 140\n    literal            go to state 141\n    string_literal     go to state 142\n    bool_literal       go to state 143\n    num_literal        go to state 144\n    int_literal        go to state 145\n    float_literal      go to state 146\n    identifier         go to state 96\n    column_name        go to state 147\n    opt_not            go to state 148\n\n\nState 555\n\n   43 opt_frame_clause: range_or_rows BETWEEN . frame_bound_start AND frame_bound_end opt_frame_exclude\n\n    UNBOUNDED      shift, and go to state 556\n    CURRENT        shift, and go to state 557\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    frame_bound_start  go to state 561\n    frame_bound        go to state 559\n    expr               go to state 560\n    operand            go to state 128\n    cast_expr          go to state 129\n    scalar_expr        go to state 130\n    unary_expr         go to state 131\n    binary_expr        go to state 132\n    logic_expr         go to state 133\n    in_expr            go to state 134\n    case_expr          go to state 135\n    between_expr       go to state 136\n    exists_expr        go to state 137\n    comp_expr          go to state 138\n    extract_expr       go to state 139\n    array_index        go to state 140\n    literal            go to state 141\n    string_literal     go to state 142\n    bool_literal       go to state 143\n    num_literal        go to state 144\n    int_literal        go to state 145\n    float_literal      go to state 146\n    identifier         go to state 96\n    column_name        go to state 147\n    opt_not            go to state 148\n\n\nState 556\n\n   49 frame_bound_start: UNBOUNDED . PRECEDING\n\n    PRECEDING  shift, and go to state 562\n\n\nState 557\n\n   54 frame_bound: CURRENT . ROW\n\n    ROW  shift, and go to state 563\n\n\nState 558\n\n   42 opt_frame_clause: range_or_rows frame_bound_start . opt_frame_exclude\n\n    EXCLUDE  shift, and go to state 564\n\n    $default  reduce using rule 56 (opt_frame_exclude)\n\n    opt_frame_exclude  go to state 565\n\n\nState 559\n\n   48 frame_bound_start: frame_bound .\n\n    $default  reduce using rule 48 (frame_bound_start)\n\n\nState 560\n\n   52 frame_bound: expr . PRECEDING\n   53            | expr . FOLLOWING\n  228 logic_expr: expr . AND expr\n  229           | expr . OR expr\n\n    PRECEDING  shift, and go to state 566\n    OR         shift, and go to state 184\n    FOLLOWING  shift, and go to state 567\n    AND        shift, and go to state 185\n\n\nState 561\n\n   43 opt_frame_clause: range_or_rows BETWEEN frame_bound_start . AND frame_bound_end opt_frame_exclude\n\n    AND  shift, and go to state 568\n\n\nState 562\n\n   49 frame_bound_start: UNBOUNDED PRECEDING .\n\n    $default  reduce using rule 49 (frame_bound_start)\n\n\nState 563\n\n   54 frame_bound: CURRENT ROW .\n\n    $default  reduce using rule 54 (frame_bound)\n\n\nState 564\n\n   55 opt_frame_exclude: EXCLUDE . frame_exclude\n\n    CURRENT  shift, and go to state 569\n    TIES     shift, and go to state 570\n    GROUP    shift, and go to state 571\n    NO       shift, and go to state 572\n\n    frame_exclude  go to state 573\n\n\nState 565\n\n   42 opt_frame_clause: range_or_rows frame_bound_start opt_frame_exclude .\n\n    $default  reduce using rule 42 (opt_frame_clause)\n\n\nState 566\n\n   52 frame_bound: expr PRECEDING .\n\n    $default  reduce using rule 52 (frame_bound)\n\n\nState 567\n\n   53 frame_bound: expr FOLLOWING .\n\n    $default  reduce using rule 53 (frame_bound)\n\n\nState 568\n\n   43 opt_frame_clause: range_or_rows BETWEEN frame_bound_start AND . frame_bound_end opt_frame_exclude\n\n    UNBOUNDED      shift, and go to state 574\n    CURRENT        shift, and go to state 557\n    OP_SUB         shift, and go to state 112\n    FALSE          shift, and go to state 113\n    OP_MUL         shift, and go to state 114\n    TRUE           shift, and go to state 115\n    NOT            shift, and go to state 116\n    CASE           shift, and go to state 117\n    EXTRACT        shift, and go to state 118\n    OP_LP          shift, and go to state 119\n    CAST           shift, and go to state 120\n    NULL           shift, and go to state 121\n    INTLITERAL     shift, and go to state 122\n    STRINGLITERAL  shift, and go to state 123\n    FLOATLITERAL   shift, and go to state 124\n    IDENTIFIER     shift, and go to state 27\n\n    $default  reduce using rule 285 (opt_not)\n\n    frame_bound_end  go to state 575\n    frame_bound      go to state 576\n    expr             go to state 560\n    operand          go to state 128\n    cast_expr        go to state 129\n    scalar_expr      go to state 130\n    unary_expr       go to state 131\n    binary_expr      go to state 132\n    logic_expr       go to state 133\n    in_expr          go to state 134\n    case_expr        go to state 135\n    between_expr     go to state 136\n    exists_expr      go to state 137\n    comp_expr        go to state 138\n    extract_expr     go to state 139\n    array_index      go to state 140\n    literal          go to state 141\n    string_literal   go to state 142\n    bool_literal     go to state 143\n    num_literal      go to state 144\n    int_literal      go to state 145\n    float_literal    go to state 146\n    identifier       go to state 96\n    column_name      go to state 147\n    opt_not          go to state 148\n\n\nState 569\n\n   58 frame_exclude: CURRENT . ROW\n\n    ROW  shift, and go to state 577\n\n\nState 570\n\n   60 frame_exclude: TIES .\n\n    $default  reduce using rule 60 (frame_exclude)\n\n\nState 571\n\n   59 frame_exclude: GROUP .\n\n    $default  reduce using rule 59 (frame_exclude)\n\n\nState 572\n\n   57 frame_exclude: NO . OTHERS\n\n    OTHERS  shift, and go to state 578\n\n\nState 573\n\n   55 opt_frame_exclude: EXCLUDE frame_exclude .\n\n    $default  reduce using rule 55 (opt_frame_exclude)\n\n\nState 574\n\n   51 frame_bound_end: UNBOUNDED . FOLLOWING\n\n    FOLLOWING  shift, and go to state 579\n\n\nState 575\n\n   43 opt_frame_clause: range_or_rows BETWEEN frame_bound_start AND frame_bound_end . opt_frame_exclude\n\n    EXCLUDE  shift, and go to state 564\n\n    $default  reduce using rule 56 (opt_frame_exclude)\n\n    opt_frame_exclude  go to state 580\n\n\nState 576\n\n   50 frame_bound_end: frame_bound .\n\n    $default  reduce using rule 50 (frame_bound_end)\n\n\nState 577\n\n   58 frame_exclude: CURRENT ROW .\n\n    $default  reduce using rule 58 (frame_exclude)\n\n\nState 578\n\n   57 frame_exclude: NO OTHERS .\n\n    $default  reduce using rule 57 (frame_exclude)\n\n\nState 579\n\n   51 frame_bound_end: UNBOUNDED FOLLOWING .\n\n    $default  reduce using rule 51 (frame_bound_end)\n\n\nState 580\n\n   43 opt_frame_clause: range_or_rows BETWEEN frame_bound_start AND frame_bound_end opt_frame_exclude .\n\n    $default  reduce using rule 43 (opt_frame_clause)\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/flex.l",
    "content": "%{\n#include \"bison_parser.h\"\n#include <stdio.h>\n#include <sstream>\n#include <string>\n#include <cstring>\n#define TOKEN(name) { return SQL_##name; }\nstatic thread_local std::stringstream strbuf;\n%}\n\n%option reentrant\n%option bison-bridge\n%option never-interactive\n%option batch\n%option noyywrap\n%option nounput\n%option warn\n%option case-insensitive\n%option bison-locations\n%option header-file=\"flex_lexer.h\"\n%option outfile=\"flex_lexer.cpp\"\n%option prefix=\"ff_\"\n%s COMMENT\n%x singlequotedstring\n\n%%\n\"!=\"\tTOKEN(OP_NOTEQUAL)\nSIMPLE\tTOKEN(SIMPLE)\nTEXT\tTOKEN(TEXT)\nOVER\tTOKEN(OVER)\nBETWEEN\tTOKEN(BETWEEN)\n\";\"\tTOKEN(OP_SEMI)\nBIGINT\tTOKEN(BIGINT)\nLIMIT\tTOKEN(LIMIT)\nWITH\tTOKEN(WITH)\nORDER\tTOKEN(ORDER)\nLAST\tTOKEN(LAST)\nUNBOUNDED\tTOKEN(UNBOUNDED)\nPRECEDING\tTOKEN(PRECEDING)\nEXCEPT\tTOKEN(EXCEPT)\nNUMERIC\tTOKEN(NUMERIC)\n\"<\"\tTOKEN(OP_LESSTHAN)\nPROCEDURE\tTOKEN(PROCEDURE)\nACTION\tTOKEN(ACTION)\nFIRST\tTOKEN(FIRST)\n\">=\"\tTOKEN(OP_GREATEREQ)\nCHECK\tTOKEN(CHECK)\nFULL\tTOKEN(FULL)\nNATURAL\tTOKEN(NATURAL)\nDOUBLE\tTOKEN(DOUBLE)\nNATIONAL\tTOKEN(NATIONAL)\n\"+\"\tTOKEN(OP_ADD)\nCURRENT\tTOKEN(CURRENT)\nTRIGGER\tTOKEN(TRIGGER)\n\"-\"\tTOKEN(OP_SUB)\nFALSE\tTOKEN(FALSE)\nUNIQUE\tTOKEN(UNIQUE)\nWHERE\tTOKEN(WHERE)\nMINUTE\tTOKEN(MINUTE)\nBEFORE\tTOKEN(BEFORE)\nON\tTOKEN(ON)\nPARTIAL\tTOKEN(PARTIAL)\nOF\tTOKEN(OF)\nAFTER\tTOKEN(AFTER)\nPRIMARY\tTOKEN(PRIMARY)\nMONTH\tTOKEN(MONTH)\nDEFERRED\tTOKEN(DEFERRED)\n\"$$\"\tTOKEN(OP_DOUBLE_DOLLAR)\nVARYING\tTOKEN(VARYING)\n\">\"\tTOKEN(OP_GREATERTHAN)\nOR\tTOKEN(OR)\nPLPGSQL\tTOKEN(PLPGSQL)\nDELETE\tTOKEN(DELETE)\nINDEX\tTOKEN(INDEX)\nRETURN\tTOKEN(RETURN)\n\"*\"\tTOKEN(OP_MUL)\nFOREIGN\tTOKEN(FOREIGN)\nRESTRICT\tTOKEN(RESTRICT)\nFOLLOWING\tTOKEN(FOLLOWING)\nTIES\tTOKEN(TIES)\nDEC\tTOKEN(DEC)\nSELECT\tTOKEN(SELECT)\nBEGIN\tTOKEN(BEGIN)\nLANGUAGE\tTOKEN(LANGUAGE)\nDISTINCT\tTOKEN(DISTINCT)\nTRUE\tTOKEN(TRUE)\nBY\tTOKEN(BY)\n\"%\"\tTOKEN(OP_MOD)\nVALUES\tTOKEN(VALUES)\nIS\tTOKEN(IS)\nROW\tTOKEN(ROW)\nFUNCTION\tTOKEN(FUNCTION)\nEND\tTOKEN(END)\nRECURSIVE\tTOKEN(RECURSIVE)\nFOR\tTOKEN(FOR)\nUNION\tTOKEN(UNION)\nNULLS\tTOKEN(NULLS)\nUPDATE\tTOKEN(UPDATE)\nELSE\tTOKEN(ELSE)\nRANGE\tTOKEN(RANGE)\nOFFSET\tTOKEN(OFFSET)\nINDEXED\tTOKEN(INDEXED)\nINSTEAD\tTOKEN(INSTEAD)\nNCHAR\tTOKEN(NCHAR)\nAND\tTOKEN(AND)\nREINDEX\tTOKEN(REINDEX)\nINITIALLY\tTOKEN(INITIALLY)\nYEAR\tTOKEN(YEAR)\nPRECISION\tTOKEN(PRECISION)\nFILTER\tTOKEN(FILTER)\nNOT\tTOKEN(NOT)\nVIEW\tTOKEN(VIEW)\nDEFFERRABLE\tTOKEN(DEFFERRABLE)\nREAL\tTOKEN(REAL)\nTHEN\tTOKEN(THEN)\nOPTION\tTOKEN(OPTION)\nDEFAULT\tTOKEN(DEFAULT)\nGLOBAL\tTOKEN(GLOBAL)\nCROSS\tTOKEN(CROSS)\nCHAR\tTOKEN(CHAR)\nREFERENCES\tTOKEN(REFERENCES)\n\"^\"\tTOKEN(OP_XOR)\nGROUP\tTOKEN(GROUP)\nCASE\tTOKEN(CASE)\nSET\tTOKEN(SET)\nHOUR\tTOKEN(HOUR)\nNO\tTOKEN(NO)\nCOLUMN\tTOKEN(COLUMN)\nLOCAL\tTOKEN(LOCAL)\nDROP\tTOKEN(DROP)\nREPLACE\tTOKEN(REPLACE)\nASC\tTOKEN(ASC)\n\",\"\tTOKEN(OP_COMMA)\nTABLE\tTOKEN(TABLE)\nARRAY\tTOKEN(ARRAY)\nIF\tTOKEN(IF)\nEXTRACT\tTOKEN(EXTRACT)\nLEFT\tTOKEN(LEFT)\nOUTER\tTOKEN(OUTER)\nDECIMAL\tTOKEN(DECIMAL)\nPARTITION\tTOKEN(PARTITION)\nCASCADE\tTOKEN(CASCADE)\nADD\tTOKEN(ADD)\nOTHERS\tTOKEN(OTHERS)\n\"<=\"\tTOKEN(OP_LESSEQ)\nMATCH\tTOKEN(MATCH)\nALL\tTOKEN(ALL)\nROWS\tTOKEN(ROWS)\nJOIN\tTOKEN(JOIN)\nLIKE\tTOKEN(LIKE)\nINTEGER\tTOKEN(INTEGER)\n\")\"\tTOKEN(OP_RP)\nINT\tTOKEN(INT)\nBOOLEAN\tTOKEN(BOOLEAN)\nKEY\tTOKEN(KEY)\nEACH\tTOKEN(EACH)\nUSING\tTOKEN(USING)\nRENAME\tTOKEN(RENAME)\nDO\tTOKEN(DO)\nFLOAT\tTOKEN(FLOAT)\n\"(\"\tTOKEN(OP_LP)\nCHARACTER\tTOKEN(CHARACTER)\nUMINUS\tTOKEN(UMINUS)\nCAST\tTOKEN(CAST)\nGROUPS\tTOKEN(GROUPS)\nNULL\tTOKEN(NULL)\nSMALLINT\tTOKEN(SMALLINT)\nINSERT\tTOKEN(INSERT)\nTEMPORARY\tTOKEN(TEMPORARY)\nCONSTRAINT\tTOKEN(CONSTRAINT)\nCREATE\tTOKEN(CREATE)\n\"[\"\tTOKEN(OP_LBRACKET)\nWHEN\tTOKEN(WHEN)\nIMMEDIATE\tTOKEN(IMMEDIATE)\nTO\tTOKEN(TO)\nEXCLUDE\tTOKEN(EXCLUDE)\nDAY\tTOKEN(DAY)\nCONFLICT\tTOKEN(CONFLICT)\n\"]\"\tTOKEN(OP_RBRACKET)\nEXECUTE\tTOKEN(EXECUTE)\nEXISTS\tTOKEN(EXISTS)\nINTO\tTOKEN(INTO)\n\"/\"\tTOKEN(OP_DIVIDE)\nCASCADED\tTOKEN(CASCADED)\nISNULL\tTOKEN(ISNULL)\nAS\tTOKEN(AS)\nINNER\tTOKEN(INNER)\nINTERSECT\tTOKEN(INTERSECT)\nIN\tTOKEN(IN)\n\"=\"\tTOKEN(OP_EQUAL)\nVARCHAR\tTOKEN(VARCHAR)\nALTER\tTOKEN(ALTER)\nDESC\tTOKEN(DESC)\nFROM\tTOKEN(FROM)\nTEMP\tTOKEN(TEMP)\nUNLOGGED\tTOKEN(UNLOGGED)\nSECOND\tTOKEN(SECOND)\nWINDOW\tTOKEN(WINDOW)\nNOTHING\tTOKEN(NOTHING)\nHAVING\tTOKEN(HAVING)\n-?[0-9]+\".\"[0-9]* |\n\".\"[0-9]* {\n\tyylval->fval = atof(yytext);\n\treturn SQL_FLOATLITERAL;\n\t}\n\n-?[0-9]+ {\n\tyylval->ival = atol(yytext);\n\treturn SQL_INTLITERAL;\n\t}\n\n\\\"[^\\\"\\n]+\\\" {\n\tstd::string s(yytext);\n\tyylval->sval = strdup(s.substr(1, s.size()-1).c_str());\n\treturn SQL_STRINGLITERAL;\n\t}\n\n[A-Za-z][A-Za-z0-9_]* {\n\tyylval->sval = strdup(yytext);\n\treturn SQL_IDENTIFIER;\n\t}\n\n\\' {\n\tBEGIN singlequotedstring; strbuf = std::stringstream{}; strbuf << '\\'';\n\t}\n\n<singlequotedstring>\\'\\' {\n\tstrbuf << '\\'';\n\t}\n\n<singlequotedstring>[^']* {\n\tstrbuf << yytext;\n\t}\n\n<singlequotedstring>\\' {\n\tBEGIN 0; \n\tstrbuf << '\\'';\n\tyylval->sval = strdup(strbuf.str().c_str());\n\treturn SQL_STRINGLITERAL;\n\t}\n\n<singlequotedstring><<EOF>> {\n\treturn 0;\n\t}\n\n[ \\t\\n]+ {\n\t}\n\n. {\n\treturn 0;\n\t}\n\n%%\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/flex_lexer.cpp",
    "content": "#line 2 \"flex_lexer.cpp\"\n\n#line 4 \"flex_lexer.cpp\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define ff__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer ff__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define ff__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer ff__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define ff__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer ff__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define ff__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string ff__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define ff__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes ff__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define ff__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer ff__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define ff__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer ff__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define ff__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state ff__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define ff__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer ff__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define ff_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state ff_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define ff_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state ff_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define ff_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack ff_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define ff_lex_ALREADY_DEFINED\n#else\n#define yylex ff_lex\n#endif\n\n#ifdef yyrestart\n#define ff_restart_ALREADY_DEFINED\n#else\n#define yyrestart ff_restart\n#endif\n\n#ifdef yylex_init\n#define ff_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init ff_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define ff_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra ff_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define ff_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy ff_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define ff_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug ff_get_debug\n#endif\n\n#ifdef yyset_debug\n#define ff_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug ff_set_debug\n#endif\n\n#ifdef yyget_extra\n#define ff_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra ff_get_extra\n#endif\n\n#ifdef yyset_extra\n#define ff_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra ff_set_extra\n#endif\n\n#ifdef yyget_in\n#define ff_get_in_ALREADY_DEFINED\n#else\n#define yyget_in ff_get_in\n#endif\n\n#ifdef yyset_in\n#define ff_set_in_ALREADY_DEFINED\n#else\n#define yyset_in ff_set_in\n#endif\n\n#ifdef yyget_out\n#define ff_get_out_ALREADY_DEFINED\n#else\n#define yyget_out ff_get_out\n#endif\n\n#ifdef yyset_out\n#define ff_set_out_ALREADY_DEFINED\n#else\n#define yyset_out ff_set_out\n#endif\n\n#ifdef yyget_leng\n#define ff_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng ff_get_leng\n#endif\n\n#ifdef yyget_text\n#define ff_get_text_ALREADY_DEFINED\n#else\n#define yyget_text ff_get_text\n#endif\n\n#ifdef yyget_lineno\n#define ff_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno ff_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define ff_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno ff_set_lineno\n#endif\n\n#ifdef yyget_column\n#define ff_get_column_ALREADY_DEFINED\n#else\n#define yyget_column ff_get_column\n#endif\n\n#ifdef yyset_column\n#define ff_set_column_ALREADY_DEFINED\n#else\n#define yyset_column ff_set_column\n#endif\n\n#ifdef yywrap\n#define ff_wrap_ALREADY_DEFINED\n#else\n#define yywrap ff_wrap\n#endif\n\n#ifdef yyget_lval\n#define ff_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval ff_get_lval\n#endif\n\n#ifdef yyset_lval\n#define ff_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval ff_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define ff_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc ff_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define ff_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc ff_set_lloc\n#endif\n\n#ifdef yyalloc\n#define ff_alloc_ALREADY_DEFINED\n#else\n#define yyalloc ff_alloc\n#endif\n\n#ifdef yyrealloc\n#define ff_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc ff_realloc\n#endif\n\n#ifdef yyfree\n#define ff_free_ALREADY_DEFINED\n#else\n#define yyfree ff_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* Returned upon end-of-file. */\n#define YY_NULL 0\n\n/* Promotes a possibly negative, possibly signed char to an\n *   integer in range [0..255] for use as an array index.\n */\n#define YY_SC_TO_UI(c) ((YY_CHAR)(c))\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Enter a start condition.  This macro really ought to take a parameter,\n * but we do it the disgusting crufty way forced on us by the ()-less\n * definition of BEGIN.\n */\n#define BEGIN yyg->yy_start = 1 + 2 *\n/* Translate the current start state into a value that can be later handed\n * to BEGIN to return to the state.  The YYSTATE alias is for lex\n * compatibility.\n */\n#define YY_START ((yyg->yy_start - 1) / 2)\n#define YYSTATE YY_START\n/* Action number for EOF rule of a given start state. */\n#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)\n/* Special action meaning \"start processing a new file\". */\n#define YY_NEW_FILE yyrestart(yyin, yyscanner)\n#define YY_END_OF_BUFFER_CHAR 0\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n/* The state buf must be large enough to hold one state per character in the\n * main buffer.\n */\n#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#define EOB_ACT_CONTINUE_SCAN 0\n#define EOB_ACT_END_OF_FILE 1\n#define EOB_ACT_LAST_MATCH 2\n\n#define YY_LESS_LINENO(n)\n#define YY_LINENO_REWIND_TO(ptr)\n\n/* Return all but the first \"n\" matched characters back to the input stream. */\n#define yyless(n)                                                     \\\n  do {                                                                \\\n    /* Undo effects of setting up yytext. */                          \\\n    int yyless_macro_arg = (n);                                       \\\n    YY_LESS_LINENO(yyless_macro_arg);                                 \\\n    *yy_cp = yyg->yy_hold_char;                                       \\\n    YY_RESTORE_YY_MORE_OFFSET                                         \\\n    yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\\n    YY_DO_BEFORE_ACTION; /* set up yytext again */                    \\\n  } while (0)\n#define unput(c) yyunput(c, yyg->yytext_ptr, yyscanner)\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n\n#define YY_BUFFER_NEW 0\n#define YY_BUFFER_NORMAL 1\n  /* When an EOF's been seen but there's still some text to process\n   * then we mark the buffer as YY_EOF_PENDING, to indicate that we\n   * shouldn't try reading from the input source any more.  We might\n   * still have a bunch of tokens to match, though, because of\n   * possible backing-up.\n   *\n   * When we actually see the EOF, we change the status to \"new\"\n   * (via yyrestart()), so that the user can continue scanning by\n   * just pointing yyin at a new input file.\n   */\n#define YY_BUFFER_EOF_PENDING 2\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\n/* We provide macros for accessing buffer states in case in the\n * future we want to put the buffer states in a more general\n * \"scanner state\".\n *\n * Returns the top of the stack, or NULL.\n */\n#define YY_CURRENT_BUFFER \\\n  (yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL)\n/* Same as previous macro, but useful when we know that the buffer stack is not\n * NULL or when we need an lvalue. For internal use only.\n */\n#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nstatic void yyensure_buffer_stack(yyscan_t yyscanner);\nstatic void yy_load_buffer_state(yyscan_t yyscanner);\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner);\n#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER, yyscanner)\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n#define yy_new_buffer yy_create_buffer\n#define yy_set_interactive(is_interactive)                        \\\n  {                                                               \\\n    if (!YY_CURRENT_BUFFER) {                                     \\\n      yyensure_buffer_stack(yyscanner);                           \\\n      YY_CURRENT_BUFFER_LVALUE =                                  \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);         \\\n    }                                                             \\\n    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\\n  }\n#define yy_set_bol(at_bol)                                \\\n  {                                                       \\\n    if (!YY_CURRENT_BUFFER) {                             \\\n      yyensure_buffer_stack(yyscanner);                   \\\n      YY_CURRENT_BUFFER_LVALUE =                          \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \\\n    }                                                     \\\n    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol;         \\\n  }\n#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)\n\n/* Begin user sect3 */\n\n#define ff_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\ntypedef flex_uint8_t YY_CHAR;\n\ntypedef int yy_state_type;\n\n#define yytext_ptr yytext_r\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner);\nstatic yy_state_type yy_try_NUL_trans(yy_state_type current_state,\n                                      yyscan_t yyscanner);\nstatic int yy_get_next_buffer(yyscan_t yyscanner);\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner);\n\n/* Done after the current pattern has been matched and before the\n * corresponding action - sets up yytext.\n */\n#define YY_DO_BEFORE_ACTION      \\\n  yyg->yytext_ptr = yy_bp;       \\\n  yyleng = (int)(yy_cp - yy_bp); \\\n  yyg->yy_hold_char = *yy_cp;    \\\n  *yy_cp = '\\0';                 \\\n  yyg->yy_c_buf_p = yy_cp;\n#define YY_NUM_RULES 186\n#define YY_END_OF_BUFFER 187\n/* This struct is not used in this scanner,\n   but its presence is necessary. */\nstruct yy_trans_info {\n  flex_int32_t yy_verify;\n  flex_int32_t yy_nxt;\n};\nstatic const flex_int16_t yy_accept[664] = {\n    0,   0,   0,   0,   0,   182, 182, 187, 185, 184, 184, 185, 185, 185, 62,\n    180, 135, 126, 50,  26,  107, 29,  176, 157, 177, 6,   16,  164, 44,  179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 146, 153, 96,  182, 183, 184, 1,\n    0,   42,  177, 176, 175, 119, 20,  179, 179, 179, 179, 179, 179, 179, 160,\n    179, 179, 179, 61,  179, 179, 179, 179, 179, 179, 179, 179, 133, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n\n    179, 179, 110, 179, 163, 64,  179, 179, 179, 179, 179, 179, 179, 179, 179,\n    179, 179, 101, 179, 37,  35,  179, 45,  179, 179, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 149, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 182, 181, 178, 175, 179, 117, 179, 121, 179, 79,\n    179, 106, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n    151, 55,  179, 179, 179, 179, 179, 179, 179, 179, 67,  179, 179, 179, 179,\n    179, 179, 179, 179, 179, 69,  179, 179, 179, 179,\n\n    179, 179, 179, 179, 179, 179, 179, 179, 127, 179, 179, 129, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 85,  179, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n    179, 65,  179, 179, 99,  179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 98,  138, 94,  179, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 167, 179, 179,\n\n    104, 130, 73,  179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 168,\n    22,  179, 179, 179, 179, 100, 179, 179, 179, 179, 179, 179, 179, 156, 179,\n    123, 179, 11,  112, 124, 179, 179, 179, 179, 179, 179, 179, 179, 179, 140,\n    179, 179, 179, 179, 179, 179, 4,   179, 179, 179, 179, 179, 179, 88,  179,\n    179, 179, 179, 179, 179, 179, 122, 179, 179, 179, 179, 179, 169, 3,   89,\n    54,  179, 60,  179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 86,  147,\n    179, 179, 9,   82,  179, 38,  166, 109, 179, 57,\n\n    179, 179, 179, 179, 179, 21,  179, 179, 179, 179, 93,  179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 179, 179, 179, 30,  179, 19,  134, 179, 179,\n    179, 179, 97,  179, 179, 48,  179, 161, 179, 179, 179, 179, 179, 179, 8,\n    103, 120, 179, 40,  179, 179, 78,  179, 71,  179, 179, 179, 10,  179, 113,\n    179, 179, 179, 179, 179, 179, 74,  179, 179, 179, 179, 179, 179, 179, 179,\n    179, 179, 179, 108, 179, 179, 179, 179, 70,  179, 179, 179, 131, 179, 179,\n    179, 32,  179, 18,  34,  179, 7,   179, 179, 179,\n\n    102, 179, 179, 145, 179, 179, 179, 179, 179, 47,  179, 24,  14,  179, 179,\n    155, 179, 84,  179, 179, 179, 92,  139, 174, 179, 179, 179, 142, 179, 179,\n    179, 159, 179, 33,  179, 179, 179, 179, 75,  90,  118, 179, 179, 179, 179,\n    179, 179, 179, 179, 179, 179, 132, 179, 179, 49,  171, 56,  2,   179, 179,\n    179, 137, 179, 31,  179, 72,  63,  179, 179, 172, 5,   128, 116, 179, 179,\n    179, 27,  114, 91,  179, 179, 179, 150, 154, 111, 179, 51,  179, 179, 76,\n    179, 77,  125, 179, 179, 179, 23,  173, 15,  36,\n\n    179, 46,  179, 179, 39,  179, 179, 179, 80,  105, 179, 179, 179, 28,  179,\n    179, 165, 43,  158, 179, 152, 179, 41,  179, 59,  179, 66,  179, 179, 179,\n    58,  25,  179, 179, 179, 179, 179, 179, 52,  141, 179, 179, 170, 136, 179,\n    179, 53,  148, 81,  162, 115, 13,  83,  17,  68,  179, 143, 12,  144, 179,\n    95,  87,  0};\n\nstatic const YY_CHAR yy_ec[256] = {\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  5,  1,  6,  7,\n    1,  8,  9,  10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17,\n    17, 1,  18, 19, 20, 21, 1,  1,  22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,\n    33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 1,  49, 50,\n    51, 1,  52, 53, 54, 55,\n\n    56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,\n    75, 76, 47, 1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,\n\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};\n\nstatic const YY_CHAR yy_meta[77] = {\n    0, 1, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1,\n    1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n    4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};\n\nstatic const flex_int16_t yy_base[668] = {\n    0,    0,    0,    0,    0,    219,  210,  215,  1318, 75,   77,   187,\n    0,    165,  1318, 1318, 1318, 1318, 1318, 1318, 1318, 152,  149,  1318,\n    66,   1318, 145,  1318, 144,  60,   56,   67,   68,   105,  159,  72,\n    109,  120,  52,   65,   122,  157,  172,  218,  134,  0,    180,  207,\n    270,  214,  161,  170,  87,   1318, 1318, 1318, 0,    151,  160,  1318,\n    148,  1318, 93,   134,  132,  1318, 1318, 0,    101,  121,  163,  179,\n    180,  171,  215,  245,  219,  216,  0,    218,  242,  260,  271,  235,\n    234,  281,  261,  269,  276,  289,  275,  292,  322,  286,  295,  284,\n    320,  288,  322,  296,  304,\n\n    313,  318,  0,    327,  367,  330,  336,  322,  334,  344,  341,  355,\n    339,  346,  349,  347,  365,  359,  379,  379,  0,    374,  391,  388,\n    378,  394,  382,  386,  399,  391,  444,  384,  407,  399,  412,  416,\n    428,  426,  431,  0,    430,  437,  453,  450,  447,  455,  454,  463,\n    458,  469,  0,    1318, 1318, 84,   465,  0,    474,  0,    482,  0,\n    490,  0,    481,  490,  478,  496,  494,  507,  489,  508,  492,  509,\n    513,  497,  500,  0,    510,  519,  517,  520,  510,  530,  517,  526,\n    533,  0,    554,  536,  528,  533,  537,  541,  546,  566,  558,  566,\n    559,  561,  571,  573,\n\n    555,  569,  561,  575,  577,  563,  579,  587,  583,  564,  573,  0,\n    583,  573,  574,  594,  602,  615,  616,  600,  605,  617,  626,  622,\n    619,  627,  614,  625,  630,  631,  634,  622,  622,  636,  641,  632,\n    644,  641,  638,  631,  648,  640,  657,  647,  647,  650,  657,  664,\n    676,  0,    669,  674,  675,  674,  671,  678,  674,  687,  690,  682,\n    683,  685,  684,  702,  690,  684,  711,  684,  694,  706,  705,  700,\n    704,  709,  713,  714,  723,  731,  741,  733,  745,  750,  0,    0,\n    751,  742,  741,  743,  736,  738,  740,  755,  749,  742,  746,  760,\n    747,  0,    759,  758,\n\n    0,    0,    0,    756,  752,  753,  758,  778,  782,  786,  776,  779,\n    786,  796,  0,    0,    786,  806,  794,  797,  0,    808,  789,  805,\n    797,  798,  813,  812,  0,    808,  0,    801,  0,    0,    0,    803,\n    812,  817,  807,  820,  817,  815,  816,  829,  820,  829,  846,  841,\n    841,  843,  847,  0,    857,  848,  865,  870,  867,  868,  0,    857,\n    858,  874,  866,  879,  864,  865,  0,    870,  882,  875,  876,  885,\n    877,  0,    0,    0,    886,  0,    873,  877,  885,  886,  904,  896,\n    912,  916,  917,  917,  0,    0,    922,  915,  0,    0,    917,  0,\n    0,    0,    927,  0,\n\n    928,  914,  934,  932,  935,  0,    925,  931,  924,  938,  0,    930,\n    944,  935,  930,  932,  947,  939,  949,  938,  955,  947,  952,  973,\n    0,    961,  0,    0,    958,  978,  977,  975,  971,  984,  983,  988,\n    993,  0,    975,  995,  993,  980,  988,  1001, 0,    0,    0,    998,\n    0,    990,  1004, 0,    993,  0,    999,  990,  998,  0,    994,  0,\n    1026, 997,  1014, 1000, 1013, 1032, 0,    1020, 1036, 1040, 1042, 1047,\n    1042, 1038, 1049, 1034, 1050, 1047, 0,    1040, 1054, 1041, 1048, 0,\n    1058, 1057, 1060, 0,    1048, 1067, 1056, 0,    1049, 0,    0,    1059,\n    0,    1060, 1073, 1059,\n\n    0,    1084, 1090, 0,    1076, 1087, 1081, 1100, 1088, 0,    1104, 0,\n    0,    1105, 1106, 0,    1092, 0,    1104, 1100, 1100, 0,    0,    0,\n    1115, 1114, 1107, 0,    1116, 1104, 1118, 0,    1117, 0,    1124, 1115,\n    1121, 1127, 0,    0,    0,    1120, 1124, 1122, 1129, 1130, 1122, 1130,\n    1147, 1145, 1137, 0,    1160, 1163, 0,    0,    0,    0,    1153, 1169,\n    1153, 0,    1168, 0,    1168, 0,    0,    1156, 1168, 0,    0,    0,\n    1172, 1173, 1159, 1171, 0,    0,    0,    1178, 1182, 1164, 0,    0,\n    0,    1171, 0,    1173, 1168, 0,    1178, 0,    0,    1189, 1188, 1182,\n    0,    0,    0,    0,\n\n    1183, 0,    1185, 1192, 0,    1193, 1194, 1216, 0,    0,    1201, 1205,\n    1208, 0,    1222, 1226, 0,    0,    0,    1213, 0,    1218, 0,    1231,\n    0,    1227, 0,    1230, 1211, 1218, 0,    0,    1225, 1233, 1228, 1238,\n    1239, 1240, 0,    0,    1222, 1244, 0,    0,    1230, 1240, 0,    0,\n    0,    0,    0,    0,    0,    0,    0,    1234, 0,    0,    0,    1249,\n    0,    0,    1318, 1305, 1309, 93,   1313};\n\nstatic const flex_int16_t yy_def[668] = {\n    0,   663, 1,   1,   1,   664, 664, 663, 663, 663, 663, 663, 665, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 663, 663, 663, 667, 663, 663, 663,\n    665, 663, 663, 663, 663, 663, 663, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 667, 663, 663, 663, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666, 666,\n    666, 666, 0,   663, 663, 663, 663};\n\nstatic const flex_int16_t yy_nxt[1395] = {\n    0,   8,   9,   10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21,\n    22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,\n    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,\n    45,  52,  45,  53,  54,  55,  8,   29,  30,  31,  32,  33,  34,  35,  36,\n    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,\n    45,  52,  58,  58,  58,  58,  64,  75,  62,  68,  69,  76,  70,  107, 79,\n    84,  108, 77,  71,  85,  72,  80,  67,  86,  73,  74,\n\n    154, 78,  81,  87,  99,  82,  88,  64,  83,  62,  100, 75,  150, 68,  69,\n    76,  70,  107, 79,  84,  108, 77,  71,  85,  72,  80,  89,  86,  73,  74,\n    101, 78,  81,  87,  99,  82,  88,  90,  83,  91,  100, 155, 150, 109, 102,\n    156, 103, 110, 154, 92,  63,  111, 153, 104, 105, 127, 89,  112, 152, 106,\n    101, 58,  58,  66,  65,  63,  128, 90,  62,  91,  61,  155, 129, 109, 102,\n    156, 103, 110, 113, 92,  93,  111, 146, 104, 105, 127, 114, 112, 94,  106,\n    147, 95,  115, 116, 96,  117, 128, 97,  148, 149,\n\n    98,  130, 129, 157, 160, 131, 59,  118, 113, 161, 93,  158, 146, 119, 663,\n    132, 114, 57,  94,  159, 147, 95,  115, 116, 96,  117, 57,  97,  148, 149,\n    98,  130, 133, 157, 160, 131, 134, 118, 162, 161, 135, 158, 663, 119, 120,\n    132, 166, 142, 143, 159, 144, 167, 121, 145, 122, 663, 123, 168, 124, 125,\n    126, 663, 133, 169, 663, 663, 134, 170, 162, 663, 135, 163, 164, 175, 120,\n    663, 166, 142, 143, 176, 144, 167, 121, 145, 122, 165, 123, 168, 124, 125,\n    126, 136, 171, 169, 172, 137, 173, 170, 138, 139,\n\n    181, 163, 164, 175, 177, 140, 174, 178, 141, 176, 182, 183, 184, 179, 185,\n    165, 186, 663, 191, 194, 180, 136, 171, 197, 172, 137, 173, 192, 138, 139,\n    181, 200, 663, 193, 177, 140, 174, 178, 141, 201, 182, 183, 184, 179, 185,\n    187, 186, 188, 191, 194, 180, 189, 195, 197, 198, 202, 199, 192, 196, 203,\n    204, 200, 190, 193, 210, 211, 663, 212, 213, 201, 215, 663, 216, 214, 217,\n    187, 663, 188, 218, 219, 220, 189, 195, 221, 198, 202, 199, 222, 196, 203,\n    204, 205, 190, 223, 210, 211, 206, 212, 213, 224,\n\n    215, 207, 216, 214, 217, 227, 208, 209, 218, 219, 220, 225, 226, 221, 228,\n    229, 230, 222, 231, 232, 233, 205, 234, 223, 235, 238, 206, 247, 236, 224,\n    248, 207, 251, 252, 237, 227, 208, 209, 253, 249, 663, 225, 226, 663, 228,\n    229, 230, 250, 231, 232, 233, 256, 234, 663, 235, 238, 257, 247, 236, 258,\n    248, 254, 251, 252, 237, 239, 260, 240, 253, 249, 241, 259, 255, 242, 264,\n    261, 265, 250, 243, 268, 244, 256, 262, 245, 246, 263, 257, 266, 269, 258,\n    272, 254, 270, 267, 273, 239, 260, 240, 271, 274,\n\n    241, 259, 255, 242, 264, 261, 265, 275, 243, 268, 244, 276, 262, 245, 246,\n    263, 277, 266, 269, 278, 272, 279, 270, 267, 273, 280, 281, 285, 271, 274,\n    282, 286, 283, 287, 290, 288, 291, 275, 292, 293, 294, 276, 297, 298, 295,\n    296, 277, 284, 289, 278, 299, 279, 300, 301, 302, 280, 281, 285, 303, 306,\n    282, 286, 283, 287, 290, 288, 291, 307, 292, 293, 294, 308, 297, 298, 295,\n    296, 309, 284, 289, 304, 299, 310, 300, 301, 302, 311, 305, 312, 303, 306,\n    313, 314, 315, 316, 317, 318, 319, 307, 320, 321,\n\n    322, 308, 323, 324, 325, 330, 309, 331, 328, 304, 332, 310, 326, 333, 334,\n    311, 305, 312, 329, 335, 313, 314, 315, 316, 317, 318, 319, 327, 320, 321,\n    322, 336, 323, 324, 325, 330, 337, 331, 328, 338, 332, 339, 326, 333, 334,\n    340, 341, 343, 329, 335, 344, 345, 346, 347, 348, 349, 350, 327, 342, 351,\n    352, 336, 353, 354, 355, 356, 337, 357, 358, 338, 359, 339, 360, 361, 362,\n    340, 341, 343, 363, 364, 344, 345, 346, 347, 348, 349, 350, 365, 342, 351,\n    352, 366, 353, 354, 355, 356, 367, 357, 358, 368,\n\n    359, 369, 360, 361, 362, 370, 371, 372, 363, 364, 373, 374, 375, 376, 377,\n    378, 379, 365, 380, 383, 381, 366, 382, 384, 385, 386, 367, 389, 390, 368,\n    392, 369, 391, 393, 387, 370, 371, 372, 394, 395, 373, 374, 375, 376, 377,\n    378, 379, 396, 380, 383, 381, 397, 382, 384, 385, 386, 388, 389, 390, 398,\n    392, 399, 391, 393, 387, 400, 401, 402, 394, 395, 403, 404, 405, 406, 407,\n    408, 409, 396, 410, 411, 412, 397, 413, 414, 415, 416, 388, 417, 418, 398,\n    419, 399, 420, 421, 422, 400, 401, 402, 423, 424,\n\n    403, 404, 405, 406, 407, 408, 409, 425, 410, 411, 412, 426, 413, 414, 415,\n    416, 427, 417, 418, 428, 419, 429, 420, 421, 422, 430, 431, 432, 423, 424,\n    433, 434, 435, 436, 437, 438, 439, 425, 440, 441, 443, 426, 444, 445, 446,\n    447, 427, 448, 449, 428, 442, 429, 450, 451, 452, 430, 431, 432, 453, 454,\n    433, 434, 435, 436, 437, 438, 439, 455, 440, 441, 443, 456, 444, 445, 446,\n    447, 457, 448, 449, 458, 442, 459, 450, 451, 452, 460, 461, 462, 453, 454,\n    463, 465, 466, 467, 464, 468, 469, 455, 470, 471,\n\n    472, 456, 473, 474, 475, 476, 457, 477, 478, 458, 479, 459, 480, 481, 482,\n    460, 461, 462, 483, 484, 463, 465, 466, 467, 464, 468, 469, 485, 470, 471,\n    472, 486, 473, 474, 475, 476, 487, 477, 478, 488, 479, 489, 480, 481, 482,\n    490, 491, 492, 483, 484, 493, 494, 495, 496, 497, 498, 499, 485, 500, 501,\n    502, 486, 503, 504, 505, 506, 487, 507, 508, 488, 509, 489, 510, 511, 512,\n    490, 491, 492, 513, 514, 493, 494, 495, 496, 497, 498, 499, 515, 500, 501,\n    502, 516, 503, 504, 505, 506, 517, 507, 508, 518,\n\n    509, 519, 510, 511, 512, 520, 521, 522, 513, 514, 523, 524, 525, 526, 527,\n    528, 529, 515, 530, 531, 532, 516, 533, 534, 535, 536, 517, 537, 538, 518,\n    539, 519, 540, 541, 544, 520, 521, 522, 545, 546, 523, 524, 525, 526, 527,\n    528, 529, 542, 530, 531, 532, 547, 533, 534, 535, 536, 548, 537, 538, 549,\n    539, 550, 540, 541, 544, 551, 543, 552, 545, 546, 553, 554, 555, 556, 557,\n    558, 559, 542, 560, 561, 562, 547, 563, 564, 565, 566, 548, 567, 568, 549,\n    569, 550, 570, 571, 572, 551, 543, 552, 573, 574,\n\n    553, 554, 555, 556, 557, 558, 559, 575, 560, 561, 562, 576, 563, 564, 565,\n    566, 577, 567, 568, 578, 569, 579, 570, 571, 572, 580, 581, 582, 573, 574,\n    583, 584, 585, 586, 587, 588, 589, 575, 590, 591, 592, 576, 593, 594, 595,\n    596, 577, 597, 598, 578, 599, 579, 600, 601, 602, 580, 581, 582, 603, 604,\n    583, 584, 585, 586, 587, 588, 589, 605, 590, 591, 592, 606, 593, 594, 595,\n    596, 607, 597, 598, 608, 599, 609, 600, 601, 602, 610, 611, 612, 603, 604,\n    613, 614, 615, 616, 617, 618, 619, 605, 620, 621,\n\n    622, 606, 623, 624, 625, 626, 607, 627, 628, 608, 629, 609, 630, 631, 632,\n    610, 611, 612, 633, 634, 613, 614, 615, 616, 617, 618, 619, 635, 620, 621,\n    622, 636, 623, 624, 625, 626, 637, 627, 628, 638, 629, 639, 630, 631, 632,\n    640, 641, 642, 633, 634, 643, 644, 645, 646, 647, 648, 649, 635, 650, 651,\n    652, 636, 653, 654, 655, 656, 637, 657, 658, 638, 659, 639, 660, 661, 662,\n    640, 641, 642, 663, 663, 643, 644, 645, 646, 647, 648, 649, 663, 650, 651,\n    652, 663, 653, 654, 655, 656, 663, 657, 658, 663,\n\n    659, 663, 660, 661, 662, 56,  56,  56,  56,  60,  663, 60,  60,  151, 151,\n    663, 151, 7,   663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663\n\n};\n\nstatic const flex_int16_t yy_chk[1395] = {\n    0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n    1,   1,   9,   9,   10,  10,  24,  30,  24,  29,  29,  30,  29,  38,  31,\n    32,  39,  30,  29,  32,  29,  31,  666, 32,  29,  29,\n\n    154, 30,  31,  32,  35,  31,  32,  62,  31,  62,  35,  30,  52,  29,  29,\n    30,  29,  38,  31,  32,  39,  30,  29,  32,  29,  31,  33,  32,  29,  29,\n    36,  30,  31,  32,  35,  31,  32,  33,  31,  33,  35,  68,  52,  40,  36,\n    69,  37,  40,  64,  33,  63,  40,  60,  37,  37,  44,  33,  40,  57,  37,\n    36,  58,  58,  28,  26,  22,  44,  33,  21,  33,  13,  68,  44,  40,  36,\n    69,  37,  40,  41,  33,  34,  40,  50,  37,  37,  44,  41,  40,  34,  37,\n    50,  34,  41,  42,  34,  42,  44,  34,  51,  51,\n\n    34,  46,  44,  70,  72,  46,  11,  42,  41,  73,  34,  71,  50,  42,  7,\n    46,  41,  6,   34,  71,  50,  34,  41,  42,  34,  42,  5,   34,  51,  51,\n    34,  46,  47,  70,  72,  46,  47,  42,  74,  73,  47,  71,  0,   42,  43,\n    46,  76,  49,  49,  71,  49,  77,  43,  49,  43,  0,   43,  79,  43,  43,\n    43,  0,   47,  80,  0,   0,   47,  80,  74,  0,   47,  75,  75,  83,  43,\n    0,   76,  49,  49,  84,  49,  77,  43,  49,  43,  75,  43,  79,  43,  43,\n    43,  48,  81,  80,  81,  48,  82,  80,  48,  48,\n\n    86,  75,  75,  83,  85,  48,  82,  85,  48,  84,  87,  88,  89,  85,  90,\n    75,  91,  0,   93,  95,  85,  48,  81,  97,  81,  48,  82,  94,  48,  48,\n    86,  99,  0,   94,  85,  48,  82,  85,  48,  100, 87,  88,  89,  85,  90,\n    92,  91,  92,  93,  95,  85,  92,  96,  97,  98,  101, 98,  94,  96,  102,\n    104, 99,  92,  94,  106, 107, 0,   108, 109, 100, 110, 0,   111, 109, 111,\n    92,  0,   92,  112, 113, 114, 92,  96,  115, 98,  101, 98,  116, 96,  102,\n    104, 105, 92,  117, 106, 107, 105, 108, 109, 118,\n\n    110, 105, 111, 109, 111, 120, 105, 105, 112, 113, 114, 119, 119, 115, 122,\n    123, 124, 116, 125, 126, 127, 105, 128, 117, 129, 130, 105, 132, 129, 118,\n    133, 105, 134, 135, 129, 120, 105, 105, 136, 133, 0,   119, 119, 0,   122,\n    123, 124, 133, 125, 126, 127, 138, 128, 0,   129, 130, 139, 132, 129, 141,\n    133, 137, 134, 135, 129, 131, 142, 131, 136, 133, 131, 141, 137, 131, 144,\n    143, 145, 133, 131, 147, 131, 138, 143, 131, 131, 143, 139, 146, 148, 141,\n    150, 137, 149, 146, 155, 131, 142, 131, 149, 157,\n\n    131, 141, 137, 131, 144, 143, 145, 159, 131, 147, 131, 161, 143, 131, 131,\n    143, 163, 146, 148, 164, 150, 165, 149, 146, 155, 166, 167, 169, 149, 157,\n    168, 170, 168, 171, 173, 172, 174, 159, 175, 177, 178, 161, 179, 180, 178,\n    178, 163, 168, 172, 164, 181, 165, 182, 183, 184, 166, 167, 169, 185, 188,\n    168, 170, 168, 171, 173, 172, 174, 189, 175, 177, 178, 190, 179, 180, 178,\n    178, 191, 168, 172, 187, 181, 192, 182, 183, 184, 193, 187, 194, 185, 188,\n    195, 196, 197, 198, 199, 200, 201, 189, 202, 203,\n\n    204, 190, 205, 206, 207, 210, 191, 211, 209, 187, 213, 192, 208, 214, 215,\n    193, 187, 194, 209, 216, 195, 196, 197, 198, 199, 200, 201, 208, 202, 203,\n    204, 217, 205, 206, 207, 210, 218, 211, 209, 219, 213, 220, 208, 214, 215,\n    221, 222, 223, 209, 216, 224, 225, 226, 227, 228, 229, 230, 208, 222, 231,\n    232, 217, 233, 234, 235, 236, 218, 237, 238, 219, 239, 220, 240, 241, 242,\n    221, 222, 223, 243, 244, 224, 225, 226, 227, 228, 229, 230, 245, 222, 231,\n    232, 246, 233, 234, 235, 236, 247, 237, 238, 248,\n\n    239, 249, 240, 241, 242, 251, 252, 253, 243, 244, 254, 255, 256, 257, 258,\n    259, 260, 245, 261, 263, 262, 246, 262, 264, 265, 266, 247, 268, 269, 248,\n    270, 249, 269, 271, 267, 251, 252, 253, 272, 273, 254, 255, 256, 257, 258,\n    259, 260, 274, 261, 263, 262, 275, 262, 264, 265, 266, 267, 268, 269, 276,\n    270, 277, 269, 271, 267, 278, 279, 280, 272, 273, 281, 282, 285, 286, 287,\n    288, 289, 274, 290, 291, 292, 275, 293, 294, 295, 296, 267, 297, 299, 276,\n    300, 277, 304, 305, 306, 278, 279, 280, 307, 308,\n\n    281, 282, 285, 286, 287, 288, 289, 309, 290, 291, 292, 310, 293, 294, 295,\n    296, 311, 297, 299, 312, 300, 313, 304, 305, 306, 314, 317, 318, 307, 308,\n    319, 320, 322, 323, 324, 325, 326, 309, 327, 328, 330, 310, 332, 336, 337,\n    338, 311, 339, 340, 312, 328, 313, 341, 342, 343, 314, 317, 318, 344, 345,\n    319, 320, 322, 323, 324, 325, 326, 346, 327, 328, 330, 347, 332, 336, 337,\n    338, 348, 339, 340, 349, 328, 350, 341, 342, 343, 351, 353, 354, 344, 345,\n    355, 356, 357, 358, 355, 360, 361, 346, 362, 363,\n\n    364, 347, 365, 366, 368, 369, 348, 370, 371, 349, 372, 350, 373, 377, 379,\n    351, 353, 354, 380, 381, 355, 356, 357, 358, 355, 360, 361, 382, 362, 363,\n    364, 383, 365, 366, 368, 369, 384, 370, 371, 385, 372, 386, 373, 377, 379,\n    387, 388, 391, 380, 381, 392, 395, 399, 401, 402, 403, 404, 382, 405, 407,\n    408, 383, 409, 410, 412, 413, 384, 414, 415, 385, 416, 386, 417, 418, 419,\n    387, 388, 391, 420, 421, 392, 395, 399, 401, 402, 403, 404, 422, 405, 407,\n    408, 423, 409, 410, 412, 413, 424, 414, 415, 426,\n\n    416, 429, 417, 418, 419, 430, 431, 432, 420, 421, 433, 434, 435, 436, 437,\n    439, 440, 422, 441, 442, 443, 423, 444, 448, 450, 451, 424, 453, 455, 426,\n    456, 429, 457, 459, 462, 430, 431, 432, 463, 464, 433, 434, 435, 436, 437,\n    439, 440, 461, 441, 442, 443, 465, 444, 448, 450, 451, 466, 453, 455, 468,\n    456, 469, 457, 459, 462, 470, 461, 471, 463, 464, 472, 473, 474, 475, 476,\n    477, 478, 461, 480, 481, 482, 465, 483, 485, 486, 487, 466, 489, 490, 468,\n    491, 469, 493, 496, 498, 470, 461, 471, 499, 500,\n\n    472, 473, 474, 475, 476, 477, 478, 502, 480, 481, 482, 503, 483, 485, 486,\n    487, 505, 489, 490, 506, 491, 507, 493, 496, 498, 508, 509, 511, 499, 500,\n    514, 515, 517, 519, 520, 521, 525, 502, 526, 527, 529, 503, 530, 531, 533,\n    535, 505, 536, 537, 506, 538, 507, 542, 543, 544, 508, 509, 511, 545, 546,\n    514, 515, 517, 519, 520, 521, 525, 547, 526, 527, 529, 548, 530, 531, 533,\n    535, 549, 536, 537, 550, 538, 551, 542, 543, 544, 553, 554, 559, 545, 546,\n    560, 561, 563, 565, 568, 569, 573, 547, 574, 575,\n\n    576, 548, 580, 581, 582, 586, 549, 588, 589, 550, 591, 551, 594, 595, 596,\n    553, 554, 559, 601, 603, 560, 561, 563, 565, 568, 569, 573, 604, 574, 575,\n    576, 606, 580, 581, 582, 586, 607, 588, 589, 608, 591, 611, 594, 595, 596,\n    612, 613, 615, 601, 603, 616, 620, 622, 624, 626, 628, 629, 604, 630, 633,\n    634, 606, 635, 636, 637, 638, 607, 641, 642, 608, 645, 611, 646, 656, 660,\n    612, 613, 615, 0,   0,   616, 620, 622, 624, 626, 628, 629, 0,   630, 633,\n    634, 0,   635, 636, 637, 638, 0,   641, 642, 0,\n\n    645, 0,   646, 656, 660, 664, 664, 664, 664, 665, 0,   665, 665, 667, 667,\n    0,   667, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,\n    663, 663, 663, 663\n\n};\n\n/* The intent behind this definition is that it'll catch\n * any uses of REJECT which flex missed.\n */\n#define REJECT reject_used_but_not_detected\n#define yymore() yymore_used_but_not_detected\n#define YY_MORE_ADJ 0\n#define YY_RESTORE_YY_MORE_OFFSET\n#line 1 \"flex.l\"\n#line 2 \"flex.l\"\n#include <stdio.h>\n\n#include <cstring>\n#include <sstream>\n#include <string>\n\n#include \"bison_parser.h\"\n#define TOKEN(name) \\\n  { return SQL_##name; }\nstatic thread_local std::stringstream strbuf;\n#line 1193 \"flex_lexer.cpp\"\n\n#line 1195 \"flex_lexer.cpp\"\n\n#define INITIAL 0\n#define COMMENT 1\n#define singlequotedstring 2\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\n/* Holds the entire state of the reentrant scanner. */\nstruct yyguts_t {\n  /* User-defined. Not touched by flex. */\n  YY_EXTRA_TYPE yyextra_r;\n\n  /* The rest are the same as the globals declared in the non-reentrant scanner.\n   */\n  FILE *yyin_r, *yyout_r;\n  size_t yy_buffer_stack_top;       /**< index of top of stack. */\n  size_t yy_buffer_stack_max;       /**< capacity of stack. */\n  YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */\n  char yy_hold_char;\n  int yy_n_chars;\n  int yyleng_r;\n  char *yy_c_buf_p;\n  int yy_init;\n  int yy_start;\n  int yy_did_buffer_switch_on_eof;\n  int yy_start_stack_ptr;\n  int yy_start_stack_depth;\n  int *yy_start_stack;\n  yy_state_type yy_last_accepting_state;\n  char *yy_last_accepting_cpos;\n\n  int yylineno_r;\n  int yy_flex_debug_r;\n\n  char *yytext_r;\n  int yy_more_flag;\n  int yy_more_len;\n\n  YYSTYPE *yylval_r;\n\n  YYLTYPE *yylloc_r;\n\n}; /* end struct yyguts_t */\n\nstatic int yy_init_globals(yyscan_t yyscanner);\n\n/* This must go here because YYSTYPE and YYLTYPE are included\n * from bison output in section 1.*/\n#define yylval yyg->yylval_r\n\n#define yylloc yyg->yylloc_r\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner);\n#else\nstatic int input(yyscan_t yyscanner);\n#endif\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Copy whatever the last rule matched to the standard output. */\n#ifndef ECHO\n/* This used to be an fputs(), but since the string might contain NUL's,\n * we now use fwrite().\n */\n#define ECHO                                        \\\n  do {                                              \\\n    if (fwrite(yytext, (size_t)yyleng, 1, yyout)) { \\\n    }                                               \\\n  } while (0)\n#endif\n\n/* Gets input and stuffs it into \"buf\".  number of characters read, or YY_NULL,\n * is returned in \"result\".\n */\n#ifndef YY_INPUT\n#define YY_INPUT(buf, result, max_size)                                     \\\n  if (YY_CURRENT_BUFFER_LVALUE->yy_is_interactive) {                        \\\n    int c = '*';                                                            \\\n    int n;                                                                  \\\n    for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\\n'; ++n)  \\\n      buf[n] = (char)c;                                                     \\\n    if (c == '\\n') buf[n++] = (char)c;                                      \\\n    if (c == EOF && ferror(yyin))                                           \\\n      YY_FATAL_ERROR(\"input in flex scanner failed\");                       \\\n    result = n;                                                             \\\n  } else {                                                                  \\\n    errno = 0;                                                              \\\n    while ((result = (int)fread(buf, 1, (yy_size_t)max_size, yyin)) == 0 && \\\n           ferror(yyin)) {                                                  \\\n      if (errno != EINTR) {                                                 \\\n        YY_FATAL_ERROR(\"input in flex scanner failed\");                     \\\n        break;                                                              \\\n      }                                                                     \\\n      errno = 0;                                                            \\\n      clearerr(yyin);                                                       \\\n    }                                                                       \\\n  }\n\n#endif\n\n/* No semi-colon after return; correct usage is to write \"yyterminate();\" -\n * we don't want an extra ';' after the \"return\" because that will cause\n * some compilers to complain about unreachable statements.\n */\n#ifndef yyterminate\n#define yyterminate() return YY_NULL\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Report a fatal error. */\n#ifndef YY_FATAL_ERROR\n#define YY_FATAL_ERROR(msg) yy_fatal_error(msg, yyscanner)\n#endif\n\n/* end tables serialization structures and prototypes */\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* Code executed at the beginning of each rule, after yytext and yyleng\n * have been set up.\n */\n#ifndef YY_USER_ACTION\n#define YY_USER_ACTION\n#endif\n\n/* Code executed at the end of each rule. */\n#ifndef YY_BREAK\n#define YY_BREAK /*LINTED*/ break;\n#endif\n\n#define YY_RULE_SETUP YY_USER_ACTION\n\n/** The main scanner function which does all the work.\n */\nYY_DECL {\n  yy_state_type yy_current_state;\n  char *yy_cp, *yy_bp;\n  int yy_act;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yylval = yylval_param;\n\n  yylloc = yylloc_param;\n\n  if (!yyg->yy_init) {\n    yyg->yy_init = 1;\n\n#ifdef YY_USER_INIT\n    YY_USER_INIT;\n#endif\n\n    if (!yyg->yy_start) yyg->yy_start = 1; /* first start state */\n\n    if (!yyin) yyin = stdin;\n\n    if (!yyout) yyout = stdout;\n\n    if (!YY_CURRENT_BUFFER) {\n      yyensure_buffer_stack(yyscanner);\n      YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n    }\n\n    yy_load_buffer_state(yyscanner);\n  }\n\n  {\n#line 26 \"flex.l\"\n\n#line 1481 \"flex_lexer.cpp\"\n\n    while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */\n    {\n      yy_cp = yyg->yy_c_buf_p;\n\n      /* Support of yytext. */\n      *yy_cp = yyg->yy_hold_char;\n\n      /* yy_bp points to the position in yy_ch_buf of the start of\n       * the current run.\n       */\n      yy_bp = yy_cp;\n\n      yy_current_state = yyg->yy_start;\n    yy_match:\n      do {\n        YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];\n        if (yy_accept[yy_current_state]) {\n          yyg->yy_last_accepting_state = yy_current_state;\n          yyg->yy_last_accepting_cpos = yy_cp;\n        }\n        while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n          yy_current_state = (int)yy_def[yy_current_state];\n          if (yy_current_state >= 664) yy_c = yy_meta[yy_c];\n        }\n        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n        ++yy_cp;\n      } while (yy_current_state != 663);\n      yy_cp = yyg->yy_last_accepting_cpos;\n      yy_current_state = yyg->yy_last_accepting_state;\n\n    yy_find_action:\n      yy_act = yy_accept[yy_current_state];\n\n      YY_DO_BEFORE_ACTION;\n\n    do_action: /* This label is used only to access EOF actions. */\n\n      switch (yy_act) { /* beginning of action switch */\n        case 0:         /* must back up */\n          /* undo the effects of YY_DO_BEFORE_ACTION */\n          *yy_cp = yyg->yy_hold_char;\n          yy_cp = yyg->yy_last_accepting_cpos;\n          yy_current_state = yyg->yy_last_accepting_state;\n          goto yy_find_action;\n\n        case 1:\n          YY_RULE_SETUP\n#line 27 \"flex.l\"\n          TOKEN(OP_NOTEQUAL)\n          YY_BREAK\n        case 2:\n          YY_RULE_SETUP\n#line 28 \"flex.l\"\n          TOKEN(SIMPLE)\n          YY_BREAK\n        case 3:\n          YY_RULE_SETUP\n#line 29 \"flex.l\"\n          TOKEN(TEXT)\n          YY_BREAK\n        case 4:\n          YY_RULE_SETUP\n#line 30 \"flex.l\"\n          TOKEN(OVER)\n          YY_BREAK\n        case 5:\n          YY_RULE_SETUP\n#line 31 \"flex.l\"\n          TOKEN(BETWEEN)\n          YY_BREAK\n        case 6:\n          YY_RULE_SETUP\n#line 32 \"flex.l\"\n          TOKEN(OP_SEMI)\n          YY_BREAK\n        case 7:\n          YY_RULE_SETUP\n#line 33 \"flex.l\"\n          TOKEN(BIGINT)\n          YY_BREAK\n        case 8:\n          YY_RULE_SETUP\n#line 34 \"flex.l\"\n          TOKEN(LIMIT)\n          YY_BREAK\n        case 9:\n          YY_RULE_SETUP\n#line 35 \"flex.l\"\n          TOKEN(WITH)\n          YY_BREAK\n        case 10:\n          YY_RULE_SETUP\n#line 36 \"flex.l\"\n          TOKEN(ORDER)\n          YY_BREAK\n        case 11:\n          YY_RULE_SETUP\n#line 37 \"flex.l\"\n          TOKEN(LAST)\n          YY_BREAK\n        case 12:\n          YY_RULE_SETUP\n#line 38 \"flex.l\"\n          TOKEN(UNBOUNDED)\n          YY_BREAK\n        case 13:\n          YY_RULE_SETUP\n#line 39 \"flex.l\"\n          TOKEN(PRECEDING)\n          YY_BREAK\n        case 14:\n          YY_RULE_SETUP\n#line 40 \"flex.l\"\n          TOKEN(EXCEPT)\n          YY_BREAK\n        case 15:\n          YY_RULE_SETUP\n#line 41 \"flex.l\"\n          TOKEN(NUMERIC)\n          YY_BREAK\n        case 16:\n          YY_RULE_SETUP\n#line 42 \"flex.l\"\n          TOKEN(OP_LESSTHAN)\n          YY_BREAK\n        case 17:\n          YY_RULE_SETUP\n#line 43 \"flex.l\"\n          TOKEN(PROCEDURE)\n          YY_BREAK\n        case 18:\n          YY_RULE_SETUP\n#line 44 \"flex.l\"\n          TOKEN(ACTION)\n          YY_BREAK\n        case 19:\n          YY_RULE_SETUP\n#line 45 \"flex.l\"\n          TOKEN(FIRST)\n          YY_BREAK\n        case 20:\n          YY_RULE_SETUP\n#line 46 \"flex.l\"\n          TOKEN(OP_GREATEREQ)\n          YY_BREAK\n        case 21:\n          YY_RULE_SETUP\n#line 47 \"flex.l\"\n          TOKEN(CHECK)\n          YY_BREAK\n        case 22:\n          YY_RULE_SETUP\n#line 48 \"flex.l\"\n          TOKEN(FULL)\n          YY_BREAK\n        case 23:\n          YY_RULE_SETUP\n#line 49 \"flex.l\"\n          TOKEN(NATURAL)\n          YY_BREAK\n        case 24:\n          YY_RULE_SETUP\n#line 50 \"flex.l\"\n          TOKEN(DOUBLE)\n          YY_BREAK\n        case 25:\n          YY_RULE_SETUP\n#line 51 \"flex.l\"\n          TOKEN(NATIONAL)\n          YY_BREAK\n        case 26:\n          YY_RULE_SETUP\n#line 52 \"flex.l\"\n          TOKEN(OP_ADD)\n          YY_BREAK\n        case 27:\n          YY_RULE_SETUP\n#line 53 \"flex.l\"\n          TOKEN(CURRENT)\n          YY_BREAK\n        case 28:\n          YY_RULE_SETUP\n#line 54 \"flex.l\"\n          TOKEN(TRIGGER)\n          YY_BREAK\n        case 29:\n          YY_RULE_SETUP\n#line 55 \"flex.l\"\n          TOKEN(OP_SUB)\n          YY_BREAK\n        case 30:\n          YY_RULE_SETUP\n#line 56 \"flex.l\"\n          TOKEN(FALSE)\n          YY_BREAK\n        case 31:\n          YY_RULE_SETUP\n#line 57 \"flex.l\"\n          TOKEN(UNIQUE)\n          YY_BREAK\n        case 32:\n          YY_RULE_SETUP\n#line 58 \"flex.l\"\n          TOKEN(WHERE)\n          YY_BREAK\n        case 33:\n          YY_RULE_SETUP\n#line 59 \"flex.l\"\n          TOKEN(MINUTE)\n          YY_BREAK\n        case 34:\n          YY_RULE_SETUP\n#line 60 \"flex.l\"\n          TOKEN(BEFORE)\n          YY_BREAK\n        case 35:\n          YY_RULE_SETUP\n#line 61 \"flex.l\"\n          TOKEN(ON)\n          YY_BREAK\n        case 36:\n          YY_RULE_SETUP\n#line 62 \"flex.l\"\n          TOKEN(PARTIAL)\n          YY_BREAK\n        case 37:\n          YY_RULE_SETUP\n#line 63 \"flex.l\"\n          TOKEN(OF)\n          YY_BREAK\n        case 38:\n          YY_RULE_SETUP\n#line 64 \"flex.l\"\n          TOKEN(AFTER)\n          YY_BREAK\n        case 39:\n          YY_RULE_SETUP\n#line 65 \"flex.l\"\n          TOKEN(PRIMARY)\n          YY_BREAK\n        case 40:\n          YY_RULE_SETUP\n#line 66 \"flex.l\"\n          TOKEN(MONTH)\n          YY_BREAK\n        case 41:\n          YY_RULE_SETUP\n#line 67 \"flex.l\"\n          TOKEN(DEFERRED)\n          YY_BREAK\n        case 42:\n          YY_RULE_SETUP\n#line 68 \"flex.l\"\n          TOKEN(OP_DOUBLE_DOLLAR)\n          YY_BREAK\n        case 43:\n          YY_RULE_SETUP\n#line 69 \"flex.l\"\n          TOKEN(VARYING)\n          YY_BREAK\n        case 44:\n          YY_RULE_SETUP\n#line 70 \"flex.l\"\n          TOKEN(OP_GREATERTHAN)\n          YY_BREAK\n        case 45:\n          YY_RULE_SETUP\n#line 71 \"flex.l\"\n          TOKEN(OR)\n          YY_BREAK\n        case 46:\n          YY_RULE_SETUP\n#line 72 \"flex.l\"\n          TOKEN(PLPGSQL)\n          YY_BREAK\n        case 47:\n          YY_RULE_SETUP\n#line 73 \"flex.l\"\n          TOKEN(DELETE)\n          YY_BREAK\n        case 48:\n          YY_RULE_SETUP\n#line 74 \"flex.l\"\n          TOKEN(INDEX)\n          YY_BREAK\n        case 49:\n          YY_RULE_SETUP\n#line 75 \"flex.l\"\n          TOKEN(RETURN)\n          YY_BREAK\n        case 50:\n          YY_RULE_SETUP\n#line 76 \"flex.l\"\n          TOKEN(OP_MUL)\n          YY_BREAK\n        case 51:\n          YY_RULE_SETUP\n#line 77 \"flex.l\"\n          TOKEN(FOREIGN)\n          YY_BREAK\n        case 52:\n          YY_RULE_SETUP\n#line 78 \"flex.l\"\n          TOKEN(RESTRICT)\n          YY_BREAK\n        case 53:\n          YY_RULE_SETUP\n#line 79 \"flex.l\"\n          TOKEN(FOLLOWING)\n          YY_BREAK\n        case 54:\n          YY_RULE_SETUP\n#line 80 \"flex.l\"\n          TOKEN(TIES)\n          YY_BREAK\n        case 55:\n          YY_RULE_SETUP\n#line 81 \"flex.l\"\n          TOKEN(DEC)\n          YY_BREAK\n        case 56:\n          YY_RULE_SETUP\n#line 82 \"flex.l\"\n          TOKEN(SELECT)\n          YY_BREAK\n        case 57:\n          YY_RULE_SETUP\n#line 83 \"flex.l\"\n          TOKEN(BEGIN)\n          YY_BREAK\n        case 58:\n          YY_RULE_SETUP\n#line 84 \"flex.l\"\n          TOKEN(LANGUAGE)\n          YY_BREAK\n        case 59:\n          YY_RULE_SETUP\n#line 85 \"flex.l\"\n          TOKEN(DISTINCT)\n          YY_BREAK\n        case 60:\n          YY_RULE_SETUP\n#line 86 \"flex.l\"\n          TOKEN(TRUE)\n          YY_BREAK\n        case 61:\n          YY_RULE_SETUP\n#line 87 \"flex.l\"\n          TOKEN(BY)\n          YY_BREAK\n        case 62:\n          YY_RULE_SETUP\n#line 88 \"flex.l\"\n          TOKEN(OP_MOD)\n          YY_BREAK\n        case 63:\n          YY_RULE_SETUP\n#line 89 \"flex.l\"\n          TOKEN(VALUES)\n          YY_BREAK\n        case 64:\n          YY_RULE_SETUP\n#line 90 \"flex.l\"\n          TOKEN(IS)\n          YY_BREAK\n        case 65:\n          YY_RULE_SETUP\n#line 91 \"flex.l\"\n          TOKEN(ROW)\n          YY_BREAK\n        case 66:\n          YY_RULE_SETUP\n#line 92 \"flex.l\"\n          TOKEN(FUNCTION)\n          YY_BREAK\n        case 67:\n          YY_RULE_SETUP\n#line 93 \"flex.l\"\n          TOKEN(END)\n          YY_BREAK\n        case 68:\n          YY_RULE_SETUP\n#line 94 \"flex.l\"\n          TOKEN(RECURSIVE)\n          YY_BREAK\n        case 69:\n          YY_RULE_SETUP\n#line 95 \"flex.l\"\n          TOKEN(FOR)\n          YY_BREAK\n        case 70:\n          YY_RULE_SETUP\n#line 96 \"flex.l\"\n          TOKEN(UNION)\n          YY_BREAK\n        case 71:\n          YY_RULE_SETUP\n#line 97 \"flex.l\"\n          TOKEN(NULLS)\n          YY_BREAK\n        case 72:\n          YY_RULE_SETUP\n#line 98 \"flex.l\"\n          TOKEN(UPDATE)\n          YY_BREAK\n        case 73:\n          YY_RULE_SETUP\n#line 99 \"flex.l\"\n          TOKEN(ELSE)\n          YY_BREAK\n        case 74:\n          YY_RULE_SETUP\n#line 100 \"flex.l\"\n          TOKEN(RANGE)\n          YY_BREAK\n        case 75:\n          YY_RULE_SETUP\n#line 101 \"flex.l\"\n          TOKEN(OFFSET)\n          YY_BREAK\n        case 76:\n          YY_RULE_SETUP\n#line 102 \"flex.l\"\n          TOKEN(INDEXED)\n          YY_BREAK\n        case 77:\n          YY_RULE_SETUP\n#line 103 \"flex.l\"\n          TOKEN(INSTEAD)\n          YY_BREAK\n        case 78:\n          YY_RULE_SETUP\n#line 104 \"flex.l\"\n          TOKEN(NCHAR)\n          YY_BREAK\n        case 79:\n          YY_RULE_SETUP\n#line 105 \"flex.l\"\n          TOKEN(AND)\n          YY_BREAK\n        case 80:\n          YY_RULE_SETUP\n#line 106 \"flex.l\"\n          TOKEN(REINDEX)\n          YY_BREAK\n        case 81:\n          YY_RULE_SETUP\n#line 107 \"flex.l\"\n          TOKEN(INITIALLY)\n          YY_BREAK\n        case 82:\n          YY_RULE_SETUP\n#line 108 \"flex.l\"\n          TOKEN(YEAR)\n          YY_BREAK\n        case 83:\n          YY_RULE_SETUP\n#line 109 \"flex.l\"\n          TOKEN(PRECISION)\n          YY_BREAK\n        case 84:\n          YY_RULE_SETUP\n#line 110 \"flex.l\"\n          TOKEN(FILTER)\n          YY_BREAK\n        case 85:\n          YY_RULE_SETUP\n#line 111 \"flex.l\"\n          TOKEN(NOT)\n          YY_BREAK\n        case 86:\n          YY_RULE_SETUP\n#line 112 \"flex.l\"\n          TOKEN(VIEW)\n          YY_BREAK\n        case 87:\n          YY_RULE_SETUP\n#line 113 \"flex.l\"\n          TOKEN(DEFFERRABLE)\n          YY_BREAK\n        case 88:\n          YY_RULE_SETUP\n#line 114 \"flex.l\"\n          TOKEN(REAL)\n          YY_BREAK\n        case 89:\n          YY_RULE_SETUP\n#line 115 \"flex.l\"\n          TOKEN(THEN)\n          YY_BREAK\n        case 90:\n          YY_RULE_SETUP\n#line 116 \"flex.l\"\n          TOKEN(OPTION)\n          YY_BREAK\n        case 91:\n          YY_RULE_SETUP\n#line 117 \"flex.l\"\n          TOKEN(DEFAULT)\n          YY_BREAK\n        case 92:\n          YY_RULE_SETUP\n#line 118 \"flex.l\"\n          TOKEN(GLOBAL)\n          YY_BREAK\n        case 93:\n          YY_RULE_SETUP\n#line 119 \"flex.l\"\n          TOKEN(CROSS)\n          YY_BREAK\n        case 94:\n          YY_RULE_SETUP\n#line 120 \"flex.l\"\n          TOKEN(CHAR)\n          YY_BREAK\n        case 95:\n          YY_RULE_SETUP\n#line 121 \"flex.l\"\n          TOKEN(REFERENCES)\n          YY_BREAK\n        case 96:\n          YY_RULE_SETUP\n#line 122 \"flex.l\"\n          TOKEN(OP_XOR)\n          YY_BREAK\n        case 97:\n          YY_RULE_SETUP\n#line 123 \"flex.l\"\n          TOKEN(GROUP)\n          YY_BREAK\n        case 98:\n          YY_RULE_SETUP\n#line 124 \"flex.l\"\n          TOKEN(CASE)\n          YY_BREAK\n        case 99:\n          YY_RULE_SETUP\n#line 125 \"flex.l\"\n          TOKEN(SET)\n          YY_BREAK\n        case 100:\n          YY_RULE_SETUP\n#line 126 \"flex.l\"\n          TOKEN(HOUR)\n          YY_BREAK\n        case 101:\n          YY_RULE_SETUP\n#line 127 \"flex.l\"\n          TOKEN(NO)\n          YY_BREAK\n        case 102:\n          YY_RULE_SETUP\n#line 128 \"flex.l\"\n          TOKEN(COLUMN)\n          YY_BREAK\n        case 103:\n          YY_RULE_SETUP\n#line 129 \"flex.l\"\n          TOKEN(LOCAL)\n          YY_BREAK\n        case 104:\n          YY_RULE_SETUP\n#line 130 \"flex.l\"\n          TOKEN(DROP)\n          YY_BREAK\n        case 105:\n          YY_RULE_SETUP\n#line 131 \"flex.l\"\n          TOKEN(REPLACE)\n          YY_BREAK\n        case 106:\n          YY_RULE_SETUP\n#line 132 \"flex.l\"\n          TOKEN(ASC)\n          YY_BREAK\n        case 107:\n          YY_RULE_SETUP\n#line 133 \"flex.l\"\n          TOKEN(OP_COMMA)\n          YY_BREAK\n        case 108:\n          YY_RULE_SETUP\n#line 134 \"flex.l\"\n          TOKEN(TABLE)\n          YY_BREAK\n        case 109:\n          YY_RULE_SETUP\n#line 135 \"flex.l\"\n          TOKEN(ARRAY)\n          YY_BREAK\n        case 110:\n          YY_RULE_SETUP\n#line 136 \"flex.l\"\n          TOKEN(IF)\n          YY_BREAK\n        case 111:\n          YY_RULE_SETUP\n#line 137 \"flex.l\"\n          TOKEN(EXTRACT)\n          YY_BREAK\n        case 112:\n          YY_RULE_SETUP\n#line 138 \"flex.l\"\n          TOKEN(LEFT)\n          YY_BREAK\n        case 113:\n          YY_RULE_SETUP\n#line 139 \"flex.l\"\n          TOKEN(OUTER)\n          YY_BREAK\n        case 114:\n          YY_RULE_SETUP\n#line 140 \"flex.l\"\n          TOKEN(DECIMAL)\n          YY_BREAK\n        case 115:\n          YY_RULE_SETUP\n#line 141 \"flex.l\"\n          TOKEN(PARTITION)\n          YY_BREAK\n        case 116:\n          YY_RULE_SETUP\n#line 142 \"flex.l\"\n          TOKEN(CASCADE)\n          YY_BREAK\n        case 117:\n          YY_RULE_SETUP\n#line 143 \"flex.l\"\n          TOKEN(ADD)\n          YY_BREAK\n        case 118:\n          YY_RULE_SETUP\n#line 144 \"flex.l\"\n          TOKEN(OTHERS)\n          YY_BREAK\n        case 119:\n          YY_RULE_SETUP\n#line 145 \"flex.l\"\n          TOKEN(OP_LESSEQ)\n          YY_BREAK\n        case 120:\n          YY_RULE_SETUP\n#line 146 \"flex.l\"\n          TOKEN(MATCH)\n          YY_BREAK\n        case 121:\n          YY_RULE_SETUP\n#line 147 \"flex.l\"\n          TOKEN(ALL)\n          YY_BREAK\n        case 122:\n          YY_RULE_SETUP\n#line 148 \"flex.l\"\n          TOKEN(ROWS)\n          YY_BREAK\n        case 123:\n          YY_RULE_SETUP\n#line 149 \"flex.l\"\n          TOKEN(JOIN)\n          YY_BREAK\n        case 124:\n          YY_RULE_SETUP\n#line 150 \"flex.l\"\n          TOKEN(LIKE)\n          YY_BREAK\n        case 125:\n          YY_RULE_SETUP\n#line 151 \"flex.l\"\n          TOKEN(INTEGER)\n          YY_BREAK\n        case 126:\n          YY_RULE_SETUP\n#line 152 \"flex.l\"\n          TOKEN(OP_RP)\n          YY_BREAK\n        case 127:\n          YY_RULE_SETUP\n#line 153 \"flex.l\"\n          TOKEN(INT)\n          YY_BREAK\n        case 128:\n          YY_RULE_SETUP\n#line 154 \"flex.l\"\n          TOKEN(BOOLEAN)\n          YY_BREAK\n        case 129:\n          YY_RULE_SETUP\n#line 155 \"flex.l\"\n          TOKEN(KEY)\n          YY_BREAK\n        case 130:\n          YY_RULE_SETUP\n#line 156 \"flex.l\"\n          TOKEN(EACH)\n          YY_BREAK\n        case 131:\n          YY_RULE_SETUP\n#line 157 \"flex.l\"\n          TOKEN(USING)\n          YY_BREAK\n        case 132:\n          YY_RULE_SETUP\n#line 158 \"flex.l\"\n          TOKEN(RENAME)\n          YY_BREAK\n        case 133:\n          YY_RULE_SETUP\n#line 159 \"flex.l\"\n          TOKEN(DO)\n          YY_BREAK\n        case 134:\n          YY_RULE_SETUP\n#line 160 \"flex.l\"\n          TOKEN(FLOAT)\n          YY_BREAK\n        case 135:\n          YY_RULE_SETUP\n#line 161 \"flex.l\"\n          TOKEN(OP_LP)\n          YY_BREAK\n        case 136:\n          YY_RULE_SETUP\n#line 162 \"flex.l\"\n          TOKEN(CHARACTER)\n          YY_BREAK\n        case 137:\n          YY_RULE_SETUP\n#line 163 \"flex.l\"\n          TOKEN(UMINUS)\n          YY_BREAK\n        case 138:\n          YY_RULE_SETUP\n#line 164 \"flex.l\"\n          TOKEN(CAST)\n          YY_BREAK\n        case 139:\n          YY_RULE_SETUP\n#line 165 \"flex.l\"\n          TOKEN(GROUPS)\n          YY_BREAK\n        case 140:\n          YY_RULE_SETUP\n#line 166 \"flex.l\"\n          TOKEN(NULL)\n          YY_BREAK\n        case 141:\n          YY_RULE_SETUP\n#line 167 \"flex.l\"\n          TOKEN(SMALLINT)\n          YY_BREAK\n        case 142:\n          YY_RULE_SETUP\n#line 168 \"flex.l\"\n          TOKEN(INSERT)\n          YY_BREAK\n        case 143:\n          YY_RULE_SETUP\n#line 169 \"flex.l\"\n          TOKEN(TEMPORARY)\n          YY_BREAK\n        case 144:\n          YY_RULE_SETUP\n#line 170 \"flex.l\"\n          TOKEN(CONSTRAINT)\n          YY_BREAK\n        case 145:\n          YY_RULE_SETUP\n#line 171 \"flex.l\"\n          TOKEN(CREATE)\n          YY_BREAK\n        case 146:\n          YY_RULE_SETUP\n#line 172 \"flex.l\"\n          TOKEN(OP_LBRACKET)\n          YY_BREAK\n        case 147:\n          YY_RULE_SETUP\n#line 173 \"flex.l\"\n          TOKEN(WHEN)\n          YY_BREAK\n        case 148:\n          YY_RULE_SETUP\n#line 174 \"flex.l\"\n          TOKEN(IMMEDIATE)\n          YY_BREAK\n        case 149:\n          YY_RULE_SETUP\n#line 175 \"flex.l\"\n          TOKEN(TO)\n          YY_BREAK\n        case 150:\n          YY_RULE_SETUP\n#line 176 \"flex.l\"\n          TOKEN(EXCLUDE)\n          YY_BREAK\n        case 151:\n          YY_RULE_SETUP\n#line 177 \"flex.l\"\n          TOKEN(DAY)\n          YY_BREAK\n        case 152:\n          YY_RULE_SETUP\n#line 178 \"flex.l\"\n          TOKEN(CONFLICT)\n          YY_BREAK\n        case 153:\n          YY_RULE_SETUP\n#line 179 \"flex.l\"\n          TOKEN(OP_RBRACKET)\n          YY_BREAK\n        case 154:\n          YY_RULE_SETUP\n#line 180 \"flex.l\"\n          TOKEN(EXECUTE)\n          YY_BREAK\n        case 155:\n          YY_RULE_SETUP\n#line 181 \"flex.l\"\n          TOKEN(EXISTS)\n          YY_BREAK\n        case 156:\n          YY_RULE_SETUP\n#line 182 \"flex.l\"\n          TOKEN(INTO)\n          YY_BREAK\n        case 157:\n          YY_RULE_SETUP\n#line 183 \"flex.l\"\n          TOKEN(OP_DIVIDE)\n          YY_BREAK\n        case 158:\n          YY_RULE_SETUP\n#line 184 \"flex.l\"\n          TOKEN(CASCADED)\n          YY_BREAK\n        case 159:\n          YY_RULE_SETUP\n#line 185 \"flex.l\"\n          TOKEN(ISNULL)\n          YY_BREAK\n        case 160:\n          YY_RULE_SETUP\n#line 186 \"flex.l\"\n          TOKEN(AS)\n          YY_BREAK\n        case 161:\n          YY_RULE_SETUP\n#line 187 \"flex.l\"\n          TOKEN(INNER)\n          YY_BREAK\n        case 162:\n          YY_RULE_SETUP\n#line 188 \"flex.l\"\n          TOKEN(INTERSECT)\n          YY_BREAK\n        case 163:\n          YY_RULE_SETUP\n#line 189 \"flex.l\"\n          TOKEN(IN)\n          YY_BREAK\n        case 164:\n          YY_RULE_SETUP\n#line 190 \"flex.l\"\n          TOKEN(OP_EQUAL)\n          YY_BREAK\n        case 165:\n          YY_RULE_SETUP\n#line 191 \"flex.l\"\n          TOKEN(VARCHAR)\n          YY_BREAK\n        case 166:\n          YY_RULE_SETUP\n#line 192 \"flex.l\"\n          TOKEN(ALTER)\n          YY_BREAK\n        case 167:\n          YY_RULE_SETUP\n#line 193 \"flex.l\"\n          TOKEN(DESC)\n          YY_BREAK\n        case 168:\n          YY_RULE_SETUP\n#line 194 \"flex.l\"\n          TOKEN(FROM)\n          YY_BREAK\n        case 169:\n          YY_RULE_SETUP\n#line 195 \"flex.l\"\n          TOKEN(TEMP)\n          YY_BREAK\n        case 170:\n          YY_RULE_SETUP\n#line 196 \"flex.l\"\n          TOKEN(UNLOGGED)\n          YY_BREAK\n        case 171:\n          YY_RULE_SETUP\n#line 197 \"flex.l\"\n          TOKEN(SECOND)\n          YY_BREAK\n        case 172:\n          YY_RULE_SETUP\n#line 198 \"flex.l\"\n          TOKEN(WINDOW)\n          YY_BREAK\n        case 173:\n          YY_RULE_SETUP\n#line 199 \"flex.l\"\n          TOKEN(NOTHING)\n          YY_BREAK\n        case 174:\n          YY_RULE_SETUP\n#line 200 \"flex.l\"\n          TOKEN(HAVING)\n          YY_BREAK\n        case 175:\n#line 202 \"flex.l\"\n        case 176:\n          YY_RULE_SETUP\n#line 202 \"flex.l\"\n          {\n            yylval->fval = atof(yytext);\n            return SQL_FLOATLITERAL;\n          }\n          YY_BREAK\n        case 177:\n          YY_RULE_SETUP\n#line 207 \"flex.l\"\n          {\n            yylval->ival = atol(yytext);\n            return SQL_INTLITERAL;\n          }\n          YY_BREAK\n        case 178:\n          YY_RULE_SETUP\n#line 212 \"flex.l\"\n          {\n            std::string s(yytext);\n            yylval->sval = strdup(s.substr(1, s.size() - 1).c_str());\n            return SQL_STRINGLITERAL;\n          }\n          YY_BREAK\n        case 179:\n          YY_RULE_SETUP\n#line 218 \"flex.l\"\n          {\n            yylval->sval = strdup(yytext);\n            return SQL_IDENTIFIER;\n          }\n          YY_BREAK\n        case 180:\n          YY_RULE_SETUP\n#line 223 \"flex.l\"\n          {\n            BEGIN singlequotedstring;\n            strbuf = std::stringstream{};\n            strbuf << '\\'';\n          }\n          YY_BREAK\n        case 181:\n          YY_RULE_SETUP\n#line 227 \"flex.l\"\n          {\n            strbuf << '\\'';\n          }\n          YY_BREAK\n        case 182:\n          /* rule 182 can match eol */\n          YY_RULE_SETUP\n#line 231 \"flex.l\"\n          {\n            strbuf << yytext;\n          }\n          YY_BREAK\n        case 183:\n          YY_RULE_SETUP\n#line 235 \"flex.l\"\n          {\n            BEGIN 0;\n            strbuf << '\\'';\n            yylval->sval = strdup(strbuf.str().c_str());\n            return SQL_STRINGLITERAL;\n          }\n          YY_BREAK\n        case YY_STATE_EOF(singlequotedstring):\n#line 242 \"flex.l\"\n        {\n          return 0;\n        }\n          YY_BREAK\n        case 184:\n          /* rule 184 can match eol */\n          YY_RULE_SETUP\n#line 246 \"flex.l\"\n          {\n          }\n          YY_BREAK\n        case 185:\n          YY_RULE_SETUP\n#line 249 \"flex.l\"\n          {\n            return 0;\n          }\n          YY_BREAK\n        case 186:\n          YY_RULE_SETUP\n#line 253 \"flex.l\"\n          ECHO;\n          YY_BREAK\n#line 2496 \"flex_lexer.cpp\"\n        case YY_STATE_EOF(INITIAL):\n        case YY_STATE_EOF(COMMENT):\n          yyterminate();\n\n        case YY_END_OF_BUFFER: {\n          /* Amount of text matched not including the EOB char. */\n          int yy_amount_of_matched_text = (int)(yy_cp - yyg->yytext_ptr) - 1;\n\n          /* Undo the effects of YY_DO_BEFORE_ACTION. */\n          *yy_cp = yyg->yy_hold_char;\n          YY_RESTORE_YY_MORE_OFFSET\n\n          if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) {\n            /* We're scanning a new file or input source.  It's\n             * possible that this happened because the user\n             * just pointed yyin at a new source and called\n             * yylex().  If so, then we have to assure\n             * consistency between YY_CURRENT_BUFFER and our\n             * globals.  Here is the right place to do so, because\n             * this is the first action (other than possibly a\n             * back-up) that will match for the new input source.\n             */\n            yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n            YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;\n            YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;\n          }\n\n          /* Note that here we test for yy_c_buf_p \"<=\" to the position\n           * of the first EOB in the buffer, since yy_c_buf_p will\n           * already have been incremented past the NUL character\n           * (since all states make transitions on EOB to the\n           * end-of-buffer state).  Contrast this with the test\n           * in input().\n           */\n          if (yyg->yy_c_buf_p <=\n              &YY_CURRENT_BUFFER_LVALUE\n                   ->yy_ch_buf[yyg->yy_n_chars]) { /* This was really a NUL. */\n            yy_state_type yy_next_state;\n\n            yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n            yy_current_state = yy_get_previous_state(yyscanner);\n\n            /* Okay, we're now positioned to make the NUL\n             * transition.  We couldn't have\n             * yy_get_previous_state() go ahead and do it\n             * for us because it doesn't know how to deal\n             * with the possibility of jamming (and we don't\n             * want to build jamming into it because then it\n             * will run more slowly).\n             */\n\n            yy_next_state = yy_try_NUL_trans(yy_current_state, yyscanner);\n\n            yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n\n            if (yy_next_state) {\n              /* Consume the NUL. */\n              yy_cp = ++yyg->yy_c_buf_p;\n              yy_current_state = yy_next_state;\n              goto yy_match;\n            }\n\n            else {\n              yy_cp = yyg->yy_last_accepting_cpos;\n              yy_current_state = yyg->yy_last_accepting_state;\n              goto yy_find_action;\n            }\n          }\n\n          else\n            switch (yy_get_next_buffer(yyscanner)) {\n              case EOB_ACT_END_OF_FILE: {\n                yyg->yy_did_buffer_switch_on_eof = 0;\n\n                if (yywrap(yyscanner)) {\n                  /* Note: because we've taken care in\n                   * yy_get_next_buffer() to have set up\n                   * yytext, we can now set up\n                   * yy_c_buf_p so that if some total\n                   * hoser (like flex itself) wants to\n                   * call the scanner after we return the\n                   * YY_NULL, it'll still work - another\n                   * YY_NULL will get returned.\n                   */\n                  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;\n\n                  yy_act = YY_STATE_EOF(YY_START);\n                  goto do_action;\n                }\n\n                else {\n                  if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n                }\n                break;\n              }\n\n              case EOB_ACT_CONTINUE_SCAN:\n                yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_match;\n\n              case EOB_ACT_LAST_MATCH:\n                yyg->yy_c_buf_p =\n                    &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_find_action;\n            }\n          break;\n        }\n\n        default:\n          YY_FATAL_ERROR(\"fatal flex scanner internal error--no action found\");\n      } /* end of action switch */\n    }   /* end of scanning one token */\n  }     /* end of user's declarations */\n} /* end of yylex */\n\n/* yy_get_next_buffer - try to read in a new buffer\n *\n * Returns a code representing an action:\n *\tEOB_ACT_LAST_MATCH -\n *\tEOB_ACT_CONTINUE_SCAN - continue scanning from current position\n *\tEOB_ACT_END_OF_FILE - end of file\n */\nstatic int yy_get_next_buffer(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;\n  char *source = yyg->yytext_ptr;\n  int number_to_move, i;\n  int ret_val;\n\n  if (yyg->yy_c_buf_p >\n      &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1])\n    YY_FATAL_ERROR(\"fatal flex scanner internal error--end of buffer missed\");\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer ==\n      0) { /* Don't try to fill the buffer, so this is an EOF. */\n    if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) {\n      /* We matched a single character, the EOB, so\n       * treat this as a final EOF.\n       */\n      return EOB_ACT_END_OF_FILE;\n    }\n\n    else {\n      /* We matched some text prior to the EOB, first\n       * process it.\n       */\n      return EOB_ACT_LAST_MATCH;\n    }\n  }\n\n  /* Try to read more data. */\n\n  /* First move last chars to start of buffer. */\n  number_to_move = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr - 1);\n\n  for (i = 0; i < number_to_move; ++i) *(dest++) = *(source++);\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING)\n    /* don't do the read, it's not guaranteed to return an EOF,\n     * just force an EOF\n     */\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;\n\n  else {\n    int num_to_read =\n        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n\n    while (num_to_read <= 0) { /* Not enough room in the buffer - grow it. */\n\n      /* just a shorter name for the current buffer */\n      YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;\n\n      int yy_c_buf_p_offset = (int)(yyg->yy_c_buf_p - b->yy_ch_buf);\n\n      if (b->yy_is_our_buffer) {\n        int new_size = b->yy_buf_size * 2;\n\n        if (new_size <= 0)\n          b->yy_buf_size += b->yy_buf_size / 8;\n        else\n          b->yy_buf_size *= 2;\n\n        b->yy_ch_buf = (char *)\n            /* Include room in for 2 EOB chars. */\n            yyrealloc((void *)b->yy_ch_buf, (yy_size_t)(b->yy_buf_size + 2),\n                      yyscanner);\n      } else\n        /* Can't grow it, we don't own it. */\n        b->yy_ch_buf = NULL;\n\n      if (!b->yy_ch_buf)\n        YY_FATAL_ERROR(\"fatal error - scanner input buffer overflow\");\n\n      yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];\n\n      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n    }\n\n    if (num_to_read > YY_READ_BUF_SIZE) num_to_read = YY_READ_BUF_SIZE;\n\n    /* Read in more data. */\n    YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),\n             yyg->yy_n_chars, num_to_read);\n\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  if (yyg->yy_n_chars == 0) {\n    if (number_to_move == YY_MORE_ADJ) {\n      ret_val = EOB_ACT_END_OF_FILE;\n      yyrestart(yyin, yyscanner);\n    }\n\n    else {\n      ret_val = EOB_ACT_LAST_MATCH;\n      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING;\n    }\n  }\n\n  else\n    ret_val = EOB_ACT_CONTINUE_SCAN;\n\n  if ((yyg->yy_n_chars + number_to_move) >\n      YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {\n    /* Extend the array by 50%, plus the number we really need. */\n    int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);\n    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf =\n        (char *)yyrealloc((void *)YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,\n                          (yy_size_t)new_size, yyscanner);\n    if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)\n      YY_FATAL_ERROR(\"out of dynamic memory in yy_get_next_buffer()\");\n    /* \"- 2\" to take care of EOB's */\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int)(new_size - 2);\n  }\n\n  yyg->yy_n_chars += number_to_move;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] =\n      YY_END_OF_BUFFER_CHAR;\n\n  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];\n\n  return ret_val;\n}\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner) {\n  yy_state_type yy_current_state;\n  char *yy_cp;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_current_state = yyg->yy_start;\n\n  for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p;\n       ++yy_cp) {\n    YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);\n    if (yy_accept[yy_current_state]) {\n      yyg->yy_last_accepting_state = yy_current_state;\n      yyg->yy_last_accepting_cpos = yy_cp;\n    }\n    while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n      yy_current_state = (int)yy_def[yy_current_state];\n      if (yy_current_state >= 664) yy_c = yy_meta[yy_c];\n    }\n    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  }\n\n  return yy_current_state;\n}\n\n/* yy_try_NUL_trans - try to make a transition on the NUL character\n *\n * synopsis\n *\tnext_state = yy_try_NUL_trans( current_state );\n */\nstatic yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state,\n                                      yyscan_t yyscanner) {\n  int yy_is_jam;\n  struct yyguts_t *yyg = (struct yyguts_t *)\n      yyscanner; /* This var may be unused depending upon options. */\n  char *yy_cp = yyg->yy_c_buf_p;\n\n  YY_CHAR yy_c = 1;\n  if (yy_accept[yy_current_state]) {\n    yyg->yy_last_accepting_state = yy_current_state;\n    yyg->yy_last_accepting_cpos = yy_cp;\n  }\n  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n    yy_current_state = (int)yy_def[yy_current_state];\n    if (yy_current_state >= 664) yy_c = yy_meta[yy_c];\n  }\n  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  yy_is_jam = (yy_current_state == 663);\n\n  (void)yyg;\n  return yy_is_jam ? 0 : yy_current_state;\n}\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner)\n#else\nstatic int input(yyscan_t yyscanner)\n#endif\n\n{\n  int c;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  *yyg->yy_c_buf_p = yyg->yy_hold_char;\n\n  if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) {\n    /* yy_c_buf_p now points to the character we want to return.\n     * If this occurs *before* the EOB characters, then it's a\n     * valid NUL; if not, then we've hit the end of the buffer.\n     */\n    if (yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars])\n      /* This was really a NUL. */\n      *yyg->yy_c_buf_p = '\\0';\n\n    else { /* need more input */\n      int offset = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr);\n      ++yyg->yy_c_buf_p;\n\n      switch (yy_get_next_buffer(yyscanner)) {\n        case EOB_ACT_LAST_MATCH:\n          /* This happens because yy_g_n_b()\n           * sees that we've accumulated a\n           * token and flags that we need to\n           * try matching the token before\n           * proceeding.  But for input(),\n           * there's no matching to consider.\n           * So convert the EOB_ACT_LAST_MATCH\n           * to EOB_ACT_END_OF_FILE.\n           */\n\n          /* Reset buffer status. */\n          yyrestart(yyin, yyscanner);\n\n          /*FALLTHROUGH*/\n\n        case EOB_ACT_END_OF_FILE: {\n          if (yywrap(yyscanner)) return 0;\n\n          if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n#ifdef __cplusplus\n          return yyinput(yyscanner);\n#else\n          return input(yyscanner);\n#endif\n        }\n\n        case EOB_ACT_CONTINUE_SCAN:\n          yyg->yy_c_buf_p = yyg->yytext_ptr + offset;\n          break;\n      }\n    }\n  }\n\n  c = *(unsigned char *)yyg->yy_c_buf_p; /* cast for 8-bit char's */\n  *yyg->yy_c_buf_p = '\\0';               /* preserve yytext */\n  yyg->yy_hold_char = *++yyg->yy_c_buf_p;\n\n  return c;\n}\n#endif /* ifndef YY_NO_INPUT */\n\n/** Immediately switch to a different input stream.\n * @param input_file A readable stream.\n * @param yyscanner The scanner object.\n * @note This function does not reset the start condition to @c INITIAL .\n */\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) {\n    yyensure_buffer_stack(yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n  }\n\n  yy_init_buffer(YY_CURRENT_BUFFER, input_file, yyscanner);\n  yy_load_buffer_state(yyscanner);\n}\n\n/** Switch to a different input buffer.\n * @param new_buffer The new input buffer.\n * @param yyscanner The scanner object.\n */\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* TODO. We should be able to replace this entire function body\n   * with\n   *\t\tyypop_buffer_state();\n   *\t\tyypush_buffer_state(new_buffer);\n   */\n  yyensure_buffer_stack(yyscanner);\n  if (YY_CURRENT_BUFFER == new_buffer) return;\n\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n  yy_load_buffer_state(yyscanner);\n\n  /* We don't actually know whether we did this switch during\n   * EOF (yywrap()) processing, but the only time this flag\n   * is looked at is after yywrap() is called, so it's safe\n   * to go ahead and always set it.\n   */\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\nstatic void yy_load_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;\n  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;\n  yyg->yy_hold_char = *yyg->yy_c_buf_p;\n}\n\n/** Allocate and initialize an input buffer state.\n * @param file A readable stream.\n * @param size The character buffer size in bytes. When in doubt, use @c\n * YY_BUF_SIZE.\n * @param yyscanner The scanner object.\n * @return the allocated buffer state.\n */\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_buf_size = size;\n\n  /* yy_ch_buf has to be 2 characters longer than the size given because\n   * we need to put in 2 end-of-buffer characters.\n   */\n  b->yy_ch_buf = (char *)yyalloc((yy_size_t)(b->yy_buf_size + 2), yyscanner);\n  if (!b->yy_ch_buf)\n    YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_is_our_buffer = 1;\n\n  yy_init_buffer(b, file, yyscanner);\n\n  return b;\n}\n\n/** Destroy the buffer.\n * @param b a buffer created with yy_create_buffer()\n * @param yyscanner The scanner object.\n */\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!b) return;\n\n  if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */\n    YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE)0;\n\n  if (b->yy_is_our_buffer) yyfree((void *)b->yy_ch_buf, yyscanner);\n\n  yyfree((void *)b, yyscanner);\n}\n\n/* Initializes or reinitializes a buffer.\n * This function is sometimes called more than once on the same buffer,\n * such as during a yyrestart() or at EOF.\n */\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner)\n\n{\n  int oerrno = errno;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_flush_buffer(b, yyscanner);\n\n  b->yy_input_file = file;\n  b->yy_fill_buffer = 1;\n\n  /* If b is the current buffer, then yy_init_buffer was _probably_\n   * called from yyrestart() or through yy_get_next_buffer.\n   * In that case, we don't want to reset the lineno or column.\n   */\n  if (b != YY_CURRENT_BUFFER) {\n    b->yy_bs_lineno = 1;\n    b->yy_bs_column = 0;\n  }\n\n  b->yy_is_interactive = 0;\n\n  errno = oerrno;\n}\n\n/** Discard all buffered characters. On the next scan, YY_INPUT will be called.\n * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.\n * @param yyscanner The scanner object.\n */\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!b) return;\n\n  b->yy_n_chars = 0;\n\n  /* We always need two end-of-buffer characters.  The first causes\n   * a transition to the end-of-buffer state.  The second causes\n   * a jam in that state.\n   */\n  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;\n  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;\n\n  b->yy_buf_pos = &b->yy_ch_buf[0];\n\n  b->yy_at_bol = 1;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  if (b == YY_CURRENT_BUFFER) yy_load_buffer_state(yyscanner);\n}\n\n/** Pushes the new state onto the stack. The new state becomes\n *  the current state. This function will allocate the stack\n *  if necessary.\n *  @param new_buffer The new state.\n *  @param yyscanner The scanner object.\n */\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (new_buffer == NULL) return;\n\n  yyensure_buffer_stack(yyscanner);\n\n  /* This block is copied from yy_switch_to_buffer. */\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  /* Only push if top exists. Otherwise, replace top. */\n  if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++;\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n\n  /* copied from yy_switch_to_buffer. */\n  yy_load_buffer_state(yyscanner);\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\n/** Removes and deletes the top of the stack, if present.\n *  The next element becomes the new top.\n *  @param yyscanner The scanner object.\n */\nvoid yypop_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!YY_CURRENT_BUFFER) return;\n\n  yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n  YY_CURRENT_BUFFER_LVALUE = NULL;\n  if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top;\n\n  if (YY_CURRENT_BUFFER) {\n    yy_load_buffer_state(yyscanner);\n    yyg->yy_did_buffer_switch_on_eof = 1;\n  }\n}\n\n/* Allocates the stack if it does not exist.\n *  Guarantees space for at least one push.\n */\nstatic void yyensure_buffer_stack(yyscan_t yyscanner) {\n  yy_size_t num_to_alloc;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!yyg->yy_buffer_stack) {\n    /* First allocation is just for 2 elements, since we don't know if this\n     * scanner will even need a stack. We use 2 instead of 1 to avoid an\n     * immediate realloc on the next call.\n     */\n    num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyalloc(\n        num_to_alloc * sizeof(struct yy_buffer_state *), yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    memset(yyg->yy_buffer_stack, 0,\n           num_to_alloc * sizeof(struct yy_buffer_state *));\n\n    yyg->yy_buffer_stack_max = num_to_alloc;\n    yyg->yy_buffer_stack_top = 0;\n    return;\n  }\n\n  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) {\n    /* Increase the buffer to prepare for a possible push. */\n    yy_size_t grow_size = 8 /* arbitrary grow size */;\n\n    num_to_alloc = yyg->yy_buffer_stack_max + grow_size;\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyrealloc(\n        yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state *),\n        yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    /* zero only the new slots.*/\n    memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0,\n           grow_size * sizeof(struct yy_buffer_state *));\n    yyg->yy_buffer_stack_max = num_to_alloc;\n  }\n}\n\n/** Setup the input buffer state to scan directly from a user-specified\n * character buffer.\n * @param base the character buffer\n * @param size the size in bytes of the character buffer\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  if (size < 2 || base[size - 2] != YY_END_OF_BUFFER_CHAR ||\n      base[size - 1] != YY_END_OF_BUFFER_CHAR)\n    /* They forgot to leave room for the EOB's. */\n    return NULL;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_buffer()\");\n\n  b->yy_buf_size = (int)(size - 2); /* \"- 2\" to take care of EOB's */\n  b->yy_buf_pos = b->yy_ch_buf = base;\n  b->yy_is_our_buffer = 0;\n  b->yy_input_file = NULL;\n  b->yy_n_chars = b->yy_buf_size;\n  b->yy_is_interactive = 0;\n  b->yy_at_bol = 1;\n  b->yy_fill_buffer = 0;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  yy_switch_to_buffer(b, yyscanner);\n\n  return b;\n}\n\n/** Setup the input buffer state to scan a string. The next call to yylex() will\n * scan from a @e copy of @a str.\n * @param yystr a NUL-terminated string to scan\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n * @note If you want to scan bytes that may contain NUL values, then use\n *       yy_scan_bytes() instead.\n */\nYY_BUFFER_STATE yy_scan_string(const char *yystr, yyscan_t yyscanner) {\n  return yy_scan_bytes(yystr, (int)strlen(yystr), yyscanner);\n}\n\n/** Setup the input buffer state to scan the given bytes. The next call to\n * yylex() will scan from a @e copy of @a bytes.\n * @param yybytes the byte buffer to scan\n * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_bytes(const char *yybytes, int _yybytes_len,\n                              yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n  char *buf;\n  yy_size_t n;\n  int i;\n\n  /* Get memory for full buffer, including space for trailing EOB's. */\n  n = (yy_size_t)(_yybytes_len + 2);\n  buf = (char *)yyalloc(n, yyscanner);\n  if (!buf) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_bytes()\");\n\n  for (i = 0; i < _yybytes_len; ++i) buf[i] = yybytes[i];\n\n  buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR;\n\n  b = yy_scan_buffer(buf, n, yyscanner);\n  if (!b) YY_FATAL_ERROR(\"bad buffer in yy_scan_bytes()\");\n\n  /* It's okay to grow etc. this buffer, and we should throw it\n   * away when we're done.\n   */\n  b->yy_is_our_buffer = 1;\n\n  return b;\n}\n\n#ifndef YY_EXIT_FAILURE\n#define YY_EXIT_FAILURE 2\n#endif\n\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  fprintf(stderr, \"%s\\n\", msg);\n  exit(YY_EXIT_FAILURE);\n}\n\n/* Redefine yyless() so it works in section 3 code. */\n\n#undef yyless\n#define yyless(n)                                \\\n  do {                                           \\\n    /* Undo effects of setting up yytext. */     \\\n    int yyless_macro_arg = (n);                  \\\n    YY_LESS_LINENO(yyless_macro_arg);            \\\n    yytext[yyleng] = yyg->yy_hold_char;          \\\n    yyg->yy_c_buf_p = yytext + yyless_macro_arg; \\\n    yyg->yy_hold_char = *yyg->yy_c_buf_p;        \\\n    *yyg->yy_c_buf_p = '\\0';                     \\\n    yyleng = yyless_macro_arg;                   \\\n  } while (0)\n\n/* Accessor  methods (get/set functions) to struct members. */\n\n/** Get the user-defined data for this scanner.\n * @param yyscanner The scanner object.\n */\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyextra;\n}\n\n/** Get the current line number.\n * @param yyscanner The scanner object.\n */\nint yyget_lineno(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yylineno;\n}\n\n/** Get the current column number.\n * @param yyscanner The scanner object.\n */\nint yyget_column(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yycolumn;\n}\n\n/** Get the input stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_in(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyin;\n}\n\n/** Get the output stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_out(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyout;\n}\n\n/** Get the length of the current token.\n * @param yyscanner The scanner object.\n */\nint yyget_leng(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyleng;\n}\n\n/** Get the current token.\n * @param yyscanner The scanner object.\n */\n\nchar *yyget_text(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yytext;\n}\n\n/** Set the user-defined data. This data is never touched by the scanner.\n * @param user_defined The data to be associated with this scanner.\n * @param yyscanner The scanner object.\n */\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyextra = user_defined;\n}\n\n/** Set the current line number.\n * @param _line_number line number\n * @param yyscanner The scanner object.\n */\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* lineno is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_lineno called with no buffer\");\n\n  yylineno = _line_number;\n}\n\n/** Set the current column.\n * @param _column_no column number\n * @param yyscanner The scanner object.\n */\nvoid yyset_column(int _column_no, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* column is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_column called with no buffer\");\n\n  yycolumn = _column_no;\n}\n\n/** Set the input stream. This does not discard the current\n * input buffer.\n * @param _in_str A readable stream.\n * @param yyscanner The scanner object.\n * @see yy_switch_to_buffer\n */\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyin = _in_str;\n}\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyout = _out_str;\n}\n\nint yyget_debug(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yy_flex_debug;\n}\n\nvoid yyset_debug(int _bdebug, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yy_flex_debug = _bdebug;\n}\n\n/* Accessor methods for yylval and yylloc */\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylval;\n}\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylval = yylval_param;\n}\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylloc;\n}\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylloc = yylloc_param;\n}\n\n/* User-visible API */\n\n/* yylex_init is special because it creates the scanner itself, so it is\n * the ONLY reentrant function that doesn't take the scanner as the last\n * argument. That's why we explicitly handle the declaration, instead of using\n * our macros.\n */\nint yylex_init(yyscan_t *ptr_yy_globals) {\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), NULL);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for\n   * releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\n/* yylex_init_extra has the same functionality as yylex_init, but follows the\n * convention of taking the scanner as the last argument. Note however, that\n * this is a *pointer* to a scanner, as it will be allocated by this call (and\n * is the reason, too, why this function also must handle its own declaration).\n * The user defined value in the first argument will be available to yyalloc in\n * the yyextra field.\n */\nint yylex_init_extra(YY_EXTRA_TYPE yy_user_defined, yyscan_t *ptr_yy_globals) {\n  struct yyguts_t dummy_yyguts;\n\n  yyset_extra(yy_user_defined, &dummy_yyguts);\n\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), &dummy_yyguts);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in\n  yy_init_globals. Leave at 0x00 for releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  yyset_extra(yy_user_defined, *ptr_yy_globals);\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\nstatic int yy_init_globals(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  /* Initialization is the same as for the non-reentrant scanner.\n   * This function is called from yylex_destroy(), so don't allocate here.\n   */\n\n  yyg->yy_buffer_stack = NULL;\n  yyg->yy_buffer_stack_top = 0;\n  yyg->yy_buffer_stack_max = 0;\n  yyg->yy_c_buf_p = NULL;\n  yyg->yy_init = 0;\n  yyg->yy_start = 0;\n\n  yyg->yy_start_stack_ptr = 0;\n  yyg->yy_start_stack_depth = 0;\n  yyg->yy_start_stack = NULL;\n\n/* Defined in main.c */\n#ifdef YY_STDINIT\n  yyin = stdin;\n  yyout = stdout;\n#else\n  yyin = NULL;\n  yyout = NULL;\n#endif\n\n  /* For future reference: Set errno on error, since we are called by\n   * yylex_init()\n   */\n  return 0;\n}\n\n/* yylex_destroy is for both reentrant and non-reentrant scanners. */\nint yylex_destroy(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* Pop the buffer stack, destroying each element. */\n  while (YY_CURRENT_BUFFER) {\n    yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = NULL;\n    yypop_buffer_state(yyscanner);\n  }\n\n  /* Destroy the stack itself. */\n  yyfree(yyg->yy_buffer_stack, yyscanner);\n  yyg->yy_buffer_stack = NULL;\n\n  /* Destroy the start condition stack. */\n  yyfree(yyg->yy_start_stack, yyscanner);\n  yyg->yy_start_stack = NULL;\n\n  /* Reset the globals. This is important in a non-reentrant scanner so the next\n   * time yylex() is called, initialization will occur. */\n  yy_init_globals(yyscanner);\n\n  /* Destroy the main struct (reentrant only). */\n  yyfree(yyscanner, yyscanner);\n  yyscanner = NULL;\n  return 0;\n}\n\n/*\n * Internal utility routines.\n */\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *s1, const char *s2, int n,\n                            yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  int i;\n  for (i = 0; i < n; ++i) s1[i] = s2[i];\n}\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *s, yyscan_t yyscanner) {\n  int n;\n  for (n = 0; s[n]; ++n)\n    ;\n\n  return n;\n}\n#endif\n\nvoid *yyalloc(yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  return malloc(size);\n}\n\nvoid *yyrealloc(void *ptr, yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  /* The cast to (char *) in the following accommodates both\n   * implementations that use char* generic pointers, and those\n   * that use void* generic pointers.  It works with the latter\n   * because both ANSI C and C++ allow castless assignment from\n   * any pointer type to void*, and deal with argument conversions\n   * as though doing an assignment.\n   */\n  return realloc(ptr, size);\n}\n\nvoid yyfree(void *ptr, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  free((char *)ptr); /* see yyrealloc() for (char *) cast */\n}\n\n#define YYTABLES_NAME \"yytables\"\n\n#line 253 \"flex.l\"\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/flex_lexer.h",
    "content": "#ifndef ff_HEADER_H\n#define ff_HEADER_H 1\n#define ff_IN_HEADER 1\n\n#line 6 \"flex_lexer.h\"\n\n#line 8 \"flex_lexer.h\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define ff__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer ff__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define ff__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer ff__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define ff__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer ff__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define ff__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string ff__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define ff__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes ff__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define ff__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer ff__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define ff__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer ff__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define ff__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state ff__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define ff__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer ff__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define ff_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state ff_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define ff_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state ff_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define ff_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack ff_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define ff_lex_ALREADY_DEFINED\n#else\n#define yylex ff_lex\n#endif\n\n#ifdef yyrestart\n#define ff_restart_ALREADY_DEFINED\n#else\n#define yyrestart ff_restart\n#endif\n\n#ifdef yylex_init\n#define ff_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init ff_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define ff_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra ff_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define ff_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy ff_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define ff_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug ff_get_debug\n#endif\n\n#ifdef yyset_debug\n#define ff_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug ff_set_debug\n#endif\n\n#ifdef yyget_extra\n#define ff_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra ff_get_extra\n#endif\n\n#ifdef yyset_extra\n#define ff_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra ff_set_extra\n#endif\n\n#ifdef yyget_in\n#define ff_get_in_ALREADY_DEFINED\n#else\n#define yyget_in ff_get_in\n#endif\n\n#ifdef yyset_in\n#define ff_set_in_ALREADY_DEFINED\n#else\n#define yyset_in ff_set_in\n#endif\n\n#ifdef yyget_out\n#define ff_get_out_ALREADY_DEFINED\n#else\n#define yyget_out ff_get_out\n#endif\n\n#ifdef yyset_out\n#define ff_set_out_ALREADY_DEFINED\n#else\n#define yyset_out ff_set_out\n#endif\n\n#ifdef yyget_leng\n#define ff_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng ff_get_leng\n#endif\n\n#ifdef yyget_text\n#define ff_get_text_ALREADY_DEFINED\n#else\n#define yyget_text ff_get_text\n#endif\n\n#ifdef yyget_lineno\n#define ff_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno ff_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define ff_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno ff_set_lineno\n#endif\n\n#ifdef yyget_column\n#define ff_get_column_ALREADY_DEFINED\n#else\n#define yyget_column ff_get_column\n#endif\n\n#ifdef yyset_column\n#define ff_set_column_ALREADY_DEFINED\n#else\n#define yyset_column ff_set_column\n#endif\n\n#ifdef yywrap\n#define ff_wrap_ALREADY_DEFINED\n#else\n#define yywrap ff_wrap\n#endif\n\n#ifdef yyget_lval\n#define ff_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval ff_get_lval\n#endif\n\n#ifdef yyset_lval\n#define ff_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval ff_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define ff_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc ff_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define ff_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc ff_set_lloc\n#endif\n\n#ifdef yyalloc\n#define ff_alloc_ALREADY_DEFINED\n#else\n#define yyalloc ff_alloc\n#endif\n\n#ifdef yyrealloc\n#define ff_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc ff_realloc\n#endif\n\n#ifdef yyfree\n#define ff_free_ALREADY_DEFINED\n#else\n#define yyfree ff_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n/* Begin user sect3 */\n\n#define ff_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\n\n#define yytext_ptr yytext_r\n\n#ifdef YY_HEADER_EXPORT_START_CONDITIONS\n#define INITIAL 0\n#define COMMENT 1\n#define singlequotedstring 2\n\n#endif\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\n#undef YY_NEW_FILE\n#undef YY_FLUSH_BUFFER\n#undef yy_set_bol\n#undef yy_new_buffer\n#undef yy_set_interactive\n#undef YY_DO_BEFORE_ACTION\n\n#ifdef YY_DECL_IS_OURS\n#undef YY_DECL_IS_OURS\n#undef YY_DECL\n#endif\n\n#ifndef ff__create_buffer_ALREADY_DEFINED\n#undef yy_create_buffer\n#endif\n#ifndef ff__delete_buffer_ALREADY_DEFINED\n#undef yy_delete_buffer\n#endif\n#ifndef ff__scan_buffer_ALREADY_DEFINED\n#undef yy_scan_buffer\n#endif\n#ifndef ff__scan_string_ALREADY_DEFINED\n#undef yy_scan_string\n#endif\n#ifndef ff__scan_bytes_ALREADY_DEFINED\n#undef yy_scan_bytes\n#endif\n#ifndef ff__init_buffer_ALREADY_DEFINED\n#undef yy_init_buffer\n#endif\n#ifndef ff__flush_buffer_ALREADY_DEFINED\n#undef yy_flush_buffer\n#endif\n#ifndef ff__load_buffer_state_ALREADY_DEFINED\n#undef yy_load_buffer_state\n#endif\n#ifndef ff__switch_to_buffer_ALREADY_DEFINED\n#undef yy_switch_to_buffer\n#endif\n#ifndef ff_push_buffer_state_ALREADY_DEFINED\n#undef yypush_buffer_state\n#endif\n#ifndef ff_pop_buffer_state_ALREADY_DEFINED\n#undef yypop_buffer_state\n#endif\n#ifndef ff_ensure_buffer_stack_ALREADY_DEFINED\n#undef yyensure_buffer_stack\n#endif\n#ifndef ff_lex_ALREADY_DEFINED\n#undef yylex\n#endif\n#ifndef ff_restart_ALREADY_DEFINED\n#undef yyrestart\n#endif\n#ifndef ff_lex_init_ALREADY_DEFINED\n#undef yylex_init\n#endif\n#ifndef ff_lex_init_extra_ALREADY_DEFINED\n#undef yylex_init_extra\n#endif\n#ifndef ff_lex_destroy_ALREADY_DEFINED\n#undef yylex_destroy\n#endif\n#ifndef ff_get_debug_ALREADY_DEFINED\n#undef yyget_debug\n#endif\n#ifndef ff_set_debug_ALREADY_DEFINED\n#undef yyset_debug\n#endif\n#ifndef ff_get_extra_ALREADY_DEFINED\n#undef yyget_extra\n#endif\n#ifndef ff_set_extra_ALREADY_DEFINED\n#undef yyset_extra\n#endif\n#ifndef ff_get_in_ALREADY_DEFINED\n#undef yyget_in\n#endif\n#ifndef ff_set_in_ALREADY_DEFINED\n#undef yyset_in\n#endif\n#ifndef ff_get_out_ALREADY_DEFINED\n#undef yyget_out\n#endif\n#ifndef ff_set_out_ALREADY_DEFINED\n#undef yyset_out\n#endif\n#ifndef ff_get_leng_ALREADY_DEFINED\n#undef yyget_leng\n#endif\n#ifndef ff_get_text_ALREADY_DEFINED\n#undef yyget_text\n#endif\n#ifndef ff_get_lineno_ALREADY_DEFINED\n#undef yyget_lineno\n#endif\n#ifndef ff_set_lineno_ALREADY_DEFINED\n#undef yyset_lineno\n#endif\n#ifndef ff_get_column_ALREADY_DEFINED\n#undef yyget_column\n#endif\n#ifndef ff_set_column_ALREADY_DEFINED\n#undef yyset_column\n#endif\n#ifndef ff_wrap_ALREADY_DEFINED\n#undef yywrap\n#endif\n#ifndef ff_get_lval_ALREADY_DEFINED\n#undef yyget_lval\n#endif\n#ifndef ff_set_lval_ALREADY_DEFINED\n#undef yyset_lval\n#endif\n#ifndef ff_get_lloc_ALREADY_DEFINED\n#undef yyget_lloc\n#endif\n#ifndef ff_set_lloc_ALREADY_DEFINED\n#undef yyset_lloc\n#endif\n#ifndef ff_alloc_ALREADY_DEFINED\n#undef yyalloc\n#endif\n#ifndef ff_realloc_ALREADY_DEFINED\n#undef yyrealloc\n#endif\n#ifndef ff_free_ALREADY_DEFINED\n#undef yyfree\n#endif\n#ifndef ff_text_ALREADY_DEFINED\n#undef yytext\n#endif\n#ifndef ff_leng_ALREADY_DEFINED\n#undef yyleng\n#endif\n#ifndef ff_in_ALREADY_DEFINED\n#undef yyin\n#endif\n#ifndef ff_out_ALREADY_DEFINED\n#undef yyout\n#endif\n#ifndef ff__flex_debug_ALREADY_DEFINED\n#undef yy_flex_debug\n#endif\n#ifndef ff_lineno_ALREADY_DEFINED\n#undef yylineno\n#endif\n#ifndef ff_tables_fload_ALREADY_DEFINED\n#undef yytables_fload\n#endif\n#ifndef ff_tables_destroy_ALREADY_DEFINED\n#undef yytables_destroy\n#endif\n#ifndef ff_TABLES_NAME_ALREADY_DEFINED\n#undef yyTABLES_NAME\n#endif\n\n#line 253 \"flex.l\"\n\n#line 737 \"flex_lexer.h\"\n#undef ff_IN_HEADER\n#endif /* ff_HEADER_H */\n"
  },
  {
    "path": "srcs/internal/postgresql/parser/parser_typedef.h",
    "content": "#ifndef __PARSER_TYPEDEF_H__\n#define __PARSER_TYPEDEF_H__\n\n#include <vector>\n\n#ifndef YYtypeDEF_YY_SCANNER_T\n#define YYtypeDEF_YY_SCANNER_T\ntypedef void* yyscan_t;\n#endif\n\n#define YYSTYPE FF_STYPE\n#define YYLTYPE FF_LTYPE\n\nstruct FF_CUST_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n\n  int total_column;\n\n  // Length of the string in the SQL query string\n  int string_length;\n\n  // Parameters.\n  // int param_id;\n  std::vector<void*> param_list;\n};\n\n#define FF_LTYPE FF_CUST_LTYPE\n#define FF_LTYPE_IS_DECLARED 1\n\n#define YY_USER_ACTION                        \\\n  yylloc->first_line = yylloc->last_line;     \\\n  yylloc->first_column = yylloc->last_column; \\\n  for (int i = 0; yytext[i] != '\\0'; i++) {   \\\n    yylloc->total_column++;                   \\\n    yylloc->string_length++;                  \\\n    if (yytext[i] == '\\n') {                  \\\n      yylloc->last_line++;                    \\\n      yylloc->last_column = 0;                \\\n    } else {                                  \\\n      yylloc->last_column++;                  \\\n    }                                         \\\n  }\n\n#endif"
  },
  {
    "path": "srcs/internal/postgresql/postgresql.cc",
    "content": "#include \"postgresql.h\"\n\n#include <cassert>\n#include <string>\n#include <vector>\n\n#include \"absl/strings/str_format.h\"\n#include \"ast.h\"\n#include \"define.h\"\n#include \"mutator.h\"\n#include \"utils.h\"\n\nPostgreSQLDB *create_postgresql() { return new PostgreSQLDB; }\n\nPostgreSQLDB::PostgreSQLDB() { mutator_ = std::make_unique<Mutator>(); }\n\nbool PostgreSQLDB::initialize(YAML::Node config) {\n  const std::string init_lib_path = config[\"init_lib\"].as<std::string>();\n  std::string data_lib = config[\"data_lib\"].as<std::string>();\n  std::vector<std::string> file_list =\n      get_all_files_in_dir(init_lib_path.c_str());\n  for (auto &f : file_list) {\n    mutator_->init(absl::StrFormat(\"%s/%s\", init_lib_path, f));\n  }\n  mutator_->init_data_library(data_lib);\n  return true;\n}\n\nbool PostgreSQLDB::save_interesting_query(const std::string &query) {\n  if (Program *program = parser(query)) {\n    std::vector<IR *> ir_set;\n    IR *ir = program->translate(ir_set);\n    ir_set.clear();\n    mutator_->extract_struct(ir);\n    string strip_sql = ir->to_string();\n    auto p_strip_sql = parser(strip_sql);\n    if (p_strip_sql) {\n      auto root_ir = p_strip_sql->translate(ir_set);\n      p_strip_sql->deep_delete();\n      mutator_->add_ir_to_library(root_ir);\n      deep_delete(root_ir);\n    }\n    return true;\n  }\n  return false;\n}\n\nsize_t PostgreSQLDB::validate_all(std::vector<IR *> &ir_set) {\n  for (IR *&ir : ir_set) {\n    bool result = mutator_->validate(ir);\n    if (!result) {\n      continue;\n    }\n    std::string validated_ir = ir->to_string();\n    validated_test_cases_.push(std::move(validated_ir));\n  }\n  return validated_test_cases_.size();\n}\n\nbool PostgreSQLDB::has_mutated_test_cases() {\n  return !validated_test_cases_.empty();\n}\n\nsize_t PostgreSQLDB::mutate(const std::string &query) {\n  std::vector<IR *> ir_set, mutated_tree;\n  Program *program_root = parser(query.c_str());\n  if (program_root == nullptr) {\n    return 0;\n  }\n\n  // TODO: Remove this uncessary try.\n  // Or we will have exception from the parser?\n  try {\n    program_root->translate(ir_set);\n  } catch (...) {\n    for (auto ir : ir_set) {\n      delete ir;\n    }\n    program_root->deep_delete();\n  }\n  program_root->deep_delete();\n\n  mutated_tree = mutator_->mutate_all(ir_set);\n  deep_delete(ir_set[ir_set.size() - 1]);\n\n  size_t validated_ir_size = validate_all(mutated_tree);\n  for (auto ir : mutated_tree) {\n    deep_delete(ir);\n  }\n\n  // std::cerr << \"validated ir size: \" << validated_ir_size << std::endl;\n\n  return validated_ir_size;\n}\n\nstd::string PostgreSQLDB::get_next_mutated_query() {\n  assert(has_mutated_test_cases());\n  auto result = validated_test_cases_.top();\n  validated_test_cases_.pop();\n  return result;\n}\n"
  },
  {
    "path": "srcs/internal/postgresql/postgresql.h",
    "content": "#ifndef __POSTGRESQL_H__\n#define __POSTGRESQL_H__\n#include <memory>\n#include <stack>\n\n#include \"db.h\"\n\nclass Mutator;\nclass IR;\n\nclass PostgreSQLDB : public DataBase {\n public:\n  PostgreSQLDB();\n  // Set up the database.\n  virtual bool initialize(YAML::Node config);\n  virtual size_t mutate(const std::string &);\n  virtual bool save_interesting_query(const std::string &);\n  // Return an new query to test. The `buffer` should be unmanaged,\n  virtual std::string get_next_mutated_query();\n  virtual bool has_mutated_test_cases();\n  // Clean up the enviroment, e.g., drop all the databases.\n  virtual bool clean_up() { return true; }\n\n private:\n  size_t validate_all(std::vector<IR *> &ir_set);\n  std::unique_ptr<Mutator> mutator_;\n  std::stack<std::string> validated_test_cases_;\n};\n\nPostgreSQLDB *create_postgresql();\n#endif\n"
  },
  {
    "path": "srcs/internal/postgresql/srcs/ast.cpp",
    "content": "#include \"../include/ast.h\"\n\n#include <cassert>\n\n#include \"../include/define.h\"\n#include \"../include/utils.h\"\n\nstatic string s_table_name;\n\nNode *generate_ast_node_by_type(IRTYPE type) {\n#define DECLARE_CASE(classname) \\\n  if (type == k##classname) return new classname();\n\n  ALLCLASS(DECLARE_CASE);\n#undef DECLARE_CASE\n  return NULL;\n}\n\nNODETYPE get_nodetype_by_string(string s) {\n#define DECLARE_CASE(datatypename) \\\n  if (s == #datatypename) return k##datatypename;\n\n  ALLCLASS(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return kUnknown;\n}\n\nstring get_string_by_nodetype(NODETYPE tt) {\n#define DECLARE_CASE(datatypename) \\\n  if (tt == k##datatypename) return string(#datatypename);\n\n  ALLCLASS(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return string(\"\");\n}\n\nstring get_string_by_datatype(DATATYPE tt) {\n#define DECLARE_CASE(datatypename) \\\n  if (tt == k##datatypename) return string(#datatypename);\n\n  ALLDATATYPE(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return string(\"\");\n}\n\nDATATYPE get_datatype_by_string(string s) {\n#define DECLARE_CASE(datatypename) \\\n  if (s == #datatypename) return k##datatypename;\n\n  ALLDATATYPE(DECLARE_CASE);\n\n#undef DECLARE_CASE\n  return kDataWhatever;\n}\n\nvoid deep_delete(IR *root) {\n  if (root->left_) deep_delete(root->left_);\n  if (root->right_) deep_delete(root->right_);\n\n  if (root->op_) delete root->op_;\n\n  delete root;\n}\n\nIR *deep_copy(const IR *root) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_) left = deep_copy(root->left_);\n  if (root->right_) right = deep_copy(root->right_);\n\n  copy_res = new IR(root, left, right);\n\n  return copy_res;\n}\n\nstring IR::to_string() {\n  auto res = to_string_core();\n  trim_string(res);\n  return res;\n}\n\nstring IR::to_string_core() {\n  switch (type_) {\n    case kIntLiteral:\n      return std::to_string(int_val_);\n    case kFloatLiteral:\n      return std::to_string(float_val_);\n    case kIdentifier:\n      return str_val_;\n    case kStringLiteral:\n      return str_val_;\n  }\n\n  string res;\n\n  if (op_ != NULL) {\n    res += op_->prefix_ + \" \";\n  }\n  if (left_ != NULL) res += left_->to_string_core() + \" \";\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  if (right_ != NULL) res += right_->to_string_core() + \" \";\n  if (op_ != NULL) res += op_->suffix_;\n\n  return res;\n}\n\nIR *Node::translate(vector<IR *> &v_ir_collector) { return NULL; }\nIR *Program::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(stmtlist_);\n  res = new IR(kProgram, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid Program::deep_delete() {\n  SAFEDELETE(stmtlist_);\n  delete this;\n};\n\nvoid Program::generate() {\n  GENERATESTART(1)\n\n  stmtlist_ = new Stmtlist();\n  stmtlist_->generate();\n\n  GENERATEEND\n}\n\nIR *Stmtlist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(stmt_);\n  auto tmp2 = SAFETRANSLATE(stmtlist_);\n  res = new IR(kStmtlist, OP3(\"\", \";\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(stmt_);\n  res = new IR(kStmtlist, OP3(\"\", \";\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Stmtlist::deep_delete() {\n  SAFEDELETE(stmt_);\n  SAFEDELETE(stmtlist_);\n  delete this;\n};\n\nvoid Stmtlist::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  stmt_ = new Stmt();\n  stmt_->generate();\n  stmtlist_ = new Stmtlist();\n  stmtlist_->generate();\n  CASEEND\n  CASESTART(1)\n  stmt_ = new Stmt();\n  stmt_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      stmt_ = new Stmt();\n      stmt_->generate();\n      case_idx_ = 1;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *Stmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(create_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(drop_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(select_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(update_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(insert_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(alter_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(reindex_stmt_);\n  res = new IR(kStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Stmt::deep_delete() {\n  SAFEDELETE(insert_stmt_);\n  SAFEDELETE(drop_stmt_);\n  SAFEDELETE(create_stmt_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(alter_stmt_);\n  SAFEDELETE(reindex_stmt_);\n  SAFEDELETE(update_stmt_);\n  delete this;\n};\n\nvoid Stmt::generate() {\n  GENERATESTART(7)\n\n  SWITCHSTART\n  CASESTART(0)\n  create_stmt_ = new CreateStmt();\n  create_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  drop_stmt_ = new DropStmt();\n  drop_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  CASEEND\n  CASESTART(3)\n  update_stmt_ = new UpdateStmt();\n  update_stmt_->generate();\n  CASEEND\n  CASESTART(4)\n  insert_stmt_ = new InsertStmt();\n  insert_stmt_->generate();\n  CASEEND\n  CASESTART(5)\n  alter_stmt_ = new AlterStmt();\n  alter_stmt_->generate();\n  CASEEND\n  CASESTART(6)\n  reindex_stmt_ = new ReindexStmt();\n  reindex_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CreateStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(create_table_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(create_index_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(create_view_stmt_);\n  res = new IR(kCreateStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateStmt::deep_delete() {\n  SAFEDELETE(create_index_stmt_);\n  SAFEDELETE(create_view_stmt_);\n  SAFEDELETE(create_table_stmt_);\n  delete this;\n};\n\nvoid CreateStmt::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  create_table_stmt_ = new CreateTableStmt();\n  create_table_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  create_index_stmt_ = new CreateIndexStmt();\n  create_index_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  create_view_stmt_ = new CreateViewStmt();\n  create_view_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *DropStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(drop_index_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(drop_table_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(drop_view_stmt_);\n  res = new IR(kDropStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid DropStmt::deep_delete() {\n  SAFEDELETE(drop_table_stmt_);\n  SAFEDELETE(drop_view_stmt_);\n  SAFEDELETE(drop_index_stmt_);\n  delete this;\n};\n\nvoid DropStmt::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  drop_index_stmt_ = new DropIndexStmt();\n  drop_index_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  drop_table_stmt_ = new DropTableStmt();\n  drop_table_stmt_->generate();\n  CASEEND\n  CASESTART(2)\n  drop_view_stmt_ = new DropViewStmt();\n  drop_view_stmt_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *AlterStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(alter_action_);\n  res = new IR(kAlterStmt, OP3(\"ALTER TABLE\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid AlterStmt::deep_delete() {\n  SAFEDELETE(alter_action_);\n  SAFEDELETE(table_name_);\n  delete this;\n};\n\nvoid AlterStmt::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  alter_action_ = new AlterAction();\n  alter_action_->generate();\n\n  GENERATEEND\n}\n\nIR *SelectStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kSelectStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_with_parens_);\n  res = new IR(kSelectStmt, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectStmt::deep_delete() {\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(select_with_parens_);\n  delete this;\n};\n\nvoid SelectStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  select_with_parens_ = new SelectWithParens();\n  select_with_parens_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SelectWithParens::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kSelectWithParens, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_with_parens_);\n  res = new IR(kSelectWithParens, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectWithParens::deep_delete() {\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(select_with_parens_);\n  delete this;\n};\n\nvoid SelectWithParens::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  select_with_parens_ = new SelectWithParens();\n  select_with_parens_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      select_no_parens_ = new SelectNoParens();\n      select_no_parens_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SelectNoParens::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(select_clause_list_);\n  auto tmp3 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_limit_clause_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kSelectNoParens, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid SelectNoParens::deep_delete() {\n  SAFEDELETE(select_clause_list_);\n  SAFEDELETE(opt_with_clause_);\n  SAFEDELETE(opt_order_clause_);\n  SAFEDELETE(opt_limit_clause_);\n  delete this;\n};\n\nvoid SelectNoParens::generate() {\n  GENERATESTART(1)\n\n  opt_with_clause_ = new OptWithClause();\n  opt_with_clause_->generate();\n  select_clause_list_ = new SelectClauseList();\n  select_clause_list_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_limit_clause_ = new OptLimitClause();\n  opt_limit_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *SelectClauseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(select_clause_);\n  res = new IR(kSelectClauseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(select_clause_);\n  auto tmp2 = SAFETRANSLATE(combine_clause_);\n  auto tmp3 = SAFETRANSLATE(select_clause_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kSelectClauseList, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SelectClauseList::deep_delete() {\n  SAFEDELETE(select_clause_list_);\n  SAFEDELETE(combine_clause_);\n  SAFEDELETE(select_clause_);\n  delete this;\n};\n\nvoid SelectClauseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  select_clause_ = new SelectClause();\n  select_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  select_clause_ = new SelectClause();\n  select_clause_->generate();\n  combine_clause_ = new CombineClause();\n  combine_clause_->generate();\n  select_clause_list_ = new SelectClauseList();\n  select_clause_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      select_clause_ = new SelectClause();\n      select_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SelectClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_all_or_distinct_);\n  auto tmp2 = SAFETRANSLATE(select_target_);\n  auto tmp3 = SAFETRANSLATE(opt_from_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_group_clause_);\n  auto tmp6 = SAFETRANSLATE(opt_window_clause_);\n  auto tmp7 = new IR(kUnknown, OP3(\"SELECT\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kSelectClause, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n\n  TRANSLATEEND\n}\n\nvoid SelectClause::deep_delete() {\n  SAFEDELETE(opt_group_clause_);\n  SAFEDELETE(opt_all_or_distinct_);\n  SAFEDELETE(opt_from_clause_);\n  SAFEDELETE(opt_window_clause_);\n  SAFEDELETE(select_target_);\n  SAFEDELETE(opt_where_clause_);\n  delete this;\n};\n\nvoid SelectClause::generate() {\n  GENERATESTART(1)\n\n  opt_all_or_distinct_ = new OptAllOrDistinct();\n  opt_all_or_distinct_->generate();\n  select_target_ = new SelectTarget();\n  select_target_->generate();\n  opt_from_clause_ = new OptFromClause();\n  opt_from_clause_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n  opt_group_clause_ = new OptGroupClause();\n  opt_group_clause_->generate();\n  opt_window_clause_ = new OptWindowClause();\n  opt_window_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *CombineClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kCombineClause, OP3(\"UNION\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kCombineClause, OP3(\"INTERSECT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kCombineClause, OP3(\"EXCEPT\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CombineClause::deep_delete() { delete this; };\n\nvoid CombineClause::generate(){GENERATESTART(3)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                       CASEEND CASESTART(2) CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *OptFromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(from_clause_);\n  res = new IR(kOptFromClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFromClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFromClause::deep_delete() {\n  SAFEDELETE(from_clause_);\n  delete this;\n};\n\nvoid OptFromClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  from_clause_ = new FromClause();\n  from_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SelectTarget::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kSelectTarget, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid SelectTarget::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid SelectTarget::generate() {\n  GENERATESTART(1)\n\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptWindowClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(window_clause_);\n  res = new IR(kOptWindowClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWindowClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWindowClause::deep_delete() {\n  SAFEDELETE(window_clause_);\n  delete this;\n};\n\nvoid OptWindowClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  window_clause_ = new WindowClause();\n  window_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *WindowClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(window_def_list_);\n  res = new IR(kWindowClause, OP3(\"WINDOW\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WindowClause::deep_delete() {\n  SAFEDELETE(window_def_list_);\n  delete this;\n};\n\nvoid WindowClause::generate() {\n  GENERATESTART(1)\n\n  window_def_list_ = new WindowDefList();\n  window_def_list_->generate();\n\n  GENERATEEND\n}\n\nIR *WindowDefList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(window_def_);\n  res = new IR(kWindowDefList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(window_def_);\n  auto tmp2 = SAFETRANSLATE(window_def_list_);\n  res = new IR(kWindowDefList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid WindowDefList::deep_delete() {\n  SAFEDELETE(window_def_);\n  SAFEDELETE(window_def_list_);\n  delete this;\n};\n\nvoid WindowDefList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  window_def_ = new WindowDef();\n  window_def_->generate();\n  CASEEND\n  CASESTART(1)\n  window_def_ = new WindowDef();\n  window_def_->generate();\n  window_def_list_ = new WindowDefList();\n  window_def_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      window_def_ = new WindowDef();\n      window_def_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *WindowDef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(window_name_);\n  auto tmp2 = SAFETRANSLATE(window_);\n  res = new IR(kWindowDef, OP3(\"\", \"AS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid WindowDef::deep_delete() {\n  SAFEDELETE(window_);\n  SAFEDELETE(window_name_);\n  delete this;\n};\n\nvoid WindowDef::generate() {\n  GENERATESTART(1)\n\n  window_name_ = new WindowName();\n  window_name_->generate();\n  window_ = new Window();\n  window_->generate();\n\n  GENERATEEND\n}\n\nIR *WindowName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kWindowName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WindowName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid WindowName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *Window::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_exist_window_name_);\n  auto tmp2 = SAFETRANSLATE(opt_partition_);\n  auto tmp3 = SAFETRANSLATE(opt_order_clause_);\n  auto tmp4 = SAFETRANSLATE(opt_frame_clause_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kWindow, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid Window::deep_delete() {\n  SAFEDELETE(opt_exist_window_name_);\n  SAFEDELETE(opt_frame_clause_);\n  SAFEDELETE(opt_partition_);\n  SAFEDELETE(opt_order_clause_);\n  delete this;\n};\n\nvoid Window::generate() {\n  GENERATESTART(1)\n\n  opt_exist_window_name_ = new OptExistWindowName();\n  opt_exist_window_name_->generate();\n  opt_partition_ = new OptPartition();\n  opt_partition_->generate();\n  opt_order_clause_ = new OptOrderClause();\n  opt_order_clause_->generate();\n  opt_frame_clause_ = new OptFrameClause();\n  opt_frame_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *OptPartition::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kOptPartition, OP3(\"PARTITION BY\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptPartition, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptPartition::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid OptPartition::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptFrameClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(range_or_rows_);\n  auto tmp2 = SAFETRANSLATE(frame_bound_start_);\n  auto tmp3 = SAFETRANSLATE(opt_frame_exclude_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOptFrameClause, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(range_or_rows_);\n  auto tmp2 = SAFETRANSLATE(frame_bound_start_);\n  auto tmp3 = SAFETRANSLATE(frame_bound_end_);\n  auto tmp4 = SAFETRANSLATE(opt_frame_exclude_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kOptFrameClause, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptFrameClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFrameClause::deep_delete() {\n  SAFEDELETE(frame_bound_start_);\n  SAFEDELETE(opt_frame_exclude_);\n  SAFEDELETE(range_or_rows_);\n  SAFEDELETE(frame_bound_end_);\n  delete this;\n};\n\nvoid OptFrameClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  range_or_rows_ = new RangeOrRows();\n  range_or_rows_->generate();\n  frame_bound_start_ = new FrameBoundStart();\n  frame_bound_start_->generate();\n  opt_frame_exclude_ = new OptFrameExclude();\n  opt_frame_exclude_->generate();\n  CASEEND\n  CASESTART(1)\n  range_or_rows_ = new RangeOrRows();\n  range_or_rows_->generate();\n  frame_bound_start_ = new FrameBoundStart();\n  frame_bound_start_->generate();\n  frame_bound_end_ = new FrameBoundEnd();\n  frame_bound_end_->generate();\n  opt_frame_exclude_ = new OptFrameExclude();\n  opt_frame_exclude_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *RangeOrRows::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kRangeOrRows, OP3(\"RANGE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kRangeOrRows, OP3(\"ROWS\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kRangeOrRows, OP3(\"GROUPS\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid RangeOrRows::deep_delete() { delete this; };\n\nvoid RangeOrRows::generate(){GENERATESTART(3)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND CASESTART(2) CASEEND SWITCHEND\n\n                                         GENERATEEND}\n\nIR *FrameBoundStart::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundStart, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundStart, OP3(\"UNBOUNDED PRECEDING\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBoundStart::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n};\n\nvoid FrameBoundStart::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  frame_bound_ = new FrameBound();\n  frame_bound_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *FrameBoundEnd::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundEnd, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundEnd, OP3(\"UNBOUNDED FOLLOWING\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBoundEnd::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n};\n\nvoid FrameBoundEnd::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  frame_bound_ = new FrameBound();\n  frame_bound_->generate();\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *FrameBound::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OP3(\"\", \"PRECEDING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OP3(\"\", \"FOLLOWING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kFrameBound, OP3(\"CURRENT ROW\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameBound::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid FrameBound::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptFrameExclude::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(frame_exclude_);\n  res = new IR(kOptFrameExclude, OP3(\"EXCLUDE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFrameExclude, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFrameExclude::deep_delete() {\n  SAFEDELETE(frame_exclude_);\n  delete this;\n};\n\nvoid OptFrameExclude::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  frame_exclude_ = new FrameExclude();\n  frame_exclude_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *FrameExclude::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kFrameExclude, OP3(\"NO OTHERS\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameExclude, OP3(\"CURRENT ROW\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kFrameExclude, OP3(\"GROUP\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kFrameExclude, OP3(\"TIES\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid FrameExclude::deep_delete() { delete this; };\n\nvoid FrameExclude::generate(){GENERATESTART(4)\n\n                                  SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                      CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                          CASEEND SWITCHEND\n\n                                              GENERATEEND}\n\nIR *OptExistWindowName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kOptExistWindowName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptExistWindowName, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptExistWindowName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid OptExistWindowName::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  identifier_ = new Identifier();\n  identifier_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptGroupClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  auto tmp2 = SAFETRANSLATE(opt_having_clause_);\n  res = new IR(kOptGroupClause, OP3(\"GROUP BY\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptGroupClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptGroupClause::deep_delete() {\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_having_clause_);\n  delete this;\n};\n\nvoid OptGroupClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  opt_having_clause_ = new OptHavingClause();\n  opt_having_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptHavingClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptHavingClause, OP3(\"HAVING\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptHavingClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptHavingClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid OptHavingClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptWhereClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(where_clause_);\n  res = new IR(kOptWhereClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWhereClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWhereClause::deep_delete() {\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptWhereClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *WhereClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kWhereClause, OP3(\"WHERE\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid WhereClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid WhereClause::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n\n  GENERATEEND\n}\n\nIR *FromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_ref_);\n  res = new IR(kFromClause, OP3(\"FROM\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid FromClause::deep_delete() {\n  SAFEDELETE(table_ref_);\n  delete this;\n};\n\nvoid FromClause::generate() {\n  GENERATESTART(1)\n\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n\n  GENERATEEND\n}\n\nIR *TableRef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp3 = SAFETRANSLATE(opt_on_or_using_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  auto tmp3 = SAFETRANSLATE(opt_on_or_using_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_ref_);\n  auto tmp3 = SAFETRANSLATE(opt_on_or_using_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableRef, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableRef::deep_delete() {\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(table_ref_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_table_prefix_);\n  SAFEDELETE(opt_on_or_using_);\n  delete this;\n};\n\nvoid TableRef::generate() {\n  GENERATESTART(300)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_on_or_using_ = new OptOnOrUsing();\n  opt_on_or_using_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  opt_on_or_using_ = new OptOnOrUsing();\n  opt_on_or_using_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_table_prefix_ = new OptTablePrefix();\n  opt_table_prefix_->generate();\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n  opt_on_or_using_ = new OptOnOrUsing();\n  opt_on_or_using_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 2;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      opt_table_prefix_ = new OptTablePrefix();\n      opt_table_prefix_->generate();\n      table_name_ = new TableName();\n      table_name_->generate();\n      opt_on_or_using_ = new OptOnOrUsing();\n      opt_on_or_using_->generate();\n      case_idx_ = 0;\n      CASEEND\n      CASESTART(1)\n      opt_table_prefix_ = new OptTablePrefix();\n      opt_table_prefix_->generate();\n      select_no_parens_ = new SelectNoParens();\n      select_no_parens_->generate();\n      opt_on_or_using_ = new OptOnOrUsing();\n      opt_on_or_using_->generate();\n      case_idx_ = 1;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptOnOrUsing::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(on_or_using_);\n  res = new IR(kOptOnOrUsing, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOnOrUsing, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOnOrUsing::deep_delete() {\n  SAFEDELETE(on_or_using_);\n  delete this;\n};\n\nvoid OptOnOrUsing::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  on_or_using_ = new OnOrUsing();\n  on_or_using_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OnOrUsing::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOnOrUsing, OP3(\"ON\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kOnOrUsing, OP3(\"USING (\", \")\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OnOrUsing::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(column_name_list_);\n  delete this;\n};\n\nvoid OnOrUsing::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnNameList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  res = new IR(kColumnNameList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  auto tmp2 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kColumnNameList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnNameList::deep_delete() {\n  SAFEDELETE(column_name_list_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid ColumnNameList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  CASEEND\n  CASESTART(1)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_name_ = new ColumnName();\n      column_name_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptTablePrefix::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_ref_);\n  auto tmp2 = SAFETRANSLATE(join_op_);\n  res = new IR(kOptTablePrefix, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTablePrefix, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTablePrefix::deep_delete() {\n  SAFEDELETE(join_op_);\n  SAFEDELETE(table_ref_);\n  delete this;\n};\n\nvoid OptTablePrefix::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_ref_ = new TableRef();\n  table_ref_->generate();\n  join_op_ = new JoinOp();\n  join_op_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *JoinOp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kJoinOp, OP3(\",\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kJoinOp, OP3(\"JOIN\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_join_type_);\n  res = new IR(kJoinOp, OP3(\"NATURAL\", \"JOIN\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid JoinOp::deep_delete() {\n  SAFEDELETE(opt_join_type_);\n  delete this;\n};\n\nvoid JoinOp::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  opt_join_type_ = new OptJoinType();\n  opt_join_type_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptJoinType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptJoinType, OP3(\"LEFT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptJoinType, OP3(\"LEFT OUTER\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptJoinType, OP3(\"INNER\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptJoinType, OP3(\"CROSS\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kOptJoinType, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptJoinType::deep_delete() { delete this; };\n\nvoid OptJoinType::generate(){GENERATESTART(5)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                         CASEEND CASESTART(4)\n\n                                             CASEEND SWITCHEND\n\n                                                 GENERATEEND}\n\nIR *ExprList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(expr_list_);\n  res = new IR(kExprList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kExprList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ExprList::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid ExprList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_ = new Expr();\n  expr_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      expr_ = new Expr();\n      expr_->generate();\n      case_idx_ = 1;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OptLimitClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(limit_clause_);\n  res = new IR(kOptLimitClause, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptLimitClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptLimitClause::deep_delete() {\n  SAFEDELETE(limit_clause_);\n  delete this;\n};\n\nvoid OptLimitClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  limit_clause_ = new LimitClause();\n  limit_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *LimitClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \"OFFSET\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLimitClause, OP3(\"LIMIT\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid LimitClause::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid LimitClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(2)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOrderClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(order_item_list_);\n  res = new IR(kOptOrderClause, OP3(\"ORDER BY\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderClause::deep_delete() {\n  SAFEDELETE(order_item_list_);\n  delete this;\n};\n\nvoid OptOrderClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  order_item_list_ = new OrderItemList();\n  order_item_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptOrderNulls::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOrderNulls, OP3(\"NULLS FIRST\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderNulls, OP3(\"NULLS LAST\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOrderNulls, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderNulls::deep_delete() { delete this; };\n\nvoid OptOrderNulls::generate(){GENERATESTART(3)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                       CASEEND CASESTART(2)\n\n                                           CASEEND SWITCHEND\n\n                                               GENERATEEND}\n\nIR *OrderItemList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(order_item_);\n  res = new IR(kOrderItemList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(order_item_);\n  auto tmp2 = SAFETRANSLATE(order_item_list_);\n  res = new IR(kOrderItemList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OrderItemList::deep_delete() {\n  SAFEDELETE(order_item_);\n  SAFEDELETE(order_item_list_);\n  delete this;\n};\n\nvoid OrderItemList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  order_item_ = new OrderItem();\n  order_item_->generate();\n  CASEEND\n  CASESTART(1)\n  order_item_ = new OrderItem();\n  order_item_->generate();\n  order_item_list_ = new OrderItemList();\n  order_item_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      order_item_ = new OrderItem();\n      order_item_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *OrderItem::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_order_behavior_);\n  auto tmp3 = SAFETRANSLATE(opt_order_nulls_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOrderItem, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n\n  TRANSLATEEND\n}\n\nvoid OrderItem::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_nulls_);\n  SAFEDELETE(opt_order_behavior_);\n  delete this;\n};\n\nvoid OrderItem::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  opt_order_behavior_ = new OptOrderBehavior();\n  opt_order_behavior_->generate();\n  opt_order_nulls_ = new OptOrderNulls();\n  opt_order_nulls_->generate();\n\n  GENERATEEND\n}\n\nIR *OptOrderBehavior::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptOrderBehavior, OP3(\"ASC\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrderBehavior, OP3(\"DESC\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOrderBehavior, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOrderBehavior::deep_delete() { delete this; };\n\nvoid OptOrderBehavior::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *OptWithClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kOptWithClause, OP3(\"WITH\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kOptWithClause, OP3(\"WITH RECURSIVE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptWithClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptWithClause::deep_delete() {\n  SAFEDELETE(cte_table_list_);\n  delete this;\n};\n\nvoid OptWithClause::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n  CASESTART(1)\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CteTableList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(cte_table_);\n  res = new IR(kCteTableList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(cte_table_);\n  auto tmp2 = SAFETRANSLATE(cte_table_list_);\n  res = new IR(kCteTableList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CteTableList::deep_delete() {\n  SAFEDELETE(cte_table_list_);\n  SAFEDELETE(cte_table_);\n  delete this;\n};\n\nvoid CteTableList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  cte_table_ = new CteTable();\n  cte_table_->generate();\n  CASEEND\n  CASESTART(1)\n  cte_table_ = new CteTable();\n  cte_table_->generate();\n  cte_table_list_ = new CteTableList();\n  cte_table_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      cte_table_ = new CteTable();\n      cte_table_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *CteTable::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(cte_table_name_);\n  auto tmp2 = SAFETRANSLATE(select_stmt_);\n  res = new IR(kCteTable, OP3(\"\", \"AS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CteTable::deep_delete() {\n  SAFEDELETE(cte_table_name_);\n  SAFEDELETE(select_stmt_);\n  delete this;\n};\n\nvoid CteTable::generate() {\n  GENERATESTART(1)\n\n  cte_table_name_ = new CteTableName();\n  cte_table_name_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n\n  GENERATEEND\n}\n\nIR *CteTableName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_column_name_list_p_);\n  res = new IR(kCteTableName, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CteTableName::deep_delete() {\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(table_name_);\n  delete this;\n};\n\nvoid CteTableName::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n\n  GENERATEEND\n}\n\nIR *OptAllOrDistinct::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptAllOrDistinct, OP3(\"ALL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptAllOrDistinct, OP3(\"DISTINCT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptAllOrDistinct, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptAllOrDistinct::deep_delete() { delete this; };\n\nvoid OptAllOrDistinct::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *CreateTableStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(opt_if_not_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = SAFETRANSLATE(select_stmt_);\n  auto tmp5 = new IR(kUnknown, OP3(\"CREATE\", \"TABLE\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kCreateTableStmt, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(opt_if_not_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = SAFETRANSLATE(column_def_list_);\n  auto tmp5 = SAFETRANSLATE(opt_table_constraint_list_);\n  auto tmp6 = new IR(kUnknown, OP3(\"CREATE\", \"TABLE\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"(\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateTableStmt, OP3(\"\", \"\", \")\"), tmp8, tmp5);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateTableStmt::deep_delete() {\n  SAFEDELETE(opt_table_constraint_list_);\n  SAFEDELETE(opt_temp_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(column_def_list_);\n  SAFEDELETE(opt_if_not_exist_);\n  delete this;\n};\n\nvoid CreateTableStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  opt_if_not_exist_ = new OptIfNotExist();\n  opt_if_not_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  opt_if_not_exist_ = new OptIfNotExist();\n  opt_if_not_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  column_def_list_ = new ColumnDefList();\n  column_def_list_->generate();\n  opt_table_constraint_list_ = new OptTableConstraintList();\n  opt_table_constraint_list_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CreateIndexStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_unique_);\n  auto tmp2 = SAFETRANSLATE(opt_if_not_exist_);\n  auto tmp3 = SAFETRANSLATE(table_name_1_);\n  auto tmp4 = SAFETRANSLATE(table_name_2_);\n  auto tmp5 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp6 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp7 = new IR(kUnknown, OP3(\"CREATE\", \"INDEX\", \"\"), tmp1, tmp2);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"ON\"), tmp7, tmp3);\n  PUSH(tmp8);\n  auto tmp9 = new IR(kUnknown, OP3(\"\", \"\", \"(\"), tmp8, tmp4);\n  PUSH(tmp9);\n  auto tmp10 = new IR(kUnknown, OP3(\"\", \"\", \")\"), tmp9, tmp5);\n  PUSH(tmp10);\n  res = new IR(kCreateIndexStmt, OP3(\"\", \"\", \"\"), tmp10, tmp6);\n\n  TRANSLATEEND\n}\n\nvoid CreateIndexStmt::deep_delete() {\n  SAFEDELETE(table_name_1_);\n  SAFEDELETE(table_name_2_);\n  SAFEDELETE(opt_if_not_exist_);\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(opt_where_clause_);\n  SAFEDELETE(opt_unique_);\n  delete this;\n};\n\nvoid CreateIndexStmt::generate() {\n  GENERATESTART(1)\n\n  opt_unique_ = new OptUnique();\n  opt_unique_->generate();\n  opt_if_not_exist_ = new OptIfNotExist();\n  opt_if_not_exist_->generate();\n  table_name_1_ = new TableName();\n  table_name_1_->generate();\n  table_name_2_ = new TableName();\n  table_name_2_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *CreateViewStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp4 = SAFETRANSLATE(select_stmt_);\n  auto tmp5 = SAFETRANSLATE(opt_check_option_);\n  auto tmp6 = new IR(kUnknown, OP3(\"CREATE\", \"VIEW\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp4 = SAFETRANSLATE(select_stmt_);\n  auto tmp5 = SAFETRANSLATE(opt_check_option_);\n  auto tmp6 = new IR(kUnknown, OP3(\"CREATE\", \"RECURSIVE VIEW\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp4 = SAFETRANSLATE(select_stmt_);\n  auto tmp5 = SAFETRANSLATE(opt_check_option_);\n  auto tmp6 =\n      new IR(kUnknown, OP3(\"CREATE OR REPLACE\", \"VIEW\", \"\"), tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_temp_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp4 = SAFETRANSLATE(select_stmt_);\n  auto tmp5 = SAFETRANSLATE(opt_check_option_);\n  auto tmp6 = new IR(kUnknown, OP3(\"CREATE OR REPLACE\", \"RECURSIVE VIEW\", \"\"),\n                     tmp1, tmp2);\n  PUSH(tmp6);\n  auto tmp7 = new IR(kUnknown, OP3(\"\", \"\", \"AS\"), tmp6, tmp3);\n  PUSH(tmp7);\n  auto tmp8 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp7, tmp4);\n  PUSH(tmp8);\n  res = new IR(kCreateViewStmt, OP3(\"\", \"\", \"\"), tmp8, tmp5);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CreateViewStmt::deep_delete() {\n  SAFEDELETE(opt_temp_);\n  SAFEDELETE(view_name_);\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(select_stmt_);\n  SAFEDELETE(opt_check_option_);\n  delete this;\n};\n\nvoid CreateViewStmt::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  CASESTART(3)\n  opt_temp_ = new OptTemp();\n  opt_temp_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_stmt_ = new SelectStmt();\n  select_stmt_->generate();\n  opt_check_option_ = new OptCheckOption();\n  opt_check_option_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *DropIndexStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kDropIndexStmt, OP3(\"DROP INDEX\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid DropIndexStmt::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropIndexStmt::generate() {\n  GENERATESTART(1)\n\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n\n  GENERATEEND\n}\n\nIR *DropTableStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kDropTableStmt, OP3(\"DROP TABLE\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid DropTableStmt::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropTableStmt::generate() {\n  GENERATESTART(1)\n\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n\n  GENERATEEND\n}\n\nIR *DropViewStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_if_exist_);\n  auto tmp2 = SAFETRANSLATE(view_name_);\n  res = new IR(kDropViewStmt, OP3(\"DROP VIEW\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid DropViewStmt::deep_delete() {\n  SAFEDELETE(view_name_);\n  SAFEDELETE(opt_if_exist_);\n  delete this;\n};\n\nvoid DropViewStmt::generate() {\n  GENERATESTART(1)\n\n  opt_if_exist_ = new OptIfExist();\n  opt_if_exist_->generate();\n  view_name_ = new ViewName();\n  view_name_->generate();\n\n  GENERATEEND\n}\n\nIR *InsertStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp3 = SAFETRANSLATE(insert_rest_);\n  auto tmp4 = SAFETRANSLATE(opt_on_conflict_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"INSERT INTO\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kInsertStmt, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid InsertStmt::deep_delete() {\n  SAFEDELETE(insert_rest_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_on_conflict_);\n  SAFEDELETE(opt_with_clause_);\n  delete this;\n};\n\nvoid InsertStmt::generate() {\n  GENERATESTART(1)\n\n  opt_with_clause_ = new OptWithClause();\n  opt_with_clause_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  insert_rest_ = new InsertRest();\n  insert_rest_->generate();\n  opt_on_conflict_ = new OptOnConflict();\n  opt_on_conflict_->generate();\n\n  GENERATEEND\n}\n\nIR *InsertRest::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kInsertRest, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  res = new IR(kInsertRest, OP3(\"\", \"DEFAULT VALUES\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp2 = SAFETRANSLATE(super_values_list_);\n  res = new IR(kInsertRest, OP3(\"\", \"VALUES\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid InsertRest::deep_delete() {\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(super_values_list_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid InsertRest::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  super_values_list_ = new SuperValuesList();\n  super_values_list_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SuperValuesList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(values_list_);\n  res = new IR(kSuperValuesList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(values_list_);\n  auto tmp2 = SAFETRANSLATE(super_values_list_);\n  res = new IR(kSuperValuesList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SuperValuesList::deep_delete() {\n  SAFEDELETE(values_list_);\n  SAFEDELETE(super_values_list_);\n  delete this;\n};\n\nvoid SuperValuesList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  values_list_ = new ValuesList();\n  values_list_->generate();\n  CASEEND\n  CASESTART(1)\n  values_list_ = new ValuesList();\n  values_list_->generate();\n  super_values_list_ = new SuperValuesList();\n  super_values_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      values_list_ = new ValuesList();\n      values_list_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ValuesList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kValuesList, OP3(\"(\", \")\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ValuesList::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n};\n\nvoid ValuesList::generate() {\n  GENERATESTART(1)\n\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptOnConflict::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_conflict_expr_);\n  res = new IR(kOptOnConflict, OP3(\"ON CONFLICT\", \"DO NOTHING\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_conflict_expr_);\n  auto tmp2 = SAFETRANSLATE(set_clause_list_);\n  auto tmp3 = SAFETRANSLATE(where_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"ON CONFLICT\", \"DO UPDATE\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kOptOnConflict, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOnConflict, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOnConflict::deep_delete() {\n  SAFEDELETE(opt_conflict_expr_);\n  SAFEDELETE(set_clause_list_);\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptOnConflict::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_conflict_expr_ = new OptConflictExpr();\n  opt_conflict_expr_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_conflict_expr_ = new OptConflictExpr();\n  opt_conflict_expr_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptConflictExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp2 = SAFETRANSLATE(where_clause_);\n  res = new IR(kOptConflictExpr, OP3(\"(\", \")\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptConflictExpr, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptConflictExpr::deep_delete() {\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(where_clause_);\n  delete this;\n};\n\nvoid OptConflictExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  where_clause_ = new WhereClause();\n  where_clause_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *IndexedColumnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(indexed_column_);\n  res = new IR(kIndexedColumnList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(indexed_column_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kIndexedColumnList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid IndexedColumnList::deep_delete() {\n  SAFEDELETE(indexed_column_);\n  SAFEDELETE(indexed_column_list_);\n  delete this;\n};\n\nvoid IndexedColumnList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  indexed_column_ = new IndexedColumn();\n  indexed_column_->generate();\n  CASEEND\n  CASESTART(1)\n  indexed_column_ = new IndexedColumn();\n  indexed_column_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      indexed_column_ = new IndexedColumn();\n      indexed_column_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *IndexedColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(opt_order_behavior_);\n  res = new IR(kIndexedColumn, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid IndexedColumn::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_behavior_);\n  delete this;\n};\n\nvoid IndexedColumn::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  opt_order_behavior_ = new OptOrderBehavior();\n  opt_order_behavior_->generate();\n\n  GENERATEEND\n}\n\nIR *UpdateStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp3 = SAFETRANSLATE(set_clause_list_);\n  auto tmp4 = SAFETRANSLATE(opt_where_clause_);\n  auto tmp5 = new IR(kUnknown, OP3(\"\", \"UPDATE\", \"SET\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kUpdateStmt, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid UpdateStmt::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(set_clause_list_);\n  SAFEDELETE(opt_with_clause_);\n  SAFEDELETE(opt_where_clause_);\n  delete this;\n};\n\nvoid UpdateStmt::generate() {\n  GENERATESTART(1)\n\n  opt_with_clause_ = new OptWithClause();\n  opt_with_clause_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  opt_where_clause_ = new OptWhereClause();\n  opt_where_clause_->generate();\n\n  GENERATEEND\n}\n\nIR *ReindexStmt::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kReindexStmt, OP3(\"REINDEX TABLE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kReindexStmt, OP3(\"REINDEX INDEX\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ReindexStmt::deep_delete() {\n  SAFEDELETE(table_name_);\n  delete this;\n};\n\nvoid ReindexStmt::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  CASESTART(1)\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *AlterAction::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kAlterAction, OP3(\"RENAME TO\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_name_1_);\n  auto tmp3 = SAFETRANSLATE(column_name_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"RENAME\", \"\", \"TO\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kAlterAction, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_def_);\n  res = new IR(kAlterAction, OP3(\"ADD\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid AlterAction::deep_delete() {\n  SAFEDELETE(column_def_);\n  SAFEDELETE(opt_column_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(column_name_1_);\n  SAFEDELETE(column_name_2_);\n  delete this;\n};\n\nvoid AlterAction::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_column_ = new OptColumn();\n  opt_column_->generate();\n  column_name_1_ = new ColumnName();\n  column_name_1_->generate();\n  column_name_2_ = new ColumnName();\n  column_name_2_->generate();\n  CASEEND\n  CASESTART(2)\n  opt_column_ = new OptColumn();\n  opt_column_->generate();\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnDefList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_def_);\n  res = new IR(kColumnDefList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_def_);\n  auto tmp2 = SAFETRANSLATE(column_def_list_);\n  res = new IR(kColumnDefList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnDefList::deep_delete() {\n  SAFEDELETE(column_def_);\n  SAFEDELETE(column_def_list_);\n  delete this;\n};\n\nvoid ColumnDefList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  CASEEND\n  CASESTART(1)\n  column_def_ = new ColumnDef();\n  column_def_->generate();\n  column_def_list_ = new ColumnDefList();\n  column_def_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_def_ = new ColumnDef();\n      column_def_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ColumnDef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  auto tmp2 = SAFETRANSLATE(type_name_);\n  auto tmp3 = SAFETRANSLATE(opt_column_constraint_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kColumnDef, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n\n  TRANSLATEEND\n}\n\nvoid ColumnDef::deep_delete() {\n  SAFEDELETE(type_name_);\n  SAFEDELETE(identifier_);\n  SAFEDELETE(opt_column_constraint_list_);\n  delete this;\n};\n\nvoid ColumnDef::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n  type_name_ = new TypeName();\n  type_name_->generate();\n  opt_column_constraint_list_ = new OptColumnConstraintList();\n  opt_column_constraint_list_->generate();\n\n  GENERATEEND\n}\n\nIR *OptColumnConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_constraint_list_);\n  res = new IR(kOptColumnConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnConstraintList, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumnConstraintList::deep_delete() {\n  SAFEDELETE(column_constraint_list_);\n  delete this;\n};\n\nvoid OptColumnConstraintList::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_constraint_list_ = new ColumnConstraintList();\n  column_constraint_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ColumnConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_constraint_);\n  res = new IR(kColumnConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_constraint_);\n  auto tmp2 = SAFETRANSLATE(column_constraint_list_);\n  res = new IR(kColumnConstraintList, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ColumnConstraintList::deep_delete() {\n  SAFEDELETE(column_constraint_list_);\n  SAFEDELETE(column_constraint_);\n  delete this;\n};\n\nvoid ColumnConstraintList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_constraint_ = new ColumnConstraint();\n  column_constraint_->generate();\n  CASEEND\n  CASESTART(1)\n  column_constraint_ = new ColumnConstraint();\n  column_constraint_->generate();\n  column_constraint_list_ = new ColumnConstraintList();\n  column_constraint_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      column_constraint_ = new ColumnConstraint();\n      column_constraint_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *ColumnConstraint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(constraint_type_);\n  res = new IR(kColumnConstraint, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ColumnConstraint::deep_delete() {\n  SAFEDELETE(constraint_type_);\n  delete this;\n};\n\nvoid ColumnConstraint::generate() {\n  GENERATESTART(1)\n\n  constraint_type_ = new ConstraintType();\n  constraint_type_->generate();\n\n  GENERATEEND\n}\n\nIR *ConstraintType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kConstraintType, OP3(\"PRIMARY KEY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kConstraintType, OP3(\"NOT NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kConstraintType, OP3(\"UNIQUE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kConstraintType, OP3(\"CHECK (\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(foreign_clause_);\n  res = new IR(kConstraintType, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ConstraintType::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(foreign_clause_);\n  delete this;\n};\n\nvoid ConstraintType::generate() {\n  GENERATESTART(5)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(4)\n  foreign_clause_ = new ForeignClause();\n  foreign_clause_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ForeignClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_column_name_list_p_);\n  auto tmp3 = SAFETRANSLATE(opt_foreign_key_actions_);\n  auto tmp4 = SAFETRANSLATE(opt_constraint_attribute_spec_);\n  auto tmp5 = new IR(kUnknown, OP3(\"REFERENCES\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp5);\n  auto tmp6 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp5, tmp3);\n  PUSH(tmp6);\n  res = new IR(kForeignClause, OP3(\"\", \"\", \"\"), tmp6, tmp4);\n\n  TRANSLATEEND\n}\n\nvoid ForeignClause::deep_delete() {\n  SAFEDELETE(opt_constraint_attribute_spec_);\n  SAFEDELETE(opt_column_name_list_p_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_foreign_key_actions_);\n  delete this;\n};\n\nvoid ForeignClause::generate() {\n  GENERATESTART(1)\n\n  table_name_ = new TableName();\n  table_name_->generate();\n  opt_column_name_list_p_ = new OptColumnNameListP();\n  opt_column_name_list_p_->generate();\n  opt_foreign_key_actions_ = new OptForeignKeyActions();\n  opt_foreign_key_actions_->generate();\n  opt_constraint_attribute_spec_ = new OptConstraintAttributeSpec();\n  opt_constraint_attribute_spec_->generate();\n\n  GENERATEEND\n}\n\nIR *OptForeignKeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(foreign_key_actions_);\n  res = new IR(kOptForeignKeyActions, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptForeignKeyActions, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptForeignKeyActions::deep_delete() {\n  SAFEDELETE(foreign_key_actions_);\n  delete this;\n};\n\nvoid OptForeignKeyActions::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  foreign_key_actions_ = new ForeignKeyActions();\n  foreign_key_actions_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ForeignKeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH FULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH PARTIAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kForeignKeyActions, OP3(\"MATCH SIMPLE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(key_actions_);\n  res = new IR(kForeignKeyActions, OP3(\"ON UPDATE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(key_actions_);\n  res = new IR(kForeignKeyActions, OP3(\"ON DELETE\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ForeignKeyActions::deep_delete() {\n  SAFEDELETE(key_actions_);\n  delete this;\n};\n\nvoid ForeignKeyActions::generate() {\n  GENERATESTART(5)\n\n  SWITCHSTART\n  CASESTART(0)\n  CASEEND\n  CASESTART(1)\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  key_actions_ = new KeyActions();\n  key_actions_->generate();\n  CASEEND\n  CASESTART(4)\n  key_actions_ = new KeyActions();\n  key_actions_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *KeyActions::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kKeyActions, OP3(\"SET NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kKeyActions, OP3(\"SET DEFAULT\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kKeyActions, OP3(\"CASCADE\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kKeyActions, OP3(\"RESTRICT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kKeyActions, OP3(\"NO ACTION\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid KeyActions::deep_delete() { delete this; };\n\nvoid KeyActions::generate(){GENERATESTART(5)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                    CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                        CASEEND CASESTART(4) CASEEND SWITCHEND\n\n                                            GENERATEEND}\n\nIR *OptConstraintAttributeSpec::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_initial_time_);\n  res = new IR(kOptConstraintAttributeSpec, OP3(\"DEFFERRABLE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_initial_time_);\n  res =\n      new IR(kOptConstraintAttributeSpec, OP3(\"NOT DEFFERRABLE\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptConstraintAttributeSpec, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptConstraintAttributeSpec::deep_delete() {\n  SAFEDELETE(opt_initial_time_);\n  delete this;\n};\n\nvoid OptConstraintAttributeSpec::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_initial_time_ = new OptInitialTime();\n  opt_initial_time_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_initial_time_ = new OptInitialTime();\n  opt_initial_time_->generate();\n  CASEEND\n  CASESTART(2)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptInitialTime::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptInitialTime, OP3(\"INITIALLY DEFERRED\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptInitialTime, OP3(\"INITIALLY IMMEDIATE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptInitialTime, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptInitialTime::deep_delete() { delete this; };\n\nvoid OptInitialTime::generate(){\n    GENERATESTART(3)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n\n            CASEEND SWITCHEND\n\n                GENERATEEND}\n\nIR *ConstraintName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(name_);\n  res = new IR(kConstraintName, OP3(\"CONSTRAINT\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ConstraintName::deep_delete() {\n  SAFEDELETE(name_);\n  delete this;\n};\n\nvoid ConstraintName::generate() {\n  GENERATESTART(1)\n\n  name_ = new Name();\n  name_->generate();\n\n  GENERATEEND\n}\n\nIR *OptTemp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptTemp, OP3(\"TEMPORARY\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTemp, OP3(\"TEMP\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptTemp, OP3(\"LOCAL TEMPORARY\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptTemp, OP3(\"LOCAL TEMP\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kOptTemp, OP3(\"GLOBAL TEMPORARY\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kOptTemp, OP3(\"GLOBAL TEMP\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kOptTemp, OP3(\"UNLOGGED\", \"\", \"\"));\n  CASEEND\n  CASESTART(7)\n  res = new IR(kOptTemp, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTemp::deep_delete() { delete this; };\n\nvoid OptTemp::generate(){\n    GENERATESTART(8)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND CASESTART(6) CASEEND CASESTART(7)\n\n                    CASEEND SWITCHEND\n\n                        GENERATEEND}\n\nIR *OptCheckOption::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptCheckOption, OP3(\"WITH CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptCheckOption, OP3(\"WITH CASCADED CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptCheckOption, OP3(\"WITH LOCAL CHECK OPTION\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptCheckOption, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptCheckOption::deep_delete() { delete this; };\n\nvoid OptCheckOption::generate(){\n    GENERATESTART(4)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3)\n\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *OptColumnNameListP::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  res = new IR(kOptColumnNameListP, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnNameListP, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumnNameListP::deep_delete() {\n  SAFEDELETE(column_name_list_);\n  delete this;\n};\n\nvoid OptColumnNameListP::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *SetClauseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(set_clause_);\n  res = new IR(kSetClauseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(set_clause_);\n  auto tmp2 = SAFETRANSLATE(set_clause_list_);\n  res = new IR(kSetClauseList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SetClauseList::deep_delete() {\n  SAFEDELETE(set_clause_);\n  SAFEDELETE(set_clause_list_);\n  delete this;\n};\n\nvoid SetClauseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  set_clause_ = new SetClause();\n  set_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  set_clause_ = new SetClause();\n  set_clause_->generate();\n  set_clause_list_ = new SetClauseList();\n  set_clause_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      set_clause_ = new SetClause();\n      set_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *SetClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kSetClause, OP3(\"\", \"=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(column_name_list_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kSetClause, OP3(\"(\", \") =\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid SetClause::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(column_name_list_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid SetClause::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(1)\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *Expr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(between_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(exists_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(in_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(cast_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(logic_expr_);\n  res = new IR(kExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Expr::deep_delete() {\n  SAFEDELETE(cast_expr_);\n  SAFEDELETE(in_expr_);\n  SAFEDELETE(between_expr_);\n  SAFEDELETE(operand_);\n  SAFEDELETE(exists_expr_);\n  SAFEDELETE(logic_expr_);\n  delete this;\n};\n\nvoid Expr::generate() {\n  GENERATESTART(6)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(1)\n  between_expr_ = new BetweenExpr();\n  between_expr_->generate();\n  CASEEND\n  CASESTART(2)\n  exists_expr_ = new ExistsExpr();\n  exists_expr_->generate();\n  CASEEND\n  CASESTART(3)\n  in_expr_ = new InExpr();\n  in_expr_->generate();\n  CASEEND\n  CASESTART(4)\n  cast_expr_ = new CastExpr();\n  cast_expr_->generate();\n  CASEEND\n  CASESTART(5)\n  logic_expr_ = new LogicExpr();\n  logic_expr_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *Operand::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  res = new IR(kOperand, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(array_index_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(scalar_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(unary_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(binary_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(case_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(extract_expr_);\n  res = new IR(kOperand, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(7)\n  auto tmp1 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kOperand, OP3(\"(\", \")\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Operand::deep_delete() {\n  SAFEDELETE(unary_expr_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(case_expr_);\n  SAFEDELETE(select_no_parens_);\n  SAFEDELETE(extract_expr_);\n  SAFEDELETE(array_index_);\n  SAFEDELETE(binary_expr_);\n  SAFEDELETE(scalar_expr_);\n  delete this;\n};\n\nvoid Operand::generate() {\n  GENERATESTART(8)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(1)\n  array_index_ = new ArrayIndex();\n  array_index_->generate();\n  CASEEND\n  CASESTART(2)\n  scalar_expr_ = new ScalarExpr();\n  scalar_expr_->generate();\n  CASEEND\n  CASESTART(3)\n  unary_expr_ = new UnaryExpr();\n  unary_expr_->generate();\n  CASEEND\n  CASESTART(4)\n  binary_expr_ = new BinaryExpr();\n  binary_expr_->generate();\n  CASEEND\n  CASESTART(5)\n  case_expr_ = new CaseExpr();\n  case_expr_->generate();\n  CASEEND\n  CASESTART(6)\n  extract_expr_ = new ExtractExpr();\n  extract_expr_->generate();\n  CASEEND\n  CASESTART(7)\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CastExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_);\n  auto tmp2 = SAFETRANSLATE(type_name_);\n  res = new IR(kCastExpr, OP3(\"CAST (\", \"AS\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CastExpr::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(type_name_);\n  delete this;\n};\n\nvoid CastExpr::generate() {\n  GENERATESTART(1)\n\n  expr_ = new Expr();\n  expr_->generate();\n  type_name_ = new TypeName();\n  type_name_->generate();\n\n  GENERATEEND\n}\n\nIR *ScalarExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(column_name_);\n  res = new IR(kScalarExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(literal_);\n  res = new IR(kScalarExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid ScalarExpr::deep_delete() {\n  SAFEDELETE(literal_);\n  SAFEDELETE(column_name_);\n  delete this;\n};\n\nvoid ScalarExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  column_name_ = new ColumnName();\n  column_name_->generate();\n  CASEEND\n  CASESTART(1)\n  literal_ = new Literal();\n  literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *UnaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"-\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"NOT\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"ISNULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"IS NULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  res = new IR(kUnaryExpr, OP3(\"\", \"IS NOT NULL\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  res = new IR(kUnaryExpr, OP3(\"NULL\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kUnaryExpr, OP3(\"*\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid UnaryExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  delete this;\n};\n\nvoid UnaryExpr::generate() {\n  GENERATESTART(7)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(4)\n  operand_ = new Operand();\n  operand_->generate();\n  CASEEND\n  CASESTART(5)\n  CASEEND\n  CASESTART(6)\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *BinaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(comp_expr_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(binary_op_);\n  auto tmp3 = SAFETRANSLATE(operand_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBinaryExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"LIKE\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kBinaryExpr, OP3(\"\", \"NOT LIKE\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BinaryExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  SAFEDELETE(binary_op_);\n  SAFEDELETE(comp_expr_);\n  delete this;\n};\n\nvoid BinaryExpr::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  comp_expr_ = new CompExpr();\n  comp_expr_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  binary_op_ = new BinaryOp();\n  binary_op_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *LogicExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLogicExpr, OP3(\"\", \"AND\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kLogicExpr, OP3(\"\", \"OR\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid LogicExpr::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid LogicExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(1)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *InExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(select_no_parens_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"(\", \")\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"(\", \")\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(opt_not_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"\", \"IN\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kInExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid InExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_not_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid InExpr::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  expr_list_ = new ExprList();\n  expr_list_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_ = new Operand();\n  operand_->generate();\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  table_name_ = new TableName();\n  table_name_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CaseExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"\", \"END\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"END\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  auto tmp3 = SAFETRANSLATE(expr_2_);\n  auto tmp4 = new IR(kUnknown, OP3(\"CASE\", \"\", \"ELSE\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kCaseExpr, OP3(\"\", \"\", \"END\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(case_list_);\n  auto tmp2 = SAFETRANSLATE(expr_1_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"ELSE\", \"END\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CaseExpr::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  SAFEDELETE(case_list_);\n  delete this;\n};\n\nvoid CaseExpr::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n  CASESTART(1)\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n  CASESTART(2)\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n  CASEEND\n  CASESTART(3)\n  case_list_ = new CaseList();\n  case_list_->generate();\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *BetweenExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  auto tmp3 = SAFETRANSLATE(operand_3_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBetweenExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  auto tmp3 = SAFETRANSLATE(operand_3_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"NOT BETWEEN\", \"AND\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kBetweenExpr, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BetweenExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  SAFEDELETE(operand_3_);\n  delete this;\n};\n\nvoid BetweenExpr::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  operand_3_ = new Operand();\n  operand_3_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  operand_3_ = new Operand();\n  operand_3_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ExistsExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_not_);\n  auto tmp2 = SAFETRANSLATE(select_no_parens_);\n  res = new IR(kExistsExpr, OP3(\"\", \"EXISTS (\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ExistsExpr::deep_delete() {\n  SAFEDELETE(opt_not_);\n  SAFEDELETE(select_no_parens_);\n  delete this;\n};\n\nvoid ExistsExpr::generate() {\n  GENERATESTART(1)\n\n  opt_not_ = new OptNot();\n  opt_not_->generate();\n  select_no_parens_ = new SelectNoParens();\n  select_no_parens_->generate();\n\n  GENERATEEND\n}\n\nIR *CaseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(case_clause_);\n  res = new IR(kCaseList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(case_clause_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseList, OP3(\"\", \"\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CaseList::deep_delete() {\n  SAFEDELETE(case_list_);\n  SAFEDELETE(case_clause_);\n  delete this;\n};\n\nvoid CaseList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  case_clause_ = new CaseClause();\n  case_clause_->generate();\n  CASEEND\n  CASESTART(1)\n  case_clause_ = new CaseClause();\n  case_clause_->generate();\n  case_list_ = new CaseList();\n  case_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      case_clause_ = new CaseClause();\n      case_clause_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *CaseClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr_1_);\n  auto tmp2 = SAFETRANSLATE(expr_2_);\n  res = new IR(kCaseClause, OP3(\"WHEN\", \"THEN\", \"\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CaseClause::deep_delete() {\n  SAFEDELETE(expr_1_);\n  SAFEDELETE(expr_2_);\n  delete this;\n};\n\nvoid CaseClause::generate() {\n  GENERATESTART(1)\n\n  expr_1_ = new Expr();\n  expr_1_->generate();\n  expr_2_ = new Expr();\n  expr_2_->generate();\n\n  GENERATEEND\n}\n\nIR *CompExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"!=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \">\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"<\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \"<=\", \"\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(operand_1_);\n  auto tmp2 = SAFETRANSLATE(operand_2_);\n  res = new IR(kCompExpr, OP3(\"\", \">=\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CompExpr::deep_delete() {\n  SAFEDELETE(operand_1_);\n  SAFEDELETE(operand_2_);\n  delete this;\n};\n\nvoid CompExpr::generate() {\n  GENERATESTART(6)\n\n  SWITCHSTART\n  CASESTART(0)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(1)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(2)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(3)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(4)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  CASESTART(5)\n  operand_1_ = new Operand();\n  operand_1_->generate();\n  operand_2_ = new Operand();\n  operand_2_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *ExtractExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(datetime_field_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kExtractExpr, OP3(\"EXTRACT (\", \"FROM\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ExtractExpr::deep_delete() {\n  SAFEDELETE(datetime_field_);\n  SAFEDELETE(expr_);\n  delete this;\n};\n\nvoid ExtractExpr::generate() {\n  GENERATESTART(1)\n\n  datetime_field_ = new DatetimeField();\n  datetime_field_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n\n  GENERATEEND\n}\n\nIR *DatetimeField::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kDatetimeField, OP3(\"SECOND\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kDatetimeField, OP3(\"MINUTE\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kDatetimeField, OP3(\"HOUR\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kDatetimeField, OP3(\"DAY\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kDatetimeField, OP3(\"MONTH\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kDatetimeField, OP3(\"YEAR\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid DatetimeField::deep_delete() { delete this; };\n\nvoid DatetimeField::generate(){\n    GENERATESTART(6)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND SWITCHEND\n\n                    GENERATEEND}\n\nIR *ArrayIndex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(int_literal_);\n  res = new IR(kArrayIndex, OP3(\"\", \"[\", \"]\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid ArrayIndex::deep_delete() {\n  SAFEDELETE(operand_);\n  SAFEDELETE(int_literal_);\n  delete this;\n};\n\nvoid ArrayIndex::generate() {\n  GENERATESTART(1)\n\n  operand_ = new Operand();\n  operand_->generate();\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n\n  GENERATEEND\n}\n\nIR *Literal::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(string_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(bool_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(num_literal_);\n  res = new IR(kLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Literal::deep_delete() {\n  SAFEDELETE(bool_literal_);\n  SAFEDELETE(string_literal_);\n  SAFEDELETE(num_literal_);\n  delete this;\n};\n\nvoid Literal::generate() {\n  GENERATESTART(3)\n\n  SWITCHSTART\n  CASESTART(0)\n  string_literal_ = new StringLiteral();\n  string_literal_->generate();\n  CASEEND\n  CASESTART(1)\n  bool_literal_ = new BoolLiteral();\n  bool_literal_->generate();\n  CASEEND\n  CASESTART(2)\n  num_literal_ = new NumLiteral();\n  num_literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *StringLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kStringLiteral, string_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid StringLiteral::deep_delete() { delete this; };\n\nvoid StringLiteral::generate() {\n  GENERATESTART(1)\n\n  string_val_ = gen_string();\n\n  GENERATEEND\n}\n\nIR *BoolLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kBoolLiteral, OP3(\"TRUE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kBoolLiteral, OP3(\"FALSE\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BoolLiteral::deep_delete() { delete this; };\n\nvoid BoolLiteral::generate(){GENERATESTART(2)\n\n                                 SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                     CASEEND SWITCHEND\n\n                                         GENERATEEND}\n\nIR *NumLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(int_literal_);\n  res = new IR(kNumLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(float_literal_);\n  res = new IR(kNumLiteral, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid NumLiteral::deep_delete() {\n  SAFEDELETE(int_literal_);\n  SAFEDELETE(float_literal_);\n  delete this;\n};\n\nvoid NumLiteral::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n  CASEEND\n  CASESTART(1)\n  float_literal_ = new FloatLiteral();\n  float_literal_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *IntLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kIntLiteral, int_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid IntLiteral::deep_delete() { delete this; };\n\nvoid IntLiteral::generate() {\n  GENERATESTART(1)\n\n  int_val_ = gen_int();\n\n  GENERATEEND\n}\n\nIR *FloatLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kFloatLiteral, float_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid FloatLiteral::deep_delete() { delete this; };\n\nvoid FloatLiteral::generate() {\n  GENERATESTART(1)\n\n  float_val_ = gen_float();\n\n  GENERATEEND\n}\n\nIR *OptColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptColumn, OP3(\"COLUMN\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumn, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptColumn::deep_delete() { delete this; };\n\nvoid OptColumn::generate(){GENERATESTART(2)\n\n                               SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                   CASEEND SWITCHEND\n\n                                       GENERATEEND}\n\nIR *OptIfNotExist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIfNotExist, OP3(\"IF NOT EXISTS\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIfNotExist, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIfNotExist::deep_delete() { delete this; };\n\nvoid OptIfNotExist::generate(){GENERATESTART(2)\n\n                                   SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                       CASEEND SWITCHEND\n\n                                           GENERATEEND}\n\nIR *OptIfExist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptIfExist, OP3(\"IF EXISTS\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIfExist, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptIfExist::deep_delete() { delete this; };\n\nvoid OptIfExist::generate(){GENERATESTART(2)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                    CASEEND SWITCHEND\n\n                                        GENERATEEND}\n\nIR *Identifier::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kIdentifier, string_val_, data_type_, scope_, data_flag_);\n\n  TRANSLATEEND\n}\n\nvoid Identifier::deep_delete() { delete this; };\n\nvoid Identifier::generate() {\n  GENERATESTART(1)\n\n  string_val_ = gen_string();\n\n  GENERATEEND\n}\n\nIR *TableName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kTableName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid TableName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid TableName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *ColumnName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kColumnName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ColumnName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid ColumnName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *OptUnique::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptUnique, OP3(\"UNIQUE\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptUnique, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptUnique::deep_delete() { delete this; };\n\nvoid OptUnique::generate(){GENERATESTART(2)\n\n                               SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                   CASEEND SWITCHEND\n\n                                       GENERATEEND}\n\nIR *ViewName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kViewName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ViewName::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid ViewName::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *BinaryOp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kBinaryOp, OP3(\"+\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kBinaryOp, OP3(\"-\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kBinaryOp, OP3(\"/\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kBinaryOp, OP3(\"%\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kBinaryOp, OP3(\"*\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BinaryOp::deep_delete() { delete this; };\n\nvoid BinaryOp::generate(){GENERATESTART(5)\n\n                              SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n                                  CASEEND CASESTART(2) CASEEND CASESTART(3)\n                                      CASEEND CASESTART(4) CASEEND SWITCHEND\n\n                                          GENERATEEND}\n\nIR *OptNot::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptNot, OP3(\"NOT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptNot, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptNot::deep_delete() { delete this; };\n\nvoid OptNot::generate(){GENERATESTART(2)\n\n                            SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                CASEEND SWITCHEND\n\n                                    GENERATEEND}\n\nIR *Name::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(identifier_);\n  res = new IR(kName, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid Name::deep_delete() {\n  SAFEDELETE(identifier_);\n  delete this;\n};\n\nvoid Name::generate() {\n  GENERATESTART(1)\n\n  identifier_ = new Identifier();\n  identifier_->generate();\n\n  GENERATEEND\n}\n\nIR *TypeName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(numeric_type_);\n  res = new IR(kTypeName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(character_type_);\n  res = new IR(kTypeName, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TypeName::deep_delete() {\n  SAFEDELETE(numeric_type_);\n  SAFEDELETE(character_type_);\n  delete this;\n};\n\nvoid TypeName::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  numeric_type_ = new NumericType();\n  numeric_type_->generate();\n  CASEEND\n  CASESTART(1)\n  character_type_ = new CharacterType();\n  character_type_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CharacterType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(character_with_length_);\n  res = new IR(kCharacterType, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(character_without_length_);\n  res = new IR(kCharacterType, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CharacterType::deep_delete() {\n  SAFEDELETE(character_with_length_);\n  SAFEDELETE(character_without_length_);\n  delete this;\n};\n\nvoid CharacterType::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  character_with_length_ = new CharacterWithLength();\n  character_with_length_->generate();\n  CASEEND\n  CASESTART(1)\n  character_without_length_ = new CharacterWithoutLength();\n  character_without_length_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *CharacterWithLength::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(character_conflicta_);\n  auto tmp2 = SAFETRANSLATE(int_literal_);\n  res = new IR(kCharacterWithLength, OP3(\"\", \"(\", \")\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid CharacterWithLength::deep_delete() {\n  SAFEDELETE(character_conflicta_);\n  SAFEDELETE(int_literal_);\n  delete this;\n};\n\nvoid CharacterWithLength::generate() {\n  GENERATESTART(1)\n\n  character_conflicta_ = new CharacterConflicta();\n  character_conflicta_->generate();\n  int_literal_ = new IntLiteral();\n  int_literal_->generate();\n\n  GENERATEEND\n}\n\nIR *CharacterWithoutLength::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(character_conflicta_);\n  res = new IR(kCharacterWithoutLength, OP3(\"\", \"\", \"\"), tmp1);\n\n  TRANSLATEEND\n}\n\nvoid CharacterWithoutLength::deep_delete() {\n  SAFEDELETE(character_conflicta_);\n  delete this;\n};\n\nvoid CharacterWithoutLength::generate() {\n  GENERATESTART(1)\n\n  character_conflicta_ = new CharacterConflicta();\n  character_conflicta_->generate();\n\n  GENERATEEND\n}\n\nIR *CharacterConflicta::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_varying_);\n  res = new IR(kCharacterConflicta, OP3(\"CHARACTER\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_varying_);\n  res = new IR(kCharacterConflicta, OP3(\"CHAR\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kCharacterConflicta, OP3(\"VARCHAR\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kCharacterConflicta, OP3(\"TEXT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(opt_varying_);\n  res = new IR(kCharacterConflicta, OP3(\"NATIONAL CHARACTER\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(opt_varying_);\n  res = new IR(kCharacterConflicta, OP3(\"NATIONAL CHAR\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(opt_varying_);\n  res = new IR(kCharacterConflicta, OP3(\"NCHAR\", \"\", \"\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CharacterConflicta::deep_delete() {\n  SAFEDELETE(opt_varying_);\n  delete this;\n};\n\nvoid CharacterConflicta::generate() {\n  GENERATESTART(7)\n\n  SWITCHSTART\n  CASESTART(0)\n  opt_varying_ = new OptVarying();\n  opt_varying_->generate();\n  CASEEND\n  CASESTART(1)\n  opt_varying_ = new OptVarying();\n  opt_varying_->generate();\n  CASEEND\n  CASESTART(2)\n  CASEEND\n  CASESTART(3)\n  CASEEND\n  CASESTART(4)\n  opt_varying_ = new OptVarying();\n  opt_varying_->generate();\n  CASEEND\n  CASESTART(5)\n  opt_varying_ = new OptVarying();\n  opt_varying_->generate();\n  CASEEND\n  CASESTART(6)\n  opt_varying_ = new OptVarying();\n  opt_varying_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *OptVarying::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptVarying, OP3(\"VARYING\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptVarying, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptVarying::deep_delete() { delete this; };\n\nvoid OptVarying::generate(){GENERATESTART(2)\n\n                                SWITCHSTART CASESTART(0) CASEEND CASESTART(1)\n\n                                    CASEEND SWITCHEND\n\n                                        GENERATEEND}\n\nIR *NumericType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kNumericType, OP3(\"INT\", \"\", \"\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kNumericType, OP3(\"INTEGER\", \"\", \"\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kNumericType, OP3(\"SMALLINT\", \"\", \"\"));\n  CASEEND\n  CASESTART(3)\n  res = new IR(kNumericType, OP3(\"BIGINT\", \"\", \"\"));\n  CASEEND\n  CASESTART(4)\n  res = new IR(kNumericType, OP3(\"REAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(5)\n  res = new IR(kNumericType, OP3(\"FLOAT\", \"\", \"\"));\n  CASEEND\n  CASESTART(6)\n  res = new IR(kNumericType, OP3(\"DOUBLE PRECISION\", \"\", \"\"));\n  CASEEND\n  CASESTART(7)\n  res = new IR(kNumericType, OP3(\"DECIMAL\", \"\", \"\"));\n  CASEEND\n  CASESTART(8)\n  res = new IR(kNumericType, OP3(\"DEC\", \"\", \"\"));\n  CASEEND\n  CASESTART(9)\n  res = new IR(kNumericType, OP3(\"NUMERIC\", \"\", \"\"));\n  CASEEND\n  CASESTART(10)\n  res = new IR(kNumericType, OP3(\"BOOLEAN\", \"\", \"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid NumericType::deep_delete() { delete this; };\n\nvoid NumericType::generate(){\n    GENERATESTART(11)\n\n        SWITCHSTART CASESTART(0) CASEEND CASESTART(1) CASEEND CASESTART(2)\n            CASEEND CASESTART(3) CASEEND CASESTART(4) CASEEND CASESTART(5)\n                CASEEND CASESTART(6) CASEEND CASESTART(7) CASEEND CASESTART(8)\n                    CASEEND CASESTART(9) CASEEND CASESTART(10) CASEEND SWITCHEND\n\n                        GENERATEEND}\n\nIR *OptTableConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_constraint_list_);\n  res = new IR(kOptTableConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTableConstraintList, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptTableConstraintList::deep_delete() {\n  SAFEDELETE(table_constraint_list_);\n  delete this;\n};\n\nvoid OptTableConstraintList::generate() {\n  GENERATESTART(2)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_constraint_list_ = new TableConstraintList();\n  table_constraint_list_->generate();\n  CASEEND\n  CASESTART(1)\n\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n\nIR *TableConstraintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_constraint_);\n  res = new IR(kTableConstraintList, OP3(\"\", \"\", \"\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_constraint_);\n  auto tmp2 = SAFETRANSLATE(table_constraint_list_);\n  res = new IR(kTableConstraintList, OP3(\"\", \",\", \"\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableConstraintList::deep_delete() {\n  SAFEDELETE(table_constraint_);\n  SAFEDELETE(table_constraint_list_);\n  delete this;\n};\n\nvoid TableConstraintList::generate() {\n  GENERATESTART(200)\n\n  SWITCHSTART\n  CASESTART(0)\n  table_constraint_ = new TableConstraint();\n  table_constraint_->generate();\n  CASEEND\n  CASESTART(1)\n  table_constraint_ = new TableConstraint();\n  table_constraint_->generate();\n  table_constraint_list_ = new TableConstraintList();\n  table_constraint_list_->generate();\n  CASEEND\n\n  default: {\n    int tmp_case_idx = rand() % 1;\n    switch (tmp_case_idx) {\n      CASESTART(0)\n      table_constraint_ = new TableConstraint();\n      table_constraint_->generate();\n      case_idx_ = 0;\n      CASEEND\n    }\n  }\n}\n\nGENERATEEND\n}\n\nIR *TableConstraint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kTableConstraint, OP3(\"\", \"PRIMARY KEY (\", \")\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(indexed_column_list_);\n  res = new IR(kTableConstraint, OP3(\"\", \"UNIQUE (\", \")\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kTableConstraint, OP3(\"\", \"CHECK (\", \")\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(constraint_name_);\n  auto tmp2 = SAFETRANSLATE(column_name_list_);\n  auto tmp3 = SAFETRANSLATE(foreign_clause_);\n  auto tmp4 = new IR(kUnknown, OP3(\"\", \"FOREIGN KEY (\", \")\"), tmp1, tmp2);\n  PUSH(tmp4);\n  res = new IR(kTableConstraint, OP3(\"\", \"\", \"\"), tmp4, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid TableConstraint::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(foreign_clause_);\n  SAFEDELETE(constraint_name_);\n  SAFEDELETE(column_name_list_);\n  delete this;\n};\n\nvoid TableConstraint::generate() {\n  GENERATESTART(4)\n\n  SWITCHSTART\n  CASESTART(0)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n  CASESTART(1)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  indexed_column_list_ = new IndexedColumnList();\n  indexed_column_list_->generate();\n  CASEEND\n  CASESTART(2)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  expr_ = new Expr();\n  expr_->generate();\n  CASEEND\n  CASESTART(3)\n  constraint_name_ = new ConstraintName();\n  constraint_name_->generate();\n  column_name_list_ = new ColumnNameList();\n  column_name_list_->generate();\n  foreign_clause_ = new ForeignClause();\n  foreign_clause_->generate();\n  CASEEND\n  SWITCHEND\n\n  GENERATEEND\n}\n"
  },
  {
    "path": "srcs/internal/postgresql/srcs/mutator.cpp",
    "content": "#include \"../include/mutator.h\"\n\n#include <assert.h>\n\n#include <algorithm>\n#include <cfloat>\n#include <climits>\n#include <cstdio>\n#include <deque>\n#include <fstream>\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n#include \"../include/utils.h\"\n#define _NON_REPLACE_\n\nusing namespace std;\n\n//#define GRAPHLOG\n\nIR *Mutator::deep_copy_with_record(const IR *root, const IR *record) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_) left = deep_copy_with_record(root->left_, record);\n  if (root->right_) right = deep_copy_with_record(root->right_, record);\n\n  if (root->op_ != NULL)\n    copy_res =\n        new IR(root->type_,\n               OP3(root->op_->prefix_, root->op_->middle_, root->op_->suffix_),\n               left, right, root->float_val_, root->str_val_, root->name_,\n               root->mutated_times_, root->scope_, root->data_flag_);\n  else\n    copy_res = new IR(root->type_, NULL, left, right, root->float_val_,\n                      root->str_val_, root->name_, root->mutated_times_,\n                      root->scope_, root->data_flag_);\n\n  copy_res->data_type_ = root->data_type_;\n\n  if (root == record && record != NULL) {\n    this->record_ = copy_res;\n  }\n\n  return copy_res;\n}\n\nvector<IR *> Mutator::mutate_all(vector<IR *> &v_ir_collector) {\n  vector<IR *> res;\n  IR *root = v_ir_collector[v_ir_collector.size() - 1];\n\n  mutated_root_ = root;\n\n  for (auto ir : v_ir_collector) {\n    if (not_mutatable_types_.find(ir->type_) != not_mutatable_types_.end())\n      continue;\n\n    vector<IR *> v_mutated_ir = mutate(ir);\n\n    for (auto i : v_mutated_ir) {\n      IR *new_ir_tree = deep_copy_with_record(root, ir);\n      replace(new_ir_tree, this->record_, i);\n\n      extract_struct(new_ir_tree);\n      string tmp = new_ir_tree->to_string();\n      unsigned tmp_hash = hash(tmp);\n      if (global_hash_.find(tmp_hash) != global_hash_.end()) {\n        deep_delete(new_ir_tree);\n        continue;\n      }\n\n      global_hash_.insert(tmp_hash);\n      res.push_back(new_ir_tree);\n    }\n  }\n\n  return res;\n}\n\nvoid Mutator::add_ir_to_library(IR *cur) {\n  extract_struct(cur);\n  cur = deep_copy(cur);\n  add_ir_to_library_no_deepcopy(cur);\n  return;\n}\n\nvoid Mutator::add_ir_to_library_no_deepcopy(IR *cur) {\n  if (cur->left_) add_ir_to_library_no_deepcopy(cur->left_);\n  if (cur->right_) add_ir_to_library_no_deepcopy(cur->right_);\n\n  auto type = cur->type_;\n  auto h = hash(cur);\n  if (find(ir_library_hash_[type].begin(), ir_library_hash_[type].end(), h) !=\n      ir_library_hash_[type].end())\n    return;\n\n  ir_library_hash_[type].insert(h);\n  ir_library_[type].push_back(cur);\n\n  return;\n}\n\nvoid Mutator::init_common_string(string filename) {\n  common_string_library_.push_back(\"DO_NOT_BE_EMPTY\");\n  if (filename != \"\") {\n    ifstream input_string(filename);\n    string s;\n\n    while (getline(input_string, s)) {\n      common_string_library_.push_back(s);\n    }\n  }\n}\n\nvoid Mutator::init_data_library_2d(string filename) {\n  ifstream input_file(filename);\n  string s;\n\n  cout << \"[*] init data_library_2d: \" << filename << endl;\n  while (getline(input_file, s)) {\n    vector<string> v_strbuf;\n    auto prev_pos = -1;\n    for (int i = 0; i < 3; i++) {\n      auto pos = s.find(\" \", prev_pos + 1);\n      v_strbuf.push_back(s.substr(prev_pos + 1, pos - prev_pos - 1));\n      prev_pos = pos;\n    }\n    v_strbuf.push_back(s.substr(prev_pos + 1, s.size() - prev_pos - 1));\n\n    auto data_type1 = get_datatype_by_string(v_strbuf[0]);\n    auto data_type2 = get_datatype_by_string(v_strbuf[2]);\n    g_data_library_2d_[data_type1][v_strbuf[1]][data_type2].push_back(\n        v_strbuf[3]);\n  }\n\n  return;\n}\n\nvoid Mutator::init_data_library(string filename) {\n  ifstream input_file(filename);\n  string s;\n\n  cout << \"[*] init data_library: \" << filename << endl;\n  while (getline(input_file, s)) {\n    auto pos = s.find(\" \");\n    if (pos == string::npos) continue;\n    auto data_type = get_datatype_by_string(s.substr(0, pos));\n    auto v = s.substr(pos + 1, s.size() - pos - 1);\n    g_data_library_[data_type].push_back(v);\n  }\n\n  return;\n}\n\nvoid Mutator::init_value_library() {\n  vector<unsigned long> value_lib_init = {0,\n                                          (unsigned long)LONG_MAX,\n                                          (unsigned long)ULONG_MAX,\n                                          (unsigned long)CHAR_BIT,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MAX,\n                                          (unsigned long)UCHAR_MAX,\n                                          (unsigned long)CHAR_MIN,\n                                          (unsigned long)CHAR_MAX,\n                                          (unsigned long)MB_LEN_MAX,\n                                          (unsigned long)SHRT_MIN,\n                                          (unsigned long)INT_MIN,\n                                          (unsigned long)INT_MAX,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)UINT_MAX,\n                                          (unsigned long)FLT_MAX,\n                                          (unsigned long)DBL_MAX,\n                                          (unsigned long)LDBL_MAX,\n                                          (unsigned long)FLT_MIN,\n                                          (unsigned long)DBL_MIN,\n                                          (unsigned long)LDBL_MIN};\n\n  value_library_.insert(value_library_.begin(), value_lib_init.begin(),\n                        value_lib_init.end());\n\n  return;\n}\n\nvoid Mutator::init_ir_library(string filename) {\n  ifstream input_file(filename);\n  string line;\n\n  cout << \"[*] init ir_library: \" << filename << endl;\n  while (getline(input_file, line)) {\n    if (line.empty()) continue;\n    auto p = parser(line);\n    if (p == NULL) continue;\n\n    vector<IR *> v_ir;\n    auto res = p->translate(v_ir);\n    p->deep_delete();\n    p = NULL;\n\n    add_ir_to_library(res);\n    deep_delete(res);\n  }\n  return;\n}\n\nvoid Mutator::init_safe_generate_type(string filename) {\n  ifstream input_file(filename);\n  string line;\n\n  cout << \"[*] init safe generate type: \" << filename << endl;\n  while (getline(input_file, line)) {\n    if (line.empty()) continue;\n    auto node_type = get_nodetype_by_string(\"k\" + line);\n    safe_generate_type_.insert(node_type);\n  }\n}\n\nvoid Mutator::init(string f_testcase, string f_common_string, string file2d,\n                   string file1d, string f_gen_type) {\n  if (!f_testcase.empty()) init_ir_library(f_testcase);\n\n  // init value_library_\n  init_value_library();\n\n  // init common_string_library\n  if (!f_common_string.empty()) init_common_string(f_common_string);\n\n  // init data_library_2d\n  if (!file2d.empty()) init_data_library_2d(file2d);\n\n  if (!file1d.empty()) init_data_library(file1d);\n  if (!f_gen_type.empty()) init_safe_generate_type(f_gen_type);\n\n  float_types_.insert({kFloatLiteral});\n  int_types_.insert(kIntLiteral);\n  string_types_.insert(kStringLiteral);\n\n  relationmap_[kDataColumnName][kDataTableName] = kRelationSubtype;\n  relationmap_[kDataPragmaValue][kDataPragmaKey] = kRelationSubtype;\n  relationmap_[kDataTableName][kDataTableName] = kRelationElement;\n  relationmap_[kDataColumnName][kDataColumnName] = kRelationElement;\n\n  split_stmt_types_.insert(kStmt);\n  split_substmt_types_.insert({kStmt, kSelectClause, kSelectStmt});\n\n//#define MYSQLFUZZ\n#ifdef MYSQLFUZZ\n  not_mutatable_types_.insert(\n      {kProgram, kStmtlist, kStmt, kCreateStmt, kDropStmt, kCreateTableStmt,\n       kCreateIndexStmt, kCreateTriggerStmt, kCreateViewStmt, kDropIndexStmt,\n       kDropTableStmt, kDropTriggerStmt, kDropViewStmt, kSelectStmt,\n       kUpdateStmt, kInsertStmt, kAlterStmt});\n#else\n  not_mutatable_types_.insert({kProgram, kStmtlist, kStmt, kCreateStmt,\n                               kDropStmt, kCreateTableStmt, kCreateIndexStmt,\n                               kCreateViewStmt, kDropIndexStmt, kDropTableStmt,\n                               kDropViewStmt, kSelectStmt, kUpdateStmt,\n                               kInsertStmt, kAlterStmt, kReindexStmt});\n#endif\n\n  return;\n}\n\nvector<IR *> Mutator::mutate(IR *input) {\n  vector<IR *> res;\n\n  if (!lucky_enough_to_be_mutated(input->mutated_times_)) {\n    return res;\n  }\n  auto tmp = strategy_delete(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  tmp = strategy_insert(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  tmp = strategy_replace(input);\n  if (tmp != NULL) {\n    res.push_back(tmp);\n  }\n\n  input->mutated_times_ += res.size();\n  for (auto i : res) {\n    if (i == NULL) continue;\n    i->mutated_times_ = input->mutated_times_;\n  }\n  return res;\n}\n\nbool Mutator::replace(IR *root, IR *old_ir, IR *new_ir) {\n  auto parent_ir = locate_parent(root, old_ir);\n  if (parent_ir == NULL) return false;\n  if (parent_ir->left_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->left_ = new_ir;\n    return true;\n  } else if (parent_ir->right_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->right_ = new_ir;\n    return true;\n  }\n  return false;\n}\n\nIR *Mutator::locate_parent(IR *root, IR *old_ir) {\n  if (root->left_ == old_ir || root->right_ == old_ir) return root;\n\n  if (root->left_ != NULL)\n    if (auto res = locate_parent(root->left_, old_ir)) return res;\n  if (root->right_ != NULL)\n    if (auto res = locate_parent(root->right_, old_ir)) return res;\n\n  return NULL;\n}\n\nIR *Mutator::strategy_delete(IR *cur) {\n  assert(cur);\n  MUTATESTART\n\n  DOLEFT\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  res->left_ = NULL;\n\n  DORIGHT\n  res = deep_copy(cur);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->right_ = NULL;\n\n  DOBOTH\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->left_ = res->right_ = NULL;\n\n  MUTATEEND\n}\n\nIR *Mutator::strategy_insert(IR *cur) {\n  assert(cur);\n\n  auto res = deep_copy(cur);\n  auto parent_type = cur->type_;\n\n  if (res->right_ == NULL && res->left_ != NULL) {\n    auto left_type = res->left_->type_;\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->left_ != NULL && fetch_ir->left_->type_ == left_type &&\n          fetch_ir->right_ != NULL) {\n        res->right_ = deep_copy(fetch_ir->right_);\n        return res;\n      }\n    }\n  } else if (res->right_ != NULL && res->left_ == NULL) {\n    auto right_type = res->left_->type_;\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->right_ != NULL && fetch_ir->right_->type_ == right_type &&\n          fetch_ir->left_ != NULL) {\n        res->left_ = deep_copy(fetch_ir->left_);\n        return res;\n      }\n    }\n  } else if (res->left_ == NULL && res->right_ == NULL) {\n    for (int k = 0; k < 4; k++) {\n      auto fetch_ir = get_ir_from_library(parent_type);\n      if (fetch_ir->right_ != NULL && fetch_ir->left_ != NULL) {\n        res->left_ = deep_copy(fetch_ir->left_);\n        res->right_ = deep_copy(fetch_ir->right_);\n        return res;\n      }\n    }\n  }\n\n  return res;\n}\n\nIR *Mutator::strategy_replace(IR *cur) {\n  assert(cur);\n\n  MUTATESTART\n\n  DOLEFT\n  if (cur->left_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_node = get_ir_from_library(res->left_->type_);\n    new_node->data_type_ = res->left_->data_type_;\n    deep_delete(res->left_);\n    res->left_ = deep_copy(new_node);\n  }\n\n  DORIGHT\n  if (cur->right_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_node = get_ir_from_library(res->right_->type_);\n    new_node->data_type_ = res->right_->data_type_;\n    deep_delete(res->right_);\n    res->right_ = deep_copy(new_node);\n  }\n\n  DOBOTH\n  if (cur->left_ != NULL && cur->right_ != NULL) {\n    res = deep_copy(cur);\n\n    auto new_left = get_ir_from_library(res->left_->type_);\n    auto new_right = get_ir_from_library(res->right_->type_);\n    new_left->data_type_ = res->left_->data_type_;\n    new_right->data_type_ = res->right_->data_type_;\n    deep_delete(res->right_);\n    res->right_ = deep_copy(new_right);\n\n    deep_delete(res->left_);\n    res->left_ = deep_copy(new_left);\n  }\n\n  MUTATEEND\n\n  return res;\n}\n\nbool Mutator::lucky_enough_to_be_mutated(unsigned int mutated_times) {\n  if (get_rand_int(mutated_times + 1) < LUCKY_NUMBER) {\n    return true;\n  }\n  return false;\n}\n\npair<string, string> Mutator::get_data_2d_by_type(DATATYPE type1,\n                                                  DATATYPE type2) {\n  pair<string, string> res(\"\", \"\");\n  auto size = data_library_2d_[type1].size();\n\n  if (size == 0) return res;\n  auto rint = get_rand_int(size);\n\n  int counter = 0;\n  for (auto &i : data_library_2d_[type1]) {\n    if (counter++ == rint) {\n      return std::make_pair(i.first, vector_rand_ele(i.second[type2]));\n    }\n  }\n  return res;\n}\n\nIR *Mutator::generate_ir_by_type(IRTYPE type) {\n  auto ast_node = generate_ast_node_by_type(type);\n  ast_node->generate();\n  vector<IR *> tmp_vector;\n  ast_node->translate(tmp_vector);\n  assert(tmp_vector.size());\n\n  return tmp_vector[tmp_vector.size() - 1];\n}\n\nIR *Mutator::get_ir_from_library(IRTYPE type) {\n  const int generate_prop = 1;\n  const int threshold = 0;\n  static IR *empty_ir = new IR(kStringLiteral, \"\");\n#ifdef USEGENERATE\n  if (ir_library_[type].empty() == true ||\n      (get_rand_int(400) == 0 && type != kUnknown)) {\n    auto ir = generate_ir_by_type(type);\n    add_ir_to_library_no_deepcopy(ir);\n    return ir;\n  }\n#endif\n  if (ir_library_[type].empty()) return empty_ir;\n  return vector_rand_ele(ir_library_[type]);\n}\n\nstring Mutator::get_a_string() {\n  unsigned com_size = common_string_library_.size();\n  unsigned lib_size = string_library_.size();\n  unsigned double_lib_size = lib_size * 2;\n\n  unsigned rand_int = get_rand_int(double_lib_size + com_size);\n  if (rand_int < double_lib_size) {\n    return string_library_[rand_int >> 1];\n  } else {\n    rand_int -= double_lib_size;\n    return common_string_library_[rand_int];\n  }\n}\n\nunsigned long Mutator::get_a_val() {\n  assert(value_library_.size());\n\n  return vector_rand_ele(value_library_);\n}\n\nunsigned long Mutator::hash(string &sql) {\n  return ducking_hash(sql.c_str(), sql.size());\n}\n\nunsigned long Mutator::hash(IR *root) {\n  auto tmp_str = move(root->to_string());\n  return this->hash(tmp_str);\n}\n\nvoid Mutator::debug(IR *root) {\n  for (auto &i : data_library_[kDataFunctionName]) {\n    cout << i << endl;\n  }\n}\n\nMutator::~Mutator() {}\n\nvoid Mutator::extract_struct(IR *root) {\n  static int counter = 0;\n  auto type = root->type_;\n  if (root->left_) {\n    extract_struct(root->left_);\n  }\n  if (root->right_) {\n    extract_struct(root->right_);\n  }\n\n  if (root->left_ || root->right_) return;\n\n  if (root->data_type_ != kDataWhatever) {\n    root->str_val_ = \"x\";\n    return;\n  }\n\n  if (string_types_.find(type) != string_types_.end()) {\n    root->str_val_ = \"'x'\";\n  } else if (int_types_.find(type) != int_types_.end()) {\n    root->int_val_ = 1;\n  } else if (float_types_.find(type) != float_types_.end()) {\n    root->float_val_ = 1.0;\n  }\n}\n\nvoid Mutator::extract_struct2(IR *root) {\n  static int counter = 0;\n  auto type = root->type_;\n  if (root->left_) {\n    extract_struct2(root->left_);\n  }\n  if (root->right_) {\n    extract_struct2(root->right_);\n  }\n\n  if (root->left_ || root->right_) return;\n\n  if (root->data_type_ != kDataWhatever) {\n    root->str_val_ = \"x\" + to_string(counter++);\n    return;\n  }\n\n  if (string_types_.find(type) != string_types_.end()) {\n    root->str_val_ = \"'x'\";\n  } else if (int_types_.find(type) != int_types_.end()) {\n    root->int_val_ = 1;\n  } else if (float_types_.find(type) != float_types_.end()) {\n    root->float_val_ = 1.0;\n  }\n}\n\nvoid Mutator::reset_data_library() {\n  data_library_.clear();\n  data_library_2d_.clear();\n}\n\nstring Mutator::parse_data(string &input) {\n  string res;\n  if (!input.compare(\"_int_\")) {\n    res = to_string(get_a_val());\n  } else if (!input.compare(\"_empty_\")) {\n    res = \"\";\n  } else if (!input.compare(\"_boolean_\")) {\n    if (get_rand_int(2) == 0)\n      res = \"false\";\n    else\n      res = \"true\";\n  } else if (!input.compare(\"_string_\")) {\n    res = get_a_string();\n  } else {\n    res = input;\n  }\n\n  return res;\n}\n\nbool Mutator::validate(IR *&root) {\n  reset_data_library();\n  string sql = root->to_string();\n  auto ast = parser(sql);\n  if (ast == NULL) return false;\n\n  deep_delete(root);\n  root = NULL;\n\n  vector<IR *> ir_vector;\n  ast->translate(ir_vector);\n  ast->deep_delete();\n\n  root = ir_vector[ir_vector.size() - 1];\n  reset_id_counter();\n\n  if (fix(root) == false) {\n    return false;\n  }\n\n  return true;\n}\n\nunsigned int Mutator::calc_node(IR *root) {\n  unsigned int res = 0;\n  if (root->left_) res += calc_node(root->left_);\n  if (root->right_) res += calc_node(root->right_);\n\n  return res + 1;\n}\n\nbool Mutator::fix(IR *root) {\n  map<IR **, IR *> m_save;\n  bool res = true;\n\n  auto stmts = split_to_stmt(root, m_save, split_stmt_types_);\n\n  if (stmts.size() > 8) {\n    connect_back(m_save);\n    return false;\n  }\n\n  clear_scope_library(true);\n  for (auto &stmt : stmts) {\n    map<IR **, IR *> m_substmt_save;\n    auto substmts = split_to_stmt(stmt, m_substmt_save, split_substmt_types_);\n\n    int stmt_num = substmts.size();\n    if (stmt_num > 4) {\n      connect_back(m_save);\n      connect_back(m_substmt_save);\n      return false;\n    }\n    for (auto &substmt : substmts) {\n      clear_scope_library(false);\n      int tmp_node_num = calc_node(substmt);\n      if ((stmt_num == 1 && tmp_node_num > 150) || tmp_node_num > 120) {\n        connect_back(m_save);\n        connect_back(m_substmt_save);\n        return false;\n      }\n      res = fix_one(substmt, scope_library_) && res;\n\n      if (res == false) {\n        connect_back(m_save);\n        connect_back(m_substmt_save);\n        return false;\n      }\n    }\n    res = connect_back(m_substmt_save) && res;\n  }\n  res = connect_back(m_save) && res;\n\n  return res;\n}\n\nvector<IR *> Mutator::split_to_stmt(IR *root, map<IR **, IR *> &m_save,\n                                    set<IRTYPE> &split_set) {\n  vector<IR *> res;\n  deque<IR *> bfs = {root};\n\n  while (!bfs.empty()) {\n    auto node = bfs.front();\n    bfs.pop_front();\n\n    if (node && node->left_) bfs.push_back(node->left_);\n    if (node && node->right_) bfs.push_back(node->right_);\n\n    if (node->left_ && find(split_set.begin(), split_set.end(),\n                            node->left_->type_) != split_set.end()) {\n      res.push_back(node->left_);\n      m_save[&node->left_] = node->left_;\n      node->left_ = NULL;\n    }\n    if (node->right_ && find(split_set.begin(), split_set.end(),\n                             node->right_->type_) != split_set.end()) {\n      res.push_back(node->right_);\n      m_save[&node->right_] = node->right_;\n      node->right_ = NULL;\n    }\n  }\n\n  if (find(split_set.begin(), split_set.end(), root->type_) != split_set.end())\n    res.push_back(root);\n\n  return res;\n}\n\nbool Mutator::connect_back(map<IR **, IR *> &m_save) {\n  for (auto &iter : m_save) {\n    *(iter.first) = iter.second;\n  }\n  return true;\n}\n\nstatic set<IR *> visited;\n\nbool Mutator::fix_one(IR *stmt_root,\n                      map<int, map<DATATYPE, vector<IR *>>> &scope_library) {\n  visited.clear();\n  analyze_scope(stmt_root);\n  auto graph = build_graph(stmt_root, scope_library);\n\n#ifdef GRAPHLOG\n  for (auto &iter : graph) {\n    cout << \"Node: \" << iter.first->to_string() << \" connected with:\" << endl;\n    for (auto &k : iter.second) {\n      cout << k->to_string() << endl;\n    }\n    cout << \"--------\" << endl;\n  }\n  cout << \"OUTPUT END\" << endl;\n#endif\n  return fill_stmt_graph(graph);\n}\n\nvoid Mutator::analyze_scope(IR *stmt_root) {\n  if (stmt_root->left_) {\n    analyze_scope(stmt_root->left_);\n  }\n  if (stmt_root->right_) {\n    analyze_scope(stmt_root->right_);\n  }\n\n  auto data_type = stmt_root->data_type_;\n  if (data_type == kDataWhatever) return;\n\n  scope_library_[stmt_root->scope_][data_type].push_back(stmt_root);\n}\n\nmap<IR *, vector<IR *>> Mutator::build_graph(\n    IR *stmt_root, map<int, map<DATATYPE, vector<IR *>>> &scope_library) {\n  map<IR *, vector<IR *>> res;\n  deque<IR *> bfs = {stmt_root};\n\n  while (!bfs.empty()) {\n    auto node = bfs.front();\n    bfs.pop_front();\n\n    auto cur_scope = node->scope_;\n    auto cur_data_flag = node->data_flag_;\n    auto cur_data_type = node->data_type_;\n\n    if (find(int_types_.begin(), int_types_.end(), node->type_) !=\n        int_types_.end()) {\n      if (get_rand_int(100) > 50)\n        node->int_val_ = vector_rand_ele(value_library_);\n      else\n        node->int_val_ = get_rand_int(100);\n    } else if (find(float_types_.begin(), float_types_.end(), node->type_) !=\n               float_types_.end()) {\n      node->float_val_ = (double)(get_rand_int(100000000));\n    }\n\n    if (node->left_) bfs.push_back(node->left_);\n    if (node->right_) bfs.push_back(node->right_);\n    if (cur_data_type == kDataWhatever) continue;\n\n    res[node];\n    cur_scope--;\n\n    if (relationmap_.find(cur_data_type) != relationmap_.end()) {\n      auto &target_data_type_map = relationmap_[cur_data_type];\n      for (auto &target : target_data_type_map) {\n        IR *pick_node = NULL;\n        if (isMapToClosestOne(cur_data_flag)) {\n          pick_node = find_closest_node(stmt_root, node, target.first);\n          if (pick_node && pick_node->scope_ != cur_scope) {\n            pick_node = NULL;\n          }\n        } else {\n          if (!node->str_val_.empty()) {\n          }\n\n          if (!isDefine(cur_data_flag) ||\n              relationmap_[cur_data_type][target.first] != kRelationElement) {\n            if (!scope_library[cur_scope][target.first].empty())\n              pick_node =\n                  vector_rand_ele(scope_library[cur_scope][target.first]);\n          }\n        }\n        if (pick_node != NULL) res[pick_node].push_back(node);\n      }\n    }\n  }\n\n  return res;\n}\n\nbool Mutator::fill_stmt_graph(map<IR *, vector<IR *>> &graph) {\n  bool res = true;\n  map<IR *, bool> zero_indegrees;\n  for (auto &iter : graph) {\n    if (zero_indegrees.find(iter.first) == zero_indegrees.end()) {\n      zero_indegrees[iter.first] = true;\n    }\n    for (auto ir : iter.second) {\n      zero_indegrees[ir] = false;\n    }\n  }\n  for (auto &iter : graph) {\n    auto type1 = iter.first->data_type_;\n    auto beg = iter.first;\n    if (zero_indegrees[beg] == false || visited.find(beg) != visited.end()) {\n      continue;\n    }\n    res &= fill_one(iter.first);\n    res &= fill_stmt_graph_one(graph, iter.first);\n  }\n\n  return res;\n}\n\nbool Mutator::fill_stmt_graph_one(map<IR *, vector<IR *>> &graph, IR *ir) {\n  if (graph.find(ir) == graph.end()) return true;\n\n  bool res = true;\n  auto type = ir->data_type_;\n  auto &vec = graph[ir];\n\n  if (!vec.empty()) {\n    for (auto d : vec) {\n      res = res & fill_one_pair(ir, d);\n      res = res & fill_stmt_graph_one(graph, d);\n    }\n  }\n  return res;\n}\n\nstatic bool replace_in_vector(string &old_str, string &new_str,\n                              vector<string> &victim) {\n  for (int i = 0; i < victim.size(); i++) {\n    if (victim[i] == old_str) {\n      victim[i] = new_str;\n      return true;\n    }\n  }\n  return false;\n}\n\nstatic bool remove_in_vector(string &str_to_remove, vector<string> &victim) {\n  for (auto iter = victim.begin(); iter != victim.end(); iter++) {\n    if (*iter == str_to_remove) {\n      victim.erase(iter);\n      return true;\n    }\n  }\n  return false;\n}\n\nbool Mutator::remove_one_from_datalibrary(DATATYPE datatype, string &key) {\n  return remove_in_vector(key, data_library_[datatype]);\n}\n\nbool Mutator::replace_one_from_datalibrary(DATATYPE datatype, string &old_str,\n                                           string &new_str) {\n  return replace_in_vector(old_str, new_str, data_library_[datatype]);\n}\n\nbool Mutator::remove_one_pair_from_datalibrary_2d(DATATYPE p_datatype,\n                                                  DATATYPE c_data_type,\n                                                  string &p_key) {\n  for (auto &value : data_library_2d_[p_datatype][p_key][c_data_type]) {\n    remove_one_from_datalibrary(c_data_type, value);\n  }\n\n  data_library_2d_[p_datatype][p_key].erase(c_data_type);\n  if (data_library_2d_[p_datatype][p_key].empty()) {\n    remove_one_from_datalibrary(p_datatype, p_key);\n    data_library_2d_[p_datatype].erase(p_key);\n  }\n\n  return true;\n}\n\n#define has_element(a, b) (find(a.begin(), a.end(), b) != (a).end())\n#define has_key(a, b) ((a).find(b) != (a).end())\n\nbool Mutator::replace_one_value_from_datalibray_2d(DATATYPE p_datatype,\n                                                   DATATYPE c_data_type,\n                                                   string &p_key,\n                                                   string &old_c_value,\n                                                   string &new_c_value) {\n  replace_one_from_datalibrary(c_data_type, old_c_value, new_c_value);\n  replace_in_vector(old_c_value, new_c_value,\n                    data_library_2d_[p_datatype][p_key][c_data_type]);\n  return true;\n}\n\nbool Mutator::fill_one(IR *ir) {\n  auto type = ir->data_type_;\n  visited.insert(ir);\n  if (isDefine(ir->data_flag_)) {\n    string new_name = gen_id_name();\n    data_library_[type].push_back(new_name);\n    ir->str_val_ = new_name;\n\n    for (auto iter : relationmap_) {\n      for (auto iter2 : iter.second) {\n        if (iter2.first == type && iter2.second == kRelationSubtype) {\n          data_library_2d_[type][new_name];\n        }\n      }\n    }\n    return true;\n  } else if (isAlias(ir->data_flag_)) {\n    string alias_target;\n    if (data_library_[type].size() != 0)\n      alias_target = vector_rand_ele(data_library_[type]);\n    else {\n      alias_target = get_rand_int(2) ? \"v0\" : \"v1\";\n    }\n\n    string new_name = gen_id_name();\n    data_library_[type].push_back(new_name);\n    ir->str_val_ = new_name;\n\n    if (has_key(data_library_2d_, type)) {\n      if (has_key(data_library_2d_[type], alias_target)) {\n        data_library_2d_[type][new_name] = data_library_2d_[type][alias_target];\n      }\n    }\n    return true;\n  }\n\n  else if (data_library_.find(type) != data_library_.end()) {\n    if (data_library_[type].empty()) {\n      ir->str_val_ = \"v0\";\n      return false;\n    }\n    ir->str_val_ = vector_rand_ele(data_library_[type]);\n    if (isUndefine(ir->data_flag_)) {\n      remove_one_from_datalibrary(ir->data_type_, ir->str_val_);\n      if (has_key(data_library_2d_, type) &&\n          has_key(data_library_2d_[type], ir->str_val_)) {\n        for (auto itr = data_library_2d_[type][ir->str_val_].begin();\n             has_key(data_library_2d_[type], ir->str_val_) &&\n             itr != data_library_2d_[type][ir->str_val_].end();\n             itr++) {\n          auto c_data_type = *itr;\n          remove_one_pair_from_datalibrary_2d(type, c_data_type.first,\n                                              ir->str_val_);\n          if (!has_key(data_library_2d_[type], ir->str_val_)) break;\n          itr--;\n        }\n      }\n    }\n    return true;\n  } else if (g_data_library_.find(type) != g_data_library_.end()) {\n    if (g_data_library_[type].empty()) {\n      return false;\n    }\n    ir->str_val_ = vector_rand_ele(g_data_library_[type]);\n    return true;\n  } else if (g_data_library_2d_.find(type) != g_data_library_2d_.end()) {\n    int choice = get_rand_int(g_data_library_2d_[type].size());\n    auto iter = g_data_library_2d_[type].begin();\n    while (choice > 0) {\n      iter++;\n      choice--;\n    }\n    ir->str_val_ = iter->first;\n    return true;\n  } else {\n    return false;\n  }\n  return true;\n}\n\nbool Mutator::fill_one_pair(IR *parent, IR *child) {\n  visited.insert(child);\n\n  bool is_define = isDefine(child->data_flag_);\n  bool is_replace = isReplace(child->data_flag_);\n  bool is_undefine = isUndefine(child->data_flag_);\n  bool is_alias = isAlias(child->data_flag_);\n\n  string new_name = \"\";\n  if (is_define || is_replace || is_alias) {\n    new_name = gen_id_name();\n  }\n\n  auto p_type = parent->data_type_;\n  auto c_type = child->data_type_;\n  auto p_str = parent->str_val_;\n\n  auto r_type = relationmap_[c_type][p_type];\n  switch (r_type) {\n    case kRelationElement:\n\n      if (is_replace) {\n        child->str_val_ = new_name;\n        replace_one_from_datalibrary(c_type, p_str, new_name);\n\n        if (has_key(data_library_2d_, p_type)) {\n          if (has_key(data_library_2d_[p_type], p_str)) {\n            auto tmp = data_library_2d_[p_type].extract(p_str);\n            tmp.key() = new_name;\n            data_library_2d_[p_type].insert(move(tmp));\n          }\n        } else {\n          for (auto &i1 : data_library_2d_) {\n            for (auto &i2 : i1.second) {\n              for (auto &i3 : i2.second) {\n                if (i3.first == c_type) {\n                  if (has_element(i3.second, p_str)) {\n                    replace_in_vector(p_str, new_name, i3.second);\n                    goto END;\n                  }\n                }\n              }\n            }\n          }\n        }\n      } else if (is_alias) {\n        child->str_val_ = new_name;\n\n        if (has_key(data_library_2d_, p_type)) {\n          if (has_key(data_library_2d_[p_type], p_str)) {\n            data_library_2d_[p_type][new_name] =\n                data_library_2d_[p_type][p_str];\n            data_library_[p_type].push_back(new_name);\n          }\n        }\n      } else {\n        child->str_val_ = p_str;\n      }\n    END:\n      break;\n\n    case kRelationSubtype:\n      if (data_library_2d_.find(p_type) != data_library_2d_.end()) {\n        if (data_library_2d_[p_type].find(p_str) !=\n            data_library_2d_[p_type].end()) {\n          if (is_define) {\n            data_library_2d_[p_type][p_str][c_type].push_back(new_name);\n            child->str_val_ = new_name;\n            data_library_[c_type].push_back(new_name);\n            break;\n          } else if (is_undefine) {\n            if ((data_library_2d_[p_type][p_str][c_type]).empty()) {\n              child->str_val_ = \"v1\";\n              break;\n            }\n            child->str_val_ =\n                vector_rand_ele(data_library_2d_[p_type][p_str][c_type]);\n            remove_in_vector(child->str_val_,\n                             data_library_2d_[p_type][p_str][c_type]);\n            remove_in_vector(child->str_val_, data_library_[c_type]);\n            break;\n          } else if (data_library_2d_[p_type][p_str].find(c_type) !=\n                     data_library_2d_[p_type][p_str].end()) {\n            if (data_library_2d_[p_type][p_str][c_type].empty() == false) {\n              child->str_val_ =\n                  vector_rand_ele(data_library_2d_[p_type][p_str][c_type]);\n            }\n          } else {\n            if (data_library_[c_type].empty()) {\n              if (get_rand_int(2) == 1) {\n                child->str_val_ = \"v0\";\n              } else {\n                child->str_val_ = \"v1\";\n              }\n            } else\n              child->str_val_ = vector_rand_ele(data_library_[c_type]);\n          }\n        } else {\n        }\n      } else if (g_data_library_2d_.find(p_type) != g_data_library_2d_.end()) {\n        if (g_data_library_2d_[p_type].find(p_str) !=\n            g_data_library_2d_[p_type].end()) {\n          if (g_data_library_2d_[p_type][p_str].find(c_type) !=\n              g_data_library_2d_[p_type][p_str].end()) {\n            if (g_data_library_2d_[p_type][p_str][c_type].empty() == false) {\n              child->str_val_ =\n                  vector_rand_ele(g_data_library_2d_[p_type][p_str][c_type]);\n            }\n          }\n        }\n      } else {\n        return false;\n      }\n\n      break;\n\n    default:\n      assert(0);\n      break;\n  }\n\n  return true;\n}\n\nvoid Mutator::clear_scope_library(bool clear_define) {\n  int level = clear_define ? 0 : 1;\n  int sz = scope_library_.size();\n  scope_library_.clear();\n\n  return;\n}\n\nstatic IR *search_mapped_ir(IR *ir, DATATYPE type) {\n  vector<IR *> to_search;\n  vector<IR *> backup;\n  to_search.push_back(ir);\n  while (!to_search.empty()) {\n    for (auto i : to_search) {\n      if (i->data_type_ == type) {\n        return i;\n      }\n      if (i->left_) {\n        backup.push_back(i->left_);\n      }\n      if (i->right_) {\n        backup.push_back(i->right_);\n      }\n    }\n    to_search = move(backup);\n    backup.clear();\n  }\n  return NULL;\n}\n\nIR *Mutator::find_closest_node(IR *stmt_root, IR *node, DATATYPE type) {\n  auto cur = node;\n  while (true) {\n    auto parent = locate_parent(stmt_root, cur);\n    if (!parent) break;\n    bool flag = false;\n    while (parent->left_ == NULL || parent->right_ == NULL) {\n      cur = parent;\n      parent = locate_parent(stmt_root, cur);\n      if (!parent) {\n        flag = true;\n        break;\n      }\n    }\n    if (flag) return NULL;\n\n    auto search_root = parent->left_ == cur ? parent->right_ : parent->left_;\n    auto res = search_mapped_ir(search_root, type);\n    if (res) return res;\n\n    cur = parent;\n  }\n  return NULL;\n}\n\nint Mutator::try_fix(char *buf, int len, char *&new_buf, int &new_len) {\n  string sql(buf);\n  auto ast = parser(sql);\n\n  new_buf = buf;\n  new_len = len;\n  if (ast == NULL) return 0;\n\n  vector<IR *> v_ir;\n  auto ir_root = ast->translate(v_ir);\n  ast->deep_delete();\n\n  if (ir_root == NULL) return 0;\n  bool fixed_result = validate(ir_root);\n  string fixed;\n  if (fixed_result != false) {\n    fixed = ir_root->to_string();\n  }\n  deep_delete(ir_root);\n  if (fixed.empty()) return 0;\n\n  char *sfixed = (char *)malloc(fixed.size() + 1);\n  memcpy(sfixed, fixed.c_str(), fixed.size());\n  sfixed[fixed.size()] = 0;\n\n  new_buf = sfixed;\n  new_len = fixed.size();\n\n  return 1;\n}\n"
  },
  {
    "path": "srcs/internal/postgresql/srcs/utils.cpp",
    "content": "#include \"../include/utils.h\"\n\n#include <dirent.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <unistd.h>\nvoid trim_string(string &res) {\n  int count = 0;\n  int idx = 0;\n  bool expect_space = false;\n  for (int i = 0; i < res.size(); i++) {\n    if (res[i] == ';' && i != res.size() - 1) {\n      res[i + 1] = '\\n';\n    }\n    if (res[i] == ' ') {\n      if (expect_space == false) {\n        continue;\n      } else {\n        expect_space = false;\n        res[idx++] = res[i];\n        count++;\n      }\n    } else {\n      expect_space = true;\n      res[idx++] = res[i];\n      count++;\n    }\n  }\n\n  res.resize(count);\n}\n\nstring gen_string() { return string(\"x\"); }\n\ndouble gen_float() { return 1.2; }\n\nlong gen_long() { return 1; }\n\nint gen_int() { return 1; }\n\ntypedef unsigned long uint64_t;\n\nProgram *parser(string sql) {\n  yyscan_t scanner;\n  YY_BUFFER_STATE state;\n  Program *p = new Program();\n\n  if (ff_lex_init(&scanner)) {\n    return NULL;\n  }\n  state = ff__scan_string(sql.c_str(), scanner);\n\n  int ret = ff_parse(p, scanner);\n\n  ff__delete_buffer(state, scanner);\n  ff_lex_destroy(scanner);\n  if (ret != 0) {\n    p->deep_delete();\n    return NULL;\n  }\n\n  return p;\n}\n\nuint64_t ducking_hash(const void *key, int len) {\n  const uint64_t m = 0xc6a4a7935bd1e995;\n  const int r = 47;\n  uint64_t h = 0xdeadbeefdeadbeef ^ (len * m);\n\n  const uint64_t *data = (const uint64_t *)key;\n  const uint64_t *end = data + (len / 8);\n\n  while (data != end) {\n    uint64_t k = *data++;\n\n    k *= m;\n    k ^= k >> r;\n    k *= m;\n\n    h ^= k;\n    h *= m;\n  }\n\n  const unsigned char *data2 = (const unsigned char *)data;\n\n  switch (len & 7) {\n    case 7:\n      h ^= uint64_t(data2[6]) << 48;\n    case 6:\n      h ^= uint64_t(data2[5]) << 40;\n    case 5:\n      h ^= uint64_t(data2[4]) << 32;\n    case 4:\n      h ^= uint64_t(data2[3]) << 24;\n    case 3:\n      h ^= uint64_t(data2[2]) << 16;\n    case 2:\n      h ^= uint64_t(data2[1]) << 8;\n    case 1:\n      h ^= uint64_t(data2[0]);\n      h *= m;\n  };\n\n  h ^= h >> r;\n  h *= m;\n  h ^= h >> r;\n\n  return h;\n}\n\nvector<string> get_all_files_in_dir(const char *dir_name) {\n  vector<string> file_list;\n  if (NULL == dir_name) {\n    cout << \" dir_name is null ! \" << endl;\n    return file_list;\n  }\n\n  struct stat s;\n  lstat(dir_name, &s);\n  if (!S_ISDIR(s.st_mode)) {\n    cout << \"dir_name is not a valid directory !\" << endl;\n    return file_list;\n  }\n\n  struct dirent *filename;  // return value for readdir()\n  DIR *dir;                 // return value for opendir()\n  dir = opendir(dir_name);\n  if (NULL == dir) {\n    cout << \"Can not open dir \" << dir_name << endl;\n    return file_list;\n  }\n  cout << \"Successfully opened the dir !\" << endl;\n\n  while ((filename = readdir(dir)) != NULL) {\n    if (strcmp(filename->d_name, \".\") == 0 ||\n        strcmp(filename->d_name, \"..\") == 0)\n      continue;\n    cout << filename->d_name << endl;\n    file_list.push_back(string(filename->d_name));\n  }\n  return file_list;\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/include/ast.h",
    "content": "#ifndef __AST_H__\n#define __AST_H__\n\n#include <iostream>\n#include <map>\n#include <set>\n#include <string>\n#include <vector>\n\n#include \"define.h\"\n\nusing namespace std;\n\n#define DECLARE_CLASS(v) class v;\n\nALLCLASS(DECLARE_CLASS);\n#undef DECLARE_CLASS\n\n#define GEN_NAME() name_ = gen_id_name();\n\n#define reset_counter() g_id_counter = 0;\n\nstatic unsigned long g_id_counter;\n\nstatic inline void clear_id() { g_id_counter = 0; }\n\nstatic string gen_id_name() { return \"v\" + to_string(g_id_counter++); }\n\nenum CASEIDX { CASE0, CASE1, CASE2, CASE3, CASE4, CASE5, CASE6, CASE7, CASE8 };\n\nenum NODETYPE {\n  kconst_str,\n  kconst_int,\n  kconst_float,\n#define DECLARE_TYPE(v) v,\n  ALLTYPE(DECLARE_TYPE)\n#undef DECLARE_TYPE\n};\n\nenum IDTYPE {\n  id_whatever,\n\n  id_top_table_name,\n  id_column_name,\n  id_table_name,\n  id_create_table_name,\n  id_create_column_name,\n\n  id_schema_name,\n  id_pragma_name,\n  id_pragma_value,\n\n  id_index_name,\n  id_trigger_name,\n  id_module_name,\n\n  id_window_def_name,\n  id_window_name,\n\n  id_window_base_name,\n  id_savepoint_name,\n  id_collation_name,\n  id_database_name,\n};\n\ntypedef NODETYPE IRTYPE;\n\nclass IROperator {\n public:\n  IROperator(string prefix = \"\", string middle = \"\", string suffix = \"\")\n      : prefix_(prefix), middle_(middle), suffix_(suffix) {}\n\n  string prefix_;\n  string middle_;\n  string suffix_;\n};\n\nclass IR {\n public:\n  IR(IRTYPE type, IROperator* op, IR* left = NULL, IR* right = NULL)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        id_type_(id_whatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, string str_val, IDTYPE id_type = id_whatever)\n      : type_(type),\n        str_val_(str_val),\n        op_(NULL),\n        left_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        id_type_(id_type) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, bool b_val)\n      : type_(type),\n        b_val_(b_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        id_type_(id_whatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, unsigned long int_val)\n      : type_(type),\n        int_val_(int_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        id_type_(id_whatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, double f_val)\n      : type_(type),\n        f_val_(f_val),\n        left_(NULL),\n        op_(NULL),\n        right_(NULL),\n        operand_num_(0),\n        id_type_(id_whatever) {\n    GEN_NAME();\n  }\n\n  IR(IRTYPE type, IROperator* op, IR* left, IR* right, double f_val,\n     string str_val, string name, unsigned int mutated_times)\n      : type_(type),\n        op_(op),\n        left_(left),\n        right_(right),\n        operand_num_((!!right) + (!!left)),\n        name_(name),\n        str_val_(str_val),\n        f_val_(f_val),\n        mutated_times_(mutated_times),\n        id_type_(id_whatever) {}\n\n  union {\n    unsigned long int_val_;\n    double f_val_;\n    bool b_val_;\n  };\n\n  IDTYPE id_type_;\n  IRTYPE type_;\n  string name_;\n  string str_val_;\n  IROperator* op_;\n  IR* left_;\n  IR* right_;\n  int operand_num_;\n  unsigned int mutated_times_ = 0;\n  string to_string();\n};\n\nclass IRCollector {\n public:\n  vector<IR*> parse(Program* entry);\n};\n\nclass Node {\n public:\n  void set_sub_type(unsigned int i) { sub_type_ = i; }\n  NODETYPE type_;\n  unsigned int sub_type_;\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass Opt : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  bool is_existed_;\n};\n\nclass OptString : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_;\n};\n\nclass Program : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  StatementList* statement_list_;\n  OptSemicolon* opt_semicolon_;\n};\n\nclass StatementList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<Statement*> v_statement_list_;\n};\n\nclass Statement : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptionalHints* optional_hints_;\n  PreparableStatement* preparable_statement_;\n  PrepareStatement* prepare_statement_;\n  ShowStatement* show_statement_;\n  Cmd* cmd_;\n};\nclass Cmd : public Statement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass CmdAttach : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n  SchemaName* schema_name_;\n};\n\nclass CmdDetach : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SchemaName* schema_name_;\n};\n\nclass CmdReindex : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n};\n\nclass CmdAnalyze : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n};\n\nclass SuperList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<LiteralList*> v_super_list_;\n};\nclass OptionalHints : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  HintList* hint_list_;\n};\n\nclass CmdPragma : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  PragmaKey* pragma_key_;\n  PragmaValue* pragma_value_;\n  TableName* table_name_;\n};\n\nclass PragmaKey : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  PragmaName* pragma_name_;\n  SchemaName* schema_name_;\n};\n\nclass PragmaValue : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  NumLiteral* num_literal_;\n  StringLiteral* string_literal_;\n  Identifier* id_;\n};\n\nclass PragmaName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass SchemaName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass PrepareStatement : public Statement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  PrepareTargetQuery* prep_target_que_;\n};\n\nclass PreparableStatement : public Statement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass ShowStatement : public Statement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n};\n\nclass Hint : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  LiteralList* literal_list_;\n  Identifier* id_;\n};\n\nclass HintList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<Hint*> v_hint_list_;\n};\n\nclass PrepareTargetQuery : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string prep_target_que_;\n};\n\nclass SelectStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptWithClause* opt_with_clause_;\n  SelectWithParen* select_with_paren_;\n  SelectNoParen* select_no_paren_;\n  SetOperator* set_operator_;\n  SelectParenOrClause* select_paren_or_clause_;\n  OptOrder* opt_order_;\n  OptLimit* opt_limit_;\n};\n\nclass ImportStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ImportFileType* import_file_type_;\n  FilePath* file_path_;\n  TableName* table_name_;\n};\n\nclass CreateStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptNotExists* opt_not_exists_;\n  TableName* table_name_;\n  FilePath* file_path_;\n  ColumnDefCommaList* column_def_comma_list_;\n  SelectStatement* select_statement_;\n  OptColumnList* opt_column_list_;\n  OptUnique* opt_unique_;\n  IndexName* index_name_;\n  IdentCommaList* ident_commalist_;\n  OptWhere* opt_where_;\n  ModuleName* module_name_;\n  TriggerDeclare* trigger_declare_;\n  TriggerCmdList* trigger_cmd_list_;\n};\n\nclass InsertStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  InsertType* insert_type_;\n  TableName* table_name_;\n  OptColumnList* opt_column_list_;\n  SuperList* super_list_;\n  SelectNoParen* select_no_paren_;\n  OptUpsertClause* opt_upsert_clause_;\n};\n\nclass DeleteStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n  OptWhere* opt_where_;\n};\n\nclass UpdateStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableRefNameNoAlias* table_ref_name_no_alias_;\n  UpdateClauseCommalist* update_clause_comma_list_;\n  OptWhere* opt_where_;\n};\n\nclass DropStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptExists* opt_exists_;\n  TableName* table_name_;\n  Identifier* id_;\n  SchemaName* schema_name_;\n  TriggerName* trigger_name_;\n};\n\nclass ExecuteStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  OptLiteralList* opt_literal_list_;\n};\n\nclass ImportFileType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass FilePath : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptNotExists : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass ColumnDefCommaList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<ColumnDef*> v_column_def_comma_list_;\n};\n\nclass ColumnDef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  ColumnType* column_type_;\n  OptColumnArglist* opt_column_arglist_;\n};\n\nclass ColumnType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptColumnNullable : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptExists : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptColumnList : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IdentCommaList* ident_comma_list_;\n};\n\nclass UpdateClauseCommalist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<UpdateClause*> v_update_clause_list_;\n};\n\nclass UpdateClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  Expr* expr_;\n};\n\nclass SelectWithParen : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SelectNoParen* select_no_paren_;\n  SelectWithParen* select_with_paren_;\n};\n\nclass SelectParenOrClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SelectWithParen* select_with_paren_;\n  SelectClause* select_clause_;\n};\n\nclass SelectNoParen : public SelectWithParen {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SelectClause* select_clause_;\n  OptOrder* opt_order_;\n  OptLimit* opt_limit_;\n  SetOperator* set_operator_;\n  SelectParenOrClause* select_paren_or_clause_;\n};\n\nclass SetOperator : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SetType* set_type_;\n  OptAll* opt_all_;\n};\n\nclass SetType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptAll : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass SelectClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptTop* opt_top_;\n  OptDistinct* opt_distinct_;\n  SelectList* select_list_;\n  OptFromClause* opt_from_clause_;\n  OptWhere* opt_where_;\n  OptGroup* opt_group_;\n  WindowClause* window_clause_;\n};\n\nclass OptDistinct : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass SelectList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ExprList* expr_list_;\n};\n\nclass FromClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableRef* table_ref_;\n};\n\nclass OptFromClause : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  FromClause* from_clause_;\n};\n\nclass OptWhere : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass OptGroup : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ExprList* expr_list_;\n  OptHaving* opt_having_;\n};\n\nclass OptHaving : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass OptOrder : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OrderList* order_list_;\n};\n\nclass OrderList : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<OrderDesc*> v_order_desc_;\n};\n\nclass OrderDesc : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n  OptOrderType* opt_order_type_;\n  OptNull* opt_null_;\n};\n\nclass OptOrderType : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptTop : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IntLiteral* int_literal_;\n};\n\nclass OptLimit : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr1_;\n  Expr* expr2_;\n};\n\nclass ExprList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<ExprAlias*> v_expr_list_;\n};\n\nclass LiteralList : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<Literal*> v_literal_list_;\n};\n\nclass OptLiteralList : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  LiteralList* literal_list_;\n};\n\nclass Alias : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  bool has_as_;\n  Identifier* id_;\n};\n\nclass Expr : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass ExprAlias : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n  OptAlias* opt_alias_;\n};\n\nclass Operand : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n  SelectNoParen* select_no_paren_;\n};\n\nclass BetweenExpr : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Operand* operand1_;\n  Operand* operand2_;\n  Operand* operand3_;\n};\n\nclass LogicExpr : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr1_;\n  Expr* expr2_;\n  string operator_;\n};\n\nclass ExistsExpr : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SelectNoParen* select_no_paren_;\n};\n\nclass InExpr : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Operand* operand_;\n  ExprList* expr_list_;\n  SelectNoParen* select_no_paren_;\n};\n\nclass ArrayIndex : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IntLiteral* int_literal_;\n  Operand* operand_;\n};\n\nclass ScalarExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnName* column_name_;\n  Literal* literal_;\n};\n\nclass UnaryExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Operand* operand_;\n  string operator_;\n};\n\nclass BinaryExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Operand* operand1_;\n  Operand* operand2_;\n  string operator_;\n  CompExpr* comp_expr_;\n};\n\nclass CompExpr : public BinaryExpr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass CaseExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* case_expr_;\n  Expr* else_expr_;\n  CaseList* case_list_;\n};\n\nclass FunctionExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  OptDistinct* opt_distinct_;\n  ExprList* expr_list_;\n  OptFilterClause* opt_filter_clause_;\n  OptOverClause* opt_over_clause_;\n};\n\nclass ExtractExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  DatetimeField* datetime_field_;\n  Expr* expr_;\n};\n\nclass ArrayExpr : public Operand {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ExprList* expr_list_;\n};\n\nclass CaseClause : public Node {\n public:\n  CaseClause(Expr* exp1, Expr* exp2) : when_expr_(exp1), then_expr_(exp2) {}\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* when_expr_;\n  Expr* then_expr_;\n};\n\nclass CaseList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<CaseClause*> v_case_list_;\n};\n\nclass DatetimeField : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass ColumnName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* identifier1_;\n  Identifier* identifier2_;\n};\n\nclass Literal : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass StringLiteral : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass BoolLiteral : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  bool b_val_;\n};\n\nclass NumLiteral : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  double f_val_;\n  IntLiteral* int_literal_;\n};\n\nclass IntLiteral : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  unsigned long int_val_;\n};\n\nclass FloatLiteral : public NumLiteral {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass NullLiteral : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass ParamExpr : public Literal {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n};\n\nclass Identifier : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier(string s, IDTYPE id_type = id_whatever)\n      : id_(s), id_type_(id_type) {}\n  string id_;\n  IDTYPE id_type_;\n};\n\nclass TableRefCommaList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<TableRefAtomic*> v_table_ref_comma_list_;\n};\n\nclass TableRefAtomic : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  NonjoinTableRefAtomic* nonjoin_table_ref_atomic_;\n  JoinClause* join_clause_;\n};\n\nclass NonjoinTableRefAtomic : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableRefName* table_ref_name_;\n  SelectStatement* select_statement_;\n  OptTableAlias* opt_table_alias_;\n};\n\nclass TableRefName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n  OptTableAlias* opt_table_alias_;\n};\n\nclass TableRefNameNoAlias : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableName* table_name_;\n};\n\nclass TableName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* database_name_;\n  Identifier* table_name_;\n};\n\nclass TableAlias : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Alias* alias_;\n  IdentCommaList* ident_comma_list_;\n  Identifier* id_;\n};\n\nclass OptTableAlias : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableAlias* table_alias_;\n};\n\nclass OptAlias : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Alias* alias_;\n};\n\nclass WithClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  WithDescriptionList* with_description_list_;\n};\n\nclass OptWithClause : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  WithClause* with_clause_;\n};\n\nclass WithDescriptionList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<WithDescription*> v_with_description_list_;\n};\n\nclass WithDescription : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SelectWithParen* select_with_paren_;\n  Identifier* id_;\n};\n\nclass JoinClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  TableRefAtomic* table_ref_atomic1_;\n  NonjoinTableRefAtomic* nonjoin_table_ref_atomic_;\n  OptJoinType* opt_join_type_;\n  TableRefAtomic* table_ref_atomic2_;\n  ColumnName* column_name_;\n  JoinCondition* join_condition_;\n};\n\nclass OptJoinType : public OptString {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass JoinCondition : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass OptSemicolon : public OptString {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass IdentCommaList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<Identifier*> v_iden_comma_list_;\n};\n\nclass OptColumnArglist : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnArglist* column_arglist_;\n};\n\nclass ColumnArglist : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<ColumnArg*> v_column_arg_;\n};\n\nclass ColumnArg : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptOnConflict* opt_on_conflict_;\n  OptOrderType* opt_order_type_;\n  OptAutoinc* opt_autoinc_;\n  Expr* expr_;\n};\n\nclass OptOnConflict : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ResolveType* resolve_type_;\n};\n\nclass ResolveType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptAutoinc : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptUnique : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass IndexName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass TriggerDeclare : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptTmp* opt_tmp_;\n  OptNotExists* opt_not_exists_;\n  TriggerName* trigger_name_;\n  OptTriggerTime* opt_trigger_time_;\n  TriggerEvent* trigger_event_;\n  TableName* table_name_;\n  OptForEach* opt_for_each_;\n  OptWhen* opt_when_;\n};\n\nclass OptTmp : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass TriggerName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass OptTriggerTime : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass TriggerEvent : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptOfColumnList* opt_of_column_list_;\n};\n\nclass OptOfColumnList : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IdentCommaList* ident_commalist_;\n};\n\nclass OptForEach : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptWhen : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass TriggerCmdList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<TriggerCmd*> v_trigger_cmd_list_;\n};\n\nclass TriggerCmd : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  PreparableStatement* stmt_;\n};\n\nclass ModuleName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass OptOverClause : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Window* window_;\n  Identifier* id_;\n};\n\nclass OptFilterClause : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass WindowClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  WindowDefnList* windowdefn_list_;\n};\n\nclass WindowDefnList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<WindowDefn*> v_windowdefn_list_;\n};\n\nclass WindowDefn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n  Window* window_;\n};\n\nclass Window : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptBaseWindowName* opt_base_window_name_;\n  ExprList* expr_list_;\n  OptOrder* opt_order_;\n  OptFrame* opt_frame_;\n};\n\nclass OptBaseWindowName : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass OptFrame : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  RangeOrRows* range_or_rows_;\n  FrameBoundS* frame_bound_s_;\n  OptFrameExclude* opt_frame_exclude_;\n  FrameBoundE* frame_bound_e_;\n};\n\nclass RangeOrRows : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass FrameBoundS : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  FrameBound* frame_bound_;\n};\n\nclass FrameBoundE : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  FrameBound* frame_bound_;\n};\n\nclass FrameBound : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n  string str_val_;\n};\n\nclass OptFrameExclude : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  FrameExclude* frame_exclude_;\n};\n\nclass FrameExclude : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass InsertType : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n  ResolveType* resolve_type_;\n};\n\nclass TableRef : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptAlias* opt_alias_;\n  OptIndex* opt_index_;\n  ExprList* expr_list_;\n  TablePrefix* table_prefix_;\n  OptOn* opt_on_;\n  SelectNoParen* select_no_paren_;\n  OptUsing* opt_using_;\n  TableName* table_name_;\n  TableRef* table_ref_;\n};\n\nclass TablePrefix : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  JoinOp* join_op_;\n  TableRef* table_ref_;\n};\n\nclass JoinOp : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  JoinKw* join_kw_;\n  Identifier* id1_;\n  Identifier* id2_;\n};\n\nclass JoinKw : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptIndex : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnName* column_name_;\n};\n\nclass OptOn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Expr* expr_;\n};\n\nclass OptUsing : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IdentCommaList* ident_commalist_;\n};\n\nclass CastExpr : public Expr {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnType* column_type_;\n  Expr* expr_;\n};\n\nclass AlterStatement : public PreparableStatement {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnDef* column_def_;\n  TableName* table_name1_;\n  TableName* table_name2_;\n  ColumnName* column_name1_;\n  ColumnName* column_name2_;\n  OptColumn* opt_column_;\n};\n\nclass OptColumn : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass CmdRelease : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SavepointName* savepoint_name_;\n};\n\nclass SavepointName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\nclass VacuumStatement : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptSchemaName* opt_schema_name_;\n  FilePath* file_path_;\n};\n\nclass OptSchemaName : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SchemaName* schema_name_;\n};\n\nclass RollbackStatement : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptTransaction* opt_transaction_;\n  OptToSavepoint* opt_to_savepoint_;\n};\n\nclass OptTransaction : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass OptToSavepoint : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  SavepointName* savepoint_name_;\n};\n\nclass BeginStatement : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptTransaction* opt_transaction_;\n};\n\nclass CommitStatement : public Cmd {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptTransaction* opt_transaction_;\n};\n\nclass OptUpsertClause : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  UpsertClause* upsert_clause_;\n};\n\nclass UpsertClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  IndexedColumnList* indexed_column_list_;\n  AssignList* assign_list_;\n  OptWhere* opt_where1_;\n  OptWhere* opt_where2_;\n};\n\nclass IndexedColumnList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<IndexedColumn*> v_indexed_column_list_;\n};\n\nclass IndexedColumn : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  OptOrderType* opt_order_type_;\n  Expr* expr_;\n  OptCollate* opt_collate_;\n};\n\nclass OptCollate : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  CollationName* collation_name_;\n  string str_val_;\n};\n\nclass AssignList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<AssignClause*> v_assign_list_;\n};\n\nclass OptNull : public Opt {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  string str_val_;\n};\n\nclass AssignClause : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  ColumnNameList* column_name_list_;\n  Expr* expr_;\n};\n\nclass ColumnNameList : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  vector<ColumnName*> v_column_name_list_;\n};\n\nclass CollationName : public Node {\n public:\n  virtual void deep_delete();\n  virtual IR* translate(vector<IR*>& v_ir_collector);\n  Identifier* id_;\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/sqlite/include/define.h",
    "content": "#pragma once\n#ifndef __DEFINE_H__\n#define __DEFINE_H__\n\n#define ALLTYPE(V)          \\\n  V(kIR)                    \\\n  V(kIROperator)            \\\n  V(kNode)                  \\\n  V(kOpt)                   \\\n  V(kOptString)             \\\n  V(kProgram)               \\\n  V(kStatement)             \\\n  V(kOptionalHints)         \\\n  V(kPrepareStatement)      \\\n  V(kPreparableStatement)   \\\n  V(kShowStatement)         \\\n  V(kHint)                  \\\n  V(kHintList)              \\\n  V(kPrepareTargetQuery)    \\\n  V(kSelectStatement)       \\\n  V(kImportStatement)       \\\n  V(kCreateStatement)       \\\n  V(kInsertStatement)       \\\n  V(kDeleteStatement)       \\\n  V(kUpdateStatement)       \\\n  V(kDropStatement)         \\\n  V(kExecuteStatement)      \\\n  V(kImportFileType)        \\\n  V(kFilePath)              \\\n  V(kOptNotExists)          \\\n  V(kColumnDefCommaList)    \\\n  V(kColumnDef)             \\\n  V(kColumnType)            \\\n  V(kOptColumnNullable)     \\\n  V(kOptExists)             \\\n  V(kOptColumnList)         \\\n  V(kUpdateClauseCommalist) \\\n  V(kUpdateClause)          \\\n  V(kSelectWithParen)       \\\n  V(kSelectParenOrClause)   \\\n  V(kSelectNoParen)         \\\n  V(kSetOperator)           \\\n  V(kSetType)               \\\n  V(kOptAll)                \\\n  V(kSelectClause)          \\\n  V(kOptDistinct)           \\\n  V(kSelectList)            \\\n  V(kFromClause)            \\\n  V(kOptFromClause)         \\\n  V(kOptWhere)              \\\n  V(kOptGroup)              \\\n  V(kOptHaving)             \\\n  V(kOptOrder)              \\\n  V(kOrderList)             \\\n  V(kOrderDesc)             \\\n  V(kOptOrderType)          \\\n  V(kOptTop)                \\\n  V(kOptLimit)              \\\n  V(kExprList)              \\\n  V(kLiteralList)           \\\n  V(kOptLiteralList)        \\\n  V(kExprAlias)             \\\n  V(kExpr)                  \\\n  V(kOperand)               \\\n  V(kBetweenExpr)           \\\n  V(kLogicExpr)             \\\n  V(kExistsExpr)            \\\n  V(kInExpr)                \\\n  V(kArrayIndex)            \\\n  V(kScalarExpr)            \\\n  V(kUnaryExpr)             \\\n  V(kBinaryExpr)            \\\n  V(kCaseExpr)              \\\n  V(kFunctionExpr)          \\\n  V(kExtractExpr)           \\\n  V(kArrayExpr)             \\\n  V(kCaseClause)            \\\n  V(kCaseList)              \\\n  V(kDatetimeField)         \\\n  V(kColumnName)            \\\n  V(kLiteral)               \\\n  V(kStringLiteral)         \\\n  V(kBoolLiteral)           \\\n  V(kNumLiteral)            \\\n  V(kIntLiteral)            \\\n  V(kNullLiteral)           \\\n  V(kParamExpr)             \\\n  V(kIdentifier)            \\\n  V(kTableRef)              \\\n  V(kTableRefCommaList)     \\\n  V(kTableRefAtomic)        \\\n  V(kNonjoinTableRefAtomic) \\\n  V(kTableRefName)          \\\n  V(kTableRefNameNoAlias)   \\\n  V(kTableName)             \\\n  V(kTableAlias)            \\\n  V(kOptTableAlias)         \\\n  V(kAlias)                 \\\n  V(kOptAlias)              \\\n  V(kWithClause)            \\\n  V(kOptWithClause)         \\\n  V(kWithDescriptionList)   \\\n  V(kWithDescription)       \\\n  V(kJoinClause)            \\\n  V(kOptJoinType)           \\\n  V(kJoinCondition)         \\\n  V(kOptSemicolon)          \\\n  V(kIdentCommaList)        \\\n  V(kFloatLiteral)          \\\n  V(kInit)                  \\\n  V(kStatementList)         \\\n  V(kCompExpr)              \\\n  V(kUnknown)               \\\n  V(kEmpty)                 \\\n  V(kCmdPragma)             \\\n  V(kPragmaKey)             \\\n  V(kPragmaName)            \\\n  V(kPragmaValue)           \\\n  V(kSchemaName)            \\\n  V(kOptColumnArglist)      \\\n  V(kColumnArglist)         \\\n  V(kColumnArg)             \\\n  V(kOptOnConflict)         \\\n  V(kResolveType)           \\\n  V(kOptAutoinc)            \\\n  V(kOptUnique)             \\\n  V(kIndexName)             \\\n  V(kTriggerDeclare)        \\\n  V(kOptTmp)                \\\n  V(kTriggerName)           \\\n  V(kOptTriggerTime)        \\\n  V(kTriggerEvent)          \\\n  V(kOptOfColumnList)       \\\n  V(kOptForEach)            \\\n  V(kOptWhen)               \\\n  V(kTriggerCmdList)        \\\n  V(kTriggerCmd)            \\\n  V(kModuleName)            \\\n  V(kOptOverClause)         \\\n  V(kOptFilterClause)       \\\n  V(kWindowClause)          \\\n  V(kWindowDefnList)        \\\n  V(kWindowDefn)            \\\n  V(kWindow)                \\\n  V(kOptBaseWindowName)     \\\n  V(kOptFrame)              \\\n  V(kRangeOrRows)           \\\n  V(kFrameBoundS)           \\\n  V(kFrameBoundE)           \\\n  V(kFrameBound)            \\\n  V(kOptFrameExclude)       \\\n  V(kFrameExclude)          \\\n  V(kInsertType)            \\\n  V(kCmd)                   \\\n  V(kCmdAttach)             \\\n  V(kCmdDetach)             \\\n  V(kCmdReindex)            \\\n  V(kCmdAnalyze)            \\\n  V(kSuperList)             \\\n  V(kTablePrefix)           \\\n  V(kOptOn)                 \\\n  V(kOptUsing)              \\\n  V(kOptIndex)              \\\n  V(kJoinOp)                \\\n  V(kJoinKw)                \\\n  V(kCastExpr)              \\\n  V(kAlterStatement)        \\\n  V(kOptColumn)             \\\n  V(kCmdRelease)            \\\n  V(kSavepointName)         \\\n  V(kVacuumStatement)       \\\n  V(kOptSchemaName)         \\\n  V(kRollbackStatement)     \\\n  V(kOptTransaction)        \\\n  V(kOptToSavepoint)        \\\n  V(kBeginStatement)        \\\n  V(kCommitStatement)       \\\n  V(kUpsertClause)          \\\n  V(kIndexedColumnList)     \\\n  V(kIndexedColumn)         \\\n  V(kOptCollate)            \\\n  V(kAssignList)            \\\n  V(kOptNull)               \\\n  V(kAssignClause)          \\\n  V(kColumnNameList)        \\\n  V(kCollationName)         \\\n  V(kOptUpsertClause)\n\n#define ALLCLASS(V)        \\\n  V(IR)                    \\\n  V(IROperator)            \\\n  V(Node)                  \\\n  V(Opt)                   \\\n  V(OptString)             \\\n  V(Program)               \\\n  V(Statement)             \\\n  V(OptionalHints)         \\\n  V(PrepareStatement)      \\\n  V(PreparableStatement)   \\\n  V(ShowStatement)         \\\n  V(Hint)                  \\\n  V(HintList)              \\\n  V(PrepareTargetQuery)    \\\n  V(SelectStatement)       \\\n  V(ImportStatement)       \\\n  V(CreateStatement)       \\\n  V(InsertStatement)       \\\n  V(DeleteStatement)       \\\n  V(UpdateStatement)       \\\n  V(DropStatement)         \\\n  V(ExecuteStatement)      \\\n  V(ImportFileType)        \\\n  V(FilePath)              \\\n  V(OptNotExists)          \\\n  V(ColumnDefCommaList)    \\\n  V(ColumnDef)             \\\n  V(ColumnType)            \\\n  V(OptColumnNullable)     \\\n  V(OptExists)             \\\n  V(OptColumnList)         \\\n  V(UpdateClauseCommalist) \\\n  V(UpdateClause)          \\\n  V(SelectWithParen)       \\\n  V(SelectParenOrClause)   \\\n  V(SelectNoParen)         \\\n  V(SetOperator)           \\\n  V(SetType)               \\\n  V(OptAll)                \\\n  V(SelectClause)          \\\n  V(OptDistinct)           \\\n  V(SelectList)            \\\n  V(FromClause)            \\\n  V(OptFromClause)         \\\n  V(OptWhere)              \\\n  V(OptGroup)              \\\n  V(OptHaving)             \\\n  V(OptOrder)              \\\n  V(OrderList)             \\\n  V(OrderDesc)             \\\n  V(OptOrderType)          \\\n  V(OptTop)                \\\n  V(OptLimit)              \\\n  V(ExprList)              \\\n  V(LiteralList)           \\\n  V(OptLiteralList)        \\\n  V(ExprAlias)             \\\n  V(Expr)                  \\\n  V(Operand)               \\\n  V(BetweenExpr)           \\\n  V(LogicExpr)             \\\n  V(ExistsExpr)            \\\n  V(InExpr)                \\\n  V(ArrayIndex)            \\\n  V(ScalarExpr)            \\\n  V(UnaryExpr)             \\\n  V(BinaryExpr)            \\\n  V(CaseExpr)              \\\n  V(FunctionExpr)          \\\n  V(ExtractExpr)           \\\n  V(ArrayExpr)             \\\n  V(CaseClause)            \\\n  V(CaseList)              \\\n  V(DatetimeField)         \\\n  V(ColumnName)            \\\n  V(Literal)               \\\n  V(StringLiteral)         \\\n  V(BoolLiteral)           \\\n  V(NumLiteral)            \\\n  V(IntLiteral)            \\\n  V(NullLiteral)           \\\n  V(ParamExpr)             \\\n  V(Identifier)            \\\n  V(TableRefCommaList)     \\\n  V(TableRefAtomic)        \\\n  V(NonjoinTableRefAtomic) \\\n  V(TableRefName)          \\\n  V(TableRefNameNoAlias)   \\\n  V(TableName)             \\\n  V(TableAlias)            \\\n  V(OptTableAlias)         \\\n  V(Alias)                 \\\n  V(OptAlias)              \\\n  V(WithClause)            \\\n  V(OptWithClause)         \\\n  V(WithDescriptionList)   \\\n  V(WithDescription)       \\\n  V(JoinClause)            \\\n  V(OptJoinType)           \\\n  V(JoinCondition)         \\\n  V(OptSemicolon)          \\\n  V(IdentCommaList)        \\\n  V(FloatLiteral)          \\\n  V(Init)                  \\\n  V(StatementList)         \\\n  V(CompExpr)              \\\n  V(Unknown)               \\\n  V(Empty)                 \\\n  V(CmdPragma)             \\\n  V(PragmaKey)             \\\n  V(PragmaName)            \\\n  V(PragmaValue)           \\\n  V(SchemaName)            \\\n  V(OptColumnArglist)      \\\n  V(ColumnArglist)         \\\n  V(ColumnArg)             \\\n  V(OptOnConflict)         \\\n  V(ResolveType)           \\\n  V(OptAutoinc)            \\\n  V(OptUnique)             \\\n  V(IndexName)             \\\n  V(TriggerDeclare)        \\\n  V(OptTmp)                \\\n  V(TriggerName)           \\\n  V(OptTriggerTime)        \\\n  V(TriggerEvent)          \\\n  V(OptOfColumnList)       \\\n  V(OptForEach)            \\\n  V(OptWhen)               \\\n  V(TriggerCmdList)        \\\n  V(TriggerCmd)            \\\n  V(ModuleName)            \\\n  V(OptOverClause)         \\\n  V(OptFilterClause)       \\\n  V(WindowClause)          \\\n  V(WindowDefnList)        \\\n  V(WindowDefn)            \\\n  V(Window)                \\\n  V(OptBaseWindowName)     \\\n  V(OptFrame)              \\\n  V(RangeOrRows)           \\\n  V(FrameBoundS)           \\\n  V(FrameBoundE)           \\\n  V(FrameBound)            \\\n  V(OptFrameExclude)       \\\n  V(FrameExclude)          \\\n  V(InsertType)            \\\n  V(Cmd)                   \\\n  V(CmdAttach)             \\\n  V(CmdDetach)             \\\n  V(CmdReindex)            \\\n  V(CmdAnalyze)            \\\n  V(SuperList)             \\\n  V(TablePrefix)           \\\n  V(OptOn)                 \\\n  V(OptUsing)              \\\n  V(OptIndex)              \\\n  V(CastExpr)              \\\n  V(AlterStatement)        \\\n  V(OptColumn)             \\\n  V(CmdRelease)            \\\n  V(SavepointName)         \\\n  V(VacuumStatement)       \\\n  V(OptSchemaName)         \\\n  V(RollbackStatement)     \\\n  V(OptTransaction)        \\\n  V(OptToSavepoint)        \\\n  V(BeginStatement)        \\\n  V(CommitStatement)       \\\n  V(JoinOp)                \\\n  V(JoinKw)                \\\n  V(TableRef)              \\\n  V(UpsertClause)          \\\n  V(IndexedColumnList)     \\\n  V(IndexedColumn)         \\\n  V(OptCollate)            \\\n  V(AssignList)            \\\n  V(OptNull)               \\\n  V(AssignClause)          \\\n  V(ColumnNameList)        \\\n  V(CollationName)         \\\n  V(OptUpsertClause)\n\n#define SWITCHSTART switch (sub_type_) {\n#define SWITCHEND \\\n  default:        \\\n                  \\\n    assert(0);    \\\n    }\n\n#define CASESTART(idx) case CASE##idx: {\n#define CASEEND \\\n  break;        \\\n  }\n\n#define TRANSLATESTART IR *res = NULL;\n\n#define TRANSLATEEND             \\\n  v_ir_collector.push_back(res); \\\n                                 \\\n  return res;\n\n#define TRANSLATEENDNOPUSH return res;\n\n#define SAFETRANSLATE(a) (assert(a != NULL), a->translate(v_ir_collector))\n\n#define SAFEDELETE(a) \\\n  if (a != NULL) a->deep_delete()\n\n#define SAFEDELETELIST(a) \\\n  for (auto _i : a) SAFEDELETE(_i)\n\n#define OP1(a) new IROperator(a)\n\n#define OP2(a, b) new IROperator(a, b)\n\n#define OP3(a, b, c) new IROperator(a, b, c)\n\n#define OPSTART(a) new IROperator(a)\n\n#define OPMID(a) new IROperator(\"\", a, \"\")\n\n#define OPEND(a) new IROperator(\"\", \"\", a)\n\n#define OP0() new IROperator()\n\n#define TRANSLATELIST(t, a, b)           \\\n  res = SAFETRANSLATE(a[0]);             \\\n  res = new IR(t, OP0(), res);           \\\n  v_ir_collector.push_back(res);         \\\n  for (int i = 1; i < a.size(); i++) {   \\\n    IR *tmp = SAFETRANSLATE(a[i]);       \\\n    res = new IR(t, OPMID(b), res, tmp); \\\n    v_ir_collector.push_back(res);       \\\n  }\n\n#define PUSH(a) v_ir_collector.push_back(a)\n\n#define MUTATESTART               \\\n  IR *res;                        \\\n  auto randint = get_rand_int(3); \\\n  switch (randint) {\n#define DOLEFT case 0: {\n#define DORIGHT \\\n  break;        \\\n  }             \\\n                \\\n  case 1: {\n#define DOBOTH \\\n  break;       \\\n  }            \\\n  case 2: {\n#define MUTATEEND \\\n  }               \\\n  }               \\\n                  \\\n  return res;\n\n#endif\n"
  },
  {
    "path": "srcs/internal/sqlite/include/mutator.h",
    "content": "#ifndef __MUTATOR_H__\n#define __MUTATOR_H__\n\n#include \"ast.h\"\n#include \"define.h\"\n#include \"utils.h\"\n\n#define LUCKY_NUMBER 500\n\nusing namespace std;\n\nclass Mutator {\n public:\n  Mutator() { srand(time(nullptr)); }\n\n  IR *deep_copy_with_record(const IR *root, const IR *record);\n  unsigned long hash(IR *);\n  unsigned long hash(string);\n\n  IR *ir_random_generator(vector<IR *> v_ir_collector);\n\n  vector<IR *> mutate_all(vector<IR *> &v_ir_collector);\n\n  vector<IR *> mutate(IR *input);\n  IR *strategy_delete(IR *cur);\n  IR *strategy_insert(IR *cur);\n  IR *strategy_replace(IR *cur);\n\n  bool replace(IR *root, IR *old_ir, IR *new_ir);\n  IR *locate_parent(IR *root, IR *old_ir);\n  string validate(IR *root);\n\n  void minimize(vector<IR *> &);\n  bool lucky_enough_to_be_mutated(unsigned int mutated_times);\n\n  void add_to_library(IR *);\n  void add_to_library_core(IR *);\n  IR *get_from_libary_3D(IR *);\n  IR *get_from_libary_2D(IR *);\n\n  void init(string f_testcase, string f_common_string = \"\", string pragma = \"\");\n  string fix(IR *root);\n  string extract_struct(IR *root);\n  string extract_struct2(IR *root);\n  void add_new_table(IR *root, string &table_name);\n  void reset_database();\n\n  bool check_node_num(IR *root, unsigned int limit);\n  vector<IR *> extract_statement(IR *root);\n  unsigned int calc_node(IR *root);\n\n  map<IR *, set<IR *>> build_dependency_graph(IR *root,\n                                              map<IDTYPE, IDTYPE> &relationmap,\n                                              map<IDTYPE, IDTYPE> &crssmap,\n                                              vector<IR *> &ordered_ir);\n  vector<IR *> cut_subquery(IR *program, map<IR **, IR *> &m_save);\n  bool fix_back(map<IR **, IR *> &m_save);\n  void fix_one(map<IR *, set<IR *>> &graph, IR *fixed_key, set<IR *> &visited);\n  void fix_graph(map<IR *, set<IR *>> &graph, IR *root,\n                 vector<IR *> &ordered_ir);\n\n  string get_a_string();\n  unsigned long get_a_val();\n  static vector<string> common_string_libary;\n  static vector<unsigned long> value_libary;\n  static map<string, vector<string>> m_tables;\n  static vector<string> v_table_names;\n  ~Mutator();\n\n  void debug(IR *root);\n  unsigned long get_library_size();\n  int try_fix(char *buf, int len, char *&new_buf, int &new_len);\n\n private:\n  IR *record_ = NULL;\n  map<NODETYPE, map<NODETYPE, vector<IR *>>> ir_libary_3D_;\n  map<NODETYPE, map<NODETYPE, set<unsigned long>>> ir_libary_3D_hash_;\n  map<NODETYPE, set<unsigned long>> ir_libary_2D_hash_;\n  map<NODETYPE, vector<IR *>> ir_libary_2D_;\n  map<NODETYPE, vector<IR *>> left_lib;\n  map<NODETYPE, vector<IR *>> right_lib;\n  vector<string> string_libary;\n  map<IDTYPE, IDTYPE> relationmap;\n  map<IDTYPE, IDTYPE> cross_map;\n  set<unsigned long> string_libary_hash_;\n\n  vector<string> cmds_;\n  map<string, vector<string>> m_cmd_value_lib_;\n\n  string s_table_name;\n\n  map<NODETYPE, int> type_counter_;\n};\n\n#endif\n"
  },
  {
    "path": "srcs/internal/sqlite/include/utils.h",
    "content": "#ifndef __UTILS_H__\n#define __UTILS_H__\n#include <string>\n\n#include \"../parser/bison_parser.h\"\n#include \"../parser/flex_lexer.h\"\n#include \"ast.h\"\n#include \"define.h\"\n//#include \"/usr/local/mysql/include/mysql.h\"\n\n#include <dirent.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <unistd.h>\n\n#include <cassert>\n#include <cstdio>\n#include <cstdlib>\n\nusing std::string;\n\n#define get_rand_int(range) rand() % (range)\n//#define vector_rand_ele(a) (a[get_rand_int(a.size())])\n#define vector_rand_ele(a) \\\n  (a.size() != 0 ? a[get_rand_int(a.size())] : gen_id_name())\nIR *deep_copy(const IR *root);\nvoid deep_delete(IR *root);\n\nProgram *parser(string sql);\nstring get_string_by_type(IRTYPE);\nvoid print_ir(IR *ir);\nvoid print_v_ir(vector<IR *> &v_ir_collector);\nuint64_t ducking_hash(const void *key, int len);\nvoid trim_string(string &);\nvector<string> get_all_files_in_dir(const char *dir_name,\n                                    bool absolute = false);\nstring magic_string_generator(string &s);\n\n#endif\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/Makefile",
    "content": "#bison's version is too old on OSX, allow user to pass in custom path\nBISON ? = bison FLEX ? = flex\n\n#BISON_VERSION = \\\n    $(shell $(BISON)-- version | head - n 1 | grep - o '[0-9]\\.[0-9]\\+')\n#BISON_VERSION_SUPPORTED = $(shell echo $(BISON_VERSION) \\>= 3.0 | bc)\n#ifneq($(BISON_VERSION_SUPPORTED), 1)\n#$(error Bison version $(BISON_VERSION) not supported.If you are using OS X, `bison` uses the            \\\n                                                                                 system default instead  \\\n                                                                                     of the brew version \\\n                                                                                         .Run            \\\n                                                                                             BISON =     \\\n                                                                                 /                       \\\n                                                                                 usr /                   \\\n                                                                                 local /                 \\\n                                                                                 opt /                   \\\n                                                                                 bison /                 \\\n                                                                                 bin /                   \\\n                                                                                 bison                   \\\n                                                                                     make)\n#endif\n\n#FLEX_VERSION = \\\n    $(shell $(FLEX)-- version | head - n 1 | grep - o '[0-9]\\.[0-9]\\+')\n#FLEX_VERSION_SUPPORTED = $(shell echo $(FLEX_VERSION) \\>= 2.6 | bc)\n#ifneq($(FLEX_VERSION_SUPPORTED), 1)\n#$(error Flex version $(FLEX_VERSION) not supported.If you are using OS X, `flex` uses the             \\\n                                                                               system default instead  \\\n                                                                                   of the brew version \\\n                                                                                       .Run            \\\n                                                                                           FLEX =      \\\n                                                                               /                       \\\n                                                                               usr /                   \\\n                                                                               local /                 \\\n                                                                               opt /                   \\\n                                                                               flex /                  \\\n                                                                               bin /                   \\\n                                                                               flex                    \\\n                                                                                   make)\n#endif\n\n                           all\n                     : bison_parser.cpp flex_lexer\n                           .cpp\n\n                               bison_parser.cpp\n      : bison_parser.y $(BISON)\n            bison_parser.y-- output = bison_parser.cpp-- defines =\n            bison_parser.h-- verbose - Wconflicts -\n            rr\n\n                flex_lexer.cpp : flex_lexer.l\n                                 $(FLEX) flex_lexer.l\n\n                                     clean : rm -\n            f bison_parser.cpp flex_lexer.cpp bison_parser.h flex_lexer.h *\n                    .output\n\n#Tests if the parser builds correctly and doesn't contain conflicts.\n                        test : !$(BISON) bison_parser.y -\n            v-- output = conflict_test.cpp 2 > &1 | grep \"conflict\" > / tmp / 2\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/bison_parser.cpp",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison implementation for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* C LALR(1) parser skeleton written by Richard Stallman, by\n   simplifying the original so-called \"semantic\" parser.  */\n\n/* All symbols defined below should begin with yy or YY, to avoid\n   infringing on user name space.  This should be done even for local\n   variables, as they might otherwise be expanded by user macros.\n   There are some unavoidable exceptions within include files to\n   define necessary library symbols; they are noted \"INFRINGES ON\n   USER NAME SPACE\" below.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n/* Identify Bison output.  */\n#define YYBISON 1\n\n/* Bison version.  */\n#define YYBISON_VERSION \"3.3.2\"\n\n/* Skeleton name.  */\n#define YYSKELETON_NAME \"yacc.c\"\n\n/* Pure parsers.  */\n#define YYPURE 2\n\n/* Push parsers.  */\n#define YYPUSH 0\n\n/* Pull parsers.  */\n#define YYPULL 1\n\n/* Substitute the type names.  */\n#define YYSTYPE HSQL_STYPE\n#define YYLTYPE HSQL_LTYPE\n/* Substitute the variable and function names.  */\n#define yyparse hsql_parse\n#define yylex hsql_lex\n#define yyerror hsql_error\n#define yydebug hsql_debug\n#define yynerrs hsql_nerrs\n\n/* First part of user prologue.  */\n#line 1 \"bison_parser.y\" /* yacc.c:337  */\n\n/**\n * bison_parser.y\n * defines bison_parser.h\n * outputs bison_parser.c\n *\n * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html\n *\n */\n/*********************************\n ** Section 1: C Declarations\n *********************************/\n\n#include \"bison_parser.h\"\n\n#include <stdio.h>\n#include <string.h>\n\n#include \"flex_lexer.h\"\n\nint yyerror(YYLTYPE* llocp, Program* result, yyscan_t scanner,\n            const char* msg) {\n  return 0;\n}\n\n#line 104 \"bison_parser.cpp\" /* yacc.c:337  */\n#ifndef YY_NULLPTR\n#if defined __cplusplus\n#if 201103L <= __cplusplus\n#define YY_NULLPTR nullptr\n#else\n#define YY_NULLPTR 0\n#endif\n#else\n#define YY_NULLPTR ((void*)0)\n#endif\n#endif\n\n/* Enabling verbose error messages.  */\n#ifdef YYERROR_VERBOSE\n#undef YYERROR_VERBOSE\n#define YYERROR_VERBOSE 1\n#else\n#define YYERROR_VERBOSE 1\n#endif\n\n/* In a future release of Bison, this section will be replaced\n   by #include \"bison_parser.h\".  */\n#ifndef YY_HSQL_BISON_PARSER_H_INCLUDED\n#define YY_HSQL_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef HSQL_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define HSQL_DEBUG 1\n#else\n#define HSQL_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define HSQL_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined HSQL_DEBUG */\n#if HSQL_DEBUG\nextern int hsql_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 32 \"bison_parser.y\" /* yacc.c:352  */\n\n// %code requires block\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n//#include \"../include/utils.h\"\n#include \"parser_typedef.h\"\n\n// Auto update column and line number\n#define YY_USER_ACTION                        \\\n  yylloc->first_line = yylloc->last_line;     \\\n  yylloc->first_column = yylloc->last_column; \\\n  for (int i = 0; yytext[i] != '\\0'; i++) {   \\\n    yylloc->total_column++;                   \\\n    yylloc->string_length++;                  \\\n    if (yytext[i] == '\\n') {                  \\\n      yylloc->last_line++;                    \\\n      yylloc->last_column = 0;                \\\n    } else {                                  \\\n      yylloc->last_column++;                  \\\n    }                                         \\\n  }\n\n#line 172 \"bison_parser.cpp\" /* yacc.c:352  */\n\n/* Token type.  */\n#ifndef HSQL_TOKENTYPE\n#define HSQL_TOKENTYPE\nenum hsql_tokentype {\n  SQL_STRING = 258,\n  SQL_IDENTIFIER = 259,\n  SQL_FLOATVAL = 260,\n  SQL_INTVAL = 261,\n  SQL_DEALLOCATE = 262,\n  SQL_PARAMETERS = 263,\n  SQL_INTERSECT = 264,\n  SQL_TEMPORARY = 265,\n  SQL_TIMESTAMP = 266,\n  SQL_DISTINCT = 267,\n  SQL_NVARCHAR = 268,\n  SQL_RESTRICT = 269,\n  SQL_TRUNCATE = 270,\n  SQL_ANALYZE = 271,\n  SQL_BETWEEN = 272,\n  SQL_CASCADE = 273,\n  SQL_COLUMNS = 274,\n  SQL_CONTROL = 275,\n  SQL_DEFAULT = 276,\n  SQL_EXECUTE = 277,\n  SQL_EXPLAIN = 278,\n  SQL_INTEGER = 279,\n  SQL_NATURAL = 280,\n  SQL_PREPARE = 281,\n  SQL_PRIMARY = 282,\n  SQL_SCHEMAS = 283,\n  SQL_SPATIAL = 284,\n  SQL_VARCHAR = 285,\n  SQL_VIRTUAL = 286,\n  SQL_DESCRIBE = 287,\n  SQL_BEFORE = 288,\n  SQL_COLUMN = 289,\n  SQL_CREATE = 290,\n  SQL_DELETE = 291,\n  SQL_DIRECT = 292,\n  SQL_DOUBLE = 293,\n  SQL_ESCAPE = 294,\n  SQL_EXCEPT = 295,\n  SQL_EXISTS = 296,\n  SQL_EXTRACT = 297,\n  SQL_GLOBAL = 298,\n  SQL_HAVING = 299,\n  SQL_IMPORT = 300,\n  SQL_INSERT = 301,\n  SQL_ISNULL = 302,\n  SQL_OFFSET = 303,\n  SQL_RENAME = 304,\n  SQL_SCHEMA = 305,\n  SQL_SELECT = 306,\n  SQL_SORTED = 307,\n  SQL_TABLES = 308,\n  SQL_UNIQUE = 309,\n  SQL_UNLOAD = 310,\n  SQL_UPDATE = 311,\n  SQL_VALUES = 312,\n  SQL_AFTER = 313,\n  SQL_ALTER = 314,\n  SQL_CROSS = 315,\n  SQL_DELTA = 316,\n  SQL_FLOAT = 317,\n  SQL_GROUP = 318,\n  SQL_INDEX = 319,\n  SQL_INNER = 320,\n  SQL_LIMIT = 321,\n  SQL_LOCAL = 322,\n  SQL_MERGE = 323,\n  SQL_MINUS = 324,\n  SQL_ORDER = 325,\n  SQL_OUTER = 326,\n  SQL_RIGHT = 327,\n  SQL_TABLE = 328,\n  SQL_UNION = 329,\n  SQL_USING = 330,\n  SQL_WHERE = 331,\n  SQL_CALL = 332,\n  SQL_CASE = 333,\n  SQL_CHAR = 334,\n  SQL_DATE = 335,\n  SQL_DESC = 336,\n  SQL_DROP = 337,\n  SQL_ELSE = 338,\n  SQL_FILE = 339,\n  SQL_FROM = 340,\n  SQL_FULL = 341,\n  SQL_HASH = 342,\n  SQL_HINT = 343,\n  SQL_INTO = 344,\n  SQL_JOIN = 345,\n  SQL_LEFT = 346,\n  SQL_LIKE = 347,\n  SQL_LOAD = 348,\n  SQL_LONG = 349,\n  SQL_NULL = 350,\n  SQL_PLAN = 351,\n  SQL_SHOW = 352,\n  SQL_TEXT = 353,\n  SQL_THEN = 354,\n  SQL_TIME = 355,\n  SQL_VIEW = 356,\n  SQL_WHEN = 357,\n  SQL_WITH = 358,\n  SQL_ADD = 359,\n  SQL_ALL = 360,\n  SQL_AND = 361,\n  SQL_ASC = 362,\n  SQL_CSV = 363,\n  SQL_END = 364,\n  SQL_FOR = 365,\n  SQL_INT = 366,\n  SQL_KEY = 367,\n  SQL_NOT = 368,\n  SQL_OFF = 369,\n  SQL_SET = 370,\n  SQL_TBL = 371,\n  SQL_TOP = 372,\n  SQL_AS = 373,\n  SQL_BY = 374,\n  SQL_IF = 375,\n  SQL_IN = 376,\n  SQL_IS = 377,\n  SQL_OF = 378,\n  SQL_ON = 379,\n  SQL_OR = 380,\n  SQL_TO = 381,\n  SQL_ARRAY = 382,\n  SQL_CONCAT = 383,\n  SQL_ILIKE = 384,\n  SQL_SECOND = 385,\n  SQL_MINUTE = 386,\n  SQL_HOUR = 387,\n  SQL_DAY = 388,\n  SQL_MONTH = 389,\n  SQL_YEAR = 390,\n  SQL_TRUE = 391,\n  SQL_FALSE = 392,\n  SQL_PRAGMA = 393,\n  SQL_REINDEX = 394,\n  SQL_GENERATED = 395,\n  SQL_ALWAYS = 396,\n  SQL_CHECK = 397,\n  SQL_CONFLICT = 398,\n  SQL_IGNORE = 399,\n  SQL_REPLACE = 400,\n  SQL_ROLLBACK = 401,\n  SQL_ABORT = 402,\n  SQL_FAIL = 403,\n  SQL_AUTOINCR = 404,\n  SQL_BEGIN = 405,\n  SQL_TRIGGER = 406,\n  SQL_TEMP = 407,\n  SQL_INSTEAD = 408,\n  SQL_EACH = 409,\n  SQL_ROW = 410,\n  SQL_OVER = 411,\n  SQL_FILTER = 412,\n  SQL_PARTITION = 413,\n  SQL_CURRENT = 414,\n  SQL_EXCLUDE = 415,\n  SQL_FOLLOWING = 416,\n  SQL_GROUPS = 417,\n  SQL_NO = 418,\n  SQL_OTHERS = 419,\n  SQL_PRECEDING = 420,\n  SQL_RANGE = 421,\n  SQL_ROWS = 422,\n  SQL_TIES = 423,\n  SQL_UNBOUNDED = 424,\n  SQL_WINDOW = 425,\n  SQL_ATTACH = 426,\n  SQL_DETACH = 427,\n  SQL_DATABASE = 428,\n  SQL_INDEXED = 429,\n  SQL_CAST = 430,\n  SQL_SAVEPOINT = 431,\n  SQL_RELEASE = 432,\n  SQL_VACUUM = 433,\n  SQL_TRANSACTION = 434,\n  SQL_DEFFERED = 435,\n  SQL_EXCLUSIVE = 436,\n  SQL_IMEDIATE = 437,\n  SQL_COMMIT = 438,\n  SQL_GLOB = 439,\n  SQL_MATCH = 440,\n  SQL_REGEX = 441,\n  SQL_NOTHING = 442,\n  SQL_NULLS = 443,\n  SQL_LAST = 444,\n  SQL_FIRST = 445,\n  SQL_DO = 446,\n  SQL_COLLATE = 447,\n  SQL_EQUALS = 448,\n  SQL_NOTEQUALS = 449,\n  SQL_LESS = 450,\n  SQL_GREATER = 451,\n  SQL_LESSEQ = 452,\n  SQL_GREATEREQ = 453,\n  SQL_NOTNULL = 454,\n  SQL_UMINUS = 455\n};\n#endif\n\n/* Value type.  */\n#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED\n#line 95 \"bison_parser.y\" /* yacc.c:352  */\nunion HSQL_STYPE {\n#line 95 \"bison_parser.y\" /* yacc.c:352  */\n\n  double fval;\n  int64_t ival;\n  char* sval;\n  uintmax_t uval;\n  bool bval;\n\n  Program* program_t;\n  StatementList* statement_list_t;\n  Statement* statement_t;\n  PreparableStatement* preparable_statement_t;\n  OptionalHints* optional_hints_t;\n  HintList* hint_list_t;\n  Hint* hint_t;\n  PrepareStatement* prepare_statement_t;\n  PrepareTargetQuery* prepare_target_query_t;\n  ExecuteStatement* execute_statement_t;\n  ImportStatement* import_statement_t;\n  ImportFileType* import_file_type_t;\n  FilePath* file_path_t;\n  TableRefCommaList* table_ref_commalist_t;\n  ShowStatement* show_statement_t;\n  CreateStatement* create_statement_t;\n  OptNotExists* opt_not_exists_t;\n  ColumnDefCommaList* column_def_comma_list_t;\n  ColumnDef* column_def_t;\n  ColumnType* column_type_t;\n  // OptColumnNullable* opt_column_nullable_t;\n  DropStatement* drop_statement_t;\n  OptExists* opt_exists_t;\n  DeleteStatement* delete_statement_t;\n  InsertStatement* insert_statement_t;\n  OptColumnList* opt_column_list_t;\n  UpdateStatement* update_statement_t;\n  UpdateClauseCommalist* update_clause_commalist_t;\n  UpdateClause* update_clause_t;\n  SelectStatement* select_statement_t;\n  SelectWithParen* select_with_paren_t;\n  SelectParenOrClause* select_paren_or_clause_t;\n  SelectNoParen* select_no_paren_t;\n  SetOperator* set_operator_t;\n  SetType* set_type_t;\n  OptAll* opt_all_t;\n  IdentCommaList* ident_commalist_t;\n  SelectClause* select_clause_t;\n  OptDistinct* opt_distinct_t;\n  SelectList* select_list_t;\n  OptFromClause* opt_from_clause_t;\n  FromClause* from_clause_t;\n  OptWhere* opt_where_t;\n  OptGroup* opt_group_t;\n  OptHaving* opt_having_t;\n  OptOrder* opt_order_t;\n  OrderList* order_list_t;\n  OrderDesc* order_desc_t;\n  OptOrderType* opt_order_type_t;\n  OptTop* opt_top_t;\n  OptLimit* opt_limit_t;\n  ExprList* expr_list_t;\n  OptLiteralList* opt_literal_list_t;\n  LiteralList* literal_list_t;\n  ExprAlias* expr_alias_t;\n  Expr* expr_t;\n  Operand* operand_t;\n  ScalarExpr* scalar_expr_t;\n  UnaryExpr* unary_expr_t;\n  BinaryExpr* binary_expr_t;\n  LogicExpr* logic_expr_t;\n  InExpr* in_expr_t;\n  CompExpr* comp_expr_t;\n  CaseExpr* case_expr_t;\n  CaseClause* case_clause_t;\n  CaseList* case_list_t;\n  ExistsExpr* exists_expr_t;\n  FunctionExpr* function_expr_t;\n  ExtractExpr* extract_expr_t;\n  DatetimeField* datetime_field_t;\n  ArrayExpr* array_expr_t;\n  ArrayIndex* array_index_t;\n  BetweenExpr* between_expr_t;\n  ColumnName* column_name_t;\n  Literal* literal_t;\n  StringLiteral* string_literal_t;\n  BoolLiteral* bool_literal_t;\n  NumLiteral* num_literal_t;\n  IntLiteral* int_literal_t;\n  NullLiteral* null_literal_t;\n  ParamExpr* param_expr_t;\n  TableRef* table_ref_t;\n  TableRefAtomic* table_ref_atomic_t;\n  NonjoinTableRefAtomic* nonjoin_table_ref_atomic_t;\n  TableRefName* table_ref_name_t;\n  TableRefNameNoAlias* table_ref_name_no_alias_t;\n  TableName* table_name_t;\n  TableAlias* table_alias_t;\n  OptTableAlias* opt_table_alias_t;\n  Alias* alias_t;\n  OptAlias* opt_alias_t;\n  OptWithClause* opt_with_clause_t;\n  WithClause* with_clause_t;\n  WithDescriptionList* with_description_list_t;\n  WithDescription* with_description_t;\n  JoinClause* join_clause_t;\n  OptJoinType* opt_join_type_t;\n  JoinCondition* join_condition_t;\n  OptSemicolon* opt_semicolon_t;\n  Identifier* identifier_t;\n  Cmd* cmd_t;\n  CmdAttach* cmd_attach_t;\n  CmdDetach* cmd_detach_t;\n  CmdReindex* cmd_reindex_t;\n  CmdAnalyze* cmd_analyze_t;\n  CmdPragma* cmd_pragma_t;\n  PragmaKey* pragma_key_t;\n  PragmaValue* pragma_value_t;\n  PragmaName* pragma_name_t;\n  SchemaName* schema_name_t;\n  OptColumnArglist* opt_column_arglist_t;\n  ColumnArglist* column_arglist_t;\n  ColumnArg* column_arg_t;\n  OptOnConflict* opt_on_conflict_t;\n  ResolveType* resolve_type_t;\n  OptAutoinc* opt_autoinc_t;\n  OptUnique* opt_unique_t;\n  IndexName* index_name_t;\n  TriggerDeclare* trigger_declare_t;\n  OptTmp* opt_tmp_t;\n  TriggerName* trigger_name_t;\n  OptTriggerTime* opt_trigger_time_t;\n  TriggerEvent* trigger_event_t;\n  OptOfColumnList* opt_of_column_list_t;\n  OptForEach* opt_for_each_t;\n  OptWhen* opt_when_t;\n  TriggerCmdList* trigger_cmd_list_t;\n  TriggerCmd* trigger_cmd_t;\n  ModuleName* module_name_t;\n  OptOverClause* opt_over_clause_t;\n  OptFilterClause* opt_filter_clause_t;\n  WindowClause* window_clause_t;\n  WindowDefnList* window_defn_list_t;\n  WindowDefn* window_defn_t;\n  Window* window_t;\n  OptBaseWindowName* opt_base_window_name_t;\n  OptFrame* opt_frame_t;\n  RangeOrRows* range_or_rows_t;\n  FrameBoundS* frame_bound_s_t;\n  FrameBoundE* frame_bound_e_t;\n  FrameBound* frame_bound_t;\n  OptFrameExclude* opt_frame_exclude_t;\n  FrameExclude* frame_exclude_t;\n  InsertType* insert_type_t;\n  SuperList* super_list_t;\n  JoinKw* join_kw_t;\n\n  TablePrefix* table_prefix_t;\n  JoinOp* join_op_t;\n  OptIndex* opt_index_t;\n  OptOn* opt_on_t;\n  OptUsing* opt_using_t;\n\n  CastExpr* cast_expr_t;\n  AlterStatement* alter_statement_t;\n  OptColumn* opt_column_t;\n  CmdRelease* cmd_release_t;\n  SavepointName* savepoint_name_t;\n  VacuumStatement* vacuum_statement_t;\n  OptSchemaName* opt_schema_name_t;\n  RollbackStatement* rollback_statement_t;\n  OptTransaction* opt_transaction_t;\n  OptToSavepoint* opt_to_savepoint_t;\n  BeginStatement* begin_statement_t;\n  CommitStatement* commit_statement_t;\n  UpsertClause* upsert_clause_t;\n  IndexedColumnList* indexed_column_list_t;\n  IndexedColumn* indexed_column_t;\n  OptCollate* opt_collate_t;\n  AssignList* assign_list_t;\n  OptNull* opt_null_t;\n  AssignClause* assign_clause_t;\n  ColumnNameList* column_name_list_t;\n  CollationName* collation_name_t;\n  OptUpsertClause* opt_upsert_clause_t;\n\n  std::vector<char*>* str_vec;\n  std::vector<TableRef*>* table_vec;\n  std::vector<ColumnDef*>* column_vec;\n  std::vector<UpdateClause*>* update_vec;\n  std::vector<Expr*>* expr_vec;\n  std::vector<OrderDesc*>* order_vec;\n  std::vector<WithDescription*>* with_description_vec;\n\n#line 577 \"bison_parser.cpp\" /* yacc.c:352  */\n};\n#line 95 \"bison_parser.y\" /* yacc.c:352  */\ntypedef union HSQL_STYPE HSQL_STYPE;\n#define HSQL_STYPE_IS_TRIVIAL 1\n#define HSQL_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED\ntypedef struct HSQL_LTYPE HSQL_LTYPE;\nstruct HSQL_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define HSQL_LTYPE_IS_DECLARED 1\n#define HSQL_LTYPE_IS_TRIVIAL 1\n#endif\n\nint hsql_parse(Program* result, yyscan_t scanner);\n\n#endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED  */\n\n#ifdef short\n#undef short\n#endif\n\n#ifdef YYTYPE_UINT8\ntypedef YYTYPE_UINT8 yytype_uint8;\n#else\ntypedef unsigned char yytype_uint8;\n#endif\n\n#ifdef YYTYPE_INT8\ntypedef YYTYPE_INT8 yytype_int8;\n#else\ntypedef signed char yytype_int8;\n#endif\n\n#ifdef YYTYPE_UINT16\ntypedef YYTYPE_UINT16 yytype_uint16;\n#else\ntypedef unsigned short yytype_uint16;\n#endif\n\n#ifdef YYTYPE_INT16\ntypedef YYTYPE_INT16 yytype_int16;\n#else\ntypedef short yytype_int16;\n#endif\n\n#ifndef YYSIZE_T\n#ifdef __SIZE_TYPE__\n#define YYSIZE_T __SIZE_TYPE__\n#elif defined size_t\n#define YYSIZE_T size_t\n#elif !defined YYSIZE_T\n#include <stddef.h> /* INFRINGES ON USER NAME SPACE */\n#define YYSIZE_T size_t\n#else\n#define YYSIZE_T unsigned\n#endif\n#endif\n\n#define YYSIZE_MAXIMUM ((YYSIZE_T)-1)\n\n#ifndef YY_\n#if defined YYENABLE_NLS && YYENABLE_NLS\n#if ENABLE_NLS\n#include <libintl.h> /* INFRINGES ON USER NAME SPACE */\n#define YY_(Msgid) dgettext(\"bison-runtime\", Msgid)\n#endif\n#endif\n#ifndef YY_\n#define YY_(Msgid) Msgid\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE\n#if (defined __GNUC__ &&                                           \\\n     (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) || \\\n    defined __SUNPRO_C && 0x5110 <= __SUNPRO_C\n#define YY_ATTRIBUTE(Spec) __attribute__(Spec)\n#else\n#define YY_ATTRIBUTE(Spec) /* empty */\n#endif\n#endif\n\n#ifndef YY_ATTRIBUTE_PURE\n#define YY_ATTRIBUTE_PURE YY_ATTRIBUTE((__pure__))\n#endif\n\n#ifndef YY_ATTRIBUTE_UNUSED\n#define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE((__unused__))\n#endif\n\n/* Suppress unused-variable warnings by \"using\" E.  */\n#if !defined lint || defined __GNUC__\n#define YYUSE(E) ((void)(E))\n#else\n#define YYUSE(E) /* empty */\n#endif\n\n#if defined __GNUC__ && !defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__\n/* Suppress an incorrect diagnostic about yylval being uninitialized.  */\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                 \\\n  _Pragma(\"GCC diagnostic push\")                            \\\n      _Pragma(\"GCC diagnostic ignored \\\"-Wuninitialized\\\"\") \\\n          _Pragma(\"GCC diagnostic ignored \\\"-Wmaybe-uninitialized\\\"\")\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END _Pragma(\"GCC diagnostic pop\")\n#else\n#define YY_INITIAL_VALUE(Value) Value\n#endif\n#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n#define YY_IGNORE_MAYBE_UNINITIALIZED_END\n#endif\n#ifndef YY_INITIAL_VALUE\n#define YY_INITIAL_VALUE(Value) /* Nothing. */\n#endif\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n\n/* The parser invokes alloca or malloc; define the necessary symbols.  */\n\n#ifdef YYSTACK_USE_ALLOCA\n#if YYSTACK_USE_ALLOCA\n#ifdef __GNUC__\n#define YYSTACK_ALLOC __builtin_alloca\n#elif defined __BUILTIN_VA_ARG_INCR\n#include <alloca.h> /* INFRINGES ON USER NAME SPACE */\n#elif defined _AIX\n#define YYSTACK_ALLOC __alloca\n#elif defined _MSC_VER\n#include <malloc.h> /* INFRINGES ON USER NAME SPACE */\n#define alloca _alloca\n#else\n#define YYSTACK_ALLOC alloca\n#if !defined _ALLOCA_H && !defined EXIT_SUCCESS\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n/* Use EXIT_SUCCESS as a witness for stdlib.h.  */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#endif\n#endif\n#endif\n\n#ifdef YYSTACK_ALLOC\n/* Pacify GCC's 'empty if-body' warning.  */\n#define YYSTACK_FREE(Ptr) \\\n  do { /* empty */        \\\n    ;                     \\\n  } while (0)\n#ifndef YYSTACK_ALLOC_MAXIMUM\n/* The OS might guarantee only one guard page at the bottom of the stack,\n   and a page size can be as small as 4096 bytes.  So we cannot safely\n   invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number\n   to allow for a few compiler-allocated temporary stack slots.  */\n#define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */\n#endif\n#else\n#define YYSTACK_ALLOC YYMALLOC\n#define YYSTACK_FREE YYFREE\n#ifndef YYSTACK_ALLOC_MAXIMUM\n#define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM\n#endif\n#if (defined __cplusplus && !defined EXIT_SUCCESS && \\\n     !((defined YYMALLOC || defined malloc) &&       \\\n       (defined YYFREE || defined free)))\n#include <stdlib.h> /* INFRINGES ON USER NAME SPACE */\n#ifndef EXIT_SUCCESS\n#define EXIT_SUCCESS 0\n#endif\n#endif\n#ifndef YYMALLOC\n#define YYMALLOC malloc\n#if !defined malloc && !defined EXIT_SUCCESS\nvoid* malloc(YYSIZE_T); /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#ifndef YYFREE\n#define YYFREE free\n#if !defined free && !defined EXIT_SUCCESS\nvoid free(void*);       /* INFRINGES ON USER NAME SPACE */\n#endif\n#endif\n#endif\n#endif /* ! defined yyoverflow || YYERROR_VERBOSE */\n\n#if (!defined yyoverflow &&                                      \\\n     (!defined __cplusplus ||                                    \\\n      (defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL && \\\n       defined HSQL_STYPE_IS_TRIVIAL && HSQL_STYPE_IS_TRIVIAL)))\n\n/* A type that is properly aligned for any stack member.  */\nunion yyalloc {\n  yytype_int16 yyss_alloc;\n  YYSTYPE yyvs_alloc;\n  YYLTYPE yyls_alloc;\n};\n\n/* The size of the maximum gap between one aligned stack and the next.  */\n#define YYSTACK_GAP_MAXIMUM (sizeof(union yyalloc) - 1)\n\n/* The size of an array large to enough to hold all stacks, each with\n   N elements.  */\n#define YYSTACK_BYTES(N)                                              \\\n  ((N) * (sizeof(yytype_int16) + sizeof(YYSTYPE) + sizeof(YYLTYPE)) + \\\n   2 * YYSTACK_GAP_MAXIMUM)\n\n#define YYCOPY_NEEDED 1\n\n/* Relocate STACK from its old location to the new one.  The\n   local variables YYSIZE and YYSTACKSIZE give the old and new number of\n   elements in the stack, and YYPTR gives the new location of the\n   stack.  Advance YYPTR to a properly aligned location for the next\n   stack.  */\n#define YYSTACK_RELOCATE(Stack_alloc, Stack)                         \\\n  do {                                                               \\\n    YYSIZE_T yynewbytes;                                             \\\n    YYCOPY(&yyptr->Stack_alloc, Stack, yysize);                      \\\n    Stack = &yyptr->Stack_alloc;                                     \\\n    yynewbytes = yystacksize * sizeof(*Stack) + YYSTACK_GAP_MAXIMUM; \\\n    yyptr += yynewbytes / sizeof(*yyptr);                            \\\n  } while (0)\n\n#endif\n\n#if defined YYCOPY_NEEDED && YYCOPY_NEEDED\n/* Copy COUNT objects from SRC to DST.  The source and destination do\n   not overlap.  */\n#ifndef YYCOPY\n#if defined __GNUC__ && 1 < __GNUC__\n#define YYCOPY(Dst, Src, Count) \\\n  __builtin_memcpy(Dst, Src, (Count) * sizeof(*(Src)))\n#else\n#define YYCOPY(Dst, Src, Count)                                  \\\n  do {                                                           \\\n    YYSIZE_T yyi;                                                \\\n    for (yyi = 0; yyi < (Count); yyi++) (Dst)[yyi] = (Src)[yyi]; \\\n  } while (0)\n#endif\n#endif\n#endif /* !YYCOPY_NEEDED */\n\n/* YYFINAL -- State number of the termination state.  */\n#define YYFINAL 149\n/* YYLAST -- Last index in YYTABLE.  */\n#define YYLAST 1218\n\n/* YYNTOKENS -- Number of terminals.  */\n#define YYNTOKENS 218\n/* YYNNTS -- Number of nonterminals.  */\n#define YYNNTS 163\n/* YYNRULES -- Number of rules.  */\n#define YYNRULES 416\n/* YYNSTATES -- Number of states.  */\n#define YYNSTATES 776\n\n#define YYUNDEFTOK 2\n#define YYMAXUTOK 455\n\n/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex, with out-of-bounds checking.  */\n#define YYTRANSLATE(YYX) \\\n  ((unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)\n\n/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM\n   as returned by yylex.  */\nstatic const yytype_uint8 yytranslate[] = {\n    0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   207, 2,   2,   212, 213, 205, 203, 216,\n    204, 214, 206, 2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   215,\n    196, 193, 197, 217, 2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   210, 2,   211, 208, 2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   1,   2,   3,   4,   5,   6,   7,   8,   9,   10,  11,  12,  13,  14,\n    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,\n    30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,\n    45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,\n    60,  61,  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,\n    75,  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,\n    90,  91,  92,  93,  94,  95,  96,  97,  98,  99,  100, 101, 102, 103, 104,\n    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,\n    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,\n    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,\n    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,\n    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 194, 195,\n    198, 199, 200, 201, 202, 209};\n\n#if HSQL_DEBUG\n/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */\nstatic const yytype_uint16 yyrline[] = {\n    0,    573,  573,  582,  586,  593,  599,  605,  611,  620,  621,  622,\n    623,  624,  625,  626,  627,  628,  629,  633,  638,  646,  654,  659,\n    665,  674,  675,  679,  680,  684,  690,  699,  704,  712,  713,  717,\n    718,  719,  720,  721,  722,  726,  732,  738,  739,  740,  741,  742,\n    743,  744,  745,  746,  747,  751,  759,  764,  772,  777,  782,  790,\n    796,  804,  809,  816,  821,  826,  831,  839,  844,  853,  854,  857,\n    861,  867,  873,  885,  889,  896,  905,  910,  919,  924,  932,  936,\n    940,  947,  955,  959,  966,  978,  983,  988,  992,  996,  1002, 1016,\n    1024, 1033, 1039, 1053, 1062, 1066, 1080, 1084, 1090, 1105, 1111, 1119,\n    1129, 1134, 1148, 1156, 1164, 1172, 1187, 1201, 1209, 1218, 1227, 1228,\n    1232, 1236, 1250, 1251, 1255, 1259, 1260, 1261, 1262, 1266, 1267, 1268,\n    1272, 1273, 1277, 1278, 1282, 1283, 1287, 1288, 1292, 1293, 1294, 1295,\n    1299, 1304, 1305, 1309, 1313, 1320, 1331, 1332, 1336, 1340, 1347, 1348,\n    1349, 1356, 1357, 1358, 1359, 1364, 1365, 1369, 1370, 1371, 1372, 1373,\n    1377, 1378, 1383, 1384, 1385, 1386, 1387, 1388, 1392, 1395, 1396, 1406,\n    1414, 1422, 1428, 1436, 1445, 1446, 1455, 1465, 1480, 1495, 1513, 1516,\n    1523, 1524, 1525, 1529, 1530, 1540, 1549, 1553, 1559, 1573, 1579, 1585,\n    1599, 1600, 1604, 1605, 1609, 1616, 1628, 1636, 1637, 1638, 1642, 1643,\n    1647, 1658, 1672, 1676, 1677, 1681, 1685, 1693, 1703, 1704, 1708, 1715,\n    1723, 1727, 1728, 1729, 1733, 1734, 1738, 1739, 1743, 1744, 1745, 1749,\n    1750, 1754, 1755, 1756, 1757, 1762, 1763, 1767, 1774, 1775, 1779, 1784,\n    1785, 1789, 1795, 1799, 1800, 1803, 1804, 1808, 1809, 1813, 1817, 1818,\n    1819, 1824, 1829, 1836, 1837, 1838, 1839, 1840, 1841, 1848, 1852, 1858,\n    1863, 1869, 1873, 1880, 1888, 1889, 1890, 1891, 1892, 1893, 1897, 1898,\n    1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1910, 1918, 1919, 1923,\n    1929, 1935, 1941, 1947, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963,\n    1964, 1965, 1966, 1967, 1968, 1969, 1973, 1974, 1978, 1979, 1980, 1981,\n    1987, 1988, 1989, 1990, 1994, 1995, 1999, 2000, 2004, 2005, 2006, 2007,\n    2008, 2009, 2010, 2014, 2022, 2035, 2036, 2042, 2046, 2047, 2052, 2061,\n    2062, 2063, 2064, 2065, 2066, 2070, 2074, 2078, 2082, 2083, 2084, 2085,\n    2089, 2090, 2091, 2092, 2093, 2097, 2101, 2102, 2106, 2107, 2111, 2115,\n    2119, 2131, 2142, 2153, 2162, 2174, 2180, 2186, 2187, 2188, 2189, 2195,\n    2207, 2208, 2209, 2213, 2214, 2218, 2219, 2224, 2231, 2232, 2243, 2248,\n    2249, 2257, 2258, 2262, 2266, 2270, 2277, 2291, 2292, 2293, 2294, 2295,\n    2296, 2297, 2298, 2299, 2300, 2315, 2316, 2321, 2322};\n#endif\n\n#if HSQL_DEBUG || YYERROR_VERBOSE || 1\n/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.\n   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */\nstatic const char* const yytname[] = {\"$end\",\n                                      \"error\",\n                                      \"$undefined\",\n                                      \"STRING\",\n                                      \"IDENTIFIER\",\n                                      \"FLOATVAL\",\n                                      \"INTVAL\",\n                                      \"DEALLOCATE\",\n                                      \"PARAMETERS\",\n                                      \"INTERSECT\",\n                                      \"TEMPORARY\",\n                                      \"TIMESTAMP\",\n                                      \"DISTINCT\",\n                                      \"NVARCHAR\",\n                                      \"RESTRICT\",\n                                      \"TRUNCATE\",\n                                      \"ANALYZE\",\n                                      \"BETWEEN\",\n                                      \"CASCADE\",\n                                      \"COLUMNS\",\n                                      \"CONTROL\",\n                                      \"DEFAULT\",\n                                      \"EXECUTE\",\n                                      \"EXPLAIN\",\n                                      \"INTEGER\",\n                                      \"NATURAL\",\n                                      \"PREPARE\",\n                                      \"PRIMARY\",\n                                      \"SCHEMAS\",\n                                      \"SPATIAL\",\n                                      \"VARCHAR\",\n                                      \"VIRTUAL\",\n                                      \"DESCRIBE\",\n                                      \"BEFORE\",\n                                      \"COLUMN\",\n                                      \"CREATE\",\n                                      \"DELETE\",\n                                      \"DIRECT\",\n                                      \"DOUBLE\",\n                                      \"ESCAPE\",\n                                      \"EXCEPT\",\n                                      \"EXISTS\",\n                                      \"EXTRACT\",\n                                      \"GLOBAL\",\n                                      \"HAVING\",\n                                      \"IMPORT\",\n                                      \"INSERT\",\n                                      \"ISNULL\",\n                                      \"OFFSET\",\n                                      \"RENAME\",\n                                      \"SCHEMA\",\n                                      \"SELECT\",\n                                      \"SORTED\",\n                                      \"TABLES\",\n                                      \"UNIQUE\",\n                                      \"UNLOAD\",\n                                      \"UPDATE\",\n                                      \"VALUES\",\n                                      \"AFTER\",\n                                      \"ALTER\",\n                                      \"CROSS\",\n                                      \"DELTA\",\n                                      \"FLOAT\",\n                                      \"GROUP\",\n                                      \"INDEX\",\n                                      \"INNER\",\n                                      \"LIMIT\",\n                                      \"LOCAL\",\n                                      \"MERGE\",\n                                      \"MINUS\",\n                                      \"ORDER\",\n                                      \"OUTER\",\n                                      \"RIGHT\",\n                                      \"TABLE\",\n                                      \"UNION\",\n                                      \"USING\",\n                                      \"WHERE\",\n                                      \"CALL\",\n                                      \"CASE\",\n                                      \"CHAR\",\n                                      \"DATE\",\n                                      \"DESC\",\n                                      \"DROP\",\n                                      \"ELSE\",\n                                      \"FILE\",\n                                      \"FROM\",\n                                      \"FULL\",\n                                      \"HASH\",\n                                      \"HINT\",\n                                      \"INTO\",\n                                      \"JOIN\",\n                                      \"LEFT\",\n                                      \"LIKE\",\n                                      \"LOAD\",\n                                      \"LONG\",\n                                      \"NULL\",\n                                      \"PLAN\",\n                                      \"SHOW\",\n                                      \"TEXT\",\n                                      \"THEN\",\n                                      \"TIME\",\n                                      \"VIEW\",\n                                      \"WHEN\",\n                                      \"WITH\",\n                                      \"ADD\",\n                                      \"ALL\",\n                                      \"AND\",\n                                      \"ASC\",\n                                      \"CSV\",\n                                      \"END\",\n                                      \"FOR\",\n                                      \"INT\",\n                                      \"KEY\",\n                                      \"NOT\",\n                                      \"OFF\",\n                                      \"SET\",\n                                      \"TBL\",\n                                      \"TOP\",\n                                      \"AS\",\n                                      \"BY\",\n                                      \"IF\",\n                                      \"IN\",\n                                      \"IS\",\n                                      \"OF\",\n                                      \"ON\",\n                                      \"OR\",\n                                      \"TO\",\n                                      \"ARRAY\",\n                                      \"CONCAT\",\n                                      \"ILIKE\",\n                                      \"SECOND\",\n                                      \"MINUTE\",\n                                      \"HOUR\",\n                                      \"DAY\",\n                                      \"MONTH\",\n                                      \"YEAR\",\n                                      \"TRUE\",\n                                      \"FALSE\",\n                                      \"PRAGMA\",\n                                      \"REINDEX\",\n                                      \"GENERATED\",\n                                      \"ALWAYS\",\n                                      \"CHECK\",\n                                      \"CONFLICT\",\n                                      \"IGNORE\",\n                                      \"REPLACE\",\n                                      \"ROLLBACK\",\n                                      \"ABORT\",\n                                      \"FAIL\",\n                                      \"AUTOINCR\",\n                                      \"BEGIN\",\n                                      \"TRIGGER\",\n                                      \"TEMP\",\n                                      \"INSTEAD\",\n                                      \"EACH\",\n                                      \"ROW\",\n                                      \"OVER\",\n                                      \"FILTER\",\n                                      \"PARTITION\",\n                                      \"CURRENT\",\n                                      \"EXCLUDE\",\n                                      \"FOLLOWING\",\n                                      \"GROUPS\",\n                                      \"NO\",\n                                      \"OTHERS\",\n                                      \"PRECEDING\",\n                                      \"RANGE\",\n                                      \"ROWS\",\n                                      \"TIES\",\n                                      \"UNBOUNDED\",\n                                      \"WINDOW\",\n                                      \"ATTACH\",\n                                      \"DETACH\",\n                                      \"DATABASE\",\n                                      \"INDEXED\",\n                                      \"CAST\",\n                                      \"SAVEPOINT\",\n                                      \"RELEASE\",\n                                      \"VACUUM\",\n                                      \"TRANSACTION\",\n                                      \"DEFFERED\",\n                                      \"EXCLUSIVE\",\n                                      \"IMEDIATE\",\n                                      \"COMMIT\",\n                                      \"GLOB\",\n                                      \"MATCH\",\n                                      \"REGEX\",\n                                      \"NOTHING\",\n                                      \"NULLS\",\n                                      \"LAST\",\n                                      \"FIRST\",\n                                      \"DO\",\n                                      \"COLLATE\",\n                                      \"'='\",\n                                      \"EQUALS\",\n                                      \"NOTEQUALS\",\n                                      \"'<'\",\n                                      \"'>'\",\n                                      \"LESS\",\n                                      \"GREATER\",\n                                      \"LESSEQ\",\n                                      \"GREATEREQ\",\n                                      \"NOTNULL\",\n                                      \"'+'\",\n                                      \"'-'\",\n                                      \"'*'\",\n                                      \"'/'\",\n                                      \"'%'\",\n                                      \"'^'\",\n                                      \"UMINUS\",\n                                      \"'['\",\n                                      \"']'\",\n                                      \"'('\",\n                                      \"')'\",\n                                      \"'.'\",\n                                      \"';'\",\n                                      \"','\",\n                                      \"'?'\",\n                                      \"$accept\",\n                                      \"input\",\n                                      \"statement_list\",\n                                      \"statement\",\n                                      \"cmd\",\n                                      \"cmd_release\",\n                                      \"savepoint_name\",\n                                      \"cmd_pragma\",\n                                      \"cmd_reindex\",\n                                      \"cmd_analyze\",\n                                      \"cmd_attach\",\n                                      \"cmd_detach\",\n                                      \"pragma_key\",\n                                      \"pragma_value\",\n                                      \"schema_name\",\n                                      \"pragma_name\",\n                                      \"preparable_statement\",\n                                      \"rollback_statement\",\n                                      \"opt_transaction\",\n                                      \"opt_to_savepoint\",\n                                      \"vacuum_statement\",\n                                      \"opt_schema_name\",\n                                      \"begin_statement\",\n                                      \"commit_statement\",\n                                      \"opt_upsert_clause\",\n                                      \"upsert_clause\",\n                                      \"indexed_column_list\",\n                                      \"indexed_column\",\n                                      \"opt_collate\",\n                                      \"assign_list\",\n                                      \"opt_null\",\n                                      \"assign_clause\",\n                                      \"column_name_list\",\n                                      \"collation_name\",\n                                      \"opt_hints\",\n                                      \"hint_list\",\n                                      \"hint\",\n                                      \"prepare_statement\",\n                                      \"prepare_target_query\",\n                                      \"execute_statement\",\n                                      \"import_statement\",\n                                      \"import_file_type\",\n                                      \"file_path\",\n                                      \"show_statement\",\n                                      \"alter_statement\",\n                                      \"opt_column\",\n                                      \"create_statement\",\n                                      \"opt_unique\",\n                                      \"index_name\",\n                                      \"trigger_declare\",\n                                      \"opt_tmp\",\n                                      \"trigger_name\",\n                                      \"opt_trigger_time\",\n                                      \"trigger_event\",\n                                      \"opt_of_column_list\",\n                                      \"opt_for_each\",\n                                      \"opt_when\",\n                                      \"trigger_cmd_list\",\n                                      \"trigger_cmd\",\n                                      \"module_name\",\n                                      \"opt_not_exists\",\n                                      \"column_def_commalist\",\n                                      \"column_def\",\n                                      \"opt_column_arglist\",\n                                      \"column_arglist\",\n                                      \"column_arg\",\n                                      \"opt_on_conflict\",\n                                      \"resolve_type\",\n                                      \"opt_autoinc\",\n                                      \"column_type\",\n                                      \"drop_statement\",\n                                      \"opt_exists\",\n                                      \"delete_statement\",\n                                      \"truncate_statement\",\n                                      \"insert_statement\",\n                                      \"super_list\",\n                                      \"insert_type\",\n                                      \"opt_column_list\",\n                                      \"update_statement\",\n                                      \"update_clause_commalist\",\n                                      \"update_clause\",\n                                      \"select_statement\",\n                                      \"select_with_paren\",\n                                      \"select_paren_or_clause\",\n                                      \"select_no_paren\",\n                                      \"set_operator\",\n                                      \"set_type\",\n                                      \"opt_all\",\n                                      \"select_clause\",\n                                      \"window_clause\",\n                                      \"windowdefn_list\",\n                                      \"windowdefn\",\n                                      \"window\",\n                                      \"opt_base_window_name\",\n                                      \"opt_frame\",\n                                      \"range_or_rows\",\n                                      \"frame_bound_s\",\n                                      \"frame_bound_e\",\n                                      \"frame_bound\",\n                                      \"opt_frame_exclude\",\n                                      \"frame_exclude\",\n                                      \"opt_distinct\",\n                                      \"select_list\",\n                                      \"opt_from_clause\",\n                                      \"from_clause\",\n                                      \"opt_where\",\n                                      \"opt_group\",\n                                      \"opt_having\",\n                                      \"opt_order\",\n                                      \"order_list\",\n                                      \"order_desc\",\n                                      \"opt_order_type\",\n                                      \"opt_top\",\n                                      \"opt_limit\",\n                                      \"expr_list\",\n                                      \"opt_literal_list\",\n                                      \"literal_list\",\n                                      \"expr_alias\",\n                                      \"expr\",\n                                      \"operand\",\n                                      \"cast_expr\",\n                                      \"scalar_expr\",\n                                      \"unary_expr\",\n                                      \"binary_expr\",\n                                      \"logic_expr\",\n                                      \"in_expr\",\n                                      \"case_expr\",\n                                      \"case_list\",\n                                      \"exists_expr\",\n                                      \"comp_expr\",\n                                      \"function_expr\",\n                                      \"opt_over_clause\",\n                                      \"opt_filter_clause\",\n                                      \"extract_expr\",\n                                      \"datetime_field\",\n                                      \"array_expr\",\n                                      \"array_index\",\n                                      \"between_expr\",\n                                      \"column_name\",\n                                      \"literal\",\n                                      \"string_literal\",\n                                      \"bool_literal\",\n                                      \"num_literal\",\n                                      \"int_literal\",\n                                      \"null_literal\",\n                                      \"param_expr\",\n                                      \"table_ref\",\n                                      \"table_prefix\",\n                                      \"join_op\",\n                                      \"opt_index\",\n                                      \"opt_on\",\n                                      \"opt_using\",\n                                      \"table_ref_name_no_alias\",\n                                      \"table_name\",\n                                      \"alias\",\n                                      \"opt_alias\",\n                                      \"opt_with_clause\",\n                                      \"with_clause\",\n                                      \"with_description_list\",\n                                      \"with_description\",\n                                      \"join_kw\",\n                                      \"opt_semicolon\",\n                                      \"ident_commalist\",\n                                      YY_NULLPTR};\n#endif\n\n#ifdef YYPRINT\n/* YYTOKNUM[NUM] -- (External) token number corresponding to the\n   (internal) symbol number NUM (which must be that of a token).  */\nstatic const yytype_uint16 yytoknum[] = {\n    0,   256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,\n    270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,\n    285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,\n    300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,\n    315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,\n    330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,\n    345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,\n    360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,\n    375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,\n    390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,\n    405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419,\n    420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,\n    435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 61,  448,\n    449, 60,  62,  450, 451, 452, 453, 454, 43,  45,  42,  47,  37,  94,  455,\n    91,  93,  40,  41,  46,  59,  44,  63};\n#endif\n\n#define YYPACT_NINF -542\n\n#define yypact_value_is_default(Yystate) (!!((Yystate) == (-542)))\n\n#define YYTABLE_NINF -414\n\n#define yytable_value_is_error(Yytable_value) (!!((Yytable_value) == (-414)))\n\n/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing\n   STATE-NUM.  */\nstatic const yytype_int16 yypact[] = {\n    907,  36,   83,   83,   95,   118,  83,   230,  -13,  79,   128,  83,\n    208,  190,  67,   294,  111,  305,  83,   -542, 111,  369,  522,  45,\n    37,   349,  111,  355,  158,  -542, -542, -542, -542, -542, -542, -542,\n    -542, 283,  -542, -542, -542, -542, 283,  -542, -542, -542, -542, -542,\n    -542, -542, -542, -542, 321,  -542, -542, 9,    -542, 397,  182,  -542,\n    -542, 205,  339,  -542, 373,  -542, 334,  334,  -542, 395,  324,  313,\n    83,   370,  392,  367,  -542, 83,   372,  372,  372,  83,   -542, 381,\n    319,  -542, -542, -542, 289,  -64,  327,  -542, -542, 362,  111,  111,\n    111,  -542, -542, 226,  -542, -542, 331,  343,  541,  -542, 22,   350,\n    -542, -542, 669,  357,  374,  -542, 567,  -542, 342,  703,  -542, -542,\n    -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, -542, -542,\n    -542, -542, -542, -542, -542, -542, -542, -542, -542, 349,  -542, -542,\n    549,  -542, -542, 478,  -542, -542, 823,  -542, 488,  -542, -542, 83,\n    463,  9,    68,   -542, 219,  -542, 581,  15,   584,  334,  476,  83,\n    83,   334,  204,  334,  519,  -542, 513,  -542, -542, -542, -542, -542,\n    -542, 597,  42,   572,  83,   83,   610,  -542, 403,  294,  265,  265,\n    612,  39,   -542, -542, -542, -542, 17,   26,   569,  399,  669,  312,\n    225,  409,  374,  938,  669,  388,  669,  154,  410,  -68,  669,  349,\n    669,  374,  -542, 374,  -7,   412,  20,   374,  374,  374,  374,  374,\n    374,  374,  374,  374,  374,  374,  374,  374,  374,  374,  374,  374,\n    374,  616,  -542, -542, 622,  -542, 414,  419,  616,  620,  424,  426,\n    -542, -542, -542, 9,    535,  525,  9,    274,  -542, 434,  432,  -542,\n    -542, -542, 83,   609,  -38,  419,  647,  202,  437,  -542, -542, -542,\n    -542, 649,  669,  -542, 622,  462,  -45,  -542, 55,   623,  -542, -542,\n    -542, 289,  442,  -542, -542, -542, -542, -542, -542, -542, -542, -542,\n    -542, 448,  -542, -542, 549,  -542, -542, 506,  669,  -542, -542, 456,\n    -542, -542, -542, -542, -542, -542, 585,  -9,   286,  669,  669,  -542,\n    569,  579,  155,  -542, 391,  349,  396,  -542, -542, -542, -542, 570,\n    911,  971,  374,  467,  567,  -542, 586,  472,  971,  971,  971,  971,\n    971,  971,  971,  1008, 1008, 1008, 1008, 154,  154,  27,   27,   27,\n    -67,  473,  -542, -542, 679,  681,  237,  -542, 669,  -542, -542, -542,\n    617,  -542, -542, -542, 669,  617,  669,  624,  -542, -542, 15,   611,\n    -542, 573,  588,  688,  575,  -542, 574,  -542, 481,  -542, -542, 23,\n    141,  618,  669,  597,  -542, -542, 83,   28,   688,  649,  -542, -542,\n    487,  544,  270,  -542, 669,  669,  669,  -542, 314,  320,  492,  -542,\n    669,  697,  -542, -542, -542, 406,  374,  971,  567,  493,  292,  -542,\n    -542, 496,  302,  -542, -542, 306,  500,  589,  629,  499,  274,  501,\n    -542, 287,  274,  141,  670,  278,  -542, 717,  638,  -542, 406,  307,\n    -542, 588,  83,   -542, -542, -542, 600,  417,  83,   141,  -542, -542,\n    511,  602,  -542, -542, 654,  11,   -542, 506,  -52,  141,  366,  -542,\n    669,  -542, -542, -542, -542, 520,  -542, -542, 521,  -542, -542, -542,\n    518,  938,  523,  341,  -542, -542, 15,   -542, 679,  -542, 731,  15,\n    -30,  595,  -542, -542, -542, 519,  -542, -542, 669,  -542, -542, 552,\n    -542, 669,  669,  -542, 529,  622,  309,  -542, 688,  -542, 531,  -542,\n    -542, -542, 621,  625,  -542, 28,   669,  -542, 744,  544,  -542, -542,\n    141,  746,  748,  -542, -542, -542, 345,  -542, -542, 346,  543,  -542,\n    94,   41,   13,   693,  -542, 156,  -542, 141,  141,  688,  -542, 645,\n    635,  635,  667,  551,  626,  553,  -542, 309,  -542, -542, 681,  681,\n    -542, 83,   -542, -51,  -542, 555,  114,  -542, 556,  557,  -542, -542,\n    15,   -20,  669,  -542, -542, -542, -542, 695,  702,  -542, 704,  -542,\n    -542, 44,   569,  -73,  655,  606,  -542, -542, 361,  14,   634,  -542,\n    -542, 635,  669,  660,  669,  -542, 368,  564,  671,  -542, -542, 664,\n    163,  -542, -542, 377,  672,  -542, 383,  -542, 1,    -542, -542, -542,\n    47,   -542, 576,  33,   669,  -44,  669,  781,  -542, -542, 635,  392,\n    -542, -23,  578,  32,   519,  632,  686,  669,  -542, -542, -542, -542,\n    238,  -542, 28,   519,  669,  787,  14,   707,  -542, 674,  674,  389,\n    619,  675,  676,  0,    680,  587,  -542, 652,  -542, -542, 669,  -542,\n    -542, 653,  669,  -542, -47,  272,  656,  637,  644,  -542, 296,  -41,\n    -542, 103,  -542, 627,  -542, -542, -542, -542, -542, 676,  676,  674,\n    -542, 28,   669,  732,  669,  -542, 598,  781,  -542, -542, 38,   -542,\n    141,  163,  706,  -542, -542, 124,  -542, -542, -542, 28,   -542, 669,\n    28,   -14,  732,  732,  676,  -542, 141,  601,  -542, 141,  744,  -542,\n    -542, -542, 429,  -542, 659,  651,  -542, -542, -542, 141,  -542, 694,\n    -542, -542, -542, 732,  681,  604,  658,  644,  -542, -542, -542, 28,\n    -542, 390,  -542, -542, -542, -41,  -542, -542};\n\n/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.\n   Performed when YYTABLE does not specify something else to do.  Zero\n   means the default is an error.  */\nstatic const yytype_uint16 yydefact[] = {\n    398, 0,   0,   27,  0,   0,   0,   119, 0,   0,   192, 0,   0,   0,   0,\n    0,   55,  0,   25,  193, 55,  55,  0,   0,   0,   62,  55,  0,   414, 3,\n    8,   14,  9,   10,  11,  12,  13,  90,  15,  16,  17,  18,  90,  51,  44,\n    7,   52,  45,  50,  47,  48,  46,  0,   49,  43,  0,   397, 0,   392, 187,\n    28,  97,  0,   104, 0,   118, 146, 146, 122, 0,   0,   0,   0,   0,   0,\n    0,   391, 0,   185, 185, 185, 0,   102, 0,   399, 400, 54,  68,  42,  22,\n    0,   33,  26,  58,  55,  55,  55,  63,  365, 356, 368, 370, 0,   0,   0,\n    371, 0,   0,   366, 367, 0,   0,   0,   358, 0,   372, 0,   280, 285, 288,\n    289, 290, 282, 284, 291, 283, 304, 292, 293, 294, 287, 281, 297, 298, 360,\n    361, 362, 369, 363, 364, 41,  0,   31,  21,  0,   20,  61,  60,  67,  1,\n    398, 2,   0,   6,   5,   0,   266, 0,   201, 202, 258, 181, 0,   276, 0,\n    146, 0,   0,   0,   146, 398, 146, 252, 100, 0,   163, 164, 165, 166, 167,\n    194, 0,   0,   0,   0,   0,   0,   103, 0,   0,   0,   0,   0,   0,   53,\n    64,  66,  65,  246, 0,   0,   0,   0,   0,   0,   0,   0,   300, 0,   0,\n    0,   299, 0,   0,   0,   0,   0,   0,   301, 0,   0,   0,   0,   0,   0,\n    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,\n    0,   0,   32,  19,  0,   4,   0,   196, 0,   246, 0,   0,   212, 213, 211,\n    0,   215, 0,   0,   272, 393, 0,   275, 277, 96,  95,  0,   0,   0,   196,\n    0,   398, 0,   143, 142, 141, 140, 0,   0,   186, 0,   0,   252, 198, 109,\n    109, 184, 179, 180, 124, 0,   183, 402, 401, 37,  40,  39,  38,  23,  36,\n    35,  0,   42,  34,  0,   56,  245, 345, 0,   357, 359, 0,   347, 348, 349,\n    350, 351, 352, 0,   0,   0,   0,   0,   326, 0,   0,   0,   273, 396, 0,\n    0,   295, 286, 318, 29,  319, 0,   311, 0,   0,   0,   302, 0,   314, 313,\n    315, 316, 317, 332, 333, 334, 335, 336, 337, 338, 306, 305, 308, 307, 309,\n    310, 0,   59,  101, 0,   0,   0,   265, 0,   205, 204, 206, 258, 207, 214,\n    210, 0,   258, 0,   0,   208, 98,  0,   0,   145, 0,   398, 0,   0,   120,\n    0,   117, 0,   138, 124, 128, 251, 0,   0,   0,   197, 108, 0,   0,   0,\n    0,   24,  57,  0,   343, 0,   330, 0,   0,   0,   324, 0,   0,   0,   353,\n    0,   0,   395, 279, 30,  178, 0,   312, 0,   0,   0,   303, 354, 93,  0,\n    91,  415, 0,   0,   70,  249, 247, 272, 257, 259, 264, 272, 268, 270, 267,\n    278, 0,   0,   112, 178, 0,   147, 398, 0,   139, 125, 126, 0,   0,   0,\n    200, 199, 105, 356, 0,   107, 182, 0,   0,   339, 345, 0,   328, 0,   327,\n    0,   331, 274, 394, 171, 0,   174, 173, 0,   172, 177, 170, 0,   355, 0,\n    0,   322, 320, 0,   89,  0,   195, 0,   0,   70,  0,   189, 69,  378, 252,\n    248, 203, 0,   263, 262, 84,  209, 0,   0,   144, 115, 0,   151, 111, 0,\n    113, 0,   127, 129, 130, 133, 0,   99,  0,   0,   342, 225, 343, 346, 325,\n    329, 0,   0,   296, 323, 321, 0,   92,  416, 0,   0,   188, 0,   250, 0,\n    254, 260, 0,   261, 271, 269, 0,   110, 0,   162, 162, 0,   0,   0,   0,\n    149, 150, 153, 148, 0,   0,   131, 0,   106, 0,   224, 0,   258, 340, 0,\n    0,   94,  190, 0,   0,   0,   412, 411, 403, 409, 407, 410, 380, 405, 379,\n    377, 0,   378, 396, 0,   216, 83,  82,  0,   264, 0,   157, 154, 162, 0,\n    0,   0,   152, 0,   132, 135, 344, 341, 0,   228, 175, 176, 0,   0,   71,\n    0,   75,  79,  406, 408, 404, 0,   381, 0,   0,   0,   386, 0,   0,   217,\n    116, 162, 0,   155, 0,   0,   0,   252, 0,   137, 0,   231, 229, 230, 223,\n    0,   191, 0,   252, 0,   0,   264, 0,   382, 396, 396, 0,   0,   0,   388,\n    256, 0,   218, 219, 169, 161, 159, 0,   160, 114, 0,   0,   121, 258, 0,\n    0,   0,   240, 232, 0,   252, 80,  0,   86,  0,   76,  88,  78,  77,  383,\n    388, 388, 396, 385, 0,   0,   390, 0,   253, 0,   0,   168, 156, 0,   134,\n    136, 228, 0,   238, 233, 0,   226, 237, 236, 0,   72,  0,   0,   0,   390,\n    390, 388, 384, 387, 0,   373, 255, 225, 220, 158, 222, 0,   243, 0,   0,\n    244, 239, 81,  85,  87,  0,   73,  375, 376, 390, 0,   0,   0,   240, 234,\n    242, 241, 0,   374, 0,   221, 235, 227, 252, 389, 74};\n\n/* YYPGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yypgoto[] = {\n    -542, -542, -542, 677,  -542, -542, -125, -542, -542, -542, -542, -542,\n    -542, 630,  -1,   628,  -542, -542, 385,  -542, -542, -542, -542, -542,\n    318,  -542, -542, 162,  -542, 66,   -542, 105,  -542, -542, 793,  -542,\n    337,  -542, -542, -542, -542, -542, -269, -542, -542, 558,  -542, -542,\n    -542, -542, -542, -237, -542, -542, -542, -542, -542, -542, 571,  -542,\n    -15,  279,  -354, -542, -542, 275,  -298, 200,  -542, 394,  -542, 386,\n    -124, -542, -111, -542, -542, 582,  -94,  -542, 451,  -162, -16,  594,\n    -104, 696,  -542, -542, 352,  -542, -542, 138,  112,  -542, 136,  -542,\n    171,  -542, 115,  99,   -542, 614,  -542, -542, -542, -280, -542, -542,\n    -365, -542, 353,  -538, -542, -17,  -303, -542, -201, 444,  -22,  -28,\n    -542, -542, -542, -542, -542, -542, -542, 663,  -542, -542, -542, 330,\n    400,  -542, -542, -542, -542, -542, -397, -160, -177, -542, 421,  -130,\n    -542, -542, 268,  -542, -542, -542, -432, -417, -542, -2,   -542, -349,\n    -542, -542, -542, 682,  -542, -542, -541};\n\n/* YYDEFGOTO[NTERM-NUM].  */\nstatic const yytype_int16 yydefgoto[] = {\n    -1,  27,  28,  29,  30,  31,  145, 32,  33,  34,  35,  36,  89,  298, 90,\n    91,  37,  38,  87,  194, 39,  147, 40,  41,  506, 507, 630, 631, 666, 695,\n    558, 696, 697, 702, 153, 434, 435, 42,  265, 43,  44,  174, 362, 45,  46,\n    403, 47,  69,  390, 70,  71,  291, 463, 531, 576, 654, 687, 271, 272, 520,\n    167, 455, 456, 570, 571, 572, 611, 180, 717, 492, 48,  184, 49,  50,  51,\n    504, 52,  366, 53,  282, 283, 54,  371, 372, 159, 255, 256, 375, 160, 644,\n    677, 678, 581, 582, 659, 660, 692, 763, 693, 726, 751, 308, 440, 509, 510,\n    279, 605, 713, 259, 443, 444, 515, 249, 380, 326, 261, 262, 327, 328, 117,\n    118, 119, 120, 121, 122, 123, 124, 204, 125, 126, 127, 474, 409, 128, 318,\n    129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 553, 554, 600, 674,\n    711, 740, 75,  59,  422, 423, 55,  56,  84,  85,  601, 151, 437};\n\n/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If\n   positive, shift that token.  If negative, reduce the rule whose\n   number is the opposite.  If YYTABLE_NINF, syntax error.  */\nstatic const yytype_int16 yytable[] = {\n    116,  60,  400, 263, 63,   410, 469, 442,  276,  76,   212,  397,  446,\n    299,  299, 535, 92,  58,   98,  243, 100,  101,  142,  257,  146,  98,\n    99,   100, 101, 306, 309,  278, 468, 618,  619,  278,  628,  430,  214,\n    158,  395, 143, 755, 143,  712, 421, 273,  385,  636,  140,  470,  667,\n    168,  251, 214, 214, 460,  216, 591, 274,  156,  223,  57,   205,  103,\n    441,  591, 363, 305, 672,  172, 646, 72,   216,  216,  182,  275,  252,\n    207,  187, 386, 461, 203,  214, 211, 338,  81,   58,   209,  401,  413,\n    284,  213, 592, 505, 513,  311, 214, 593,  61,   104,  592,  216,  363,\n    594,  595, 593, 214, 253,  276, 105, 361,  594,  595,  339,  341,  216,\n    105,  367, 596, 82,  514,  62,  597, 598,  495,  216,  596,  703,  190,\n    673,  597, 598, 342, 637,  206, 578, 668,  214,  640,  242,  250,  254,\n    241,  214, 332, 285, 273,  191, 107, 266,  108,  109,  247,  270,  223,\n    277,  216, 108, 109, 274,  538, 621, 216,  73,   268,  269,  629,  471,\n    420,  573, 399, 292, 756,  387, 729, 462,  275,  207,  407,  319,  402,\n    287,  288, 257, 290, 550,  747, 330, 336,  681,  337,  333,  665,  335,\n    343,  344, 345, 346, 347,  348, 349, 350,  351,  352,  353,  354,  355,\n    356,  357, 358, 359, 360,  144, 334, 304,  420,  624,  141,  769,  418,\n    157,  450, 536, 453, 602,  112, 113, 252,  555,  307,  310,  115,  113,\n    114,  240, 429, 241, 8,    115, 8,   98,   99,   100,  101,  683,  670,\n    214,  10,  599, 10,  744,  562, 74,  641,  689,  396,  599,  11,   253,\n    11,   64,  439, 78,  383,  698, 216, 612,  98,   294,  100,  101,  623,\n    734,  735, 98,  99,  100,  101, 102, 103,  77,   223,  748,  65,   589,\n    295,  749, 156, 257, 86,   79,  750, 254,  438,  525,  731,  546,  83,\n    416,  417, 296, 549, 66,   759, 15,  590,  15,   321,  88,   427,  391,\n    737,  102, 103, 648, 104,  757, 758, 732,  705,  706,  378,  721,  494,\n    656,  518, 322, 424, 657,  658, 67,  698,  105,  323,  754,  563,  671,\n    263,  675, 379, 80,  768,  263, 363, 606,  607,  19,   679,  19,   104,\n    106,  688, 140, 445, 149,  447, 449, 736,  237,  238,  239,  240,  564,\n    241,  107, 419, 105, 513,  414, 698, 420,  684,  150,  108,  109,  465,\n    98,   99,  100, 101, -123, 68,  699, 214,  106,  152,  627,  322,  297,\n    476,  477, 478, 214, 514,  415, 162, 690,  493,  107,  467,  161,  214,\n    216,  565, 93,  97,  691,  108, 109, 155,  148,  216,  111,  202,  730,\n    103,  163, 214, 480, 214,  216, 566, 479,  164,  511,  214,  567,  263,\n    516,  484, 690, 98,  99,   100, 101, 485,  216,  198,  216,  199,  691,\n    112,  113, 486, 216, 165,  111, 214, 568,  114,  569,  104,  528,  166,\n    115,  526, 727, 540, 169,  215, 728, 532,  529,  171,  185,  186,  216,\n    487,  105, 102, 103, 214,  530, 170, 539,  112,  113,  173,  195,  196,\n    197,  181, 475, 114, 488,  420, 206, 193,  115,  445,  216,  183,  775,\n    214,  559, 560, 214, 638,  188, 489, 107,  214,  -41,  490,  497,  329,\n    104,  420, 421, 108, 109,  579, 216, 425,  499,  216,  491,  500,  501,\n    523,  216, 502, 524, 105,  98,  99,  100,  101,  312,  313,  314,  315,\n    316,  317, 189, 175, 176,  177, 178, 179,  192,  106,  200,  98,   99,\n    100,  101, 86,  94,  95,   96,  603, 143,  545,  201,  107,  420,  586,\n    587,  208, 382, 382, 102,  103, 108, 109,  244,  632,  210,  98,   99,\n    100,  101, 645, 620, 246,  524, 112, 113,  248,  652,  102,  103,  502,\n    260,  114, 264, 690, 267,  661, 115, 649,  382,  651,  278,  663,  280,\n    762,  664, 104, 281, 707,  774, 111, 420,  502,  373,  102,  103,  373,\n    300,  300, 286, 289, 157,  302, 105, 156,  104,  156,  324,  101,  331,\n    340,  98,  364, 98,  99,   100, 101, 365,  306,  112,  113,  106,  105,\n    369,  694, 370, 374, 114,  632, 202, 376,  104,  115,  381,  382,  107,\n    384,  389, 393, 394, 106,  398, 405, 401,  108,  109,  718,  406,  105,\n    408,  720, 102, 103, 694,  107, 411, 412,  338,  98,   99,   100,  101,\n    214,  108, 109, 428, 106,  431, 241, 433,  432,  436,  451,  257,  738,\n    452,  741, 15,  454, 457,  107, 110, 459,  111,  458,  472,  473,  483,\n    104,  108, 109, 481, 496,  464, 498, 753,  102,  103,  503,  505,  508,\n    420,  111, 512, 517, 105,  217, 519, 521,  527,  694,  199,  112,  113,\n    533,  448, 534, 543, 541,  542, 114, 548,  544,  106,  552,  115,  557,\n    561,  111, 574, 575, 112,  113, 104, 580,  577,  218,  107,  584,  114,\n    585,  588, 604, 609, 115,  610, 108, 109,  613,  614,  105,  616,  633,\n    615,  622, 625, 626, 112,  113, 634, 642,  635,  643,  647,  650,  114,\n    502,  653, 106, 655, 115,  676, 685, 662,  686,  669,  682,  701,  421,\n    708,  709, 219, 107, 704,  714, 111, 710,  716,  724,  715,  725,  108,\n    109,  739, 719, 767, 742,  723, 746, 760,  765,  766,  220,  770,  733,\n    771,  303, 301, 551, -413, 221, 222, 700,  245,  112,  113,  1,    223,\n    224,  773, 752, 154, 114,  547, 2,   3,    608,  115,  392,  404,  111,\n    4,    617, 680, 522, 5,    466, 388, 377,  743,  761,  6,    258,  745,\n    7,    8,   722, 764, 772,  368, 482, 556,  320,  583,  9,    10,   639,\n    293,  0,   112, 113, 537,  0,   0,   0,    11,   0,    114,  12,   0,\n    0,    0,   115, 225, 226,  227, 0,   0,    0,    0,    0,    0,    228,\n    229,  230, 231, 232, 0,    0,   233, 234,  13,   235,  236,  237,  238,\n    239,  240, 0,   241, 1,    0,   0,   0,    0,    0,    14,   0,    2,\n    3,    0,   0,   15,  0,    0,   4,   0,    0,    16,   5,    0,    0,\n    0,    0,   0,   6,   0,    0,   7,   8,    0,    0,    0,    0,    0,\n    0,    0,   0,   9,   10,   0,   0,   0,    0,    218,  0,    0,    17,\n    18,   11,  0,   0,   12,   0,   19,  20,   0,    0,    0,    21,   0,\n    0,    0,   0,   0,   0,    0,   0,   0,    0,    0,    218,  0,    0,\n    0,    13,  0,   0,   0,    0,   22,  23,   0,    0,    0,    0,    24,\n    25,   0,   219, 14,  0,    26,  0,   0,    0,    15,   0,    0,    0,\n    0,    0,   16,  426, 218,  0,   0,   0,    0,    0,    325,  0,    0,\n    0,    0,   0,   219, 0,    0,   222, 0,    0,    0,    0,    0,    223,\n    224,  0,   0,   0,   0,    17,  18,  0,    0,    0,    0,    325,  19,\n    20,   0,   218, 0,   21,   0,   0,   222,  0,    0,    -414, 0,    0,\n    223,  224, 0,   0,   0,    0,   0,   0,    0,    0,    0,    0,    22,\n    23,   0,   0,   0,   0,    24,  25,  0,    0,    0,    0,    26,   0,\n    0,    222, 0,   225, 226,  227, 0,   223,  -414, 0,    0,    0,    228,\n    229,  230, 231, 232, 0,    0,   233, 234,  0,    235,  236,  237,  238,\n    239,  240, 0,   241, 225,  226, 227, 0,    0,    0,    0,    0,    222,\n    228,  229, 230, 231, 232,  223, 0,   233,  234,  0,    235,  236,  237,\n    238,  239, 240, 0,   241,  0,   0,   0,    0,    0,    0,    -414, -414,\n    -414, 0,   0,   0,   0,    0,   0,   -414, -414, -414, 231,  232,  0,\n    0,    233, 234, 0,   235,  236, 237, 238,  239,  240,  0,    241,  0,\n    0,    0,   0,   0,   0,    0,   0,   0,    0,    0,    0,    0,    0,\n    0,    0,   0,   0,   0,    0,   0,   0,    -414, -414, 0,    0,    -414,\n    -414, 0,   235, 236, 237,  238, 239, 240,  0,    241};\n\nstatic const yytype_int16 yycheck[] = {\n    22,  3,   282, 163, 6,   308, 403, 372, 170, 11,  114, 280, 377, 190, 191,\n    4,   18,  4,   3,   144, 5,   6,   23,  70,  25,  3,   4,   5,   6,   12,\n    4,   76,  4,   574, 575, 76,  56,  340, 106, 55,  277, 4,   56,  4,   44,\n    118, 170, 85,  4,   4,   404, 4,   67,  157, 106, 106, 33,  125, 25,  170,\n    51,  128, 26,  41,  42,  368, 25,  244, 193, 113, 72,  609, 85,  125, 125,\n    77,  170, 9,   106, 81,  118, 58,  104, 106, 112, 92,  19,  4,   110, 34,\n    99,  49,  114, 60,  124, 81,  200, 106, 65,  4,   78,  60,  125, 280, 71,\n    72,  65,  106, 40,  271, 95,  241, 71,  72,  121, 95,  125, 95,  248, 86,\n    53,  107, 4,   90,  91,  428, 125, 86,  666, 193, 174, 90,  91,  113, 90,\n    113, 533, 90,  106, 212, 141, 157, 74,  210, 106, 213, 104, 271, 212, 127,\n    165, 136, 137, 155, 169, 128, 171, 125, 136, 137, 271, 213, 213, 125, 85,\n    167, 168, 187, 405, 216, 524, 216, 188, 187, 212, 216, 153, 271, 206, 304,\n    202, 126, 184, 185, 70,  186, 216, 63,  210, 217, 213, 219, 214, 192, 216,\n    223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,\n    238, 239, 240, 176, 215, 176, 216, 582, 173, 760, 324, 212, 382, 212, 386,\n    212, 204, 205, 9,   509, 213, 205, 217, 205, 212, 208, 340, 210, 36,  217,\n    36,  3,   4,   5,   6,   213, 213, 106, 46,  216, 46,  213, 521, 125, 603,\n    17,  278, 216, 56,  40,  56,  31,  366, 73,  266, 662, 125, 565, 3,   4,\n    5,   6,   158, 705, 706, 3,   4,   5,   6,   41,  42,  73,  128, 159, 54,\n    191, 21,  163, 51,  70,  179, 101, 168, 74,  57,  457, 193, 498, 4,   321,\n    322, 36,  503, 73,  736, 103, 212, 103, 83,  4,   338, 109, 709, 41,  42,\n    613, 78,  734, 735, 216, 669, 670, 48,  688, 428, 162, 48,  102, 329, 166,\n    167, 101, 729, 95,  109, 732, 27,  640, 498, 642, 66,  151, 759, 503, 521,\n    189, 190, 145, 646, 145, 78,  113, 655, 4,   376, 0,   378, 379, 707, 205,\n    206, 207, 208, 54,  210, 127, 211, 95,  81,  83,  767, 216, 652, 215, 136,\n    137, 398, 3,   4,   5,   6,   151, 152, 663, 106, 113, 103, 588, 102, 124,\n    412, 413, 414, 106, 107, 109, 214, 159, 426, 127, 402, 4,   106, 125, 95,\n    20,  21,  169, 136, 137, 89,  26,  125, 175, 102, 695, 42,  212, 106, 99,\n    106, 125, 113, 109, 85,  442, 106, 118, 588, 446, 24,  159, 3,   4,   5,\n    6,   30,  125, 212, 125, 214, 169, 204, 205, 38,  125, 73,  175, 106, 140,\n    212, 142, 78,  36,  120, 217, 458, 161, 480, 64,  118, 165, 464, 46,  151,\n    79,  80,  125, 62,  95,  41,  42,  106, 56,  150, 109, 204, 205, 108, 94,\n    95,  96,  115, 213, 212, 79,  216, 113, 126, 217, 512, 125, 120, 773, 106,\n    517, 518, 106, 602, 118, 94,  127, 106, 214, 98,  213, 118, 78,  216, 118,\n    136, 137, 534, 125, 118, 213, 125, 111, 216, 213, 213, 125, 216, 216, 95,\n    3,   4,   5,   6,   130, 131, 132, 133, 134, 135, 216, 144, 145, 146, 147,\n    148, 214, 113, 212, 3,   4,   5,   6,   179, 180, 181, 182, 554, 4,   213,\n    212, 127, 216, 213, 213, 210, 216, 216, 41,  42,  136, 137, 89,  590, 212,\n    3,   4,   5,   6,   213, 577, 88,  216, 204, 205, 117, 213, 41,  42,  216,\n    4,   212, 3,   159, 113, 213, 217, 614, 216, 616, 76,  213, 84,  169, 216,\n    78,  4,   213, 213, 175, 216, 216, 255, 41,  42,  258, 190, 191, 41,  4,\n    212, 4,   95,  51,  78,  51,  212, 6,   213, 212, 3,   212, 3,   4,   5,\n    6,   212, 12,  204, 205, 113, 95,  213, 660, 213, 105, 212, 664, 102, 119,\n    78,  217, 213, 216, 127, 41,  4,   215, 4,   113, 193, 214, 34,  136, 137,\n    682, 213, 95,  157, 686, 41,  42,  689, 127, 213, 85,  92,  3,   4,   5,\n    6,   106, 136, 137, 212, 113, 95,  210, 4,   211, 4,   75,  70,  710, 116,\n    712, 103, 4,   118, 127, 173, 215, 175, 124, 212, 156, 4,   78,  136, 137,\n    213, 213, 89,  212, 731, 41,  42,  212, 124, 85,  216, 175, 216, 48,  95,\n    17,  4,   84,  123, 746, 214, 204, 205, 126, 105, 76,  213, 212, 212, 212,\n    4,   213, 113, 143, 217, 188, 212, 175, 212, 123, 204, 205, 78,  4,   124,\n    47,  127, 6,   212, 6,   212, 63,  112, 217, 124, 136, 137, 95,  212, 95,\n    212, 71,  141, 213, 213, 213, 204, 205, 71,  119, 71,  170, 143, 118, 212,\n    216, 110, 113, 119, 217, 4,   154, 115, 102, 213, 212, 4,   118, 174, 119,\n    92,  127, 90,  118, 175, 124, 149, 165, 216, 160, 136, 137, 75,  155, 115,\n    212, 155, 106, 212, 155, 164, 113, 213, 191, 161, 192, 191, 504, 0,   121,\n    122, 664, 150, 204, 205, 7,   128, 129, 767, 729, 42,  212, 500, 15,  16,\n    561, 217, 271, 285, 175, 22,  571, 647, 454, 26,  399, 269, 258, 715, 742,\n    32,  160, 721, 35,  36,  689, 746, 763, 249, 420, 512, 203, 537, 45,  46,\n    602, 189, -1,  204, 205, 475, -1,  -1,  -1,  56,  -1,  212, 59,  -1,  -1,\n    -1,  217, 184, 185, 186, -1,  -1,  -1,  -1,  -1,  -1,  193, 194, 195, 196,\n    197, -1,  -1,  200, 201, 82,  203, 204, 205, 206, 207, 208, -1,  210, 7,\n    -1,  -1,  -1,  -1,  -1,  97,  -1,  15,  16,  -1,  -1,  103, -1,  -1,  22,\n    -1,  -1,  109, 26,  -1,  -1,  -1,  -1,  -1,  32,  -1,  -1,  35,  36,  -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  45,  46,  -1,  -1,  -1,  -1,  47,  -1,\n    -1,  138, 139, 56,  -1,  -1,  59,  -1,  145, 146, -1,  -1,  -1,  150, -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  47,  -1,  -1,  -1,  82,\n    -1,  -1,  -1,  -1,  171, 172, -1,  -1,  -1,  -1,  177, 178, -1,  92,  97,\n    -1,  183, -1,  -1,  -1,  103, -1,  -1,  -1,  -1,  -1,  109, 106, 47,  -1,\n    -1,  -1,  -1,  -1,  113, -1,  -1,  -1,  -1,  -1,  92,  -1,  -1,  122, -1,\n    -1,  -1,  -1,  -1,  128, 129, -1,  -1,  -1,  -1,  138, 139, -1,  -1,  -1,\n    -1,  113, 145, 146, -1,  47,  -1,  150, -1,  -1,  122, -1,  -1,  92,  -1,\n    -1,  128, 129, -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  171, 172,\n    -1,  -1,  -1,  -1,  177, 178, -1,  -1,  -1,  -1,  183, -1,  -1,  122, -1,\n    184, 185, 186, -1,  128, 129, -1,  -1,  -1,  193, 194, 195, 196, 197, -1,\n    -1,  200, 201, -1,  203, 204, 205, 206, 207, 208, -1,  210, 184, 185, 186,\n    -1,  -1,  -1,  -1,  -1,  122, 193, 194, 195, 196, 197, 128, -1,  200, 201,\n    -1,  203, 204, 205, 206, 207, 208, -1,  210, -1,  -1,  -1,  -1,  -1,  -1,\n    184, 185, 186, -1,  -1,  -1,  -1,  -1,  -1,  193, 194, 195, 196, 197, -1,\n    -1,  200, 201, -1,  203, 204, 205, 206, 207, 208, -1,  210, -1,  -1,  -1,\n    -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,\n    -1,  -1,  -1,  -1,  196, 197, -1,  -1,  200, 201, -1,  203, 204, 205, 206,\n    207, 208, -1,  210};\n\n/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing\n   symbol of state STATE-NUM.  */\nstatic const yytype_uint16 yystos[] = {\n    0,   7,   15,  16,  22,  26,  32,  35,  36,  45,  46,  56,  59,  82,  97,\n    103, 109, 138, 139, 145, 146, 150, 171, 172, 177, 178, 183, 219, 220, 221,\n    222, 223, 225, 226, 227, 228, 229, 234, 235, 238, 240, 241, 255, 257, 258,\n    261, 262, 264, 288, 290, 291, 292, 294, 296, 299, 374, 375, 26,  4,   371,\n    371, 4,   4,   371, 31,  54,  73,  101, 152, 265, 267, 268, 85,  85,  125,\n    370, 371, 73,  73,  101, 151, 19,  53,  4,   376, 377, 179, 236, 4,   230,\n    232, 233, 371, 236, 180, 181, 182, 236, 3,   4,   5,   6,   41,  42,  78,\n    95,  113, 127, 136, 137, 173, 175, 204, 205, 212, 217, 336, 337, 338, 339,\n    340, 341, 342, 343, 344, 346, 347, 348, 351, 353, 354, 355, 356, 357, 358,\n    359, 360, 361, 362, 363, 4,   173, 232, 4,   176, 224, 232, 239, 236, 0,\n    215, 379, 103, 252, 252, 89,  51,  212, 300, 302, 306, 4,   214, 212, 85,\n    73,  120, 278, 278, 64,  150, 151, 371, 108, 259, 144, 145, 146, 147, 148,\n    285, 115, 371, 120, 289, 289, 289, 371, 118, 216, 193, 212, 214, 126, 237,\n    236, 236, 236, 212, 214, 212, 212, 102, 336, 345, 41,  113, 337, 210, 336,\n    212, 337, 302, 336, 106, 118, 125, 17,  47,  92,  113, 121, 122, 128, 129,\n    184, 185, 186, 193, 194, 195, 196, 197, 200, 201, 203, 204, 205, 206, 207,\n    208, 210, 232, 224, 89,  221, 88,  371, 117, 330, 300, 302, 9,   40,  74,\n    303, 304, 70,  303, 326, 4,   333, 334, 357, 3,   256, 278, 113, 371, 371,\n    278, 275, 276, 290, 292, 296, 299, 278, 76,  323, 84,  4,   297, 298, 49,\n    104, 41,  371, 371, 4,   232, 269, 300, 377, 4,   21,  36,  124, 231, 358,\n    360, 231, 4,   233, 176, 224, 12,  213, 319, 4,   205, 302, 130, 131, 132,\n    133, 134, 135, 352, 336, 345, 83,  102, 109, 212, 113, 332, 335, 336, 118,\n    336, 213, 213, 336, 232, 336, 337, 337, 92,  121, 212, 95,  113, 337, 337,\n    337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,\n    337, 361, 260, 358, 212, 212, 295, 361, 319, 213, 213, 300, 301, 306, 105,\n    305, 119, 301, 48,  66,  331, 213, 216, 371, 41,  85,  118, 212, 295, 4,\n    266, 109, 276, 215, 4,   269, 336, 260, 193, 216, 323, 34,  126, 263, 263,\n    214, 213, 224, 157, 350, 332, 213, 85,  99,  83,  109, 336, 336, 302, 211,\n    216, 118, 372, 373, 232, 118, 106, 337, 212, 302, 332, 95,  211, 4,   253,\n    254, 4,   380, 57,  302, 320, 332, 326, 327, 328, 336, 326, 336, 105, 336,\n    357, 75,  116, 299, 4,   279, 280, 118, 124, 215, 33,  58,  153, 270, 89,\n    336, 298, 371, 4,   356, 280, 269, 212, 156, 349, 213, 336, 336, 336, 109,\n    99,  213, 335, 4,   24,  30,  38,  62,  79,  94,  98,  111, 287, 337, 302,\n    332, 213, 213, 212, 213, 216, 213, 216, 212, 293, 124, 242, 243, 85,  321,\n    322, 331, 216, 81,  107, 329, 331, 48,  48,  4,   277, 84,  287, 213, 216,\n    299, 371, 123, 36,  46,  56,  271, 371, 126, 76,  4,   212, 350, 213, 109,\n    336, 212, 212, 213, 213, 213, 334, 254, 4,   334, 216, 242, 143, 364, 365,\n    323, 328, 188, 248, 336, 336, 212, 260, 27,  54,  95,  113, 118, 140, 142,\n    281, 282, 283, 280, 212, 123, 272, 124, 356, 336, 4,   310, 311, 349, 6,\n    6,   213, 213, 212, 191, 212, 25,  60,  65,  71,  72,  86,  90,  91,  216,\n    366, 378, 212, 371, 63,  324, 189, 190, 279, 112, 124, 284, 284, 95,  212,\n    141, 212, 283, 380, 380, 371, 213, 213, 158, 326, 213, 213, 334, 56,  187,\n    244, 245, 336, 71,  71,  71,  4,   90,  302, 364, 212, 373, 119, 170, 307,\n    213, 329, 143, 284, 336, 118, 336, 213, 110, 273, 119, 162, 166, 167, 312,\n    313, 213, 115, 213, 216, 192, 246, 4,   90,  213, 213, 332, 113, 174, 367,\n    332, 4,   308, 309, 284, 285, 213, 212, 213, 323, 154, 102, 274, 332, 17,\n    159, 169, 314, 316, 336, 247, 249, 250, 356, 323, 245, 4,   251, 329, 90,\n    373, 373, 213, 174, 119, 124, 368, 44,  325, 118, 216, 149, 286, 336, 155,\n    336, 326, 314, 155, 165, 160, 317, 161, 165, 216, 323, 193, 216, 191, 368,\n    368, 373, 356, 336, 75,  369, 336, 212, 309, 213, 312, 106, 63,  159, 163,\n    168, 318, 249, 336, 356, 56,  187, 369, 369, 368, 212, 310, 169, 315, 316,\n    155, 164, 115, 369, 380, 213, 161, 317, 247, 213, 323};\n\n/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */\nstatic const yytype_uint16 yyr1[] = {\n    0,   218, 219, 220, 220, 221, 221, 221, 221, 222, 222, 222, 222, 222, 222,\n    222, 222, 222, 222, 223, 223, 224, 225, 225, 225, 226, 226, 227, 227, 228,\n    228, 229, 229, 230, 230, 231, 231, 231, 231, 231, 231, 232, 233, 234, 234,\n    234, 234, 234, 234, 234, 234, 234, 234, 235, 236, 236, 237, 237, 237, 238,\n    238, 239, 239, 240, 240, 240, 240, 241, 241, 242, 242, 243, 243, 243, 243,\n    244, 244, 245, 246, 246, 247, 247, 248, 248, 248, 249, 250, 250, 251, 252,\n    252, 253, 253, 254, 254, 255, 256, 257, 257, 258, 259, 260, 261, 261, 261,\n    262, 262, 262, 263, 263, 264, 264, 264, 264, 264, 264, 264, 264, 265, 265,\n    266, 267, 268, 268, 269, 270, 270, 270, 270, 271, 271, 271, 272, 272, 273,\n    273, 274, 274, 275, 275, 276, 276, 276, 276, 277, 278, 278, 279, 279, 280,\n    281, 281, 282, 282, 283, 283, 283, 283, 283, 283, 283, 284, 284, 285, 285,\n    285, 285, 285, 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, 288,\n    288, 288, 288, 288, 289, 289, 290, 291, 292, 292, 293, 293, 294, 294, 294,\n    295, 295, 296, 297, 297, 298, 299, 299, 299, 300, 300, 301, 301, 302, 302,\n    303, 304, 304, 304, 305, 305, 306, 306, 307, 308, 308, 309, 310, 310, 311,\n    311, 312, 312, 312, 313, 313, 313, 314, 314, 315, 315, 316, 316, 316, 317,\n    317, 318, 318, 318, 318, 319, 319, 320, 321, 321, 322, 323, 323, 324, 324,\n    325, 325, 326, 326, 327, 327, 328, 329, 329, 329, 330, 330, 331, 331, 331,\n    331, 331, 331, 332, 332, 333, 333, 334, 334, 335, 336, 336, 336, 336, 336,\n    336, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 338, 339, 339, 340,\n    340, 340, 340, 340, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,\n    341, 341, 341, 342, 342, 343, 343, 343, 343, 344, 344, 344, 344, 345, 345,\n    346, 346, 347, 347, 347, 347, 347, 347, 347, 348, 348, 349, 349, 349, 350,\n    350, 351, 352, 352, 352, 352, 352, 352, 353, 354, 355, 356, 356, 356, 356,\n    357, 357, 357, 357, 357, 358, 359, 359, 360, 360, 361, 362, 363, 364, 364,\n    364, 364, 365, 365, 366, 366, 366, 366, 366, 367, 367, 367, 368, 368, 369,\n    369, 370, 371, 371, 372, 373, 373, 374, 374, 375, 376, 376, 377, 378, 378,\n    378, 378, 378, 378, 378, 378, 378, 378, 379, 379, 380, 380};\n\n/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */\nstatic const yytype_uint8 yyr2[] = {\n    0, 2,  2,  1, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  3, 2,  1, 2, 4,\n    5, 1,  2,  1, 2, 4, 5, 2, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1, 1, 1,\n    1, 1,  1,  1, 1, 3, 1, 0, 2, 3, 0, 4, 2, 1, 0, 2, 3, 3, 3,  2, 2,  1, 0, 4,\n    7, 8,  11, 1, 3, 3, 2, 0, 1, 3, 2, 2, 0, 3, 1, 3, 1, 5, 0,  1, 3,  1, 4, 4,\n    1, 2,  5,  7, 1, 1, 2, 3, 2, 6, 8, 6, 1, 0, 8, 7, 6, 7, 11, 7, 10, 5, 1, 0,\n    1, 10, 1,  0, 1, 1, 1, 2, 0, 1, 1, 2, 2, 0, 3, 0, 2, 0, 2,  3, 1,  1, 1, 1,\n    1, 3,  0,  1, 3, 3, 1, 0, 2, 1, 2, 3, 5, 2, 6, 4, 4, 3, 0,  1, 1,  1, 1, 1,\n    1, 0,  1,  1, 1, 1, 1, 4, 4, 1, 0, 4, 4, 3, 6, 4, 2, 0, 4,  2, 7,  6, 3, 5,\n    1, 1,  3,  3, 0, 5, 1, 3, 3, 2, 2, 6, 3, 3, 1, 1, 3, 5, 2,  1, 1,  1, 1, 0,\n    7, 8,  2,  1, 3, 5, 6, 3, 1, 0, 3, 6, 0, 1, 1, 1, 1, 2, 1,  2, 2,  2, 2, 2,\n    0, 2,  2,  1, 1, 1, 0, 1, 1, 0, 2, 2, 0, 4, 0, 2, 0, 3, 0,  1, 3,  3, 1, 1,\n    0, 2,  0,  2, 2, 4, 2, 4, 0, 1, 3, 1, 0, 1, 3, 2, 1, 1, 1,  1, 1,  1, 3, 1,\n    1, 1,  1,  1, 1, 1, 1, 3, 6, 1, 1, 2, 2, 2, 3, 4, 1, 3, 3,  3, 3,  3, 3, 3,\n    4, 3,  3,  3, 3, 3, 3, 3, 5, 6, 5, 6, 4, 6, 3, 5, 4, 5, 4,  5, 3,  3, 3, 3,\n    3, 3,  3,  5, 7, 4, 2, 0, 5, 0, 6, 1, 1, 1, 1, 1, 1, 4, 4,  5, 1,  3, 1, 3,\n    1, 1,  1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 8, 7, 7, 2, 0,  1, 1,  2, 3, 4,\n    3, 2,  0,  2, 0, 4, 0, 1, 1, 3, 2, 1, 0, 1, 0, 2, 1, 3, 3,  1, 2,  1, 2, 1,\n    2, 1,  1,  1, 1, 1, 0, 1, 3};\n\n#define yyerrok (yyerrstatus = 0)\n#define yyclearin (yychar = YYEMPTY)\n#define YYEMPTY (-2)\n#define YYEOF 0\n\n#define YYACCEPT goto yyacceptlab\n#define YYABORT goto yyabortlab\n#define YYERROR goto yyerrorlab\n\n#define YYRECOVERING() (!!yyerrstatus)\n\n#define YYBACKUP(Token, Value)                                                \\\n  do                                                                          \\\n    if (yychar == YYEMPTY) {                                                  \\\n      yychar = (Token);                                                       \\\n      yylval = (Value);                                                       \\\n      YYPOPSTACK(yylen);                                                      \\\n      yystate = *yyssp;                                                       \\\n      goto yybackup;                                                          \\\n    } else {                                                                  \\\n      yyerror(&yylloc, result, scanner, YY_(\"syntax error: cannot back up\")); \\\n      YYERROR;                                                                \\\n    }                                                                         \\\n  while (0)\n\n/* Error token number */\n#define YYTERROR 1\n#define YYERRCODE 256\n\n/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].\n   If N is 0, then set CURRENT to the empty location which ends\n   the previous symbol: RHS[0] (always defined).  */\n\n#ifndef YYLLOC_DEFAULT\n#define YYLLOC_DEFAULT(Current, Rhs, N)                                        \\\n  do                                                                           \\\n    if (N) {                                                                   \\\n      (Current).first_line = YYRHSLOC(Rhs, 1).first_line;                      \\\n      (Current).first_column = YYRHSLOC(Rhs, 1).first_column;                  \\\n      (Current).last_line = YYRHSLOC(Rhs, N).last_line;                        \\\n      (Current).last_column = YYRHSLOC(Rhs, N).last_column;                    \\\n    } else {                                                                   \\\n      (Current).first_line = (Current).last_line = YYRHSLOC(Rhs, 0).last_line; \\\n      (Current).first_column = (Current).last_column =                         \\\n          YYRHSLOC(Rhs, 0).last_column;                                        \\\n    }                                                                          \\\n  while (0)\n#endif\n\n#define YYRHSLOC(Rhs, K) ((Rhs)[K])\n\n/* Enable debugging if requested.  */\n#if HSQL_DEBUG\n\n#ifndef YYFPRINTF\n#include <stdio.h> /* INFRINGES ON USER NAME SPACE */\n#define YYFPRINTF fprintf\n#endif\n\n#define YYDPRINTF(Args)          \\\n  do {                           \\\n    if (yydebug) YYFPRINTF Args; \\\n  } while (0)\n\n/* YY_LOCATION_PRINT -- Print the location on the stream.\n   This macro was not mandated originally: define only if we know\n   we won't break user code: when these are the locations we know.  */\n\n#ifndef YY_LOCATION_PRINT\n#if defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL\n\n/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */\n\nYY_ATTRIBUTE_UNUSED\nstatic int yy_location_print_(FILE* yyo, YYLTYPE const* const yylocp) {\n  int res = 0;\n  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;\n  if (0 <= yylocp->first_line) {\n    res += YYFPRINTF(yyo, \"%d\", yylocp->first_line);\n    if (0 <= yylocp->first_column)\n      res += YYFPRINTF(yyo, \".%d\", yylocp->first_column);\n  }\n  if (0 <= yylocp->last_line) {\n    if (yylocp->first_line < yylocp->last_line) {\n      res += YYFPRINTF(yyo, \"-%d\", yylocp->last_line);\n      if (0 <= end_col) res += YYFPRINTF(yyo, \".%d\", end_col);\n    } else if (0 <= end_col && yylocp->first_column < end_col)\n      res += YYFPRINTF(yyo, \"-%d\", end_col);\n  }\n  return res;\n}\n\n#define YY_LOCATION_PRINT(File, Loc) yy_location_print_(File, &(Loc))\n\n#else\n#define YY_LOCATION_PRINT(File, Loc) ((void)0)\n#endif\n#endif\n\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)                  \\\n  do {                                                                 \\\n    if (yydebug) {                                                     \\\n      YYFPRINTF(stderr, \"%s \", Title);                                 \\\n      yy_symbol_print(stderr, Type, Value, Location, result, scanner); \\\n      YYFPRINTF(stderr, \"\\n\");                                         \\\n    }                                                                  \\\n  } while (0)\n\n/*-----------------------------------.\n| Print this symbol's value on YYO.  |\n`-----------------------------------*/\n\nstatic void yy_symbol_value_print(FILE* yyo, int yytype,\n                                  YYSTYPE const* const yyvaluep,\n                                  YYLTYPE const* const yylocationp,\n                                  Program* result, yyscan_t scanner) {\n  FILE* yyoutput = yyo;\n  YYUSE(yyoutput);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yyvaluep) return;\n#ifdef YYPRINT\n  if (yytype < YYNTOKENS) YYPRINT(yyo, yytoknum[yytype], *yyvaluep);\n#endif\n  YYUSE(yytype);\n}\n\n/*---------------------------.\n| Print this symbol on YYO.  |\n`---------------------------*/\n\nstatic void yy_symbol_print(FILE* yyo, int yytype,\n                            YYSTYPE const* const yyvaluep,\n                            YYLTYPE const* const yylocationp, Program* result,\n                            yyscan_t scanner) {\n  YYFPRINTF(yyo, \"%s %s (\", yytype < YYNTOKENS ? \"token\" : \"nterm\",\n            yytname[yytype]);\n\n  YY_LOCATION_PRINT(yyo, *yylocationp);\n  YYFPRINTF(yyo, \": \");\n  yy_symbol_value_print(yyo, yytype, yyvaluep, yylocationp, result, scanner);\n  YYFPRINTF(yyo, \")\");\n}\n\n/*------------------------------------------------------------------.\n| yy_stack_print -- Print the state stack from its BOTTOM up to its |\n| TOP (included).                                                   |\n`------------------------------------------------------------------*/\n\nstatic void yy_stack_print(yytype_int16* yybottom, yytype_int16* yytop) {\n  YYFPRINTF(stderr, \"Stack now\");\n  for (; yybottom <= yytop; yybottom++) {\n    int yybot = *yybottom;\n    YYFPRINTF(stderr, \" %d\", yybot);\n  }\n  YYFPRINTF(stderr, \"\\n\");\n}\n\n#define YY_STACK_PRINT(Bottom, Top)               \\\n  do {                                            \\\n    if (yydebug) yy_stack_print((Bottom), (Top)); \\\n  } while (0)\n\n/*------------------------------------------------.\n| Report that the YYRULE is going to be reduced.  |\n`------------------------------------------------*/\n\nstatic void yy_reduce_print(yytype_int16* yyssp, YYSTYPE* yyvsp, YYLTYPE* yylsp,\n                            int yyrule, Program* result, yyscan_t scanner) {\n  unsigned long yylno = yyrline[yyrule];\n  int yynrhs = yyr2[yyrule];\n  int yyi;\n  YYFPRINTF(stderr, \"Reducing stack by rule %d (line %lu):\\n\", yyrule - 1,\n            yylno);\n  /* The symbols being reduced.  */\n  for (yyi = 0; yyi < yynrhs; yyi++) {\n    YYFPRINTF(stderr, \"   $%d = \", yyi + 1);\n    yy_symbol_print(stderr, yystos[yyssp[yyi + 1 - yynrhs]],\n                    &yyvsp[(yyi + 1) - (yynrhs)],\n                    &(yylsp[(yyi + 1) - (yynrhs)]), result, scanner);\n    YYFPRINTF(stderr, \"\\n\");\n  }\n}\n\n#define YY_REDUCE_PRINT(Rule)                                                 \\\n  do {                                                                        \\\n    if (yydebug) yy_reduce_print(yyssp, yyvsp, yylsp, Rule, result, scanner); \\\n  } while (0)\n\n/* Nonzero means print parse trace.  It is left uninitialized so that\n   multiple parsers can coexist.  */\nint yydebug;\n#else /* !HSQL_DEBUG */\n#define YYDPRINTF(Args)\n#define YY_SYMBOL_PRINT(Title, Type, Value, Location)\n#define YY_STACK_PRINT(Bottom, Top)\n#define YY_REDUCE_PRINT(Rule)\n#endif /* !HSQL_DEBUG */\n\n/* YYINITDEPTH -- initial size of the parser's stacks.  */\n#ifndef YYINITDEPTH\n#define YYINITDEPTH 200\n#endif\n\n/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only\n   if the built-in stack extension method is used).\n\n   Do not make this value too large; the results are undefined if\n   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)\n   evaluated with infinite-precision integer arithmetic.  */\n\n#ifndef YYMAXDEPTH\n#define YYMAXDEPTH 10000\n#endif\n\n#if YYERROR_VERBOSE\n\n#ifndef yystrlen\n#if defined __GLIBC__ && defined _STRING_H\n#define yystrlen strlen\n#else\n/* Return the length of YYSTR.  */\nstatic YYSIZE_T yystrlen(const char* yystr) {\n  YYSIZE_T yylen;\n  for (yylen = 0; yystr[yylen]; yylen++) continue;\n  return yylen;\n}\n#endif\n#endif\n\n#ifndef yystpcpy\n#if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE\n#define yystpcpy stpcpy\n#else\n/* Copy YYSRC to YYDEST, returning the address of the terminating '\\0' in\n   YYDEST.  */\nstatic char* yystpcpy(char* yydest, const char* yysrc) {\n  char* yyd = yydest;\n  const char* yys = yysrc;\n\n  while ((*yyd++ = *yys++) != '\\0') continue;\n\n  return yyd - 1;\n}\n#endif\n#endif\n\n#ifndef yytnamerr\n/* Copy to YYRES the contents of YYSTR after stripping away unnecessary\n   quotes and backslashes, so that it's suitable for yyerror.  The\n   heuristic is that double-quoting is unnecessary unless the string\n   contains an apostrophe, a comma, or backslash (other than\n   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is\n   null, do not copy; instead, return the length of what the result\n   would have been.  */\nstatic YYSIZE_T yytnamerr(char* yyres, const char* yystr) {\n  if (*yystr == '\"') {\n    YYSIZE_T yyn = 0;\n    char const* yyp = yystr;\n\n    for (;;) switch (*++yyp) {\n        case '\\'':\n        case ',':\n          goto do_not_strip_quotes;\n\n        case '\\\\':\n          if (*++yyp != '\\\\')\n            goto do_not_strip_quotes;\n          else\n            goto append;\n\n        append:\n        default:\n          if (yyres) yyres[yyn] = *yyp;\n          yyn++;\n          break;\n\n        case '\"':\n          if (yyres) yyres[yyn] = '\\0';\n          return yyn;\n      }\n  do_not_strip_quotes:;\n  }\n\n  if (!yyres) return yystrlen(yystr);\n\n  return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);\n}\n#endif\n\n/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message\n   about the unexpected token YYTOKEN for the state stack whose top is\n   YYSSP.\n\n   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is\n   not large enough to hold the message.  In that case, also set\n   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the\n   required number of bytes is too large to store.  */\nstatic int yysyntax_error(YYSIZE_T* yymsg_alloc, char** yymsg,\n                          yytype_int16* yyssp, int yytoken) {\n  YYSIZE_T yysize0 = yytnamerr(YY_NULLPTR, yytname[yytoken]);\n  YYSIZE_T yysize = yysize0;\n  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };\n  /* Internationalized format string. */\n  const char* yyformat = YY_NULLPTR;\n  /* Arguments of yyformat. */\n  char const* yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];\n  /* Number of reported tokens (one for the \"unexpected\", one per\n     \"expected\"). */\n  int yycount = 0;\n\n  /* There are many possibilities here to consider:\n     - If this state is a consistent state with a default action, then\n       the only way this function was invoked is if the default action\n       is an error action.  In that case, don't check for expected\n       tokens because there are none.\n     - The only way there can be no lookahead present (in yychar) is if\n       this state is a consistent state with a default action.  Thus,\n       detecting the absence of a lookahead is sufficient to determine\n       that there is no unexpected or expected token to report.  In that\n       case, just report a simple \"syntax error\".\n     - Don't assume there isn't a lookahead just because this state is a\n       consistent state with a default action.  There might have been a\n       previous inconsistent state, consistent state with a non-default\n       action, or user semantic action that manipulated yychar.\n     - Of course, the expected token list depends on states to have\n       correct lookahead information, and it depends on the parser not\n       to perform extra reductions after fetching a lookahead from the\n       scanner and before detecting a syntax error.  Thus, state merging\n       (from LALR or IELR) and default reductions corrupt the expected\n       token list.  However, the list is correct for canonical LR with\n       one exception: it will still contain any token that will not be\n       accepted due to an error action in a later state.\n  */\n  if (yytoken != YYEMPTY) {\n    int yyn = yypact[*yyssp];\n    yyarg[yycount++] = yytname[yytoken];\n    if (!yypact_value_is_default(yyn)) {\n      /* Start YYX at -YYN if negative to avoid negative indexes in\n         YYCHECK.  In other words, skip the first -YYN actions for\n         this state because they are default actions.  */\n      int yyxbegin = yyn < 0 ? -yyn : 0;\n      /* Stay within bounds of both yycheck and yytname.  */\n      int yychecklim = YYLAST - yyn + 1;\n      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;\n      int yyx;\n\n      for (yyx = yyxbegin; yyx < yyxend; ++yyx)\n        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR &&\n            !yytable_value_is_error(yytable[yyx + yyn])) {\n          if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) {\n            yycount = 1;\n            yysize = yysize0;\n            break;\n          }\n          yyarg[yycount++] = yytname[yyx];\n          {\n            YYSIZE_T yysize1 = yysize + yytnamerr(YY_NULLPTR, yytname[yyx]);\n            if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n              yysize = yysize1;\n            else\n              return 2;\n          }\n        }\n    }\n  }\n\n  switch (yycount) {\n#define YYCASE_(N, S) \\\n  case N:             \\\n    yyformat = S;     \\\n    break\n    default: /* Avoid compiler warnings. */\n      YYCASE_(0, YY_(\"syntax error\"));\n      YYCASE_(1, YY_(\"syntax error, unexpected %s\"));\n      YYCASE_(2, YY_(\"syntax error, unexpected %s, expecting %s\"));\n      YYCASE_(3, YY_(\"syntax error, unexpected %s, expecting %s or %s\"));\n      YYCASE_(4, YY_(\"syntax error, unexpected %s, expecting %s or %s or %s\"));\n      YYCASE_(\n          5,\n          YY_(\"syntax error, unexpected %s, expecting %s or %s or %s or %s\"));\n#undef YYCASE_\n  }\n\n  {\n    YYSIZE_T yysize1 = yysize + yystrlen(yyformat);\n    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)\n      yysize = yysize1;\n    else\n      return 2;\n  }\n\n  if (*yymsg_alloc < yysize) {\n    *yymsg_alloc = 2 * yysize;\n    if (!(yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))\n      *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;\n    return 1;\n  }\n\n  /* Avoid sprintf, as that infringes on the user's name space.\n     Don't have undefined behavior even if the translation\n     produced a string with the wrong number of \"%s\"s.  */\n  {\n    char* yyp = *yymsg;\n    int yyi = 0;\n    while ((*yyp = *yyformat) != '\\0')\n      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) {\n        yyp += yytnamerr(yyp, yyarg[yyi++]);\n        yyformat += 2;\n      } else {\n        yyp++;\n        yyformat++;\n      }\n  }\n  return 0;\n}\n#endif /* YYERROR_VERBOSE */\n\n/*-----------------------------------------------.\n| Release the memory associated to this symbol.  |\n`-----------------------------------------------*/\n\nstatic void yydestruct(const char* yymsg, int yytype, YYSTYPE* yyvaluep,\n                       YYLTYPE* yylocationp, Program* result,\n                       yyscan_t scanner) {\n  YYUSE(yyvaluep);\n  YYUSE(yylocationp);\n  YYUSE(result);\n  YYUSE(scanner);\n  if (!yymsg) yymsg = \"Deleting\";\n  YY_SYMBOL_PRINT(yymsg, yytype, yyvaluep, yylocationp);\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  switch (yytype) {\n    case 3:                /* STRING  */\n#line 497 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 2224 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 4:                /* IDENTIFIER  */\n#line 497 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      free((((*yyvaluep).sval)));\n    }\n#line 2230 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 5:                /* FLOATVAL  */\n#line 496 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n    }\n#line 2236 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 6:                /* INTVAL  */\n#line 496 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n    }\n#line 2242 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 219:              /* input  */\n#line 496 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n    }\n#line 2248 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 220:              /* statement_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).statement_list_t) != NULL)\n        ((*yyvaluep).statement_list_t)->deep_delete();\n    }\n#line 2254 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 221:              /* statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).statement_t) != NULL)\n        ((*yyvaluep).statement_t)->deep_delete();\n    }\n#line 2260 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 222:              /* cmd  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_t) != NULL) ((*yyvaluep).cmd_t)->deep_delete();\n    }\n#line 2266 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 223:              /* cmd_release  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_release_t) != NULL)\n        ((*yyvaluep).cmd_release_t)->deep_delete();\n    }\n#line 2272 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 224:              /* savepoint_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).savepoint_name_t) != NULL)\n        ((*yyvaluep).savepoint_name_t)->deep_delete();\n    }\n#line 2278 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 225:              /* cmd_pragma  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_pragma_t) != NULL)\n        ((*yyvaluep).cmd_pragma_t)->deep_delete();\n    }\n#line 2284 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 226:              /* cmd_reindex  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_reindex_t) != NULL)\n        ((*yyvaluep).cmd_reindex_t)->deep_delete();\n    }\n#line 2290 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 227:              /* cmd_analyze  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_analyze_t) != NULL)\n        ((*yyvaluep).cmd_analyze_t)->deep_delete();\n    }\n#line 2296 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 228:              /* cmd_attach  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_attach_t) != NULL)\n        ((*yyvaluep).cmd_attach_t)->deep_delete();\n    }\n#line 2302 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 229:              /* cmd_detach  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cmd_detach_t) != NULL)\n        ((*yyvaluep).cmd_detach_t)->deep_delete();\n    }\n#line 2308 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 230:              /* pragma_key  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).pragma_key_t) != NULL)\n        ((*yyvaluep).pragma_key_t)->deep_delete();\n    }\n#line 2314 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 231:              /* pragma_value  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).pragma_value_t) != NULL)\n        ((*yyvaluep).pragma_value_t)->deep_delete();\n    }\n#line 2320 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 232:              /* schema_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).schema_name_t) != NULL)\n        ((*yyvaluep).schema_name_t)->deep_delete();\n    }\n#line 2326 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 233:              /* pragma_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).pragma_name_t) != NULL)\n        ((*yyvaluep).pragma_name_t)->deep_delete();\n    }\n#line 2332 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 234:              /* preparable_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).preparable_statement_t) != NULL)\n        ((*yyvaluep).preparable_statement_t)->deep_delete();\n    }\n#line 2338 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 235:              /* rollback_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).rollback_statement_t) != NULL)\n        ((*yyvaluep).rollback_statement_t)->deep_delete();\n    }\n#line 2344 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 236:              /* opt_transaction  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_transaction_t) != NULL)\n        ((*yyvaluep).opt_transaction_t)->deep_delete();\n    }\n#line 2350 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 237:              /* opt_to_savepoint  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_to_savepoint_t) != NULL)\n        ((*yyvaluep).opt_to_savepoint_t)->deep_delete();\n    }\n#line 2356 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 238:              /* vacuum_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).vacuum_statement_t) != NULL)\n        ((*yyvaluep).vacuum_statement_t)->deep_delete();\n    }\n#line 2362 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 239:              /* opt_schema_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_schema_name_t) != NULL)\n        ((*yyvaluep).opt_schema_name_t)->deep_delete();\n    }\n#line 2368 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 240:              /* begin_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).begin_statement_t) != NULL)\n        ((*yyvaluep).begin_statement_t)->deep_delete();\n    }\n#line 2374 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 241:              /* commit_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).commit_statement_t) != NULL)\n        ((*yyvaluep).commit_statement_t)->deep_delete();\n    }\n#line 2380 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 242:              /* opt_upsert_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_upsert_clause_t) != NULL)\n        ((*yyvaluep).opt_upsert_clause_t)->deep_delete();\n    }\n#line 2386 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 243:              /* upsert_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).upsert_clause_t) != NULL)\n        ((*yyvaluep).upsert_clause_t)->deep_delete();\n    }\n#line 2392 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 244:              /* indexed_column_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_list_t) != NULL)\n        ((*yyvaluep).indexed_column_list_t)->deep_delete();\n    }\n#line 2398 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 245:              /* indexed_column  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).indexed_column_t) != NULL)\n        ((*yyvaluep).indexed_column_t)->deep_delete();\n    }\n#line 2404 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 246:              /* opt_collate  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_collate_t) != NULL)\n        ((*yyvaluep).opt_collate_t)->deep_delete();\n    }\n#line 2410 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 247:              /* assign_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).assign_list_t) != NULL)\n        ((*yyvaluep).assign_list_t)->deep_delete();\n    }\n#line 2416 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 248:              /* opt_null  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_null_t) != NULL)\n        ((*yyvaluep).opt_null_t)->deep_delete();\n    }\n#line 2422 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 249:              /* assign_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).assign_clause_t) != NULL)\n        ((*yyvaluep).assign_clause_t)->deep_delete();\n    }\n#line 2428 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 250:              /* column_name_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_list_t) != NULL)\n        ((*yyvaluep).column_name_list_t)->deep_delete();\n    }\n#line 2434 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 251:              /* collation_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).collation_name_t) != NULL)\n        ((*yyvaluep).collation_name_t)->deep_delete();\n    }\n#line 2440 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 252:              /* opt_hints  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).optional_hints_t) != NULL)\n        ((*yyvaluep).optional_hints_t)->deep_delete();\n    }\n#line 2446 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 253:              /* hint_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).hint_list_t) != NULL)\n        ((*yyvaluep).hint_list_t)->deep_delete();\n    }\n#line 2452 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 254:              /* hint  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).hint_t) != NULL) ((*yyvaluep).hint_t)->deep_delete();\n    }\n#line 2458 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 255:              /* prepare_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).prepare_statement_t) != NULL)\n        ((*yyvaluep).prepare_statement_t)->deep_delete();\n    }\n#line 2464 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 256:              /* prepare_target_query  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).prepare_target_query_t) != NULL)\n        ((*yyvaluep).prepare_target_query_t)->deep_delete();\n    }\n#line 2470 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 257:              /* execute_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).execute_statement_t) != NULL)\n        ((*yyvaluep).execute_statement_t)->deep_delete();\n    }\n#line 2476 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 258:              /* import_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).import_statement_t) != NULL)\n        ((*yyvaluep).import_statement_t)->deep_delete();\n    }\n#line 2482 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 259:              /* import_file_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).import_file_type_t) != NULL)\n        ((*yyvaluep).import_file_type_t)->deep_delete();\n    }\n#line 2488 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 260:              /* file_path  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).file_path_t) != NULL)\n        ((*yyvaluep).file_path_t)->deep_delete();\n    }\n#line 2494 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 261:              /* show_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).show_statement_t) != NULL)\n        ((*yyvaluep).show_statement_t)->deep_delete();\n    }\n#line 2500 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 262:              /* alter_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alter_statement_t) != NULL)\n        ((*yyvaluep).alter_statement_t)->deep_delete();\n    }\n#line 2506 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 263:              /* opt_column  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_t) != NULL)\n        ((*yyvaluep).opt_column_t)->deep_delete();\n    }\n#line 2512 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 264:              /* create_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).create_statement_t) != NULL)\n        ((*yyvaluep).create_statement_t)->deep_delete();\n    }\n#line 2518 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 265:              /* opt_unique  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_unique_t) != NULL)\n        ((*yyvaluep).opt_unique_t)->deep_delete();\n    }\n#line 2524 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 266:              /* index_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).index_name_t) != NULL)\n        ((*yyvaluep).index_name_t)->deep_delete();\n    }\n#line 2530 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 267:              /* trigger_declare  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_declare_t) != NULL)\n        ((*yyvaluep).trigger_declare_t)->deep_delete();\n    }\n#line 2536 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 268:              /* opt_tmp  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_tmp_t) != NULL)\n        ((*yyvaluep).opt_tmp_t)->deep_delete();\n    }\n#line 2542 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 269:              /* trigger_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_name_t) != NULL)\n        ((*yyvaluep).trigger_name_t)->deep_delete();\n    }\n#line 2548 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 270:              /* opt_trigger_time  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_trigger_time_t) != NULL)\n        ((*yyvaluep).opt_trigger_time_t)->deep_delete();\n    }\n#line 2554 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 271:              /* trigger_event  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_event_t) != NULL)\n        ((*yyvaluep).trigger_event_t)->deep_delete();\n    }\n#line 2560 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 272:              /* opt_of_column_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_of_column_list_t) != NULL)\n        ((*yyvaluep).opt_of_column_list_t)->deep_delete();\n    }\n#line 2566 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 273:              /* opt_for_each  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_for_each_t) != NULL)\n        ((*yyvaluep).opt_for_each_t)->deep_delete();\n    }\n#line 2572 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 274:              /* opt_when  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_when_t) != NULL)\n        ((*yyvaluep).opt_when_t)->deep_delete();\n    }\n#line 2578 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 275:              /* trigger_cmd_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_cmd_list_t) != NULL)\n        ((*yyvaluep).trigger_cmd_list_t)->deep_delete();\n    }\n#line 2584 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 276:              /* trigger_cmd  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).trigger_cmd_t) != NULL)\n        ((*yyvaluep).trigger_cmd_t)->deep_delete();\n    }\n#line 2590 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 277:              /* module_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).module_name_t) != NULL)\n        ((*yyvaluep).module_name_t)->deep_delete();\n    }\n#line 2596 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 278:              /* opt_not_exists  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_not_exists_t) != NULL)\n        ((*yyvaluep).opt_not_exists_t)->deep_delete();\n    }\n#line 2602 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 279:              /* column_def_commalist  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_comma_list_t) != NULL)\n        ((*yyvaluep).column_def_comma_list_t)->deep_delete();\n    }\n#line 2608 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 280:              /* column_def  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_def_t) != NULL)\n        ((*yyvaluep).column_def_t)->deep_delete();\n    }\n#line 2614 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 281:              /* opt_column_arglist  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_arglist_t) != NULL)\n        ((*yyvaluep).opt_column_arglist_t)->deep_delete();\n    }\n#line 2620 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 282:              /* column_arglist  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_arglist_t) != NULL)\n        ((*yyvaluep).column_arglist_t)->deep_delete();\n    }\n#line 2626 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 283:              /* column_arg  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_arg_t) != NULL)\n        ((*yyvaluep).column_arg_t)->deep_delete();\n    }\n#line 2632 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 284:              /* opt_on_conflict  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_conflict_t) != NULL)\n        ((*yyvaluep).opt_on_conflict_t)->deep_delete();\n    }\n#line 2638 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 285:              /* resolve_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).resolve_type_t) != NULL)\n        ((*yyvaluep).resolve_type_t)->deep_delete();\n    }\n#line 2644 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 286:              /* opt_autoinc  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_autoinc_t) != NULL)\n        ((*yyvaluep).opt_autoinc_t)->deep_delete();\n    }\n#line 2650 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 287:              /* column_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_type_t) != NULL)\n        ((*yyvaluep).column_type_t)->deep_delete();\n    }\n#line 2656 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 288:              /* drop_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).drop_statement_t) != NULL)\n        ((*yyvaluep).drop_statement_t)->deep_delete();\n    }\n#line 2662 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 289:              /* opt_exists  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_exists_t) != NULL)\n        ((*yyvaluep).opt_exists_t)->deep_delete();\n    }\n#line 2668 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 290:              /* delete_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).delete_statement_t) != NULL)\n        ((*yyvaluep).delete_statement_t)->deep_delete();\n    }\n#line 2674 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 291:              /* truncate_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).delete_statement_t) != NULL)\n        ((*yyvaluep).delete_statement_t)->deep_delete();\n    }\n#line 2680 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 292:              /* insert_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_statement_t) != NULL)\n        ((*yyvaluep).insert_statement_t)->deep_delete();\n    }\n#line 2686 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 293:              /* super_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).super_list_t) != NULL)\n        ((*yyvaluep).super_list_t)->deep_delete();\n    }\n#line 2692 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 294:              /* insert_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).insert_type_t) != NULL)\n        ((*yyvaluep).insert_type_t)->deep_delete();\n    }\n#line 2698 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 295:              /* opt_column_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_column_list_t) != NULL)\n        ((*yyvaluep).opt_column_list_t)->deep_delete();\n    }\n#line 2704 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 296:              /* update_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).update_statement_t) != NULL)\n        ((*yyvaluep).update_statement_t)->deep_delete();\n    }\n#line 2710 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 297:              /* update_clause_commalist  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).update_clause_commalist_t) != NULL)\n        ((*yyvaluep).update_clause_commalist_t)->deep_delete();\n    }\n#line 2716 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 298:              /* update_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).update_clause_t) != NULL)\n        ((*yyvaluep).update_clause_t)->deep_delete();\n    }\n#line 2722 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 299:              /* select_statement  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_statement_t) != NULL)\n        ((*yyvaluep).select_statement_t)->deep_delete();\n    }\n#line 2728 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 300:              /* select_with_paren  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_with_paren_t) != NULL)\n        ((*yyvaluep).select_with_paren_t)->deep_delete();\n    }\n#line 2734 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 301:              /* select_paren_or_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_paren_or_clause_t) != NULL)\n        ((*yyvaluep).select_paren_or_clause_t)->deep_delete();\n    }\n#line 2740 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 302:              /* select_no_paren  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_no_paren_t) != NULL)\n        ((*yyvaluep).select_no_paren_t)->deep_delete();\n    }\n#line 2746 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 303:              /* set_operator  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_operator_t) != NULL)\n        ((*yyvaluep).set_operator_t)->deep_delete();\n    }\n#line 2752 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 304:              /* set_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).set_type_t) != NULL)\n        ((*yyvaluep).set_type_t)->deep_delete();\n    }\n#line 2758 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 305:              /* opt_all  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_all_t) != NULL)\n        ((*yyvaluep).opt_all_t)->deep_delete();\n    }\n#line 2764 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 306:              /* select_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_clause_t) != NULL)\n        ((*yyvaluep).select_clause_t)->deep_delete();\n    }\n#line 2770 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 307:              /* window_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_clause_t) != NULL)\n        ((*yyvaluep).window_clause_t)->deep_delete();\n    }\n#line 2776 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 308:              /* windowdefn_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_defn_list_t) != NULL)\n        ((*yyvaluep).window_defn_list_t)->deep_delete();\n    }\n#line 2782 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 309:              /* windowdefn  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_defn_t) != NULL)\n        ((*yyvaluep).window_defn_t)->deep_delete();\n    }\n#line 2788 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 310:              /* window  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).window_t) != NULL) ((*yyvaluep).window_t)->deep_delete();\n    }\n#line 2794 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 311:              /* opt_base_window_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_base_window_name_t) != NULL)\n        ((*yyvaluep).opt_base_window_name_t)->deep_delete();\n    }\n#line 2800 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 312:              /* opt_frame  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_frame_t) != NULL)\n        ((*yyvaluep).opt_frame_t)->deep_delete();\n    }\n#line 2806 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 313:              /* range_or_rows  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).range_or_rows_t) != NULL)\n        ((*yyvaluep).range_or_rows_t)->deep_delete();\n    }\n#line 2812 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 314:              /* frame_bound_s  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_s_t) != NULL)\n        ((*yyvaluep).frame_bound_s_t)->deep_delete();\n    }\n#line 2818 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 315:              /* frame_bound_e  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_e_t) != NULL)\n        ((*yyvaluep).frame_bound_e_t)->deep_delete();\n    }\n#line 2824 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 316:              /* frame_bound  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_bound_t) != NULL)\n        ((*yyvaluep).frame_bound_t)->deep_delete();\n    }\n#line 2830 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 317:              /* opt_frame_exclude  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_frame_exclude_t) != NULL)\n        ((*yyvaluep).opt_frame_exclude_t)->deep_delete();\n    }\n#line 2836 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 318:              /* frame_exclude  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).frame_exclude_t) != NULL)\n        ((*yyvaluep).frame_exclude_t)->deep_delete();\n    }\n#line 2842 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 319:              /* opt_distinct  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_distinct_t) != NULL)\n        ((*yyvaluep).opt_distinct_t)->deep_delete();\n    }\n#line 2848 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 320:              /* select_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).select_list_t) != NULL)\n        ((*yyvaluep).select_list_t)->deep_delete();\n    }\n#line 2854 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 321:              /* opt_from_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_from_clause_t) != NULL)\n        ((*yyvaluep).opt_from_clause_t)->deep_delete();\n    }\n#line 2860 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 322:              /* from_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).from_clause_t) != NULL)\n        ((*yyvaluep).from_clause_t)->deep_delete();\n    }\n#line 2866 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 323:              /* opt_where  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_where_t) != NULL)\n        ((*yyvaluep).opt_where_t)->deep_delete();\n    }\n#line 2872 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 324:              /* opt_group  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_group_t) != NULL)\n        ((*yyvaluep).opt_group_t)->deep_delete();\n    }\n#line 2878 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 325:              /* opt_having  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_having_t) != NULL)\n        ((*yyvaluep).opt_having_t)->deep_delete();\n    }\n#line 2884 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 326:              /* opt_order  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_t) != NULL)\n        ((*yyvaluep).opt_order_t)->deep_delete();\n    }\n#line 2890 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 327:              /* order_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_list_t) != NULL)\n        ((*yyvaluep).order_list_t)->deep_delete();\n    }\n#line 2896 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 328:              /* order_desc  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).order_desc_t) != NULL)\n        ((*yyvaluep).order_desc_t)->deep_delete();\n    }\n#line 2902 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 329:              /* opt_order_type  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_order_type_t) != NULL)\n        ((*yyvaluep).opt_order_type_t)->deep_delete();\n    }\n#line 2908 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 330:              /* opt_top  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_top_t) != NULL)\n        ((*yyvaluep).opt_top_t)->deep_delete();\n    }\n#line 2914 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 331:              /* opt_limit  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_limit_t) != NULL)\n        ((*yyvaluep).opt_limit_t)->deep_delete();\n    }\n#line 2920 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 332:              /* expr_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_list_t) != NULL)\n        ((*yyvaluep).expr_list_t)->deep_delete();\n    }\n#line 2926 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 333:              /* opt_literal_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_literal_list_t) != NULL)\n        ((*yyvaluep).opt_literal_list_t)->deep_delete();\n    }\n#line 2932 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 334:              /* literal_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).literal_list_t) != NULL)\n        ((*yyvaluep).literal_list_t)->deep_delete();\n    }\n#line 2938 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 335:              /* expr_alias  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_alias_t) != NULL)\n        ((*yyvaluep).expr_alias_t)->deep_delete();\n    }\n#line 2944 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 336:              /* expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).expr_t) != NULL) ((*yyvaluep).expr_t)->deep_delete();\n    }\n#line 2950 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 337:              /* operand  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).operand_t) != NULL)\n        ((*yyvaluep).operand_t)->deep_delete();\n    }\n#line 2956 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 338:              /* cast_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).cast_expr_t) != NULL)\n        ((*yyvaluep).cast_expr_t)->deep_delete();\n    }\n#line 2962 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 339:              /* scalar_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).scalar_expr_t) != NULL)\n        ((*yyvaluep).scalar_expr_t)->deep_delete();\n    }\n#line 2968 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 340:              /* unary_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).unary_expr_t) != NULL)\n        ((*yyvaluep).unary_expr_t)->deep_delete();\n    }\n#line 2974 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 341:              /* binary_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).binary_expr_t) != NULL)\n        ((*yyvaluep).binary_expr_t)->deep_delete();\n    }\n#line 2980 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 342:              /* logic_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).logic_expr_t) != NULL)\n        ((*yyvaluep).logic_expr_t)->deep_delete();\n    }\n#line 2986 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 343:              /* in_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).in_expr_t) != NULL)\n        ((*yyvaluep).in_expr_t)->deep_delete();\n    }\n#line 2992 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 344:              /* case_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_expr_t) != NULL)\n        ((*yyvaluep).case_expr_t)->deep_delete();\n    }\n#line 2998 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 345:              /* case_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).case_list_t) != NULL)\n        ((*yyvaluep).case_list_t)->deep_delete();\n    }\n#line 3004 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 346:              /* exists_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).exists_expr_t) != NULL)\n        ((*yyvaluep).exists_expr_t)->deep_delete();\n    }\n#line 3010 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 347:              /* comp_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).comp_expr_t) != NULL)\n        ((*yyvaluep).comp_expr_t)->deep_delete();\n    }\n#line 3016 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 348:              /* function_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).function_expr_t) != NULL)\n        ((*yyvaluep).function_expr_t)->deep_delete();\n    }\n#line 3022 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 349:              /* opt_over_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_over_clause_t) != NULL)\n        ((*yyvaluep).opt_over_clause_t)->deep_delete();\n    }\n#line 3028 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 350:              /* opt_filter_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_filter_clause_t) != NULL)\n        ((*yyvaluep).opt_filter_clause_t)->deep_delete();\n    }\n#line 3034 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 351:              /* extract_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).extract_expr_t) != NULL)\n        ((*yyvaluep).extract_expr_t)->deep_delete();\n    }\n#line 3040 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 352:              /* datetime_field  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).datetime_field_t) != NULL)\n        ((*yyvaluep).datetime_field_t)->deep_delete();\n    }\n#line 3046 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 353:              /* array_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).array_expr_t) != NULL)\n        ((*yyvaluep).array_expr_t)->deep_delete();\n    }\n#line 3052 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 354:              /* array_index  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).array_index_t) != NULL)\n        ((*yyvaluep).array_index_t)->deep_delete();\n    }\n#line 3058 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 355:              /* between_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).between_expr_t) != NULL)\n        ((*yyvaluep).between_expr_t)->deep_delete();\n    }\n#line 3064 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 356:              /* column_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).column_name_t) != NULL)\n        ((*yyvaluep).column_name_t)->deep_delete();\n    }\n#line 3070 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 357:              /* literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).literal_t) != NULL)\n        ((*yyvaluep).literal_t)->deep_delete();\n    }\n#line 3076 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 358:              /* string_literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).string_literal_t) != NULL)\n        ((*yyvaluep).string_literal_t)->deep_delete();\n    }\n#line 3082 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 359:              /* bool_literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).bool_literal_t) != NULL)\n        ((*yyvaluep).bool_literal_t)->deep_delete();\n    }\n#line 3088 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 360:              /* num_literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).num_literal_t) != NULL)\n        ((*yyvaluep).num_literal_t)->deep_delete();\n    }\n#line 3094 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 361:              /* int_literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).int_literal_t) != NULL)\n        ((*yyvaluep).int_literal_t)->deep_delete();\n    }\n#line 3100 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 362:              /* null_literal  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).null_literal_t) != NULL)\n        ((*yyvaluep).null_literal_t)->deep_delete();\n    }\n#line 3106 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 363:              /* param_expr  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).param_expr_t) != NULL)\n        ((*yyvaluep).param_expr_t)->deep_delete();\n    }\n#line 3112 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 364:              /* table_ref  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_ref_t) != NULL)\n        ((*yyvaluep).table_ref_t)->deep_delete();\n    }\n#line 3118 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 365:              /* table_prefix  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_prefix_t) != NULL)\n        ((*yyvaluep).table_prefix_t)->deep_delete();\n    }\n#line 3124 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 366:              /* join_op  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).join_op_t) != NULL)\n        ((*yyvaluep).join_op_t)->deep_delete();\n    }\n#line 3130 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 367:              /* opt_index  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_index_t) != NULL)\n        ((*yyvaluep).opt_index_t)->deep_delete();\n    }\n#line 3136 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 368:              /* opt_on  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_on_t) != NULL) ((*yyvaluep).opt_on_t)->deep_delete();\n    }\n#line 3142 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 369:              /* opt_using  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_using_t) != NULL)\n        ((*yyvaluep).opt_using_t)->deep_delete();\n    }\n#line 3148 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 370:              /* table_ref_name_no_alias  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_ref_name_no_alias_t) != NULL)\n        ((*yyvaluep).table_ref_name_no_alias_t)->deep_delete();\n    }\n#line 3154 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 371:              /* table_name  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).table_name_t) != NULL)\n        ((*yyvaluep).table_name_t)->deep_delete();\n    }\n#line 3160 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 372:              /* alias  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).alias_t) != NULL) ((*yyvaluep).alias_t)->deep_delete();\n    }\n#line 3166 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 373:              /* opt_alias  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_alias_t) != NULL)\n        ((*yyvaluep).opt_alias_t)->deep_delete();\n    }\n#line 3172 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 374:              /* opt_with_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_with_clause_t) != NULL)\n        ((*yyvaluep).opt_with_clause_t)->deep_delete();\n    }\n#line 3178 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 375:              /* with_clause  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).with_clause_t) != NULL)\n        ((*yyvaluep).with_clause_t)->deep_delete();\n    }\n#line 3184 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 376:              /* with_description_list  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).with_description_list_t) != NULL)\n        ((*yyvaluep).with_description_list_t)->deep_delete();\n    }\n#line 3190 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 377:              /* with_description  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).with_description_t) != NULL)\n        ((*yyvaluep).with_description_t)->deep_delete();\n    }\n#line 3196 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 378:              /* join_kw  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).join_kw_t) != NULL)\n        ((*yyvaluep).join_kw_t)->deep_delete();\n    }\n#line 3202 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 379:              /* opt_semicolon  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).opt_semicolon_t) != NULL)\n        ((*yyvaluep).opt_semicolon_t)->deep_delete();\n    }\n#line 3208 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    case 380:              /* ident_commalist  */\n#line 536 \"bison_parser.y\" /* yacc.c:1257  */\n    {\n      if (((*yyvaluep).ident_commalist_t) != NULL)\n        ((*yyvaluep).ident_commalist_t)->deep_delete();\n    }\n#line 3214 \"bison_parser.cpp\" /* yacc.c:1257  */\n    break;\n\n    default:\n      break;\n  }\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n}\n\n/*----------.\n| yyparse.  |\n`----------*/\n\nint yyparse(Program* result, yyscan_t scanner) {\n  /* The lookahead symbol.  */\n  int yychar;\n\n  /* The semantic value of the lookahead symbol.  */\n  /* Default value used for initialization, for pacifying older GCCs\n     or non-GCC compilers.  */\n  YY_INITIAL_VALUE(static YYSTYPE yyval_default;)\n  YYSTYPE yylval YY_INITIAL_VALUE(= yyval_default);\n\n  /* Location data for the lookahead symbol.  */\n  static YYLTYPE yyloc_default\n#if defined HSQL_LTYPE_IS_TRIVIAL && HSQL_LTYPE_IS_TRIVIAL\n      = {1, 1, 1, 1}\n#endif\n  ;\n  YYLTYPE yylloc = yyloc_default;\n\n  /* Number of syntax errors so far.  */\n  int yynerrs;\n\n  int yystate;\n  /* Number of tokens to shift before error messages enabled.  */\n  int yyerrstatus;\n\n  /* The stacks and their tools:\n     'yyss': related to states.\n     'yyvs': related to semantic values.\n     'yyls': related to locations.\n\n     Refer to the stacks through separate pointers, to allow yyoverflow\n     to reallocate them elsewhere.  */\n\n  /* The state stack.  */\n  yytype_int16 yyssa[YYINITDEPTH];\n  yytype_int16* yyss;\n  yytype_int16* yyssp;\n\n  /* The semantic value stack.  */\n  YYSTYPE yyvsa[YYINITDEPTH];\n  YYSTYPE* yyvs;\n  YYSTYPE* yyvsp;\n\n  /* The location stack.  */\n  YYLTYPE yylsa[YYINITDEPTH];\n  YYLTYPE* yyls;\n  YYLTYPE* yylsp;\n\n  /* The locations where the error started and ended.  */\n  YYLTYPE yyerror_range[3];\n\n  YYSIZE_T yystacksize;\n\n  int yyn;\n  int yyresult;\n  /* Lookahead token as an internal (translated) token number.  */\n  int yytoken = 0;\n  /* The variables used to return semantic value and location from the\n     action routines.  */\n  YYSTYPE yyval;\n  YYLTYPE yyloc;\n\n#if YYERROR_VERBOSE\n  /* Buffer for error messages, and its allocated size.  */\n  char yymsgbuf[128];\n  char* yymsg = yymsgbuf;\n  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;\n#endif\n\n#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))\n\n  /* The number of symbols on the RHS of the reduced rule.\n     Keep to zero when no symbol should be popped.  */\n  int yylen = 0;\n\n  yyssp = yyss = yyssa;\n  yyvsp = yyvs = yyvsa;\n  yylsp = yyls = yylsa;\n  yystacksize = YYINITDEPTH;\n\n  YYDPRINTF((stderr, \"Starting parse\\n\"));\n\n  yystate = 0;\n  yyerrstatus = 0;\n  yynerrs = 0;\n  yychar = YYEMPTY; /* Cause a token to be read.  */\n\n/* User initialization code.  */\n#line 73 \"bison_parser.y\" /* yacc.c:1431  */\n  {\n    // Initialize\n    yylloc.first_column = 0;\n    yylloc.last_column = 0;\n    yylloc.first_line = 0;\n    yylloc.last_line = 0;\n    yylloc.total_column = 0;\n    yylloc.string_length = 0;\n  }\n\n#line 3332 \"bison_parser.cpp\" /* yacc.c:1431  */\n  yylsp[0] = yylloc;\n  goto yysetstate;\n\n/*------------------------------------------------------------.\n| yynewstate -- push a new state, which is found in yystate.  |\n`------------------------------------------------------------*/\nyynewstate:\n  /* In all cases, when you get here, the value and location stacks\n     have just been pushed.  So pushing a state here evens the stacks.  */\n  yyssp++;\n\n/*--------------------------------------------------------------------.\n| yynewstate -- set current state (the top of the stack) to yystate.  |\n`--------------------------------------------------------------------*/\nyysetstate:\n  *yyssp = (yytype_int16)yystate;\n\n  if (yyss + yystacksize - 1 <= yyssp)\n#if !defined yyoverflow && !defined YYSTACK_RELOCATE\n    goto yyexhaustedlab;\n#else\n  {\n    /* Get the current used size of the three stacks, in elements.  */\n    YYSIZE_T yysize = (YYSIZE_T)(yyssp - yyss + 1);\n\n#if defined yyoverflow\n    {\n      /* Give user a chance to reallocate the stack.  Use copies of\n         these so that the &'s don't force the real ones into\n         memory.  */\n      YYSTYPE* yyvs1 = yyvs;\n      yytype_int16* yyss1 = yyss;\n      YYLTYPE* yyls1 = yyls;\n\n      /* Each stack pointer address is followed by the size of the\n         data in use in that stack, in bytes.  This used to be a\n         conditional around just the two extra args, but that might\n         be undefined if yyoverflow is a macro.  */\n      yyoverflow(YY_(\"memory exhausted\"), &yyss1, yysize * sizeof(*yyssp),\n                 &yyvs1, yysize * sizeof(*yyvsp), &yyls1,\n                 yysize * sizeof(*yylsp), &yystacksize);\n      yyss = yyss1;\n      yyvs = yyvs1;\n      yyls = yyls1;\n    }\n#else /* defined YYSTACK_RELOCATE */\n    /* Extend the stack our own way.  */\n    if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab;\n    yystacksize *= 2;\n    if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH;\n\n    {\n      yytype_int16* yyss1 = yyss;\n      union yyalloc* yyptr =\n          (union yyalloc*)YYSTACK_ALLOC(YYSTACK_BYTES(yystacksize));\n      if (!yyptr) goto yyexhaustedlab;\n      YYSTACK_RELOCATE(yyss_alloc, yyss);\n      YYSTACK_RELOCATE(yyvs_alloc, yyvs);\n      YYSTACK_RELOCATE(yyls_alloc, yyls);\n#undef YYSTACK_RELOCATE\n      if (yyss1 != yyssa) YYSTACK_FREE(yyss1);\n    }\n#endif\n\n    yyssp = yyss + yysize - 1;\n    yyvsp = yyvs + yysize - 1;\n    yylsp = yyls + yysize - 1;\n\n    YYDPRINTF(\n        (stderr, \"Stack size increased to %lu\\n\", (unsigned long)yystacksize));\n\n    if (yyss + yystacksize - 1 <= yyssp) YYABORT;\n  }\n#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */\n\n  YYDPRINTF((stderr, \"Entering state %d\\n\", yystate));\n\n  if (yystate == YYFINAL) YYACCEPT;\n\n  goto yybackup;\n\n/*-----------.\n| yybackup.  |\n`-----------*/\nyybackup:\n  /* Do appropriate processing given the current state.  Read a\n     lookahead token if we need one and don't already have one.  */\n\n  /* First try to decide what to do without reference to lookahead token.  */\n  yyn = yypact[yystate];\n  if (yypact_value_is_default(yyn)) goto yydefault;\n\n  /* Not known => get a lookahead token if don't already have one.  */\n\n  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */\n  if (yychar == YYEMPTY) {\n    YYDPRINTF((stderr, \"Reading a token: \"));\n    yychar = yylex(&yylval, &yylloc, scanner);\n  }\n\n  if (yychar <= YYEOF) {\n    yychar = yytoken = YYEOF;\n    YYDPRINTF((stderr, \"Now at end of input.\\n\"));\n  } else {\n    yytoken = YYTRANSLATE(yychar);\n    YY_SYMBOL_PRINT(\"Next token is\", yytoken, &yylval, &yylloc);\n  }\n\n  /* If the proper action on seeing token YYTOKEN is to reduce or to\n     detect an error, take that action.  */\n  yyn += yytoken;\n  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault;\n  yyn = yytable[yyn];\n  if (yyn <= 0) {\n    if (yytable_value_is_error(yyn)) goto yyerrlab;\n    yyn = -yyn;\n    goto yyreduce;\n  }\n\n  /* Count tokens shifted since error; after three, turn off error\n     status.  */\n  if (yyerrstatus) yyerrstatus--;\n\n  /* Shift the lookahead token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yytoken, &yylval, &yylloc);\n\n  /* Discard the shifted token.  */\n  yychar = YYEMPTY;\n\n  yystate = yyn;\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n  *++yylsp = yylloc;\n  goto yynewstate;\n\n/*-----------------------------------------------------------.\n| yydefault -- do the default action for the current state.  |\n`-----------------------------------------------------------*/\nyydefault:\n  yyn = yydefact[yystate];\n  if (yyn == 0) goto yyerrlab;\n  goto yyreduce;\n\n/*-----------------------------.\n| yyreduce -- do a reduction.  |\n`-----------------------------*/\nyyreduce:\n  /* yyn is the number of a rule to reduce with.  */\n  yylen = yyr2[yyn];\n\n  /* If YYLEN is nonzero, implement the default value of the action:\n     '$$ = $1'.\n\n     Otherwise, the following line sets YYVAL to garbage.\n     This behavior is undocumented and Bison\n     users should not rely upon it.  Assigning to YYVAL\n     unconditionally makes the parser a bit smaller, and it avoids a\n     GCC warning that YYVAL may be used uninitialized.  */\n  yyval = yyvsp[1 - yylen];\n\n  /* Default location. */\n  YYLLOC_DEFAULT(yyloc, (yylsp - yylen), yylen);\n  yyerror_range[1] = yyloc;\n  YY_REDUCE_PRINT(yyn);\n  switch (yyn) {\n    case 2:\n#line 573 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.program_t) = NULL;\n      result->statement_list_ = (yyvsp[-1].statement_list_t);\n      result->opt_semicolon_ = (yyvsp[0].opt_semicolon_t);\n    }\n#line 3530 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 3:\n#line 582 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.statement_list_t) = new StatementList();\n      (yyval.statement_list_t)\n          ->v_statement_list_.push_back((yyvsp[0].statement_t));\n    }\n#line 3539 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 4:\n#line 586 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].statement_list_t)\n          ->v_statement_list_.push_back((yyvsp[0].statement_t));\n      (yyval.statement_list_t) = (yyvsp[-2].statement_list_t);\n    }\n#line 3548 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 5:\n#line 593 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.statement_t) = new Statement();\n      (yyval.statement_t)->sub_type_ = CASE1;\n      (yyval.statement_t)->prepare_statement_ = (yyvsp[-1].prepare_statement_t);\n      (yyval.statement_t)->optional_hints_ = (yyvsp[0].optional_hints_t);\n    }\n#line 3559 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 6:\n#line 599 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.statement_t) = new Statement();\n      (yyval.statement_t)->sub_type_ = CASE0;\n      (yyval.statement_t)->preparable_statement_ =\n          (yyvsp[-1].preparable_statement_t);\n      (yyval.statement_t)->optional_hints_ = (yyvsp[0].optional_hints_t);\n    }\n#line 3570 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 7:\n#line 605 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.statement_t) = new Statement();\n      (yyval.statement_t)->sub_type_ = CASE2;\n      (yyval.statement_t)->show_statement_ = (yyvsp[0].show_statement_t);\n    }\n#line 3580 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 8:\n#line 611 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.statement_t) = new Statement();\n      (yyval.statement_t)->sub_type_ = CASE3;\n      (yyval.statement_t)->cmd_ = (yyvsp[0].cmd_t);\n    }\n#line 3590 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 9:\n#line 620 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_pragma_t);\n    }\n#line 3596 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 10:\n#line 621 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_reindex_t);\n    }\n#line 3602 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 11:\n#line 622 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_analyze_t);\n    }\n#line 3608 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 12:\n#line 623 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_attach_t);\n    }\n#line 3614 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 13:\n#line 624 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_detach_t);\n    }\n#line 3620 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 14:\n#line 625 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].cmd_release_t);\n    }\n#line 3626 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 15:\n#line 626 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].rollback_statement_t);\n    }\n#line 3632 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 16:\n#line 627 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].vacuum_statement_t);\n    }\n#line 3638 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 17:\n#line 628 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].begin_statement_t);\n    }\n#line 3644 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 18:\n#line 629 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_t) = (yyvsp[0].commit_statement_t);\n    }\n#line 3650 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 19:\n#line 633 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_release_t) = new CmdRelease();\n      (yyval.cmd_release_t)->sub_type_ = CASE0;\n      (yyval.cmd_release_t)->savepoint_name_ = (yyvsp[0].savepoint_name_t);\n    }\n#line 3660 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 20:\n#line 638 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_release_t) = new CmdRelease();\n      (yyval.cmd_release_t)->sub_type_ = CASE1;\n      (yyval.cmd_release_t)->savepoint_name_ = (yyvsp[0].savepoint_name_t);\n    }\n#line 3670 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 21:\n#line 646 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.savepoint_name_t) = new SavepointName();\n      (yyval.savepoint_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_savepoint_name);\n      free((yyvsp[0].sval));\n    }\n#line 3680 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 22:\n#line 654 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_pragma_t) = new CmdPragma();\n      (yyval.cmd_pragma_t)->sub_type_ = CASE0;\n      (yyval.cmd_pragma_t)->pragma_key_ = (yyvsp[0].pragma_key_t);\n    }\n#line 3690 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 23:\n#line 659 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_pragma_t) = new CmdPragma();\n      (yyval.cmd_pragma_t)->sub_type_ = CASE1;\n      (yyval.cmd_pragma_t)->pragma_key_ = (yyvsp[-2].pragma_key_t);\n      (yyval.cmd_pragma_t)->pragma_value_ = (yyvsp[0].pragma_value_t);\n    }\n#line 3701 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 24:\n#line 665 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_pragma_t) = new CmdPragma();\n      (yyval.cmd_pragma_t)->sub_type_ = CASE2;\n      (yyval.cmd_pragma_t)->pragma_key_ = (yyvsp[-3].pragma_key_t);\n      (yyval.cmd_pragma_t)->pragma_value_ = (yyvsp[-1].pragma_value_t);\n    }\n#line 3712 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 25:\n#line 674 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_reindex_t) = new CmdReindex();\n      (yyval.cmd_reindex_t)->sub_type_ = CASE0;\n    }\n#line 3718 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 26:\n#line 675 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_reindex_t) = new CmdReindex();\n      (yyval.cmd_reindex_t)->sub_type_ = CASE1;\n      (yyval.cmd_reindex_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.cmd_reindex_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 3724 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 27:\n#line 679 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_analyze_t) = new CmdAnalyze();\n      (yyval.cmd_analyze_t)->sub_type_ = CASE0;\n    }\n#line 3730 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 28:\n#line 680 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_analyze_t) = new CmdAnalyze();\n      (yyval.cmd_analyze_t)->sub_type_ = CASE1;\n      (yyval.cmd_analyze_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.cmd_analyze_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 3736 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 29:\n#line 684 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_attach_t) = new CmdAttach();\n      (yyval.cmd_attach_t)->sub_type_ = CASE0;\n      (yyval.cmd_attach_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.cmd_attach_t)->schema_name_ = (yyvsp[0].schema_name_t);\n    }\n#line 3747 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 30:\n#line 690 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_attach_t) = new CmdAttach();\n      (yyval.cmd_attach_t)->sub_type_ = CASE1;\n      (yyval.cmd_attach_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.cmd_attach_t)->schema_name_ = (yyvsp[0].schema_name_t);\n    }\n#line 3758 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 31:\n#line 699 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_detach_t) = new CmdDetach();\n      (yyval.cmd_detach_t)->sub_type_ = CASE0;\n      (yyval.cmd_detach_t)->schema_name_ = (yyvsp[0].schema_name_t);\n    }\n#line 3768 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 32:\n#line 704 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cmd_detach_t) = new CmdDetach();\n      (yyval.cmd_detach_t)->sub_type_ = CASE1;\n      (yyval.cmd_detach_t)->schema_name_ = (yyvsp[0].schema_name_t);\n    }\n#line 3778 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 33:\n#line 712 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_key_t) = new PragmaKey();\n      (yyval.pragma_key_t)->sub_type_ = CASE0;\n      (yyval.pragma_key_t)->pragma_name_ = (yyvsp[0].pragma_name_t);\n    }\n#line 3784 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 34:\n#line 713 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_key_t) = new PragmaKey();\n      (yyval.pragma_key_t)->sub_type_ = CASE1;\n      (yyval.pragma_key_t)->schema_name_ = (yyvsp[-2].schema_name_t);\n      (yyval.pragma_key_t)->pragma_name_ = (yyvsp[0].pragma_name_t);\n    }\n#line 3790 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 35:\n#line 717 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE0;\n      (yyval.pragma_value_t)->num_literal_ = (yyvsp[0].num_literal_t);\n    }\n#line 3796 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 36:\n#line 718 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE1;\n      (yyval.pragma_value_t)->string_literal_ = (yyvsp[0].string_literal_t);\n    }\n#line 3802 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 37:\n#line 719 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE2;\n      (yyval.pragma_value_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_pragma_value);\n      free((yyvsp[0].sval));\n    }\n#line 3808 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 38:\n#line 720 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE2;\n      (yyval.pragma_value_t)->id_ = new Identifier(\"ON\", id_pragma_value);\n    }\n#line 3814 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 39:\n#line 721 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE2;\n      (yyval.pragma_value_t)->id_ = new Identifier(\"DELETE\", id_pragma_value);\n    }\n#line 3820 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 40:\n#line 722 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_value_t) = new PragmaValue();\n      (yyval.pragma_value_t)->sub_type_ = CASE2;\n      (yyval.pragma_value_t)->id_ = new Identifier(\"DEFAULT\", id_pragma_value);\n    }\n#line 3826 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 41:\n#line 726 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.schema_name_t) = new SchemaName();\n      (yyval.schema_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_schema_name);\n      free((yyvsp[0].sval));\n    }\n#line 3834 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 42:\n#line 732 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.pragma_name_t) = new PragmaName();\n      (yyval.pragma_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_pragma_name);\n      free((yyvsp[0].sval));\n    }\n#line 3840 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 43:\n#line 738 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].select_statement_t);\n    }\n#line 3846 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 44:\n#line 739 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].import_statement_t);\n    }\n#line 3852 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 45:\n#line 740 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].create_statement_t);\n    }\n#line 3858 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 46:\n#line 741 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].insert_statement_t);\n    }\n#line 3864 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 47:\n#line 742 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].delete_statement_t);\n    }\n#line 3870 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 48:\n#line 743 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].delete_statement_t);\n    }\n#line 3876 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 49:\n#line 744 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].update_statement_t);\n    }\n#line 3882 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 50:\n#line 745 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].drop_statement_t);\n    }\n#line 3888 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 51:\n#line 746 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].execute_statement_t);\n    }\n#line 3894 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 52:\n#line 747 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.preparable_statement_t) = (yyvsp[0].alter_statement_t);\n    }\n#line 3900 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 53:\n#line 751 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.rollback_statement_t) = new RollbackStatement();\n      (yyval.rollback_statement_t)->opt_transaction_ =\n          (yyvsp[-1].opt_transaction_t);\n      (yyval.rollback_statement_t)->opt_to_savepoint_ =\n          (yyvsp[0].opt_to_savepoint_t);\n    }\n#line 3910 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 54:\n#line 759 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_transaction_t) = new OptTransaction();\n      (yyval.opt_transaction_t)->sub_type_ = CASE0;\n      (yyval.opt_transaction_t)->str_val_ = string(\"TRANSACTION\");\n    }\n#line 3920 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 55:\n#line 764 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_transaction_t) = new OptTransaction();\n      (yyval.opt_transaction_t)->sub_type_ = CASE1;\n      (yyval.opt_transaction_t)->str_val_ = string(\"\");\n    }\n#line 3930 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 56:\n#line 772 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_to_savepoint_t) = new OptToSavepoint();\n      (yyval.opt_to_savepoint_t)->sub_type_ = CASE0;\n      (yyval.opt_to_savepoint_t)->savepoint_name_ = (yyvsp[0].savepoint_name_t);\n    }\n#line 3940 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 57:\n#line 777 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_to_savepoint_t) = new OptToSavepoint();\n      (yyval.opt_to_savepoint_t)->sub_type_ = CASE1;\n      (yyval.opt_to_savepoint_t)->savepoint_name_ = (yyvsp[0].savepoint_name_t);\n    }\n#line 3950 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 58:\n#line 782 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_to_savepoint_t) = new OptToSavepoint();\n      (yyval.opt_to_savepoint_t)->sub_type_ = CASE2;\n    }\n#line 3959 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 59:\n#line 790 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.vacuum_statement_t) = new VacuumStatement();\n      (yyval.vacuum_statement_t)->sub_type_ = CASE0;\n      (yyval.vacuum_statement_t)->opt_schema_name_ =\n          (yyvsp[-2].opt_schema_name_t);\n      (yyval.vacuum_statement_t)->file_path_ = (yyvsp[0].file_path_t);\n    }\n#line 3970 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 60:\n#line 796 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.vacuum_statement_t) = new VacuumStatement();\n      (yyval.vacuum_statement_t)->sub_type_ = CASE1;\n      (yyval.vacuum_statement_t)->opt_schema_name_ =\n          (yyvsp[0].opt_schema_name_t);\n    }\n#line 3980 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 61:\n#line 804 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_schema_name_t) = new OptSchemaName();\n      (yyval.opt_schema_name_t)->sub_type_ = CASE0;\n      (yyval.opt_schema_name_t)->schema_name_ = (yyvsp[0].schema_name_t);\n    }\n#line 3990 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 62:\n#line 809 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_schema_name_t) = new OptSchemaName();\n      (yyval.opt_schema_name_t)->sub_type_ = CASE1;\n    }\n#line 3999 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 63:\n#line 816 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.begin_statement_t) = new BeginStatement();\n      (yyval.begin_statement_t)->sub_type_ = CASE0;\n      (yyval.begin_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4009 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 64:\n#line 821 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.begin_statement_t) = new BeginStatement();\n      (yyval.begin_statement_t)->sub_type_ = CASE1;\n      (yyval.begin_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4019 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 65:\n#line 826 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.begin_statement_t) = new BeginStatement();\n      (yyval.begin_statement_t)->sub_type_ = CASE2;\n      (yyval.begin_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4029 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 66:\n#line 831 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.begin_statement_t) = new BeginStatement();\n      (yyval.begin_statement_t)->sub_type_ = CASE3;\n      (yyval.begin_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4039 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 67:\n#line 839 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.commit_statement_t) = new CommitStatement();\n      (yyval.commit_statement_t)->sub_type_ = CASE0;\n      (yyval.commit_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4049 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 68:\n#line 844 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.commit_statement_t) = new CommitStatement();\n      (yyval.commit_statement_t)->sub_type_ = CASE1;\n      (yyval.commit_statement_t)->opt_transaction_ =\n          (yyvsp[0].opt_transaction_t);\n    }\n#line 4059 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 69:\n#line 853 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_upsert_clause_t) = new OptUpsertClause();\n      (yyval.opt_upsert_clause_t)->sub_type_ = CASE0;\n      (yyval.opt_upsert_clause_t)->upsert_clause_ = (yyvsp[0].upsert_clause_t);\n    }\n#line 4065 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 70:\n#line 854 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_upsert_clause_t) = new OptUpsertClause();\n      (yyval.opt_upsert_clause_t)->sub_type_ = CASE1;\n    }\n#line 4071 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 71:\n#line 857 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.upsert_clause_t) = new UpsertClause();\n      (yyval.upsert_clause_t)->sub_type_ = CASE0;\n    }\n#line 4080 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 72:\n#line 861 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.upsert_clause_t) = new UpsertClause();\n      (yyval.upsert_clause_t)->sub_type_ = CASE1;\n      (yyval.upsert_clause_t)->assign_list_ = (yyvsp[-1].assign_list_t);\n      (yyval.upsert_clause_t)->opt_where1_ = (yyvsp[0].opt_where_t);\n    }\n#line 4091 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 73:\n#line 867 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.upsert_clause_t) = new UpsertClause();\n      (yyval.upsert_clause_t)->sub_type_ = CASE2;\n      (yyval.upsert_clause_t)->indexed_column_list_ =\n          (yyvsp[-4].indexed_column_list_t);\n      (yyval.upsert_clause_t)->opt_where1_ = (yyvsp[-2].opt_where_t);\n    }\n#line 4102 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 74:\n#line 873 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.upsert_clause_t) = new UpsertClause();\n      (yyval.upsert_clause_t)->sub_type_ = CASE3;\n      (yyval.upsert_clause_t)->indexed_column_list_ =\n          (yyvsp[-7].indexed_column_list_t);\n      (yyval.upsert_clause_t)->opt_where1_ = (yyvsp[-5].opt_where_t);\n      (yyval.upsert_clause_t)->assign_list_ = (yyvsp[-1].assign_list_t);\n      (yyval.upsert_clause_t)->opt_where2_ = (yyvsp[0].opt_where_t);\n    }\n#line 4115 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 75:\n#line 885 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_list_t) = new IndexedColumnList();\n      (yyval.indexed_column_list_t)\n          ->v_indexed_column_list_.push_back((yyvsp[0].indexed_column_t));\n    }\n#line 4124 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 76:\n#line 889 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].indexed_column_list_t)\n          ->v_indexed_column_list_.push_back((yyvsp[0].indexed_column_t));\n      (yyval.indexed_column_list_t) = (yyvsp[-2].indexed_column_list_t);\n    }\n#line 4133 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 77:\n#line 896 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.indexed_column_t) = new IndexedColumn();\n      (yyval.indexed_column_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.indexed_column_t)->opt_collate_ = (yyvsp[-1].opt_collate_t);\n      (yyval.indexed_column_t)->opt_order_type_ = (yyvsp[0].opt_order_type_t);\n    }\n#line 4144 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 78:\n#line 905 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_collate_t) = new OptCollate();\n      (yyval.opt_collate_t)->sub_type_ = CASE0;\n      (yyval.opt_collate_t)->collation_name_ = (yyvsp[0].collation_name_t);\n    }\n#line 4154 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 79:\n#line 910 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_collate_t) = new OptCollate();\n      (yyval.opt_collate_t)->sub_type_ = CASE1;\n      (yyval.opt_collate_t)->str_val_ = string(\"\");\n    }\n#line 4164 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 80:\n#line 919 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.assign_list_t) = new AssignList();\n      (yyval.assign_list_t)\n          ->v_assign_list_.push_back((yyvsp[0].assign_clause_t));\n\n    }\n#line 4174 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 81:\n#line 924 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].assign_list_t)\n          ->v_assign_list_.push_back((yyvsp[0].assign_clause_t));\n      (yyval.assign_list_t) = (yyvsp[-2].assign_list_t);\n    }\n#line 4183 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 82:\n#line 932 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_null_t) = new OptNull();\n      (yyval.opt_null_t)->str_val_ = string(\"NULLS FIRST\");\n    }\n#line 4192 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 83:\n#line 936 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_null_t) = new OptNull();\n      (yyval.opt_null_t)->str_val_ = string(\"NULLS LAST\");\n    }\n#line 4201 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 84:\n#line 940 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_null_t) = new OptNull();\n      (yyval.opt_null_t)->str_val_ = string(\"\");\n    }\n#line 4210 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 85:\n#line 947 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.assign_clause_t) = new AssignClause();\n      (yyval.assign_clause_t)->column_name_list_ =\n          (yyvsp[-2].column_name_list_t);\n      (yyval.assign_clause_t)->expr_ = (yyvsp[0].expr_t);\n    }\n#line 4220 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 86:\n#line 955 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_list_t) = new ColumnNameList();\n      (yyval.column_name_list_t)\n          ->v_column_name_list_.push_back((yyvsp[0].column_name_t));\n    }\n#line 4229 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 87:\n#line 959 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].column_name_list_t)\n          ->v_column_name_list_.push_back((yyvsp[0].column_name_t));\n      (yyval.column_name_list_t) = (yyvsp[-2].column_name_list_t);\n    }\n#line 4238 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 88:\n#line 966 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.collation_name_t) = new CollationName();\n      (yyval.collation_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_collation_name);\n      free((yyvsp[0].sval));\n    }\n#line 4248 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 89:\n#line 978 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.optional_hints_t) = new OptionalHints();\n      (yyval.optional_hints_t)->sub_type_ = CASE0;\n      (yyval.optional_hints_t)->hint_list_ = (yyvsp[-1].hint_list_t);\n    }\n#line 4258 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 90:\n#line 983 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.optional_hints_t) = new OptionalHints();\n      (yyval.optional_hints_t)->sub_type_ = CASE1;\n    }\n#line 4264 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 91:\n#line 988 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.hint_list_t) = new HintList();\n      (yyval.hint_list_t)->v_hint_list_.push_back((yyvsp[0].hint_t));\n    }\n#line 4273 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 92:\n#line 992 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].hint_list_t)->v_hint_list_.push_back((yyvsp[0].hint_t));\n      (yyval.hint_list_t) = (yyvsp[-2].hint_list_t);\n    }\n#line 4279 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 93:\n#line 996 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.hint_t) = new Hint();\n      (yyval.hint_t)->sub_type_ = CASE1;\n      (yyval.hint_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 4290 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 94:\n#line 1002 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.hint_t) = new Hint();\n      (yyval.hint_t)->sub_type_ = CASE0;\n      (yyval.hint_t)->id_ = new Identifier((yyvsp[-3].sval));\n      (yyval.hint_t)->literal_list_ = (yyvsp[-1].literal_list_t);\n      free((yyvsp[-3].sval));\n    }\n#line 4302 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 95:\n#line 1016 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.prepare_statement_t) = new PrepareStatement();\n      (yyval.prepare_statement_t)->id_ = new Identifier((yyvsp[-2].sval));\n      (yyval.prepare_statement_t)->prep_target_que_ =\n          (yyvsp[0].prepare_target_query_t);\n      free((yyvsp[-2].sval));\n    }\n#line 4313 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 96:\n#line 1025 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.prepare_target_query_t) = new PrepareTargetQuery();\n      (yyval.prepare_target_query_t)->prep_target_que_ =\n          \"'\" + string((yyvsp[0].sval)) + \"'\";\n      free((yyvsp[0].sval));\n    }\n#line 4323 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 97:\n#line 1033 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.execute_statement_t) = new ExecuteStatement();\n      (yyval.execute_statement_t)->sub_type_ = CASE0;\n      (yyval.execute_statement_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 4334 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 98:\n#line 1039 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.execute_statement_t) = new ExecuteStatement();\n      (yyval.execute_statement_t)->sub_type_ = CASE1;\n      (yyval.execute_statement_t)->id_ = new Identifier((yyvsp[-3].sval));\n      (yyval.execute_statement_t)->opt_literal_list_ =\n          (yyvsp[-1].opt_literal_list_t);\n      free((yyvsp[-3].sval));\n    }\n#line 4346 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 99:\n#line 1053 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.import_statement_t) = new ImportStatement();\n      (yyval.import_statement_t)->import_file_type_ =\n          (yyvsp[-4].import_file_type_t);\n      (yyval.import_statement_t)->file_path_ = (yyvsp[-2].file_path_t);\n      (yyval.import_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n    }\n#line 4357 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 100:\n#line 1062 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.import_file_type_t) = new ImportFileType();\n      (yyval.import_file_type_t)->str_val_ = \"CSV\";\n    }\n#line 4363 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 101:\n#line 1066 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.file_path_t) = new FilePath();\n      (yyval.file_path_t)->str_val_ = (yyvsp[0].string_literal_t)->str_val_;\n      delete ((yyvsp[0].string_literal_t));\n    }\n#line 4373 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 102:\n#line 1080 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.show_statement_t) = new ShowStatement();\n      (yyval.show_statement_t)->sub_type_ = CASE0;\n    }\n#line 4382 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 103:\n#line 1084 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.show_statement_t) = new ShowStatement();\n      (yyval.show_statement_t)->sub_type_ = CASE1;\n      (yyval.show_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.show_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 4393 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 104:\n#line 1090 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.show_statement_t) = new ShowStatement();\n      (yyval.show_statement_t)->sub_type_ = CASE2;\n      (yyval.show_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.show_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 4404 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 105:\n#line 1105 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_statement_t) = new AlterStatement();\n      (yyval.alter_statement_t)->sub_type_ = CASE0;\n      (yyval.alter_statement_t)->table_name1_ = (yyvsp[-3].table_name_t);\n      (yyval.alter_statement_t)->table_name2_ = (yyvsp[0].table_name_t);\n    }\n#line 4415 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 106:\n#line 1111 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_statement_t) = new AlterStatement();\n      (yyval.alter_statement_t)->sub_type_ = CASE1;\n      (yyval.alter_statement_t)->table_name1_ = (yyvsp[-5].table_name_t);\n      (yyval.alter_statement_t)->opt_column_ = (yyvsp[-3].opt_column_t);\n      (yyval.alter_statement_t)->column_name1_ = (yyvsp[-2].column_name_t);\n      (yyval.alter_statement_t)->column_name2_ = (yyvsp[0].column_name_t);\n    }\n#line 4428 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 107:\n#line 1119 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.alter_statement_t) = new AlterStatement();\n      (yyval.alter_statement_t)->sub_type_ = CASE2;\n      (yyval.alter_statement_t)->table_name1_ = (yyvsp[-3].table_name_t);\n      (yyval.alter_statement_t)->opt_column_ = (yyvsp[-1].opt_column_t);\n      (yyval.alter_statement_t)->column_def_ = (yyvsp[0].column_def_t);\n    }\n#line 4440 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 108:\n#line 1129 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->sub_type_ = CASE0;\n      (yyval.opt_column_t)->str_val_ = string(\"COLUMN\");\n    }\n#line 4450 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 109:\n#line 1134 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_t) = new OptColumn();\n      (yyval.opt_column_t)->sub_type_ = CASE1;\n      (yyval.opt_column_t)->str_val_ = string(\"\");\n    }\n#line 4460 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 110:\n#line 1148 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE0;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-5].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.create_statement_t)->file_path_ = (yyvsp[0].file_path_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n    }\n#line 4473 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 111:\n#line 1156 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE1;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-4].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.create_statement_t)->column_def_comma_list_ =\n          (yyvsp[-1].column_def_comma_list_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n    }\n#line 4486 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 112:\n#line 1164 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE2;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-3].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-2].table_name_t);\n      (yyval.create_statement_t)->select_statement_ =\n          (yyvsp[0].select_statement_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n    }\n#line 4499 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 113:\n#line 1172 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE3;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-4].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n      (yyval.create_statement_t)->opt_column_list_ =\n          (yyvsp[-2].opt_column_list_t);\n      if ((yyval.create_statement_t)->opt_column_list_->sub_type_ == CASE0)\n        for (auto& i :\n             (yyval.create_statement_t)\n                 ->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n          i->id_type_ = id_create_column_name;\n        }\n      (yyval.create_statement_t)->select_statement_ =\n          (yyvsp[0].select_statement_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n    }\n#line 4518 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 114:\n#line 1187 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE4;\n      (yyval.create_statement_t)->opt_unique_ = (yyvsp[-9].opt_unique_t);\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-7].opt_not_exists_t);\n      (yyval.create_statement_t)->index_name_ = (yyvsp[-6].index_name_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.create_statement_t)->ident_commalist_ =\n          (yyvsp[-2].ident_commalist_t);\n      for (auto& i :\n           (yyval.create_statement_t)->ident_commalist_->v_iden_comma_list_) {\n        i->id_type_ = id_column_name;\n      }\n      (yyval.create_statement_t)->opt_where_ = (yyvsp[0].opt_where_t);\n    }\n#line 4537 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 115:\n#line 1201 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE5;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-3].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-2].table_name_t);\n      (yyval.create_statement_t)->module_name_ = (yyvsp[0].module_name_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n    }\n#line 4550 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 116:\n#line 1209 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE6;\n      (yyval.create_statement_t)->opt_not_exists_ =\n          (yyvsp[-6].opt_not_exists_t);\n      (yyval.create_statement_t)->table_name_ = (yyvsp[-5].table_name_t);\n      (yyval.create_statement_t)->module_name_ = (yyvsp[-3].module_name_t);\n      (yyval.create_statement_t)->table_name_->table_name_->id_type_ =\n          id_create_table_name;\n      (yyval.create_statement_t)->column_def_comma_list_ =\n          (yyvsp[-1].column_def_comma_list_t);\n    }\n#line 4564 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 117:\n#line 1218 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.create_statement_t) = new CreateStatement();\n      (yyval.create_statement_t)->sub_type_ = CASE7;\n      (yyval.create_statement_t)->trigger_declare_ =\n          (yyvsp[-3].trigger_declare_t);\n      (yyval.create_statement_t)->trigger_cmd_list_ =\n          (yyvsp[-1].trigger_cmd_list_t);\n    }\n#line 4575 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 118:\n#line 1227 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_unique_t) = new OptUnique();\n      (yyval.opt_unique_t)->str_val_ = string(\"UNIQUE\");\n    }\n#line 4581 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 119:\n#line 1228 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_unique_t) = new OptUnique();\n      (yyval.opt_unique_t)->str_val_ = string(\"\");\n    }\n#line 4587 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 120:\n#line 1232 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.index_name_t) = new IndexName();\n      (yyval.index_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_index_name);\n      free((yyvsp[0].sval));\n    }\n#line 4593 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 121:\n#line 1236 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_declare_t) = new TriggerDeclare();\n      (yyval.trigger_declare_t)->opt_tmp_ = (yyvsp[-9].opt_tmp_t);\n      (yyval.trigger_declare_t)->opt_not_exists_ = (yyvsp[-7].opt_not_exists_t);\n      (yyval.trigger_declare_t)->trigger_name_ = (yyvsp[-6].trigger_name_t);\n      (yyval.trigger_declare_t)->opt_trigger_time_ =\n          (yyvsp[-5].opt_trigger_time_t);\n      (yyval.trigger_declare_t)->trigger_event_ = (yyvsp[-4].trigger_event_t);\n      (yyval.trigger_declare_t)->table_name_ = (yyvsp[-2].table_name_t);\n      (yyval.trigger_declare_t)->opt_for_each_ = (yyvsp[-1].opt_for_each_t);\n      (yyval.trigger_declare_t)->opt_when_ = (yyvsp[0].opt_when_t);\n    }\n#line 4609 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 122:\n#line 1250 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_tmp_t) = new OptTmp();\n      (yyval.opt_tmp_t)->str_val_ = string(\"TEMP\");\n    }\n#line 4615 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 123:\n#line 1251 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_tmp_t) = new OptTmp();\n      (yyval.opt_tmp_t)->str_val_ = string(\"\");\n    }\n#line 4621 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 124:\n#line 1255 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_name_t) = new TriggerName();\n      (yyval.trigger_name_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_trigger_name);\n      free((yyvsp[0].sval));\n    }\n#line 4627 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 125:\n#line 1259 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_trigger_time_t) = new OptTriggerTime();\n      (yyval.opt_trigger_time_t)->str_val_ = string(\"BEFORE\");\n    }\n#line 4633 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 126:\n#line 1260 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_trigger_time_t) = new OptTriggerTime();\n      (yyval.opt_trigger_time_t)->str_val_ = string(\"AFTER\");\n    }\n#line 4639 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 127:\n#line 1261 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_trigger_time_t) = new OptTriggerTime();\n      (yyval.opt_trigger_time_t)->str_val_ = string(\"INSTEAD OF\");\n    }\n#line 4645 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 128:\n#line 1262 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_trigger_time_t) = new OptTriggerTime();\n      (yyval.opt_trigger_time_t)->str_val_ = string(\"\");\n    }\n#line 4651 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 129:\n#line 1266 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_event_t) = new TriggerEvent();\n      (yyval.trigger_event_t)->sub_type_ = CASE0;\n    }\n#line 4657 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 130:\n#line 1267 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_event_t) = new TriggerEvent();\n      (yyval.trigger_event_t)->sub_type_ = CASE1;\n    }\n#line 4663 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 131:\n#line 1268 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_event_t) = new TriggerEvent();\n      (yyval.trigger_event_t)->sub_type_ = CASE2;\n      (yyval.trigger_event_t)->opt_of_column_list_ =\n          (yyvsp[0].opt_of_column_list_t);\n    }\n#line 4669 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 132:\n#line 1272 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_of_column_list_t) = new OptOfColumnList();\n      (yyval.opt_of_column_list_t)->sub_type_ = CASE0;\n      (yyval.opt_of_column_list_t)->ident_commalist_ =\n          (yyvsp[0].ident_commalist_t);\n    }\n#line 4675 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 133:\n#line 1273 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_of_column_list_t) = new OptOfColumnList();\n      (yyval.opt_of_column_list_t)->sub_type_ = CASE1;\n    }\n#line 4681 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 134:\n#line 1277 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_for_each_t) = new OptForEach();\n      (yyval.opt_for_each_t)->str_val_ = string(\"FOR EACH ROW\");\n    }\n#line 4687 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 135:\n#line 1278 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_for_each_t) = new OptForEach();\n      (yyval.opt_for_each_t)->str_val_ = string(\"\");\n    }\n#line 4693 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 136:\n#line 1282 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_when_t) = new OptWhen();\n      (yyval.opt_when_t)->sub_type_ = CASE0;\n      (yyval.opt_when_t)->expr_ = (yyvsp[0].expr_t);\n    }\n#line 4699 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 137:\n#line 1283 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_when_t) = new OptWhen();\n      (yyval.opt_when_t)->sub_type_ = CASE1;\n    }\n#line 4705 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 138:\n#line 1287 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_cmd_list_t) = new TriggerCmdList();\n      (yyval.trigger_cmd_list_t)\n          ->v_trigger_cmd_list_.push_back((yyvsp[-1].trigger_cmd_t));\n    }\n#line 4711 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 139:\n#line 1288 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].trigger_cmd_list_t)\n          ->v_trigger_cmd_list_.push_back((yyvsp[-1].trigger_cmd_t));\n      (yyval.trigger_cmd_list_t) = (yyvsp[-2].trigger_cmd_list_t);\n    }\n#line 4717 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 140:\n#line 1292 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_cmd_t) = new TriggerCmd();\n      (yyval.trigger_cmd_t)->stmt_ = (yyvsp[0].select_statement_t);\n    }\n#line 4723 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 141:\n#line 1293 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_cmd_t) = new TriggerCmd();\n      (yyval.trigger_cmd_t)->stmt_ = (yyvsp[0].update_statement_t);\n    }\n#line 4729 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 142:\n#line 1294 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_cmd_t) = new TriggerCmd();\n      (yyval.trigger_cmd_t)->stmt_ = (yyvsp[0].insert_statement_t);\n    }\n#line 4735 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 143:\n#line 1295 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.trigger_cmd_t) = new TriggerCmd();\n      (yyval.trigger_cmd_t)->stmt_ = (yyvsp[0].delete_statement_t);\n    }\n#line 4741 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 144:\n#line 1299 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.module_name_t) = new ModuleName();\n      (yyval.module_name_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 4747 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 145:\n#line 1304 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_exists_t) = new OptNotExists();\n      (yyval.opt_not_exists_t)->sub_type_ = CASE0;\n    }\n#line 4753 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 146:\n#line 1305 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_not_exists_t) = new OptNotExists();\n      (yyval.opt_not_exists_t)->sub_type_ = CASE1;\n    }\n#line 4759 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 147:\n#line 1309 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_comma_list_t) = new ColumnDefCommaList();\n      (yyval.column_def_comma_list_t)\n          ->v_column_def_comma_list_.push_back((yyvsp[0].column_def_t));\n    }\n#line 4768 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 148:\n#line 1313 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].column_def_comma_list_t)\n          ->v_column_def_comma_list_.push_back((yyvsp[0].column_def_t));\n      (yyval.column_def_comma_list_t) = (yyvsp[-2].column_def_comma_list_t);\n    }\n#line 4777 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 149:\n#line 1320 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_def_t) = new ColumnDef();\n      (yyval.column_def_t)->id_ =\n          new Identifier((yyvsp[-2].sval), id_create_column_name);\n      (yyval.column_def_t)->column_type_ = (yyvsp[-1].column_type_t);\n      (yyval.column_def_t)->opt_column_arglist_ =\n          (yyvsp[0].opt_column_arglist_t);\n      free((yyvsp[-2].sval));\n    }\n#line 4789 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 150:\n#line 1331 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_arglist_t) = new OptColumnArglist();\n      (yyval.opt_column_arglist_t)->sub_type_ = CASE0;\n      (yyval.opt_column_arglist_t)->column_arglist_ =\n          (yyvsp[0].column_arglist_t);\n    }\n#line 4795 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 151:\n#line 1332 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_arglist_t) = new OptColumnArglist();\n      (yyval.opt_column_arglist_t)->sub_type_ = CASE1;\n    }\n#line 4801 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 152:\n#line 1336 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-1].column_arglist_t)\n          ->v_column_arg_.push_back((yyvsp[0].column_arg_t));\n      (yyval.column_arglist_t) = (yyvsp[-1].column_arglist_t);\n    }\n#line 4810 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 153:\n#line 1340 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arglist_t) = new ColumnArglist();\n      (yyval.column_arglist_t)\n          ->v_column_arg_.push_back((yyvsp[0].column_arg_t));\n    }\n#line 4819 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 154:\n#line 1347 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE0;\n      (yyval.column_arg_t)->opt_on_conflict_ = (yyvsp[0].opt_on_conflict_t);\n    }\n#line 4825 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 155:\n#line 1348 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE1;\n      (yyval.column_arg_t)->opt_on_conflict_ = (yyvsp[0].opt_on_conflict_t);\n    }\n#line 4831 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 156:\n#line 1349 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE2;\n      (yyval.column_arg_t)->opt_order_type_ = (yyvsp[-2].opt_order_type_t);\n      (yyval.column_arg_t)->opt_on_conflict_ = (yyvsp[-1].opt_on_conflict_t);\n      (yyval.column_arg_t)->opt_autoinc_ = (yyvsp[0].opt_autoinc_t);\n    }\n#line 4843 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 157:\n#line 1356 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE3;\n      (yyval.column_arg_t)->opt_on_conflict_ = (yyvsp[0].opt_on_conflict_t);\n    }\n#line 4849 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 158:\n#line 1357 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE4;\n      (yyval.column_arg_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 4855 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 159:\n#line 1358 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE5;\n      (yyval.column_arg_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 4861 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 160:\n#line 1359 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_arg_t) = new ColumnArg();\n      (yyval.column_arg_t)->sub_type_ = CASE6;\n      (yyval.column_arg_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 4867 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 161:\n#line 1364 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->sub_type_ = CASE0;\n      (yyval.opt_on_conflict_t)->resolve_type_ = (yyvsp[0].resolve_type_t);\n    }\n#line 4873 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 162:\n#line 1365 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_conflict_t) = new OptOnConflict();\n      (yyval.opt_on_conflict_t)->sub_type_ = CASE1;\n    }\n#line 4879 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 163:\n#line 1369 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.resolve_type_t) = new ResolveType();\n      (yyval.resolve_type_t)->str_val_ = string(\"IGNORE\");\n    }\n#line 4885 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 164:\n#line 1370 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.resolve_type_t) = new ResolveType();\n      (yyval.resolve_type_t)->str_val_ = string(\"REPLACE\");\n    }\n#line 4891 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 165:\n#line 1371 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.resolve_type_t) = new ResolveType();\n      (yyval.resolve_type_t)->str_val_ = string(\"ROLLBACK\");\n    }\n#line 4897 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 166:\n#line 1372 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.resolve_type_t) = new ResolveType();\n      (yyval.resolve_type_t)->str_val_ = string(\"ABORT\");\n    }\n#line 4903 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 167:\n#line 1373 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.resolve_type_t) = new ResolveType();\n      (yyval.resolve_type_t)->str_val_ = string(\"FAIL\");\n    }\n#line 4909 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 168:\n#line 1377 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_autoinc_t) = new OptAutoinc();\n      (yyval.opt_autoinc_t)->str_val_ = string(\"AUTOINCR\");\n    }\n#line 4915 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 169:\n#line 1378 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_autoinc_t) = new OptAutoinc();\n      (yyval.opt_autoinc_t)->str_val_ = string(\"\");\n    }\n#line 4921 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 170:\n#line 1383 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"INT\");\n    }\n#line 4927 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 171:\n#line 1384 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"INTEGER\");\n    }\n#line 4933 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 172:\n#line 1385 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"LONG\");\n    }\n#line 4939 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 173:\n#line 1386 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"FLOAT\");\n    }\n#line 4945 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 174:\n#line 1387 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"DOUBLE\");\n    }\n#line 4951 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 175:\n#line 1388 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ =\n          string(\"VARCHAR(\") + to_string((yyvsp[-1].ival)) + \")\";\n    }\n#line 4960 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 176:\n#line 1392 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ =\n          string(\"CHAR(\") + to_string((yyvsp[-1].ival)) + \")\";\n    }\n#line 4968 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 177:\n#line 1395 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"TEXT\");\n    }\n#line 4974 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 178:\n#line 1396 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_type_t) = new ColumnType();\n      (yyval.column_type_t)->str_val_ = string(\"\");\n    }\n#line 4980 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 179:\n#line 1406 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_statement_t) = new DropStatement();\n      (yyval.drop_statement_t)->sub_type_ = CASE0;\n      (yyval.drop_statement_t)->opt_exists_ = (yyvsp[-1].opt_exists_t);\n      (yyval.drop_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.drop_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.drop_statement_t)->id_ = NULL;\n    }\n#line 4993 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 180:\n#line 1414 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_statement_t) = new DropStatement();\n      (yyval.drop_statement_t)->sub_type_ = CASE1;\n      (yyval.drop_statement_t)->opt_exists_ = (yyvsp[-1].opt_exists_t);\n      (yyval.drop_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.drop_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.drop_statement_t)->id_ = NULL;\n    }\n#line 5006 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 181:\n#line 1422 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_statement_t) = new DropStatement();\n      (yyval.drop_statement_t)->sub_type_ = CASE2;\n      (yyval.drop_statement_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 5017 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 182:\n#line 1428 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_statement_t) = new DropStatement();\n      (yyval.drop_statement_t)->sub_type_ = CASE3;\n      (yyval.drop_statement_t)->opt_exists_ = (yyvsp[-3].opt_exists_t);\n      (yyval.drop_statement_t)->schema_name_ = (yyvsp[-2].schema_name_t);\n      (yyval.drop_statement_t)->trigger_name_ = (yyvsp[0].trigger_name_t);\n    }\n#line 5029 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 183:\n#line 1436 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.drop_statement_t) = new DropStatement();\n      (yyval.drop_statement_t)->sub_type_ = CASE4;\n      (yyval.drop_statement_t)->opt_exists_ = (yyvsp[-1].opt_exists_t);\n      (yyval.drop_statement_t)->trigger_name_ = (yyvsp[0].trigger_name_t);\n    }\n#line 5040 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 184:\n#line 1445 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exists_t) = new OptExists();\n      (yyval.opt_exists_t)->str_val_ = string(\"IF EXISTS\");\n    }\n#line 5046 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 185:\n#line 1446 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_exists_t) = new OptExists();\n      (yyval.opt_exists_t)->str_val_ = string(\"\");\n    }\n#line 5052 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 186:\n#line 1455 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.delete_statement_t) = new DeleteStatement();\n      (yyval.delete_statement_t)->sub_type_ = CASE0;\n      (yyval.delete_statement_t)->table_name_ = (yyvsp[-1].table_name_t);\n      (yyval.delete_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.delete_statement_t)->opt_where_ = (yyvsp[0].opt_where_t);\n    }\n#line 5064 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 187:\n#line 1465 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.delete_statement_t) = new DeleteStatement();\n      (yyval.delete_statement_t)->sub_type_ = CASE1;\n      (yyval.delete_statement_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.delete_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n\n    }\n#line 5076 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 188:\n#line 1480 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_statement_t) = new InsertStatement();\n      (yyval.insert_statement_t)->sub_type_ = CASE0;\n      (yyval.insert_statement_t)->insert_type_ = (yyvsp[-6].insert_type_t);\n      (yyval.insert_statement_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.insert_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.insert_statement_t)->opt_column_list_ =\n          (yyvsp[-3].opt_column_list_t);\n      (yyval.insert_statement_t)->super_list_ = (yyvsp[-1].super_list_t);\n      (yyval.insert_statement_t)->opt_upsert_clause_ =\n          (yyvsp[0].opt_upsert_clause_t);\n      if ((yyval.insert_statement_t)->opt_column_list_->sub_type_ == CASE0) {\n        for (auto& cname :\n             (yyval.insert_statement_t)\n                 ->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n          cname->id_type_ = id_column_name;\n        }\n      }\n    }\n#line 5096 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 189:\n#line 1495 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_statement_t) = new InsertStatement();\n      (yyval.insert_statement_t)->sub_type_ = CASE1;\n      (yyval.insert_statement_t)->insert_type_ = (yyvsp[-5].insert_type_t);\n      (yyval.insert_statement_t)->table_name_ = (yyvsp[-3].table_name_t);\n      (yyval.insert_statement_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n      (yyval.insert_statement_t)->opt_column_list_ =\n          (yyvsp[-2].opt_column_list_t);\n      (yyval.insert_statement_t)->select_no_paren_ =\n          (yyvsp[-1].select_no_paren_t);\n      (yyval.insert_statement_t)->opt_upsert_clause_ =\n          (yyvsp[0].opt_upsert_clause_t);\n      if ((yyval.insert_statement_t)->opt_column_list_->sub_type_ == CASE0) {\n        for (auto& cname :\n             (yyval.insert_statement_t)\n                 ->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n          cname->id_type_ = id_column_name;\n        }\n      }\n    }\n#line 5116 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 190:\n#line 1513 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.super_list_t) = new SuperList();\n      (yyval.super_list_t)->v_super_list_.push_back((yyvsp[-1].literal_list_t));\n    }\n#line 5124 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 191:\n#line 1516 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-4].super_list_t)\n          ->v_super_list_.push_back((yyvsp[-1].literal_list_t));\n      (yyval.super_list_t) = (yyvsp[-4].super_list_t);\n    }\n#line 5133 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 192:\n#line 1523 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_type_t) = new InsertType();\n      (yyval.insert_type_t)->sub_type_ = CASE0;\n      (yyval.insert_type_t)->str_val_ = string(\"INSERT\");\n    }\n#line 5139 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 193:\n#line 1524 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_type_t) = new InsertType();\n      (yyval.insert_type_t)->sub_type_ = CASE1;\n      (yyval.insert_type_t)->str_val_ = string(\"REPLACE\");\n    }\n#line 5145 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 194:\n#line 1525 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.insert_type_t) = new InsertType();\n      (yyval.insert_type_t)->sub_type_ = CASE2;\n      (yyval.insert_type_t)->resolve_type_ = (yyvsp[0].resolve_type_t);\n    }\n#line 5151 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 195:\n#line 1529 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_list_t) = new OptColumnList();\n      (yyval.opt_column_list_t)->sub_type_ = CASE0;\n      (yyval.opt_column_list_t)->ident_comma_list_ =\n          (yyvsp[-1].ident_commalist_t);\n    }\n#line 5157 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 196:\n#line 1530 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_column_list_t) = new OptColumnList();\n      (yyval.opt_column_list_t)->sub_type_ = CASE1;\n    }\n#line 5163 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 197:\n#line 1540 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_statement_t) = new UpdateStatement();\n      (yyval.update_statement_t)->table_ref_name_no_alias_ =\n          (yyvsp[-3].table_ref_name_no_alias_t);  // had set id_top_table_name\n                                                  // in table_ref_name_no_alias\n      (yyval.update_statement_t)->update_clause_comma_list_ =\n          (yyvsp[-1].update_clause_commalist_t);\n      (yyval.update_statement_t)->opt_where_ = (yyvsp[0].opt_where_t);\n    }\n#line 5174 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 198:\n#line 1549 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_clause_commalist_t) = new UpdateClauseCommalist();\n      (yyval.update_clause_commalist_t)\n          ->v_update_clause_list_.push_back((yyvsp[0].update_clause_t));\n    }\n#line 5183 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 199:\n#line 1553 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].update_clause_commalist_t)\n          ->v_update_clause_list_.push_back((yyvsp[0].update_clause_t));\n      (yyval.update_clause_commalist_t) = (yyvsp[-2].update_clause_commalist_t);\n    }\n#line 5191 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 200:\n#line 1559 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.update_clause_t) = new UpdateClause();\n      (yyval.update_clause_t)->id_ =\n          new Identifier((yyvsp[-2].sval), id_column_name);\n      (yyval.update_clause_t)->expr_ = (yyvsp[0].expr_t);\n      free((yyvsp[-2].sval));\n    }\n#line 5202 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 201:\n#line 1573 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_statement_t) = new SelectStatement();\n      (yyval.select_statement_t)->sub_type_ = CASE0;\n      (yyval.select_statement_t)->opt_with_clause_ =\n          (yyvsp[-1].opt_with_clause_t);\n      (yyval.select_statement_t)->select_with_paren_ =\n          (yyvsp[0].select_with_paren_t);\n    }\n#line 5213 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 202:\n#line 1579 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_statement_t) = new SelectStatement();\n      (yyval.select_statement_t)->sub_type_ = CASE1;\n      (yyval.select_statement_t)->opt_with_clause_ =\n          (yyvsp[-1].opt_with_clause_t);\n      (yyval.select_statement_t)->select_no_paren_ =\n          (yyvsp[0].select_no_paren_t);\n    }\n#line 5224 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 203:\n#line 1585 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_statement_t) = new SelectStatement();\n      (yyval.select_statement_t)->sub_type_ = CASE2;\n      (yyval.select_statement_t)->opt_with_clause_ =\n          (yyvsp[-5].opt_with_clause_t);\n      (yyval.select_statement_t)->select_with_paren_ =\n          (yyvsp[-4].select_with_paren_t);\n      (yyval.select_statement_t)->set_operator_ = (yyvsp[-3].set_operator_t);\n      (yyval.select_statement_t)->select_paren_or_clause_ =\n          (yyvsp[-2].select_paren_or_clause_t);\n      (yyval.select_statement_t)->opt_order_ = (yyvsp[-1].opt_order_t);\n      (yyval.select_statement_t)->opt_limit_ = (yyvsp[0].opt_limit_t);\n\n    }\n#line 5240 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 204:\n#line 1599 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_paren_t) = new SelectWithParen();\n      (yyval.select_with_paren_t)->sub_type_ = CASE0;\n      (yyval.select_with_paren_t)->select_no_paren_ =\n          (yyvsp[-1].select_no_paren_t);\n    }\n#line 5246 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 205:\n#line 1600 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_with_paren_t) = new SelectWithParen();\n      (yyval.select_with_paren_t)->sub_type_ = CASE1;\n      (yyval.select_with_paren_t)->select_with_paren_ =\n          (yyvsp[-1].select_with_paren_t);\n    }\n#line 5252 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 206:\n#line 1604 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_paren_or_clause_t) = new SelectParenOrClause();\n      (yyval.select_paren_or_clause_t)->sub_type_ = CASE0;\n      (yyval.select_paren_or_clause_t)->select_with_paren_ =\n          (yyvsp[0].select_with_paren_t);\n    }\n#line 5258 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 207:\n#line 1605 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_paren_or_clause_t) = new SelectParenOrClause();\n      (yyval.select_paren_or_clause_t)->sub_type_ = CASE1;\n      (yyval.select_paren_or_clause_t)->select_clause_ =\n          (yyvsp[0].select_clause_t);\n    }\n#line 5264 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 208:\n#line 1609 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_no_paren_t) = new SelectNoParen();\n      (yyval.select_no_paren_t)->sub_type_ = CASE0;\n      (yyval.select_no_paren_t)->select_clause_ = (yyvsp[-2].select_clause_t);\n      (yyval.select_no_paren_t)->opt_order_ = (yyvsp[-1].opt_order_t);\n      (yyval.select_no_paren_t)->opt_limit_ = (yyvsp[0].opt_limit_t);\n    }\n#line 5276 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 209:\n#line 1616 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_no_paren_t) = new SelectNoParen();\n      (yyval.select_no_paren_t)->sub_type_ = CASE1;\n      (yyval.select_no_paren_t)->select_clause_ = (yyvsp[-4].select_clause_t);\n      (yyval.select_no_paren_t)->set_operator_ = (yyvsp[-3].set_operator_t);\n      (yyval.select_no_paren_t)->select_paren_or_clause_ =\n          (yyvsp[-2].select_paren_or_clause_t);\n      (yyval.select_no_paren_t)->opt_order_ = (yyvsp[-1].opt_order_t);\n      (yyval.select_no_paren_t)->opt_limit_ = (yyvsp[0].opt_limit_t);\n    }\n#line 5290 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 210:\n#line 1628 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_operator_t) = new SetOperator();\n      (yyval.set_operator_t)->set_type_ = (yyvsp[-1].set_type_t);\n      (yyval.set_operator_t)->opt_all_ = (yyvsp[0].opt_all_t);\n    }\n#line 5300 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 211:\n#line 1636 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_type_t) = new SetType();\n      (yyval.set_type_t)->str_val_ = string(\"UNION\");\n    }\n#line 5306 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 212:\n#line 1637 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_type_t) = new SetType();\n      (yyval.set_type_t)->str_val_ = string(\"INTERSECT\");\n    }\n#line 5312 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 213:\n#line 1638 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.set_type_t) = new SetType();\n      (yyval.set_type_t)->str_val_ = string(\"EXCEPT\");\n    }\n#line 5318 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 214:\n#line 1642 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_t) = new OptAll();\n      (yyval.opt_all_t)->str_val_ = string(\"ALL\");\n    }\n#line 5324 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 215:\n#line 1643 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_all_t) = new OptAll();\n      (yyval.opt_all_t)->str_val_ = string(\"\");\n    }\n#line 5330 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 216:\n#line 1647 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_t) = new SelectClause();\n      (yyval.select_clause_t)->sub_type_ = CASE0;\n      (yyval.select_clause_t)->opt_top_ = (yyvsp[-5].opt_top_t);\n      (yyval.select_clause_t)->opt_distinct_ = (yyvsp[-4].opt_distinct_t);\n      (yyval.select_clause_t)->select_list_ = (yyvsp[-3].select_list_t);\n      (yyval.select_clause_t)->opt_from_clause_ = (yyvsp[-2].opt_from_clause_t);\n      (yyval.select_clause_t)->opt_where_ = (yyvsp[-1].opt_where_t);\n      (yyval.select_clause_t)->opt_group_ = (yyvsp[0].opt_group_t);\n    }\n#line 5345 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 217:\n#line 1658 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_clause_t) = new SelectClause();\n      (yyval.select_clause_t)->sub_type_ = CASE1;\n      (yyval.select_clause_t)->opt_top_ = (yyvsp[-6].opt_top_t);\n      (yyval.select_clause_t)->opt_distinct_ = (yyvsp[-5].opt_distinct_t);\n      (yyval.select_clause_t)->select_list_ = (yyvsp[-4].select_list_t);\n      (yyval.select_clause_t)->opt_from_clause_ = (yyvsp[-3].opt_from_clause_t);\n      (yyval.select_clause_t)->opt_where_ = (yyvsp[-2].opt_where_t);\n      (yyval.select_clause_t)->opt_group_ = (yyvsp[-1].opt_group_t);\n      (yyval.select_clause_t)->window_clause_ = (yyvsp[0].window_clause_t);\n    }\n#line 5361 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 218:\n#line 1672 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_clause_t) = new WindowClause();\n      (yyval.window_clause_t)->windowdefn_list_ = (yyvsp[0].window_defn_list_t);\n    }\n#line 5367 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 219:\n#line 1676 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_defn_list_t) = new WindowDefnList();\n      (yyval.window_defn_list_t)\n          ->v_windowdefn_list_.push_back((yyvsp[0].window_defn_t));\n    }\n#line 5373 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 220:\n#line 1677 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].window_defn_list_t)\n          ->v_windowdefn_list_.push_back((yyvsp[0].window_defn_t));\n      (yyval.window_defn_list_t) = (yyvsp[-2].window_defn_list_t);\n    }\n#line 5379 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 221:\n#line 1681 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_defn_t) = new WindowDefn();\n      (yyval.window_defn_t)->id_ = new Identifier((yyvsp[-4].sval));\n      (yyval.window_defn_t)->window_ = (yyvsp[-1].window_t);\n      free((yyvsp[-4].sval));\n    }\n#line 5385 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 222:\n#line 1685 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_t) = new Window();\n      (yyval.window_t)->sub_type_ = CASE0;\n      (yyval.window_t)->opt_base_window_name_ =\n          (yyvsp[-5].opt_base_window_name_t);\n      (yyval.window_t)->expr_list_ = (yyvsp[-2].expr_list_t);\n      (yyval.window_t)->opt_order_ = (yyvsp[-1].opt_order_t);\n      (yyval.window_t)->opt_frame_ = (yyvsp[0].opt_frame_t);\n    }\n#line 5398 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 223:\n#line 1693 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.window_t) = new Window();\n      (yyval.window_t)->sub_type_ = CASE1;\n      (yyval.window_t)->opt_base_window_name_ =\n          (yyvsp[-2].opt_base_window_name_t);\n      (yyval.window_t)->opt_order_ = (yyvsp[-1].opt_order_t);\n      (yyval.window_t)->opt_frame_ = (yyvsp[0].opt_frame_t);\n    }\n#line 5410 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 224:\n#line 1703 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_base_window_name_t) = new OptBaseWindowName();\n      (yyval.opt_base_window_name_t)->sub_type_ = CASE0;\n      (yyval.opt_base_window_name_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 5416 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 225:\n#line 1704 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_base_window_name_t) = new OptBaseWindowName();\n      (yyval.opt_base_window_name_t)->sub_type_ = CASE1;\n    }\n#line 5422 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 226:\n#line 1708 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_t) = new OptFrame();\n      (yyval.opt_frame_t)->sub_type_ = CASE0;\n      (yyval.opt_frame_t)->range_or_rows_ = (yyvsp[-2].range_or_rows_t);\n      (yyval.opt_frame_t)->frame_bound_s_ = (yyvsp[-1].frame_bound_s_t);\n      (yyval.opt_frame_t)->opt_frame_exclude_ = (yyvsp[0].opt_frame_exclude_t);\n    }\n#line 5434 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 227:\n#line 1715 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_t) = new OptFrame();\n      (yyval.opt_frame_t)->sub_type_ = CASE1;\n      (yyval.opt_frame_t)->range_or_rows_ = (yyvsp[-5].range_or_rows_t);\n      (yyval.opt_frame_t)->frame_bound_s_ = (yyvsp[-3].frame_bound_s_t);\n      (yyval.opt_frame_t)->frame_bound_e_ = (yyvsp[-1].frame_bound_e_t);\n      (yyval.opt_frame_t)->opt_frame_exclude_ = (yyvsp[0].opt_frame_exclude_t);\n    }\n#line 5447 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 228:\n#line 1723 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_t) = new OptFrame();\n      (yyval.opt_frame_t)->sub_type_ = CASE2;\n    }\n#line 5453 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 229:\n#line 1727 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->str_val_ = string(\"RANGE\");\n    }\n#line 5459 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 230:\n#line 1728 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->str_val_ = string(\"ROWS\");\n    }\n#line 5465 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 231:\n#line 1729 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.range_or_rows_t) = new RangeOrRows();\n      (yyval.range_or_rows_t)->str_val_ = string(\"GROUPS\");\n    }\n#line 5471 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 232:\n#line 1733 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_s_t) = new FrameBoundS();\n      (yyval.frame_bound_s_t)->sub_type_ = CASE0;\n      (yyval.frame_bound_s_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n    }\n#line 5477 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 233:\n#line 1734 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_s_t) = new FrameBoundS();\n      (yyval.frame_bound_s_t)->sub_type_ = CASE1;\n    }\n#line 5483 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 234:\n#line 1738 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_e_t) = new FrameBoundE();\n      (yyval.frame_bound_e_t)->sub_type_ = CASE0;\n      (yyval.frame_bound_e_t)->frame_bound_ = (yyvsp[0].frame_bound_t);\n    }\n#line 5489 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 235:\n#line 1739 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_e_t) = new FrameBoundE();\n      (yyval.frame_bound_e_t)->sub_type_ = CASE1;\n    }\n#line 5495 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 236:\n#line 1743 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->sub_type_ = CASE0;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 5501 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 237:\n#line 1744 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->sub_type_ = CASE1;\n      (yyval.frame_bound_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 5507 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 238:\n#line 1745 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_bound_t) = new FrameBound();\n      (yyval.frame_bound_t)->sub_type_ = CASE2;\n    }\n#line 5513 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 239:\n#line 1749 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_exclude_t) = new OptFrameExclude();\n      (yyval.opt_frame_exclude_t)->sub_type_ = CASE0;\n      (yyval.opt_frame_exclude_t)->frame_exclude_ = (yyvsp[0].frame_exclude_t);\n    }\n#line 5519 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 240:\n#line 1750 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_frame_exclude_t) = new OptFrameExclude();\n      (yyval.opt_frame_exclude_t)->sub_type_ = CASE1;\n    }\n#line 5525 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 241:\n#line 1754 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->str_val_ = string(\"NO OTHERS\");\n    }\n#line 5531 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 242:\n#line 1755 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->str_val_ = string(\"CURRENT ROW\");\n    }\n#line 5537 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 243:\n#line 1756 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->str_val_ = string(\"GROUP\");\n    }\n#line 5543 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 244:\n#line 1757 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.frame_exclude_t) = new FrameExclude();\n      (yyval.frame_exclude_t)->str_val_ = string(\"TIES\");\n    }\n#line 5549 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 245:\n#line 1762 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_distinct_t) = new OptDistinct();\n      (yyval.opt_distinct_t)->str_val_ = string(\"DISTINCT\");\n    }\n#line 5555 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 246:\n#line 1763 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_distinct_t) = new OptDistinct();\n      (yyval.opt_distinct_t)->str_val_ = string(\"\");\n    }\n#line 5561 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 247:\n#line 1767 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.select_list_t) = new SelectList();\n      (yyval.select_list_t)->expr_list_ = (yyvsp[0].expr_list_t);\n    }\n#line 5570 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 248:\n#line 1774 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->sub_type_ = CASE0;\n      (yyval.opt_from_clause_t)->from_clause_ = (yyvsp[0].from_clause_t);\n    }\n#line 5576 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 249:\n#line 1775 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_from_clause_t) = new OptFromClause();\n      (yyval.opt_from_clause_t)->sub_type_ = CASE1;\n    }\n#line 5582 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 250:\n#line 1779 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.from_clause_t) = new FromClause();\n      (yyval.from_clause_t)->table_ref_ = (yyvsp[0].table_ref_t);\n    }\n#line 5588 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 251:\n#line 1784 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_t) = new OptWhere();\n      (yyval.opt_where_t)->sub_type_ = CASE0;\n      (yyval.opt_where_t)->expr_ = (yyvsp[0].expr_t);\n    }\n#line 5594 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 252:\n#line 1785 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_where_t) = new OptWhere();\n      (yyval.opt_where_t)->sub_type_ = CASE1;\n    }\n#line 5600 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 253:\n#line 1789 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_t) = new OptGroup();\n      (yyval.opt_group_t)->sub_type_ = CASE0;\n      (yyval.opt_group_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n      (yyval.opt_group_t)->opt_having_ = (yyvsp[0].opt_having_t);\n    }\n#line 5611 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 254:\n#line 1795 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_group_t) = new OptGroup();\n      (yyval.opt_group_t)->sub_type_ = CASE1;\n    }\n#line 5617 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 255:\n#line 1799 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_t) = new OptHaving();\n      (yyval.opt_having_t)->sub_type_ = CASE0;\n      (yyval.opt_having_t)->expr_ = (yyvsp[0].expr_t);\n    }\n#line 5623 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 256:\n#line 1800 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_having_t) = new OptHaving();\n      (yyval.opt_having_t)->sub_type_ = CASE1;\n    }\n#line 5629 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 257:\n#line 1803 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_t) = new OptOrder();\n      (yyval.opt_order_t)->sub_type_ = CASE0;\n      (yyval.opt_order_t)->order_list_ = (yyvsp[0].order_list_t);\n    }\n#line 5635 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 258:\n#line 1804 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_t) = new OptOrder();\n      (yyval.opt_order_t)->sub_type_ = CASE1;\n    }\n#line 5641 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 259:\n#line 1808 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_list_t) = new OrderList();\n      (yyval.order_list_t)->v_order_desc_.push_back((yyvsp[0].order_desc_t));\n    }\n#line 5647 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 260:\n#line 1809 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].order_list_t)\n          ->v_order_desc_.push_back((yyvsp[0].order_desc_t));\n      (yyval.order_list_t) = (yyvsp[-2].order_list_t);\n    }\n#line 5653 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 261:\n#line 1813 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.order_desc_t) = new OrderDesc();\n      (yyval.order_desc_t)->expr_ = (yyvsp[-2].expr_t);\n      (yyval.order_desc_t)->opt_order_type_ = (yyvsp[-1].opt_order_type_t);\n      (yyval.order_desc_t)->opt_null_ = (yyvsp[0].opt_null_t);\n    }\n#line 5659 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 262:\n#line 1817 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_type_t) = new OptOrderType();\n      (yyval.opt_order_type_t)->str_val_ = string(\"ASC\");\n    }\n#line 5665 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 263:\n#line 1818 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_type_t) = new OptOrderType();\n      (yyval.opt_order_type_t)->str_val_ = string(\"DESC\");\n    }\n#line 5671 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 264:\n#line 1819 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_order_type_t) = new OptOrderType();\n      (yyval.opt_order_type_t)->str_val_ = string(\"\");\n    }\n#line 5677 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 265:\n#line 1824 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_top_t) = new OptTop();\n      (yyval.opt_top_t)->sub_type_ = CASE0;\n      (yyval.opt_top_t)->int_literal_ = (yyvsp[0].int_literal_t);\n    }\n#line 5687 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 266:\n#line 1829 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_top_t) = new OptTop();\n      (yyval.opt_top_t)->sub_type_ = CASE1;\n    }\n#line 5696 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 267:\n#line 1836 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = new OptLimit();\n      (yyval.opt_limit_t)->sub_type_ = CASE0;\n      (yyval.opt_limit_t)->expr1_ = (yyvsp[0].expr_t);\n    }\n#line 5702 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 268:\n#line 1837 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = new OptLimit();\n      (yyval.opt_limit_t)->sub_type_ = CASE1;\n      (yyval.opt_limit_t)->expr1_ = (yyvsp[0].expr_t);\n    }\n#line 5708 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 269:\n#line 1838 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = new OptLimit();\n      (yyval.opt_limit_t)->sub_type_ = CASE2;\n      (yyval.opt_limit_t)->expr1_ = (yyvsp[-2].expr_t);\n      (yyval.opt_limit_t)->expr2_ = (yyvsp[0].expr_t);\n    }\n#line 5714 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 270:\n#line 1839 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = new OptLimit();\n      (yyval.opt_limit_t)->sub_type_ = CASE3;\n    }\n#line 5720 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 271:\n#line 1840 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = new OptLimit();\n      (yyval.opt_limit_t)->sub_type_ = CASE4;\n      (yyval.opt_limit_t)->expr1_ = (yyvsp[0].expr_t);\n    }\n#line 5726 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 272:\n#line 1841 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_limit_t) = nullptr;\n    }\n#line 5732 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 273:\n#line 1848 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_list_t) = new ExprList();\n      (yyval.expr_list_t)->v_expr_list_.push_back((yyvsp[0].expr_alias_t));\n    }\n#line 5741 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 274:\n#line 1852 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].expr_list_t)->v_expr_list_.push_back((yyvsp[0].expr_alias_t));\n      (yyval.expr_list_t) = (yyvsp[-2].expr_list_t);\n    }\n#line 5749 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 275:\n#line 1858 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_literal_list_t) = new OptLiteralList();\n      (yyval.opt_literal_list_t)->sub_type_ = CASE0;\n      (yyval.opt_literal_list_t)->literal_list_ = (yyvsp[0].literal_list_t);\n    }\n#line 5759 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 276:\n#line 1863 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_literal_list_t) = new OptLiteralList();\n      (yyval.opt_literal_list_t)->sub_type_ = CASE1;\n    }\n#line 5767 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 277:\n#line 1869 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_list_t) = new LiteralList();\n      (yyval.literal_list_t)->v_literal_list_.push_back((yyvsp[0].literal_t));\n    }\n#line 5776 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 278:\n#line 1873 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].literal_list_t)\n          ->v_literal_list_.push_back((yyvsp[0].literal_t));\n      (yyval.literal_list_t) = (yyvsp[-2].literal_list_t);\n    }\n#line 5785 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 279:\n#line 1880 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_alias_t) = new ExprAlias();\n      (yyval.expr_alias_t)->expr_ = (yyvsp[-1].expr_t);\n      (yyval.expr_alias_t)->opt_alias_ = (yyvsp[0].opt_alias_t);\n    }\n#line 5795 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 280:\n#line 1888 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].operand_t);\n    }\n#line 5801 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 281:\n#line 1889 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].between_expr_t);\n    }\n#line 5807 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 282:\n#line 1890 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].logic_expr_t);\n    }\n#line 5813 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 283:\n#line 1891 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].exists_expr_t);\n    }\n#line 5819 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 284:\n#line 1892 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].in_expr_t);\n    }\n#line 5825 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 285:\n#line 1893 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.expr_t) = (yyvsp[0].cast_expr_t);\n    }\n#line 5831 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 286:\n#line 1897 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE0;\n      (yyval.operand_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 5837 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 287:\n#line 1898 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].array_index_t);\n    }\n#line 5843 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 288:\n#line 1899 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].scalar_expr_t);\n    }\n#line 5849 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 289:\n#line 1900 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].unary_expr_t);\n    }\n#line 5855 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 290:\n#line 1901 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].binary_expr_t);\n    }\n#line 5861 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 291:\n#line 1902 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].case_expr_t);\n    }\n#line 5867 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 292:\n#line 1903 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].function_expr_t);\n    }\n#line 5873 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 293:\n#line 1904 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].extract_expr_t);\n    }\n#line 5879 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 294:\n#line 1905 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE1;\n      (yyval.operand_t)->expr_ = (yyvsp[0].array_expr_t);\n    }\n#line 5885 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 295:\n#line 1906 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.operand_t) = new Operand();\n      (yyval.operand_t)->sub_type_ = CASE2;\n      (yyval.operand_t)->select_no_paren_ = (yyvsp[-1].select_no_paren_t);\n    }\n#line 5891 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 296:\n#line 1910 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.cast_expr_t) = new CastExpr();\n      (yyval.cast_expr_t)->expr_ = (yyvsp[-3].expr_t);\n      (yyval.cast_expr_t)->column_type_ = (yyvsp[-1].column_type_t);\n    }\n#line 5901 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 297:\n#line 1918 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->sub_type_ = CASE0;\n      (yyval.scalar_expr_t)->column_name_ = (yyvsp[0].column_name_t);\n    }\n#line 5907 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 298:\n#line 1919 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.scalar_expr_t) = new ScalarExpr();\n      (yyval.scalar_expr_t)->sub_type_ = CASE1;\n      (yyval.scalar_expr_t)->literal_ = (yyvsp[0].literal_t);\n    }\n#line 5913 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 299:\n#line 1923 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->sub_type_ = CASE0;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n      (yyval.unary_expr_t)->operator_ = string(\"-\");\n    }\n#line 5924 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 300:\n#line 1929 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->sub_type_ = CASE1;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[0].operand_t);\n      (yyval.unary_expr_t)->operator_ = string(\"NOT\");\n    }\n#line 5935 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 301:\n#line 1935 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->sub_type_ = CASE2;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-1].operand_t);\n      (yyval.unary_expr_t)->operator_ = string(\"ISNULL\");\n    }\n#line 5946 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 302:\n#line 1941 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->sub_type_ = CASE3;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-2].operand_t);\n      (yyval.unary_expr_t)->operator_ = string(\"IS NULL\");\n    }\n#line 5957 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 303:\n#line 1947 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.unary_expr_t) = new UnaryExpr();\n      (yyval.unary_expr_t)->sub_type_ = CASE4;\n      (yyval.unary_expr_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.unary_expr_t)->operator_ = string(\"IS NOT NULL\");\n    }\n#line 5968 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 304:\n#line 1956 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE0;\n      (yyval.binary_expr_t)->comp_expr_ = (yyvsp[0].comp_expr_t);\n    }\n#line 5974 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 305:\n#line 1957 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"-\");\n    }\n#line 5980 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 306:\n#line 1958 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"+\");\n    }\n#line 5986 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 307:\n#line 1959 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"/\");\n    }\n#line 5992 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 308:\n#line 1960 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"*\");\n    }\n#line 5998 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 309:\n#line 1961 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"%\");\n    }\n#line 6004 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 310:\n#line 1962 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"^\");\n    }\n#line 6010 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 311:\n#line 1963 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"LIKE\");\n    }\n#line 6016 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 312:\n#line 1964 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-3].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"NOT LIKE\");\n    }\n#line 6022 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 313:\n#line 1965 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"ILIKE\");\n    }\n#line 6028 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 314:\n#line 1966 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"CONCAT\");\n    }\n#line 6034 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 315:\n#line 1967 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"GLOB\");\n    }\n#line 6040 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 316:\n#line 1968 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"MATCH\");\n    }\n#line 6046 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 317:\n#line 1969 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.binary_expr_t) = new BinaryExpr();\n      (yyval.binary_expr_t)->sub_type_ = CASE1;\n      (yyval.binary_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.binary_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.binary_expr_t)->operator_ = string(\"REGEX\");\n    }\n#line 6052 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 318:\n#line 1973 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->expr1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr2_ = (yyvsp[0].expr_t);\n      (yyval.logic_expr_t)->operator_ = string(\"AND\");\n    }\n#line 6058 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 319:\n#line 1974 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.logic_expr_t) = new LogicExpr();\n      (yyval.logic_expr_t)->expr1_ = (yyvsp[-2].expr_t);\n      (yyval.logic_expr_t)->expr2_ = (yyvsp[0].expr_t);\n      (yyval.logic_expr_t)->operator_ = string(\"OR\");\n    }\n#line 6064 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 320:\n#line 1978 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->sub_type_ = CASE0;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-4].operand_t);\n      (yyval.in_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n    }\n#line 6070 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 321:\n#line 1979 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->sub_type_ = CASE1;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n    }\n#line 6076 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 322:\n#line 1980 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->sub_type_ = CASE2;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-4].operand_t);\n      (yyval.in_expr_t)->select_no_paren_ = (yyvsp[-1].select_no_paren_t);\n    }\n#line 6082 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 323:\n#line 1981 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.in_expr_t) = new InExpr();\n      (yyval.in_expr_t)->sub_type_ = CASE3;\n      (yyval.in_expr_t)->operand_ = (yyvsp[-5].operand_t);\n      (yyval.in_expr_t)->select_no_paren_ = (yyvsp[-1].select_no_paren_t);\n    }\n#line 6088 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 324:\n#line 1987 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->sub_type_ = CASE0;\n      (yyval.case_expr_t)->case_expr_ = (yyvsp[-2].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n    }\n#line 6094 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 325:\n#line 1988 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->sub_type_ = CASE1;\n      (yyval.case_expr_t)->case_expr_ = (yyvsp[-4].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n      (yyval.case_expr_t)->else_expr_ = (yyvsp[-1].expr_t);\n    }\n#line 6100 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 326:\n#line 1989 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->sub_type_ = CASE2;\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-1].case_list_t);\n    }\n#line 6106 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 327:\n#line 1990 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_expr_t) = new CaseExpr();\n      (yyval.case_expr_t)->sub_type_ = CASE3;\n      (yyval.case_expr_t)->else_expr_ = (yyvsp[-1].expr_t);\n      (yyval.case_expr_t)->case_list_ = (yyvsp[-3].case_list_t);\n    }\n#line 6112 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 328:\n#line 1994 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t) = new CaseList();\n      (yyval.case_list_t)\n          ->v_case_list_.push_back(\n              new CaseClause((yyvsp[-2].expr_t), (yyvsp[0].expr_t)));\n    }\n#line 6118 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 329:\n#line 1995 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.case_list_t)\n          ->v_case_list_.push_back(\n              new CaseClause((yyvsp[-2].expr_t), (yyvsp[0].expr_t)));\n      (yyval.case_list_t) = (yyvsp[-4].case_list_t);\n    }\n#line 6124 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 330:\n#line 1999 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.exists_expr_t) = new ExistsExpr();\n      (yyval.exists_expr_t)->sub_type_ = CASE0;\n      (yyval.exists_expr_t)->select_no_paren_ = (yyvsp[-1].select_no_paren_t);\n    }\n#line 6130 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 331:\n#line 2000 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.exists_expr_t) = new ExistsExpr();\n      (yyval.exists_expr_t)->sub_type_ = CASE1;\n      (yyval.exists_expr_t)->select_no_paren_ = (yyvsp[-1].select_no_paren_t);\n    }\n#line 6136 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 332:\n#line 2004 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\"=\");\n    }\n#line 6142 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 333:\n#line 2005 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\"==\");\n    }\n#line 6148 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 334:\n#line 2006 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\"!=\");\n    }\n#line 6154 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 335:\n#line 2007 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\"<\");\n    }\n#line 6160 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 336:\n#line 2008 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\">\");\n    }\n#line 6166 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 337:\n#line 2009 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\"<=\");\n    }\n#line 6172 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 338:\n#line 2010 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.comp_expr_t) = new CompExpr();\n      (yyval.comp_expr_t)->operand1_ = (yyvsp[-2].operand_t);\n      (yyval.comp_expr_t)->operand2_ = (yyvsp[0].operand_t);\n      (yyval.comp_expr_t)->operator_ = string(\">=\");\n    }\n#line 6178 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 339:\n#line 2014 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.function_expr_t) = new FunctionExpr();\n      (yyval.function_expr_t)->sub_type_ = CASE0;\n      (yyval.function_expr_t)->id_ = new Identifier((yyvsp[-4].sval));\n      (yyval.function_expr_t)->opt_filter_clause_ =\n          (yyvsp[-1].opt_filter_clause_t);\n      (yyval.function_expr_t)->opt_over_clause_ = (yyvsp[0].opt_over_clause_t);\n      free((yyvsp[-4].sval));\n    }\n#line 6191 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 340:\n#line 2022 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.function_expr_t) = new FunctionExpr();\n      (yyval.function_expr_t)->sub_type_ = CASE1;\n      (yyval.function_expr_t)->id_ = new Identifier((yyvsp[-6].sval));\n      (yyval.function_expr_t)->opt_distinct_ = (yyvsp[-4].opt_distinct_t);\n      (yyval.function_expr_t)->expr_list_ = (yyvsp[-3].expr_list_t);\n      (yyval.function_expr_t)->opt_filter_clause_ =\n          (yyvsp[-1].opt_filter_clause_t);\n      (yyval.function_expr_t)->opt_over_clause_ = (yyvsp[0].opt_over_clause_t);\n      free((yyvsp[-6].sval));\n    }\n#line 6206 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 341:\n#line 2035 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->sub_type_ = CASE0;\n      (yyval.opt_over_clause_t)->window_ = (yyvsp[-1].window_t);\n    }\n#line 6212 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 342:\n#line 2036 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->sub_type_ = CASE1;\n      (yyval.opt_over_clause_t)->id_ =\n          new Identifier((yyvsp[0].sval), id_window_name);\n      free((yyvsp[0].sval));\n    }\n#line 6223 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 343:\n#line 2042 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_over_clause_t) = new OptOverClause();\n      (yyval.opt_over_clause_t)->sub_type_ = CASE2;\n    }\n#line 6229 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 344:\n#line 2046 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_filter_clause_t) = new OptFilterClause();\n      (yyval.opt_filter_clause_t)->sub_type_ = CASE0;\n      (yyval.opt_filter_clause_t)->expr_ = (yyvsp[-1].expr_t);\n    }\n#line 6235 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 345:\n#line 2047 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_filter_clause_t) = new OptFilterClause();\n      (yyval.opt_filter_clause_t)->sub_type_ = CASE1;\n    }\n#line 6241 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 346:\n#line 2052 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.extract_expr_t) = new ExtractExpr();\n      (yyval.extract_expr_t)->datetime_field_ = (yyvsp[-3].datetime_field_t);\n      (yyval.extract_expr_t)->expr_ = (yyvsp[-1].expr_t);\n      (yyval.extract_expr_t)->sub_type_ = CASE0;\n    }\n#line 6252 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 347:\n#line 2061 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"SECOND\");\n    }\n#line 6258 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 348:\n#line 2062 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"MINUTE\");\n    }\n#line 6264 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 349:\n#line 2063 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"HOUR\");\n    }\n#line 6270 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 350:\n#line 2064 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"DAY\");\n    }\n#line 6276 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 351:\n#line 2065 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"MONTH\");\n    }\n#line 6282 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 352:\n#line 2066 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.datetime_field_t) = new DatetimeField();\n      (yyval.datetime_field_t)->str_val_ = string(\"YEAR\");\n    }\n#line 6288 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 353:\n#line 2070 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.array_expr_t) = new ArrayExpr();\n      (yyval.array_expr_t)->expr_list_ = (yyvsp[-1].expr_list_t);\n    }\n#line 6294 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 354:\n#line 2074 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.array_index_t) = new ArrayIndex();\n      (yyval.array_index_t)->operand_ = (yyvsp[-3].operand_t);\n      (yyval.array_index_t)->int_literal_ = (yyvsp[-1].int_literal_t);\n    }\n#line 6300 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 355:\n#line 2078 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.between_expr_t) = new BetweenExpr();\n      (yyval.between_expr_t)->operand1_ = (yyvsp[-4].operand_t);\n      (yyval.between_expr_t)->operand2_ = (yyvsp[-2].operand_t);\n      (yyval.between_expr_t)->operand3_ = (yyvsp[0].operand_t);\n    }\n#line 6306 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 356:\n#line 2082 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->sub_type_ = CASE0;\n      (yyval.column_name_t)->identifier1_ =\n          new Identifier((yyvsp[0].sval), id_column_name);\n      free((yyvsp[0].sval));\n    }\n#line 6312 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 357:\n#line 2083 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->sub_type_ = CASE1;\n      (yyval.column_name_t)->identifier1_ =\n          new Identifier((yyvsp[-2].sval), id_table_name);\n      (yyval.column_name_t)->identifier2_ =\n          new Identifier((yyvsp[0].sval), id_column_name);\n      free((yyvsp[-2].sval));\n      free((yyvsp[0].sval));\n    }\n#line 6318 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 358:\n#line 2084 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->sub_type_ = CASE2;\n    }\n#line 6324 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 359:\n#line 2085 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.column_name_t) = new ColumnName();\n      (yyval.column_name_t)->sub_type_ = CASE3;\n      (yyval.column_name_t)->identifier1_ =\n          new Identifier((yyvsp[-2].sval), id_table_name);\n      free((yyvsp[-2].sval));\n    }\n#line 6330 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 360:\n#line 2089 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = (yyvsp[0].string_literal_t);\n    }\n#line 6336 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 361:\n#line 2090 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = (yyvsp[0].bool_literal_t);\n    }\n#line 6342 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 362:\n#line 2091 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = (yyvsp[0].num_literal_t);\n    }\n#line 6348 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 363:\n#line 2092 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = (yyvsp[0].null_literal_t);\n    }\n#line 6354 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 364:\n#line 2093 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.literal_t) = (yyvsp[0].param_expr_t);\n    }\n#line 6360 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 365:\n#line 2097 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.string_literal_t) = new StringLiteral();\n      (yyval.string_literal_t)->str_val_ = (yyvsp[0].sval);\n      free((yyvsp[0].sval));\n    }\n#line 6366 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 366:\n#line 2101 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->b_val_ = true;\n    }\n#line 6372 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 367:\n#line 2102 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.bool_literal_t) = new BoolLiteral();\n      (yyval.bool_literal_t)->b_val_ = false;\n    }\n#line 6378 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 368:\n#line 2106 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->sub_type_ = CASE0;\n      (yyval.num_literal_t)->f_val_ = (yyvsp[0].fval);\n    }\n#line 6384 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 369:\n#line 2107 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.num_literal_t) = new NumLiteral();\n      (yyval.num_literal_t)->sub_type_ = CASE1;\n      (yyval.num_literal_t)->int_literal_ = (yyvsp[0].int_literal_t);\n    }\n#line 6390 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 370:\n#line 2111 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.int_literal_t) = new IntLiteral();\n      (yyval.int_literal_t)->int_val_ = (yyvsp[0].ival);\n    }\n#line 6396 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 371:\n#line 2115 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.null_literal_t) = new NullLiteral();\n    }\n#line 6402 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 372:\n#line 2119 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.param_expr_t) = new ParamExpr();\n    }\n#line 6410 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 373:\n#line 2131 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->sub_type_ = CASE0;\n      (yyval.table_ref_t)->table_prefix_ = (yyvsp[-5].table_prefix_t);\n      (yyval.table_ref_t)->table_name_ = (yyvsp[-4].table_name_t);\n      (yyval.table_ref_t)->opt_alias_ = (yyvsp[-3].opt_alias_t);\n      (yyval.table_ref_t)->opt_index_ = (yyvsp[-2].opt_index_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n      (yyval.table_ref_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 6426 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 374:\n#line 2142 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->sub_type_ = CASE1;\n      (yyval.table_ref_t)->table_prefix_ = (yyvsp[-7].table_prefix_t);\n      (yyval.table_ref_t)->table_name_ = (yyvsp[-6].table_name_t);\n      (yyval.table_ref_t)->expr_list_ = (yyvsp[-4].expr_list_t);\n      (yyval.table_ref_t)->opt_alias_ = (yyvsp[-2].opt_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n      (yyval.table_ref_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 6442 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 375:\n#line 2153 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->sub_type_ = CASE2;\n      (yyval.table_ref_t)->table_prefix_ = (yyvsp[-6].table_prefix_t);\n      (yyval.table_ref_t)->select_no_paren_ = (yyvsp[-4].select_no_paren_t);\n      (yyval.table_ref_t)->opt_alias_ = (yyvsp[-2].opt_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n    }\n#line 6456 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 376:\n#line 2162 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_t) = new TableRef();\n      (yyval.table_ref_t)->sub_type_ = CASE3;\n      (yyval.table_ref_t)->table_prefix_ = (yyvsp[-6].table_prefix_t);\n      (yyval.table_ref_t)->table_ref_ = (yyvsp[-4].table_ref_t);\n      (yyval.table_ref_t)->opt_alias_ = (yyvsp[-2].opt_alias_t);\n      (yyval.table_ref_t)->opt_on_ = (yyvsp[-1].opt_on_t);\n      (yyval.table_ref_t)->opt_using_ = (yyvsp[0].opt_using_t);\n    }\n#line 6470 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 377:\n#line 2174 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_prefix_t) = new TablePrefix();\n      (yyval.table_prefix_t)->sub_type_ = CASE0;\n      (yyval.table_prefix_t)->table_ref_ = (yyvsp[-1].table_ref_t);\n      (yyval.table_prefix_t)->join_op_ = (yyvsp[0].join_op_t);\n    }\n#line 6481 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 378:\n#line 2180 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_prefix_t) = new TablePrefix();\n      (yyval.table_prefix_t)->sub_type_ = CASE1;\n    }\n#line 6490 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 379:\n#line 2186 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->sub_type_ = CASE0;\n    }\n#line 6496 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 380:\n#line 2187 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->sub_type_ = CASE1;\n    }\n#line 6502 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 381:\n#line 2188 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->sub_type_ = CASE2;\n      (yyval.join_op_t)->join_kw_ = (yyvsp[-1].join_kw_t);\n    }\n#line 6508 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 382:\n#line 2189 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->sub_type_ = CASE3;\n      (yyval.join_op_t)->id1_ =\n          new Identifier((yyvsp[-1].sval), id_top_table_name);\n      (yyval.join_op_t)->join_kw_ = (yyvsp[-2].join_kw_t);\n      free((yyvsp[-1].sval));\n    }\n#line 6519 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 383:\n#line 2195 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_op_t) = new JoinOp();\n      (yyval.join_op_t)->sub_type_ = CASE4;\n      (yyval.join_op_t)->id1_ = new Identifier((yyvsp[-2].sval));\n      (yyval.join_op_t)->id2_ = new Identifier((yyvsp[-1].sval));\n      (yyval.join_op_t)->join_kw_ = (yyvsp[-3].join_kw_t);\n      free((yyvsp[-2].sval));\n      free((yyvsp[-1].sval));\n    }\n#line 6533 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 384:\n#line 2207 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->sub_type_ = CASE0;\n      (yyval.opt_index_t)->column_name_ = (yyvsp[0].column_name_t);\n    }\n#line 6539 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 385:\n#line 2208 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->sub_type_ = CASE1;\n    }\n#line 6545 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 386:\n#line 2209 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_index_t) = new OptIndex();\n      (yyval.opt_index_t)->sub_type_ = CASE2;\n    }\n#line 6551 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 387:\n#line 2213 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_t) = new OptOn();\n      (yyval.opt_on_t)->sub_type_ = CASE0;\n      (yyval.opt_on_t)->expr_ = (yyvsp[0].expr_t);\n    }\n#line 6557 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 388:\n#line 2214 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_on_t) = new OptOn();\n      (yyval.opt_on_t)->sub_type_ = CASE1;\n    }\n#line 6563 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 389:\n#line 2218 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_using_t) = new OptUsing();\n      (yyval.opt_using_t)->sub_type_ = CASE0;\n      (yyval.opt_using_t)->ident_commalist_ = (yyvsp[-1].ident_commalist_t);\n    }\n#line 6569 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 390:\n#line 2219 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_using_t) = new OptUsing();\n      (yyval.opt_using_t)->sub_type_ = CASE1;\n    }\n#line 6575 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 391:\n#line 2224 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_ref_name_no_alias_t) = new TableRefNameNoAlias();\n      (yyval.table_ref_name_no_alias_t)->table_name_ = (yyvsp[0].table_name_t);\n      (yyval.table_ref_name_no_alias_t)->table_name_->table_name_->id_type_ =\n          id_top_table_name;\n    }\n#line 6585 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 392:\n#line 2231 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_name_t) = new TableName();\n      (yyval.table_name_t)->sub_type_ = CASE0;\n      (yyval.table_name_t)->table_name_ =\n          new Identifier((yyvsp[0].sval), id_table_name);\n      (yyval.table_name_t)->database_name_ = NULL;\n      free((yyvsp[0].sval));\n    }\n#line 6591 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 393:\n#line 2232 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.table_name_t) = new TableName();\n      (yyval.table_name_t)->sub_type_ = CASE1;\n      (yyval.table_name_t)->database_name_ =\n          new Identifier((yyvsp[-2].sval), id_database_name);\n      (yyval.table_name_t)->table_name_ =\n          new Identifier((yyvsp[0].sval), id_table_name);\n      free((yyvsp[-2].sval));\n      free((yyvsp[0].sval));\n    }\n#line 6604 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 394:\n#line 2243 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.alias_t) = new Alias();\n      (yyval.alias_t)->sub_type_ = CASE0;\n      (yyval.alias_t)->id_ = new Identifier((yyvsp[0].sval));\n      free((yyvsp[0].sval));\n    }\n#line 6610 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 395:\n#line 2248 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_alias_t) = new OptAlias();\n      (yyval.opt_alias_t)->sub_type_ = CASE0;\n      (yyval.opt_alias_t)->alias_ = (yyvsp[0].alias_t);\n    }\n#line 6616 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 396:\n#line 2249 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_alias_t) = new OptAlias();\n      (yyval.opt_alias_t)->sub_type_ = CASE1;\n    }\n#line 6622 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 397:\n#line 2257 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->sub_type_ = CASE0;\n      (yyval.opt_with_clause_t)->with_clause_ = (yyvsp[0].with_clause_t);\n    }\n#line 6628 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 398:\n#line 2258 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_with_clause_t) = new OptWithClause();\n      (yyval.opt_with_clause_t)->sub_type_ = CASE1;\n    }\n#line 6634 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 399:\n#line 2262 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.with_clause_t) = new WithClause();\n      (yyval.with_clause_t)->with_description_list_ =\n          (yyvsp[0].with_description_list_t);\n    }\n#line 6640 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 400:\n#line 2266 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.with_description_list_t) = new WithDescriptionList();\n      (yyval.with_description_list_t)\n          ->v_with_description_list_.push_back((yyvsp[0].with_description_t));\n    }\n#line 6649 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 401:\n#line 2270 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].with_description_list_t)\n          ->v_with_description_list_.push_back((yyvsp[0].with_description_t));\n      (yyval.with_description_list_t) = (yyvsp[-2].with_description_list_t);\n    }\n#line 6658 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 402:\n#line 2277 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.with_description_t) = new WithDescription();\n      (yyval.with_description_t)->id_ = new Identifier((yyvsp[-2].sval));\n      (yyval.with_description_t)->select_with_paren_ =\n          (yyvsp[0].select_with_paren_t);\n      free((yyvsp[-2].sval));\n    }\n#line 6669 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 403:\n#line 2291 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"INNER\");\n    }\n#line 6675 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 404:\n#line 2292 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"LEFT OUTER\");\n    }\n#line 6681 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 405:\n#line 2293 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"LEFT\");\n    }\n#line 6687 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 406:\n#line 2294 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"RIGHT OUTER\");\n    }\n#line 6693 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 407:\n#line 2295 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"RIGHT\");\n    }\n#line 6699 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 408:\n#line 2296 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"FULL OUTER\");\n    }\n#line 6705 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 409:\n#line 2297 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"OUTER\");\n    }\n#line 6711 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 410:\n#line 2298 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"FULL\");\n    }\n#line 6717 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 411:\n#line 2299 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"CROSS\");\n    }\n#line 6723 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 412:\n#line 2300 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.join_kw_t) = new JoinKw();\n      (yyval.join_kw_t)->str_val_ = string(\"NATURAL\");\n    }\n#line 6729 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 413:\n#line 2315 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_semicolon_t) = new OptSemicolon();\n      (yyval.opt_semicolon_t)->str_val_ = string(\";\");\n    }\n#line 6735 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 414:\n#line 2316 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.opt_semicolon_t) = new OptSemicolon();\n      (yyval.opt_semicolon_t)->str_val_ = string(\"\");\n    }\n#line 6741 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 415:\n#line 2321 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyval.ident_commalist_t) = new IdentCommaList();\n      (yyval.ident_commalist_t)\n          ->v_iden_comma_list_.push_back(new Identifier((yyvsp[0].sval)));\n      free((yyvsp[0].sval));\n    }\n#line 6747 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n    case 416:\n#line 2322 \"bison_parser.y\" /* yacc.c:1652  */\n    {\n      (yyvsp[-2].ident_commalist_t)\n          ->v_iden_comma_list_.push_back(new Identifier((yyvsp[0].sval)));\n      (yyval.ident_commalist_t) = (yyvsp[-2].ident_commalist_t);\n      free((yyvsp[0].sval));\n    }\n#line 6753 \"bison_parser.cpp\" /* yacc.c:1652  */\n    break;\n\n#line 6757 \"bison_parser.cpp\" /* yacc.c:1652  */\n    default:\n      break;\n  }\n  /* User semantic actions sometimes alter yychar, and that requires\n     that yytoken be updated with the new translation.  We take the\n     approach of translating immediately before every use of yytoken.\n     One alternative is translating here after every semantic action,\n     but that translation would be missed if the semantic action invokes\n     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or\n     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an\n     incorrect destructor might then be invoked immediately.  In the\n     case of YYERROR or YYBACKUP, subsequent parser actions might lead\n     to an incorrect destructor call or verbose syntax error message\n     before the lookahead is translated.  */\n  YY_SYMBOL_PRINT(\"-> $$ =\", yyr1[yyn], &yyval, &yyloc);\n\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n\n  *++yyvsp = yyval;\n  *++yylsp = yyloc;\n\n  /* Now 'shift' the result of the reduction.  Determine what state\n     that goes to, based on the state we popped back to and the rule\n     number reduced by.  */\n  {\n    const int yylhs = yyr1[yyn] - YYNTOKENS;\n    const int yyi = yypgoto[yylhs] + *yyssp;\n    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp\n                   ? yytable[yyi]\n                   : yydefgoto[yylhs]);\n  }\n\n  goto yynewstate;\n\n/*--------------------------------------.\n| yyerrlab -- here on detecting error.  |\n`--------------------------------------*/\nyyerrlab:\n  /* Make sure we have latest lookahead translation.  See comments at\n     user semantic actions for why this is necessary.  */\n  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE(yychar);\n\n  /* If not already recovering from an error, report this error.  */\n  if (!yyerrstatus) {\n    ++yynerrs;\n#if !YYERROR_VERBOSE\n    yyerror(&yylloc, result, scanner, YY_(\"syntax error\"));\n#else\n#define YYSYNTAX_ERROR yysyntax_error(&yymsg_alloc, &yymsg, yyssp, yytoken)\n    {\n      char const* yymsgp = YY_(\"syntax error\");\n      int yysyntax_error_status;\n      yysyntax_error_status = YYSYNTAX_ERROR;\n      if (yysyntax_error_status == 0)\n        yymsgp = yymsg;\n      else if (yysyntax_error_status == 1) {\n        if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n        yymsg = (char*)YYSTACK_ALLOC(yymsg_alloc);\n        if (!yymsg) {\n          yymsg = yymsgbuf;\n          yymsg_alloc = sizeof yymsgbuf;\n          yysyntax_error_status = 2;\n        } else {\n          yysyntax_error_status = YYSYNTAX_ERROR;\n          yymsgp = yymsg;\n        }\n      }\n      yyerror(&yylloc, result, scanner, yymsgp);\n      if (yysyntax_error_status == 2) goto yyexhaustedlab;\n    }\n#undef YYSYNTAX_ERROR\n#endif\n  }\n\n  yyerror_range[1] = yylloc;\n\n  if (yyerrstatus == 3) {\n    /* If just tried and failed to reuse lookahead token after an\n       error, discard it.  */\n\n    if (yychar <= YYEOF) {\n      /* Return failure if at end of input.  */\n      if (yychar == YYEOF) YYABORT;\n    } else {\n      yydestruct(\"Error: discarding\", yytoken, &yylval, &yylloc, result,\n                 scanner);\n      yychar = YYEMPTY;\n    }\n  }\n\n  /* Else will try to reuse lookahead token after shifting the error\n     token.  */\n  goto yyerrlab1;\n\n/*---------------------------------------------------.\n| yyerrorlab -- error raised explicitly by YYERROR.  |\n`---------------------------------------------------*/\nyyerrorlab:\n  /* Pacify compilers when the user code never invokes YYERROR and the\n     label yyerrorlab therefore never appears in user code.  */\n  if (0) YYERROR;\n\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYERROR.  */\n  YYPOPSTACK(yylen);\n  yylen = 0;\n  YY_STACK_PRINT(yyss, yyssp);\n  yystate = *yyssp;\n  goto yyerrlab1;\n\n/*-------------------------------------------------------------.\n| yyerrlab1 -- common code for both syntax error and YYERROR.  |\n`-------------------------------------------------------------*/\nyyerrlab1:\n  yyerrstatus = 3; /* Each real token shifted decrements this.  */\n\n  for (;;) {\n    yyn = yypact[yystate];\n    if (!yypact_value_is_default(yyn)) {\n      yyn += YYTERROR;\n      if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) {\n        yyn = yytable[yyn];\n        if (0 < yyn) break;\n      }\n    }\n\n    /* Pop the current state because it cannot handle the error token.  */\n    if (yyssp == yyss) YYABORT;\n\n    yyerror_range[1] = *yylsp;\n    yydestruct(\"Error: popping\", yystos[yystate], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n    yystate = *yyssp;\n    YY_STACK_PRINT(yyss, yyssp);\n  }\n\n  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN\n  *++yyvsp = yylval;\n  YY_IGNORE_MAYBE_UNINITIALIZED_END\n\n  yyerror_range[2] = yylloc;\n  /* Using YYLLOC is tempting, but would change the location of\n     the lookahead.  YYLOC is available though.  */\n  YYLLOC_DEFAULT(yyloc, yyerror_range, 2);\n  *++yylsp = yyloc;\n\n  /* Shift the error token.  */\n  YY_SYMBOL_PRINT(\"Shifting\", yystos[yyn], yyvsp, yylsp);\n\n  yystate = yyn;\n  goto yynewstate;\n\n/*-------------------------------------.\n| yyacceptlab -- YYACCEPT comes here.  |\n`-------------------------------------*/\nyyacceptlab:\n  yyresult = 0;\n  goto yyreturn;\n\n/*-----------------------------------.\n| yyabortlab -- YYABORT comes here.  |\n`-----------------------------------*/\nyyabortlab:\n  yyresult = 1;\n  goto yyreturn;\n\n#if !defined yyoverflow || YYERROR_VERBOSE\n/*-------------------------------------------------.\n| yyexhaustedlab -- memory exhaustion comes here.  |\n`-------------------------------------------------*/\nyyexhaustedlab:\n  yyerror(&yylloc, result, scanner, YY_(\"memory exhausted\"));\n  yyresult = 2;\n  /* Fall through.  */\n#endif\n\n/*-----------------------------------------------------.\n| yyreturn -- parsing is finished, return the result.  |\n`-----------------------------------------------------*/\nyyreturn:\n  if (yychar != YYEMPTY) {\n    /* Make sure we have latest lookahead translation.  See comments at\n       user semantic actions for why this is necessary.  */\n    yytoken = YYTRANSLATE(yychar);\n    yydestruct(\"Cleanup: discarding lookahead\", yytoken, &yylval, &yylloc,\n               result, scanner);\n  }\n  /* Do not reclaim the symbols of the rule whose action triggered\n     this YYABORT or YYACCEPT.  */\n  YYPOPSTACK(yylen);\n  YY_STACK_PRINT(yyss, yyssp);\n  while (yyssp != yyss) {\n    yydestruct(\"Cleanup: popping\", yystos[*yyssp], yyvsp, yylsp, result,\n               scanner);\n    YYPOPSTACK(1);\n  }\n#ifndef yyoverflow\n  if (yyss != yyssa) YYSTACK_FREE(yyss);\n#endif\n#if YYERROR_VERBOSE\n  if (yymsg != yymsgbuf) YYSTACK_FREE(yymsg);\n#endif\n  return yyresult;\n}\n#line 2325 \"bison_parser.y\" /* yacc.c:1918  */\n\n/*********************************\n ** Section 4: Additional C code\n *********************************/\n\n/* empty */\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/bison_parser.h",
    "content": "/* A Bison parser, made by GNU Bison 3.3.2.  */\n\n/* Bison interface for Yacc-like parsers in C\n\n   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,\n   Inc.\n\n   This program is free software: you can redistribute it and/or modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   (at your option) any later version.\n\n   This program is distributed in the hope that it will be useful,\n   but WITHOUT ANY WARRANTY; without even the implied warranty of\n   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n   GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */\n\n/* As a special exception, you may create a larger work that contains\n   part or all of the Bison parser skeleton and distribute that work\n   under terms of your choice, so long as that work isn't itself a\n   parser generator using the skeleton or a modified version thereof\n   as a parser skeleton.  Alternatively, if you modify or redistribute\n   the parser skeleton itself, you may (at your option) remove this\n   special exception, which will cause the skeleton and the resulting\n   Bison output files to be licensed under the GNU General Public\n   License without this special exception.\n\n   This special exception was added by the Free Software Foundation in\n   version 2.2 of Bison.  */\n\n/* Undocumented macros, especially those whose name start with YY_,\n   are private implementation details.  Do not rely on them.  */\n\n#ifndef YY_HSQL_BISON_PARSER_H_INCLUDED\n#define YY_HSQL_BISON_PARSER_H_INCLUDED\n/* Debug traces.  */\n#ifndef HSQL_DEBUG\n#if defined YYDEBUG\n#if YYDEBUG\n#define HSQL_DEBUG 1\n#else\n#define HSQL_DEBUG 0\n#endif\n#else /* ! defined YYDEBUG */\n#define HSQL_DEBUG 0\n#endif /* ! defined YYDEBUG */\n#endif /* ! defined HSQL_DEBUG */\n#if HSQL_DEBUG\nextern int hsql_debug;\n#endif\n/* \"%code requires\" blocks.  */\n#line 32 \"bison_parser.y\" /* yacc.c:1921  */\n\n// %code requires block\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n//#include \"../include/utils.h\"\n#include \"parser_typedef.h\"\n\n// Auto update column and line number\n#define YY_USER_ACTION                        \\\n  yylloc->first_line = yylloc->last_line;     \\\n  yylloc->first_column = yylloc->last_column; \\\n  for (int i = 0; yytext[i] != '\\0'; i++) {   \\\n    yylloc->total_column++;                   \\\n    yylloc->string_length++;                  \\\n    if (yytext[i] == '\\n') {                  \\\n      yylloc->last_line++;                    \\\n      yylloc->last_column = 0;                \\\n    } else {                                  \\\n      yylloc->last_column++;                  \\\n    }                                         \\\n  }\n\n#line 83 \"bison_parser.h\" /* yacc.c:1921  */\n\n/* Token type.  */\n#ifndef HSQL_TOKENTYPE\n#define HSQL_TOKENTYPE\nenum hsql_tokentype {\n  SQL_STRING = 258,\n  SQL_IDENTIFIER = 259,\n  SQL_FLOATVAL = 260,\n  SQL_INTVAL = 261,\n  SQL_DEALLOCATE = 262,\n  SQL_PARAMETERS = 263,\n  SQL_INTERSECT = 264,\n  SQL_TEMPORARY = 265,\n  SQL_TIMESTAMP = 266,\n  SQL_DISTINCT = 267,\n  SQL_NVARCHAR = 268,\n  SQL_RESTRICT = 269,\n  SQL_TRUNCATE = 270,\n  SQL_ANALYZE = 271,\n  SQL_BETWEEN = 272,\n  SQL_CASCADE = 273,\n  SQL_COLUMNS = 274,\n  SQL_CONTROL = 275,\n  SQL_DEFAULT = 276,\n  SQL_EXECUTE = 277,\n  SQL_EXPLAIN = 278,\n  SQL_INTEGER = 279,\n  SQL_NATURAL = 280,\n  SQL_PREPARE = 281,\n  SQL_PRIMARY = 282,\n  SQL_SCHEMAS = 283,\n  SQL_SPATIAL = 284,\n  SQL_VARCHAR = 285,\n  SQL_VIRTUAL = 286,\n  SQL_DESCRIBE = 287,\n  SQL_BEFORE = 288,\n  SQL_COLUMN = 289,\n  SQL_CREATE = 290,\n  SQL_DELETE = 291,\n  SQL_DIRECT = 292,\n  SQL_DOUBLE = 293,\n  SQL_ESCAPE = 294,\n  SQL_EXCEPT = 295,\n  SQL_EXISTS = 296,\n  SQL_EXTRACT = 297,\n  SQL_GLOBAL = 298,\n  SQL_HAVING = 299,\n  SQL_IMPORT = 300,\n  SQL_INSERT = 301,\n  SQL_ISNULL = 302,\n  SQL_OFFSET = 303,\n  SQL_RENAME = 304,\n  SQL_SCHEMA = 305,\n  SQL_SELECT = 306,\n  SQL_SORTED = 307,\n  SQL_TABLES = 308,\n  SQL_UNIQUE = 309,\n  SQL_UNLOAD = 310,\n  SQL_UPDATE = 311,\n  SQL_VALUES = 312,\n  SQL_AFTER = 313,\n  SQL_ALTER = 314,\n  SQL_CROSS = 315,\n  SQL_DELTA = 316,\n  SQL_FLOAT = 317,\n  SQL_GROUP = 318,\n  SQL_INDEX = 319,\n  SQL_INNER = 320,\n  SQL_LIMIT = 321,\n  SQL_LOCAL = 322,\n  SQL_MERGE = 323,\n  SQL_MINUS = 324,\n  SQL_ORDER = 325,\n  SQL_OUTER = 326,\n  SQL_RIGHT = 327,\n  SQL_TABLE = 328,\n  SQL_UNION = 329,\n  SQL_USING = 330,\n  SQL_WHERE = 331,\n  SQL_CALL = 332,\n  SQL_CASE = 333,\n  SQL_CHAR = 334,\n  SQL_DATE = 335,\n  SQL_DESC = 336,\n  SQL_DROP = 337,\n  SQL_ELSE = 338,\n  SQL_FILE = 339,\n  SQL_FROM = 340,\n  SQL_FULL = 341,\n  SQL_HASH = 342,\n  SQL_HINT = 343,\n  SQL_INTO = 344,\n  SQL_JOIN = 345,\n  SQL_LEFT = 346,\n  SQL_LIKE = 347,\n  SQL_LOAD = 348,\n  SQL_LONG = 349,\n  SQL_NULL = 350,\n  SQL_PLAN = 351,\n  SQL_SHOW = 352,\n  SQL_TEXT = 353,\n  SQL_THEN = 354,\n  SQL_TIME = 355,\n  SQL_VIEW = 356,\n  SQL_WHEN = 357,\n  SQL_WITH = 358,\n  SQL_ADD = 359,\n  SQL_ALL = 360,\n  SQL_AND = 361,\n  SQL_ASC = 362,\n  SQL_CSV = 363,\n  SQL_END = 364,\n  SQL_FOR = 365,\n  SQL_INT = 366,\n  SQL_KEY = 367,\n  SQL_NOT = 368,\n  SQL_OFF = 369,\n  SQL_SET = 370,\n  SQL_TBL = 371,\n  SQL_TOP = 372,\n  SQL_AS = 373,\n  SQL_BY = 374,\n  SQL_IF = 375,\n  SQL_IN = 376,\n  SQL_IS = 377,\n  SQL_OF = 378,\n  SQL_ON = 379,\n  SQL_OR = 380,\n  SQL_TO = 381,\n  SQL_ARRAY = 382,\n  SQL_CONCAT = 383,\n  SQL_ILIKE = 384,\n  SQL_SECOND = 385,\n  SQL_MINUTE = 386,\n  SQL_HOUR = 387,\n  SQL_DAY = 388,\n  SQL_MONTH = 389,\n  SQL_YEAR = 390,\n  SQL_TRUE = 391,\n  SQL_FALSE = 392,\n  SQL_PRAGMA = 393,\n  SQL_REINDEX = 394,\n  SQL_GENERATED = 395,\n  SQL_ALWAYS = 396,\n  SQL_CHECK = 397,\n  SQL_CONFLICT = 398,\n  SQL_IGNORE = 399,\n  SQL_REPLACE = 400,\n  SQL_ROLLBACK = 401,\n  SQL_ABORT = 402,\n  SQL_FAIL = 403,\n  SQL_AUTOINCR = 404,\n  SQL_BEGIN = 405,\n  SQL_TRIGGER = 406,\n  SQL_TEMP = 407,\n  SQL_INSTEAD = 408,\n  SQL_EACH = 409,\n  SQL_ROW = 410,\n  SQL_OVER = 411,\n  SQL_FILTER = 412,\n  SQL_PARTITION = 413,\n  SQL_CURRENT = 414,\n  SQL_EXCLUDE = 415,\n  SQL_FOLLOWING = 416,\n  SQL_GROUPS = 417,\n  SQL_NO = 418,\n  SQL_OTHERS = 419,\n  SQL_PRECEDING = 420,\n  SQL_RANGE = 421,\n  SQL_ROWS = 422,\n  SQL_TIES = 423,\n  SQL_UNBOUNDED = 424,\n  SQL_WINDOW = 425,\n  SQL_ATTACH = 426,\n  SQL_DETACH = 427,\n  SQL_DATABASE = 428,\n  SQL_INDEXED = 429,\n  SQL_CAST = 430,\n  SQL_SAVEPOINT = 431,\n  SQL_RELEASE = 432,\n  SQL_VACUUM = 433,\n  SQL_TRANSACTION = 434,\n  SQL_DEFFERED = 435,\n  SQL_EXCLUSIVE = 436,\n  SQL_IMEDIATE = 437,\n  SQL_COMMIT = 438,\n  SQL_GLOB = 439,\n  SQL_MATCH = 440,\n  SQL_REGEX = 441,\n  SQL_NOTHING = 442,\n  SQL_NULLS = 443,\n  SQL_LAST = 444,\n  SQL_FIRST = 445,\n  SQL_DO = 446,\n  SQL_COLLATE = 447,\n  SQL_EQUALS = 448,\n  SQL_NOTEQUALS = 449,\n  SQL_LESS = 450,\n  SQL_GREATER = 451,\n  SQL_LESSEQ = 452,\n  SQL_GREATEREQ = 453,\n  SQL_NOTNULL = 454,\n  SQL_UMINUS = 455\n};\n#endif\n\n/* Value type.  */\n#if !defined HSQL_STYPE && !defined HSQL_STYPE_IS_DECLARED\n#line 95 \"bison_parser.y\" /* yacc.c:1921  */\nunion HSQL_STYPE {\n#line 95 \"bison_parser.y\" /* yacc.c:1921  */\n\n  double fval;\n  int64_t ival;\n  char* sval;\n  uintmax_t uval;\n  bool bval;\n\n  Program* program_t;\n  StatementList* statement_list_t;\n  Statement* statement_t;\n  PreparableStatement* preparable_statement_t;\n  OptionalHints* optional_hints_t;\n  HintList* hint_list_t;\n  Hint* hint_t;\n  PrepareStatement* prepare_statement_t;\n  PrepareTargetQuery* prepare_target_query_t;\n  ExecuteStatement* execute_statement_t;\n  ImportStatement* import_statement_t;\n  ImportFileType* import_file_type_t;\n  FilePath* file_path_t;\n  TableRefCommaList* table_ref_commalist_t;\n  ShowStatement* show_statement_t;\n  CreateStatement* create_statement_t;\n  OptNotExists* opt_not_exists_t;\n  ColumnDefCommaList* column_def_comma_list_t;\n  ColumnDef* column_def_t;\n  ColumnType* column_type_t;\n  // OptColumnNullable* opt_column_nullable_t;\n  DropStatement* drop_statement_t;\n  OptExists* opt_exists_t;\n  DeleteStatement* delete_statement_t;\n  InsertStatement* insert_statement_t;\n  OptColumnList* opt_column_list_t;\n  UpdateStatement* update_statement_t;\n  UpdateClauseCommalist* update_clause_commalist_t;\n  UpdateClause* update_clause_t;\n  SelectStatement* select_statement_t;\n  SelectWithParen* select_with_paren_t;\n  SelectParenOrClause* select_paren_or_clause_t;\n  SelectNoParen* select_no_paren_t;\n  SetOperator* set_operator_t;\n  SetType* set_type_t;\n  OptAll* opt_all_t;\n  IdentCommaList* ident_commalist_t;\n  SelectClause* select_clause_t;\n  OptDistinct* opt_distinct_t;\n  SelectList* select_list_t;\n  OptFromClause* opt_from_clause_t;\n  FromClause* from_clause_t;\n  OptWhere* opt_where_t;\n  OptGroup* opt_group_t;\n  OptHaving* opt_having_t;\n  OptOrder* opt_order_t;\n  OrderList* order_list_t;\n  OrderDesc* order_desc_t;\n  OptOrderType* opt_order_type_t;\n  OptTop* opt_top_t;\n  OptLimit* opt_limit_t;\n  ExprList* expr_list_t;\n  OptLiteralList* opt_literal_list_t;\n  LiteralList* literal_list_t;\n  ExprAlias* expr_alias_t;\n  Expr* expr_t;\n  Operand* operand_t;\n  ScalarExpr* scalar_expr_t;\n  UnaryExpr* unary_expr_t;\n  BinaryExpr* binary_expr_t;\n  LogicExpr* logic_expr_t;\n  InExpr* in_expr_t;\n  CompExpr* comp_expr_t;\n  CaseExpr* case_expr_t;\n  CaseClause* case_clause_t;\n  CaseList* case_list_t;\n  ExistsExpr* exists_expr_t;\n  FunctionExpr* function_expr_t;\n  ExtractExpr* extract_expr_t;\n  DatetimeField* datetime_field_t;\n  ArrayExpr* array_expr_t;\n  ArrayIndex* array_index_t;\n  BetweenExpr* between_expr_t;\n  ColumnName* column_name_t;\n  Literal* literal_t;\n  StringLiteral* string_literal_t;\n  BoolLiteral* bool_literal_t;\n  NumLiteral* num_literal_t;\n  IntLiteral* int_literal_t;\n  NullLiteral* null_literal_t;\n  ParamExpr* param_expr_t;\n  TableRef* table_ref_t;\n  TableRefAtomic* table_ref_atomic_t;\n  NonjoinTableRefAtomic* nonjoin_table_ref_atomic_t;\n  TableRefName* table_ref_name_t;\n  TableRefNameNoAlias* table_ref_name_no_alias_t;\n  TableName* table_name_t;\n  TableAlias* table_alias_t;\n  OptTableAlias* opt_table_alias_t;\n  Alias* alias_t;\n  OptAlias* opt_alias_t;\n  OptWithClause* opt_with_clause_t;\n  WithClause* with_clause_t;\n  WithDescriptionList* with_description_list_t;\n  WithDescription* with_description_t;\n  JoinClause* join_clause_t;\n  OptJoinType* opt_join_type_t;\n  JoinCondition* join_condition_t;\n  OptSemicolon* opt_semicolon_t;\n  Identifier* identifier_t;\n  Cmd* cmd_t;\n  CmdAttach* cmd_attach_t;\n  CmdDetach* cmd_detach_t;\n  CmdReindex* cmd_reindex_t;\n  CmdAnalyze* cmd_analyze_t;\n  CmdPragma* cmd_pragma_t;\n  PragmaKey* pragma_key_t;\n  PragmaValue* pragma_value_t;\n  PragmaName* pragma_name_t;\n  SchemaName* schema_name_t;\n  OptColumnArglist* opt_column_arglist_t;\n  ColumnArglist* column_arglist_t;\n  ColumnArg* column_arg_t;\n  OptOnConflict* opt_on_conflict_t;\n  ResolveType* resolve_type_t;\n  OptAutoinc* opt_autoinc_t;\n  OptUnique* opt_unique_t;\n  IndexName* index_name_t;\n  TriggerDeclare* trigger_declare_t;\n  OptTmp* opt_tmp_t;\n  TriggerName* trigger_name_t;\n  OptTriggerTime* opt_trigger_time_t;\n  TriggerEvent* trigger_event_t;\n  OptOfColumnList* opt_of_column_list_t;\n  OptForEach* opt_for_each_t;\n  OptWhen* opt_when_t;\n  TriggerCmdList* trigger_cmd_list_t;\n  TriggerCmd* trigger_cmd_t;\n  ModuleName* module_name_t;\n  OptOverClause* opt_over_clause_t;\n  OptFilterClause* opt_filter_clause_t;\n  WindowClause* window_clause_t;\n  WindowDefnList* window_defn_list_t;\n  WindowDefn* window_defn_t;\n  Window* window_t;\n  OptBaseWindowName* opt_base_window_name_t;\n  OptFrame* opt_frame_t;\n  RangeOrRows* range_or_rows_t;\n  FrameBoundS* frame_bound_s_t;\n  FrameBoundE* frame_bound_e_t;\n  FrameBound* frame_bound_t;\n  OptFrameExclude* opt_frame_exclude_t;\n  FrameExclude* frame_exclude_t;\n  InsertType* insert_type_t;\n  SuperList* super_list_t;\n  JoinKw* join_kw_t;\n\n  TablePrefix* table_prefix_t;\n  JoinOp* join_op_t;\n  OptIndex* opt_index_t;\n  OptOn* opt_on_t;\n  OptUsing* opt_using_t;\n\n  CastExpr* cast_expr_t;\n  AlterStatement* alter_statement_t;\n  OptColumn* opt_column_t;\n  CmdRelease* cmd_release_t;\n  SavepointName* savepoint_name_t;\n  VacuumStatement* vacuum_statement_t;\n  OptSchemaName* opt_schema_name_t;\n  RollbackStatement* rollback_statement_t;\n  OptTransaction* opt_transaction_t;\n  OptToSavepoint* opt_to_savepoint_t;\n  BeginStatement* begin_statement_t;\n  CommitStatement* commit_statement_t;\n  UpsertClause* upsert_clause_t;\n  IndexedColumnList* indexed_column_list_t;\n  IndexedColumn* indexed_column_t;\n  OptCollate* opt_collate_t;\n  AssignList* assign_list_t;\n  OptNull* opt_null_t;\n  AssignClause* assign_clause_t;\n  ColumnNameList* column_name_list_t;\n  CollationName* collation_name_t;\n  OptUpsertClause* opt_upsert_clause_t;\n\n  std::vector<char*>* str_vec;\n  std::vector<TableRef*>* table_vec;\n  std::vector<ColumnDef*>* column_vec;\n  std::vector<UpdateClause*>* update_vec;\n  std::vector<Expr*>* expr_vec;\n  std::vector<OrderDesc*>* order_vec;\n  std::vector<WithDescription*>* with_description_vec;\n\n#line 488 \"bison_parser.h\" /* yacc.c:1921  */\n};\n#line 95 \"bison_parser.y\" /* yacc.c:1921  */\ntypedef union HSQL_STYPE HSQL_STYPE;\n#define HSQL_STYPE_IS_TRIVIAL 1\n#define HSQL_STYPE_IS_DECLARED 1\n#endif\n\n/* Location type.  */\n#if !defined HSQL_LTYPE && !defined HSQL_LTYPE_IS_DECLARED\ntypedef struct HSQL_LTYPE HSQL_LTYPE;\nstruct HSQL_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n};\n#define HSQL_LTYPE_IS_DECLARED 1\n#define HSQL_LTYPE_IS_TRIVIAL 1\n#endif\n\nint hsql_parse(Program* result, yyscan_t scanner);\n\n#endif /* !YY_HSQL_BISON_PARSER_H_INCLUDED  */\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/bison_parser.output",
    "content": "Terminals unused in grammar\n\n            PARAMETERS TEMPORARY TIMESTAMP NVARCHAR RESTRICT CASCADE CONTROL\n                EXPLAIN SCHEMAS SPATIAL DIRECT ESCAPE GLOBAL SCHEMA SORTED\n                    UNLOAD DELTA LOCAL MERGE MINUS CALL DATE HASH LOAD PLAN TIME\n                        OFF LESS GREATER NOTNULL UMINUS\n\n                            State 674 conflicts : 1 shift /\n        reduce State 705 conflicts : 1 shift /\n        reduce State 706 conflicts : 1 shift /\n        reduce State 736 conflicts : 1 shift /\n        reduce\n\n            Grammar\n\n        0 $accept : input $end\n\n                    1 input : statement_list opt_semicolon\n\n                              2 statement_list : statement 3 |\n    statement_list ';' statement\n\n    4 statement : prepare_statement opt_hints 5 |\n                  preparable_statement opt_hints 6 | show_statement 7 |\n                  cmd\n\n                  8 cmd\n    : cmd_pragma 9 |\n      cmd_reindex 10 | cmd_analyze 11 | cmd_attach 12 | cmd_detach 13 |\n      cmd_release 14 | rollback_statement 15 | vacuum_statement 16 |\n      begin_statement 17 |\n      commit_statement\n\n      18 cmd_release : RELEASE SAVEPOINT savepoint_name 19 |\n                       RELEASE savepoint_name\n\n                       20 savepoint_name : IDENTIFIER\n\n                                           21 cmd_pragma\n    : PRAGMA pragma_key 22 |\n      PRAGMA pragma_key '=' pragma_value 23 |\n      PRAGMA pragma_key '(' pragma_value ')'\n\n      24 cmd_reindex : REINDEX 25 |\n                       REINDEX table_name\n\n                       26 cmd_analyze : ANALYZE 27 |\n                                        ANALYZE table_name\n\n                                        28 cmd_attach\n    : ATTACH expr AS schema_name 29 |\n      ATTACH DATABASE expr AS schema_name\n\n      30 cmd_detach : DETACH schema_name 31 |\n                      DETACH DATABASE schema_name\n\n                      32 pragma_key : pragma_name 33 |\n                                      schema_name '.' pragma_name\n\n                                      34 pragma_value\n    : num_literal 35 |\n      string_literal 36 | IDENTIFIER 37 | ON 38 | DELETE 39 |\n      DEFAULT\n\n      40 schema_name : IDENTIFIER\n\n                       41 pragma_name : IDENTIFIER\n\n                                        42 preparable_statement\n    : select_statement 43 |\n      import_statement 44 | create_statement 45 | insert_statement 46 |\n      delete_statement 47 | truncate_statement 48 | update_statement 49 |\n      drop_statement 50 | execute_statement 51 |\n      alter_statement\n\n      52 rollback_statement : ROLLBACK opt_transaction opt_to_savepoint\n\n                              53 opt_transaction : TRANSACTION 54 |\n                                                   % empty\n\n                                                       55 opt_to_savepoint\n    : TO savepoint_name 56 | TO SAVEPOINT savepoint_name 57 |\n                                                   % empty\n\n                                                       58 vacuum_statement\n    : VACUUM opt_schema_name INTO file_path 59 |\n                                                   VACUUM opt_schema_name\n\n                                                   60 opt_schema_name\n    : schema_name 61 |\n      % empty\n\n          62 begin_statement : BEGIN opt_transaction 63 |\n      BEGIN DEFFERED opt_transaction 64 | BEGIN IMEDIATE opt_transaction 65 |\n      BEGIN EXCLUSIVE opt_transaction\n\n      66 commit_statement : COMMIT opt_transaction 67 |\n                            END opt_transaction\n\n                            68 opt_upsert_clause\n    : upsert_clause 69 |\n      % empty\n\n          70 upsert_clause : ON CONFLICT DO NOTHING 71 |\n      ON CONFLICT DO UPDATE SET assign_list opt_where 72 |\n      ON CONFLICT '(' indexed_column_list ')' opt_where DO NOTHING 73 |\n      ON CONFLICT '(' indexed_column_list ')' opt_where DO UPDATE SET\n          assign_list opt_where\n\n      74 indexed_column_list : indexed_column 75 |\n                               indexed_column_list ',' indexed_column\n\n                               76 indexed_column\n    : expr opt_collate opt_order_type\n\n      77 opt_collate : COLLATE collation_name 78 |\n                       % empty\n\n                           79 assign_list : assign_clause 80 |\n                       assign_list ',' assign_clause\n\n                       81 opt_null : NULLS FIRST 82 |\n                                     NULLS LAST 83 | % empty\n\n                                                         84 assign_clause\n    : column_name_list '=' expr\n\n      85 column_name_list : column_name 86 |\n                                     column_name_list ',' column_name\n\n                                     87 collation_name : IDENTIFIER\n\n                                                         88 opt_hints\n    : WITH HINT '(' hint_list ')' 89 |\n      % empty\n\n          90 hint_list : hint 91 |\n      hint_list ',' hint\n\n      92 hint : IDENTIFIER 93 |\n                IDENTIFIER '(' literal_list ')'\n\n                94 prepare_statement\n    : PREPARE IDENTIFIER FROM prepare_target_query\n\n      95 prepare_target_query : STRING\n\n                                96 execute_statement\n    : EXECUTE IDENTIFIER 97 |\n      EXECUTE IDENTIFIER '(' opt_literal_list ')'\n\n      98 import_statement\n    : IMPORT FROM import_file_type FILE file_path INTO table_name\n\n      99 import_file_type : CSV\n\n                            100 file_path : string_literal\n\n                                            101 show_statement\n    : SHOW TABLES 102 |\n      SHOW COLUMNS table_name 103 |\n      DESCRIBE table_name\n\n      104 alter_statement\n    : ALTER TABLE table_name RENAME TO table_name 105 |\n      ALTER TABLE table_name RENAME opt_column column_name TO column_name 106 |\n      ALTER TABLE table_name ADD opt_column column_def\n\n      107 opt_column\n    : COLUMN 108 |\n      % empty\n\n          109 create_statement\n    : CREATE TABLE opt_not_exists table_name FROM TBL FILE file_path 110 |\n      CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' 111 |\n      CREATE TABLE opt_not_exists table_name AS select_statement 112 |\n      CREATE VIEW opt_not_exists table_name opt_column_list AS\n          select_statement 113 |\n      CREATE opt_unique INDEX opt_not_exists index_name ON\n          table_name '(' ident_commalist ')' opt_where 114 |\n      CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name 115 |\n      CREATE VIRTUAL TABLE opt_not_exists table_name USING\n          module_name '(' column_def_commalist ')' 116 |\n      CREATE trigger_declare BEGIN trigger_cmd_list END\n\n      117 opt_unique\n    : UNIQUE 118 |\n      % empty\n\n          119 index_name : IDENTIFIER\n\n                           120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time trigger_event\n          ON table_name opt_for_each opt_when\n\n      121 opt_tmp : TEMP 122 |\n      % empty\n\n          123 trigger_name : IDENTIFIER\n\n                             124 opt_trigger_time : BEFORE 125 |\n      AFTER 126 | INSTEAD OF 127 | % empty\n\n                                       128 trigger_event : DELETE 129 |\n      INSERT 130 |\n      UPDATE opt_of_column_list\n\n      131 opt_of_column_list : OF ident_commalist 132 |\n                               % empty\n\n                                   133 opt_for_each\n    : FOR EACH ROW 134 | % empty\n\n                                   135 opt_when\n    : WHEN expr 136 | % empty\n\n                                   137 trigger_cmd_list : trigger_cmd ';' 138 |\n                               trigger_cmd_list trigger_cmd ';'\n\n                               139 trigger_cmd\n    : select_statement 140 |\n      update_statement 141 | insert_statement 142 |\n      delete_statement\n\n      143 module_name : IDENTIFIER\n\n                        144 opt_not_exists\n    : IF NOT EXISTS 145 |\n      % empty\n\n          146 column_def_commalist : column_def 147 |\n      column_def_commalist ',' column_def\n\n      148 column_def : IDENTIFIER column_type opt_column_arglist\n\n                       149 opt_column_arglist : column_arglist 150 |\n                                                % empty\n\n                                                    151 column_arglist\n    : column_arglist column_arg 152 |\n                                                column_arg\n\n                                                153 column_arg\n    : NULL opt_on_conflict 154 |\n      NOT NULL opt_on_conflict 155 |\n      PRIMARY KEY opt_order_type opt_on_conflict opt_autoinc 156 |\n      UNIQUE opt_on_conflict 157 | GENERATED ALWAYS AS '(' expr ')' 158 |\n      AS '(' expr ')' 159 |\n      CHECK '(' expr ')'\n\n      160 opt_on_conflict : ON CONFLICT resolve_type 161 |\n                            % empty\n\n                                162 resolve_type : IGNORE 163 |\n                            REPLACE 164 | ROLLBACK 165 | ABORT 166 |\n                            FAIL\n\n                            167 opt_autoinc\n    : AUTOINCR 168 |\n      % empty\n\n          169 column_type : INT 170 |\n      INTEGER 171 | LONG 172 | FLOAT 173 | DOUBLE 174 |\n      VARCHAR '(' INTVAL ')' 175 | CHAR '(' INTVAL ')' 176 | TEXT 177 |\n      % empty\n\n          178 drop_statement : DROP TABLE opt_exists table_name 179 |\n      DROP VIEW opt_exists table_name 180 | DEALLOCATE PREPARE IDENTIFIER 181 |\n      DROP TRIGGER opt_exists schema_name '.' trigger_name 182 |\n      DROP TRIGGER opt_exists trigger_name\n\n      183 opt_exists\n    : IF EXISTS 184 |\n      % empty\n\n          185 delete_statement : DELETE FROM table_name opt_where\n\n                                 186 truncate_statement : TRUNCATE table_name\n\n                                                          187 insert_statement\n    : insert_type INTO table_name opt_column_list VALUES super_list\n          opt_upsert_clause 188 |\n      insert_type INTO table_name opt_column_list select_no_paren\n          opt_upsert_clause\n\n      189 super_list : '(' literal_list ')' 190 |\n                       super_list ',' '(' literal_list ')'\n\n                       191 insert_type : INSERT 192 |\n                                         REPLACE 193 |\n                                         INSERT OR resolve_type\n\n                                         194 opt_column_list\n    : '(' ident_commalist ')' 195 |\n      % empty\n\n          196 update_statement\n    : UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where\n\n      197 update_clause_commalist : update_clause 198 |\n      update_clause_commalist ',' update_clause\n\n      199 update_clause : IDENTIFIER '=' expr\n\n                          200 select_statement\n    : opt_with_clause select_with_paren 201 |\n      opt_with_clause select_no_paren 202 |\n      opt_with_clause select_with_paren set_operator select_paren_or_clause\n          opt_order opt_limit\n\n      203 select_with_paren : '(' select_no_paren ')' 204 |\n                              '(' select_with_paren ')'\n\n                              205 select_paren_or_clause\n    : select_with_paren 206 |\n      select_clause\n\n      207 select_no_paren\n    : select_clause opt_order opt_limit 208 |\n      select_clause set_operator select_paren_or_clause opt_order opt_limit\n\n      209 set_operator : set_type opt_all\n\n                         210 set_type : UNION 211 |\n                                        INTERSECT 212 |\n                                        EXCEPT\n\n                                        213 opt_all\n    : ALL 214 |\n      % empty\n\n          215 select_clause : SELECT opt_top opt_distinct select_list\n                                  opt_from_clause opt_where opt_group 216 |\n      SELECT opt_top opt_distinct select_list opt_from_clause opt_where\n          opt_group window_clause\n\n      217 window_clause : WINDOW windowdefn_list\n\n                          218 windowdefn_list : windowdefn 219 |\n                                                windowdefn_list ',' windowdefn\n\n                                                220 windowdefn\n    : IDENTIFIER AS '(' window ')'\n\n      221 window\n    : opt_base_window_name PARTITION BY expr_list opt_order opt_frame 222 |\n      opt_base_window_name opt_order opt_frame\n\n      223 opt_base_window_name : IDENTIFIER 224 |\n                                 % empty\n\n                                     225 opt_frame\n    : range_or_rows frame_bound_s opt_frame_exclude 226 |\n                                 range_or_rows BETWEEN frame_bound_s AND\n                                     frame_bound_e opt_frame_exclude 227 |\n                                 % empty\n\n                                     228 range_or_rows\n    : RANGE 229 | ROWS 230 |\n                                 GROUPS\n\n                                 231 frame_bound_s : frame_bound 232 |\n                                                     UNBOUNDED PRECEDING\n\n                                                     233 frame_bound_e\n    : frame_bound 234 |\n      UNBOUNDED FOLLOWING\n\n      235 frame_bound : expr PRECEDING 236 |\n                        expr FOLLOWING 237 |\n                        CURRENT ROW\n\n                        238 opt_frame_exclude\n    : EXCLUDE frame_exclude 239 |\n      % empty\n\n          240 frame_exclude : NO OTHERS 241 |\n      CURRENT ROW 242 | GROUP 243 |\n      TIES\n\n      244 opt_distinct : DISTINCT 245 |\n                         % empty\n\n                             246 select_list : expr_list\n\n                                               247 opt_from_clause\n    : from_clause 248 | % empty\n\n                             249 from_clause : FROM table_ref\n\n                                               250 opt_where\n    : WHERE expr 251 | % empty\n\n                             252 opt_group : GROUP BY expr_list opt_having 253 |\n                         % empty\n\n                             254 opt_having\n    : HAVING expr 255 | % empty\n\n                             256 opt_order : ORDER BY order_list 257 |\n                         % empty\n\n                             258 order_list : order_desc 259 |\n                         order_list ',' order_desc\n\n                         260 order_desc : expr opt_order_type opt_null\n\n                                          261 opt_order_type\n    : ASC 262 |\n      DESC 263 | % empty\n\n                     264 opt_top : TOP int_literal 265 |\n      % empty\n\n          266 opt_limit : LIMIT expr 267 |\n      OFFSET expr 268 | LIMIT expr OFFSET expr 269 | LIMIT ALL 270 |\n      LIMIT ALL OFFSET expr 271 | % empty\n\n                                      272 expr_list : expr_alias 273 |\n      expr_list ',' expr_alias\n\n      274 opt_literal_list : literal_list 275 |\n                             % empty\n\n                                 276 literal_list : literal 277 |\n                             literal_list ',' literal\n\n                             278 expr_alias : expr opt_alias\n\n                                              279 expr\n    : operand 280 |\n      between_expr 281 | logic_expr 282 | exists_expr 283 | in_expr 284 |\n      cast_expr\n\n      285 operand\n    : '(' expr ')' 286 |\n      array_index 287 | scalar_expr 288 | unary_expr 289 | binary_expr 290 |\n      case_expr 291 | function_expr 292 | extract_expr 293 | array_expr 294 |\n      '(' select_no_paren ')'\n\n      295 cast_expr : CAST '(' expr AS column_type ')'\n\n                      296 scalar_expr : column_name 297 |\n                                        literal\n\n                                        298 unary_expr\n    : '-' operand 299 |\n      NOT operand 300 | operand ISNULL 301 | operand IS NULL 302 |\n      operand IS NOT NULL\n\n      303 binary_expr\n    : comp_expr 304 |\n      operand '-' operand 305 | operand '+' operand 306 |\n      operand '/' operand 307 | operand '*' operand 308 |\n      operand '%' operand 309 | operand '^' operand 310 |\n      operand LIKE operand 311 | operand NOT LIKE operand 312 |\n      operand ILIKE operand 313 | operand CONCAT operand 314 |\n      operand GLOB operand 315 | operand MATCH operand 316 |\n      operand REGEX operand\n\n      317 logic_expr : expr AND expr 318 |\n                       expr OR expr\n\n                       319 in_expr : operand IN '(' expr_list ')' 320 |\n                                     operand NOT IN '(' expr_list ')' 321 |\n                                     operand IN '(' select_no_paren ')' 322 |\n                                     operand NOT IN '(' select_no_paren ')'\n\n                                     323 case_expr\n    : CASE expr case_list END 324 |\n      CASE expr case_list ELSE expr END 325 | CASE case_list END 326 |\n      CASE case_list ELSE expr END\n\n      327 case_list : WHEN expr THEN expr 328 |\n                      case_list WHEN expr THEN expr\n\n                      329 exists_expr : EXISTS '(' select_no_paren ')' 330 |\n                                        NOT EXISTS '(' select_no_paren ')'\n\n                                        331 comp_expr\n    : operand '=' operand 332 |\n      operand EQUALS operand 333 | operand NOTEQUALS operand 334 |\n      operand '<' operand 335 | operand '>' operand 336 |\n      operand LESSEQ operand 337 |\n      operand GREATEREQ operand\n\n      338 function_expr\n    : IDENTIFIER '(' ')' opt_filter_clause opt_over_clause 339 |\n      IDENTIFIER '(' opt_distinct expr_list ')' opt_filter_clause\n          opt_over_clause\n\n      340 opt_over_clause\n    : OVER '(' window ')' 341 |\n      OVER IDENTIFIER 342 | % empty\n\n                                343 opt_filter_clause\n    : FILTER '(' WHERE expr ')' 344 |\n      % empty\n\n          345 extract_expr : EXTRACT '(' datetime_field FROM expr ')'\n\n                             346 datetime_field : SECOND 347 |\n      MINUTE 348 | HOUR 349 | DAY 350 | MONTH 351 |\n      YEAR\n\n      352 array_expr : ARRAY '[' expr_list ']'\n\n                       353 array_index : operand '[' int_literal ']'\n\n                                         354 between_expr\n    : operand BETWEEN operand AND operand\n\n      355 column_name : IDENTIFIER 356 |\n                        IDENTIFIER '.' IDENTIFIER 357 | '*' 358 |\n                        IDENTIFIER '.' '*'\n\n                        359 literal\n    : string_literal 360 |\n      bool_literal 361 | num_literal 362 | null_literal 363 |\n      param_expr\n\n      364 string_literal : STRING\n\n                           365 bool_literal : TRUE 366 |\n                                              FALSE\n\n                                              367 num_literal : FLOATVAL 368 |\n                                                                int_literal\n\n                                                                369 int_literal\n    : INTVAL\n\n      370 null_literal : NULL\n\n                         371 param_expr : '?'\n\n                                          372 table_ref\n    : table_prefix table_name opt_alias opt_index opt_on opt_using 373 |\n      table_prefix table_name '(' expr_list ')' opt_alias opt_on opt_using 374 |\n      table_prefix '(' select_no_paren ')' opt_alias opt_on opt_using 375 |\n      table_prefix '(' table_ref ')' opt_alias opt_on opt_using\n\n      376 table_prefix : table_ref join_op 377 |\n                         % empty\n\n                             378 join_op\n    : ',' 379 | JOIN 380 |\n                         join_kw JOIN 381 | join_kw IDENTIFIER JOIN 382 |\n                         join_kw IDENTIFIER IDENTIFIER JOIN\n\n                         383 opt_index : INDEXED BY column_name 384 |\n                                         NOT INDEXED 385 | % empty\n\n                                                               386 opt_on\n    : ON expr 387 | % empty\n\n                                             388 opt_using\n    : USING '(' ident_commalist ')' 389 | % empty\n\n                                              390 table_ref_name_no_alias\n    : table_name\n\n      391 table_name : IDENTIFIER 392 |\n                                         IDENTIFIER '.' IDENTIFIER\n\n                                         393 alias : AS IDENTIFIER\n\n                                                     394 opt_alias\n    : alias 395 |\n      % empty\n\n          396 opt_with_clause : with_clause 397 |\n      % empty\n\n          398 with_clause : WITH with_description_list\n\n                            399 with_description_list : with_description 400 |\n      with_description_list ',' with_description\n\n      401 with_description : IDENTIFIER AS select_with_paren\n\n                             402 join_kw\n    : INNER 403 |\n      LEFT OUTER 404 | LEFT 405 | RIGHT OUTER 406 | RIGHT 407 | FULL OUTER 408 |\n      OUTER 409 | FULL 410 | CROSS 411 |\n      NATURAL\n\n      412 opt_semicolon : ';' 413 |\n                          % empty\n\n                              414 ident_commalist : IDENTIFIER 415 |\n                          ident_commalist ',' IDENTIFIER\n\n                              Terminals,\n    with rules where\n        they\n            appear\n\n                $end(0) 0 '%'(37)308 '('(40)23 72 73 88 93 97 110 113 115 157 158 159 174 175 189 190 194 203 204 220 285 294 295 319 320 321 322 329 330 338 339 340 343 345 373 374 375 388 ')'(41)23 72 73 88 93 97 110 113 115 157 158 159 174 175 189 190 194 203 204 220 285 294 295 319 320 321 322 329 330 338 339 340 343 345 373 374 375 388 '*'(42)307 357 358 '+'(43)305 ','(44)75 80 86 91 147 190 198 219 259 273 277 378 400 415 '-'(45)298 304 '.'(46)33 181 356 358 392 '/'(47)306 ';'(\n                    59)3 137 138 412 '<'(60)334 '='(61)22 84 199 331 '>'(62)335 '?'(63)371 '['(91)352 353 ']'(93)352 353 '^'(94)309 error(256)\n                    STRING<sval>(258) 95 364 IDENTIFIER<sval>(259) 20 36 40 41 87 92 93 94 96 97 119 123 143 148 180 199 220 223 338 339 341 355 356 358 381 382 391 392 393 401 414 415 FLOATVAL<\n                        fval>(\n                        260) 367 INTVAL<ival>(261) 174 175 369 DEALLOCATE(262) 180 PARAMETERS(263)\n                        INTERSECT(264) 211 TEMPORARY(265) TIMESTAMP(266)\n                            DISTINCT(267) 244 NVARCHAR(268) RESTRICT(269)\n                                TRUNCATE(270) 186 ANALYZE(271) 26 27 BETWEEN(\n                                    272) 226 354 CASCADE(273)\n                                    COLUMNS(274) 102 CONTROL(275) DEFAULT(\n                                        276) 39 EXECUTE(277) 96 97 EXPLAIN(278)\n                                        INTEGER(279) 170 NATURAL(280) 411 PREPARE(\n                                            281) 94 180 PRIMARY(282) 155 SCHEMAS(283)\n                                            SPATIAL(284)\n                                                VARCHAR(285) 174 VIRTUAL(286) 114 115 DESCRIBE(287) 103 BEFORE(288) 124 COLUMN(289) 107 CREATE(290) 109 110 111 112 113 114 115 116 DELETE(\n                                                    291) 38 128 185 DIRECT(292)\n                                                    DOUBLE(293) 173 ESCAPE(294) EXCEPT(295) 212 EXISTS(296) 144 183 329 330 EXTRACT(\n                                                        297) 345 GLOBAL(298)\n                                                        HAVING(299) 254 IMPORT(300) 98 INSERT(\n                                                            301) 129 191 193 ISNULL(302) 300 OFFSET(303) 267 268 270 RENAME(304) 104 105 SCHEMA(305)\n                                                            SELECT(306) 215 216 SORTED(307) TABLES(308) 101 UNIQUE(309) 117 156 UNLOAD(310) UPDATE(311) 71 73 130 196 VALUES(312) 187 AFTER(313) 125 ALTER(314) 104 105 106 CROSS(315) 410 DELTA(\n                                                                316) FLOAT(317) 172 GROUP(318) 242 252 INDEX(319) 113 INNER(320) 402 LIMIT(321) 266 268 269 270 LOCAL(322) MERGE(323) MINUS(324) ORDER(325) 256 OUTER(326) 403 405 407 408 RIGHT(327) 405 406 TABLE(328) 104 105 106 109 110 111 114 115 178 UNION(329) 210 USING(330) 114 115 388 WHERE(331) 250 343 CALL(332)\n                                                                CASE(333) 323 324 325 326 CHAR(334) 175 DATE(\n                                                                    335) DESC(336) 262 DROP(337) 178 179 181 182 ELSE(338) 324 326 FILE(339) 98 109 FROM(340) 94 98 109 185 249 345 FULL(341) 407 409 HASH(342)\n                                                                    HINT(343) 88 INTO(344) 58 98 187 188 JOIN(345) 379 380 381 382 LEFT(\n                                                                        346) 403 404 LIKE(347) 310 311 LOAD(348)\n                                                                        LONG(349) 171 NULL(\n                                                                            350) 153 154 301 302 370 PLAN(351)\n                                                                            SHOW(352) 101 102 TEXT(353) 176 THEN(354) 327 328 TIME(355) VIEW(356) 112 179 WHEN(357) 135 327 328 WITH(358) 88 398 ADD(359) 106 ALL(360) 213 269 270 AND(\n                                                                                361) 226 317 354 ASC(362) 261 CSV(363) 99 END(364) 67 116 323 324 325 326 FOR(365) 133 INT(366) 169 KEY(367) 155 NOT(368) 144 154 299 302 311 320 322 330 384 OFF(369)\n                                                                                SET(370) 71 73 196 TBL(371) 109 TOP(372) 264 AS(373) 28 29 111 112 157 158 220 295 393 401 BY(374) 221 252 256 383 IF(375) 144 183 IN(376) 319 320 321 322 IS(377) 301 302 OF(378) 126 131 ON(379) 37 70 71 72 73 113 120 160 386 OR(380) 193 318 TO(381) 55 56 104 105 ARRAY(382) 352 CONCAT(383) 313 ILIKE(384) 312 SECOND(385) 346 MINUTE(386) 347 HOUR(387) 348 DAY(388) 349 MONTH(389) 350 YEAR(390) 351 TRUE(391) 365 FALSE(392) 366 PRAGMA(393) 21 22 23 REINDEX(394) 24 25 GENERATED(395) 157 ALWAYS(396) 157 CHECK(397) 159 CONFLICT(398) 70 71 72 73 160 IGNORE(399) 162 REPLACE(400) 163 192 ROLLBACK(401) 52 164 ABORT(402) 165 FAIL(403) 166 AUTOINCR(404) 167 BEGIN(405) 62 63 64 65 116 TRIGGER(\n                                                                                    406) 120 181 182 TEMP(407) 121 INSTEAD(408) 126 EACH(409) 133 ROW(410) 133 237 241 OVER(411) 340 341 FILTER(412) 343 PARTITION(413) 221 CURRENT(414) 237 241 EXCLUDE(415) 238 FOLLOWING(416) 234 236 GROUPS(417) 230 NO(418) 240 OTHERS(419) 240 PRECEDING(420) 232 235 RANGE(421) 228 ROWS(422) 229 TIES(423) 243 UNBOUNDED(424) 232 234 WINDOW(425) 217 ATTACH(426) 28 29 DETACH(427) 30 31 DATABASE(428) 29 31 INDEXED(429) 383 384 CAST(430) 295 SAVEPOINT(431) 18 56 RELEASE(432) 18 19 VACUUM(433) 58 59 TRANSACTION(434) 53 DEFFERED(435) 63 EXCLUSIVE(436) 65 IMEDIATE(437) 64 COMMIT(438) 66 GLOB(439) 314 MATCH(440) 315 REGEX(441) 316 NOTHING(442) 70 72 NULLS(443) 81 82 LAST(444) 82 FIRST(445) 81 DO(446) 70 71 72 73 COLLATE(447) 77 EQUALS(448) 332 NOTEQUALS(449) 333 LESS(450)\n                                                                                    GREATER(\n                                                                                        451)\n                                                                                        LESSEQ(452) 336 GREATEREQ(\n                                                                                            453) 337 NOTNULL(454)\n                                                                                            UMINUS(\n                                                                                                455)\n\n                                                                                                Nonterminals\n    ,\n    with rules where they appear\n\n    $accept(218) on left : 0 input<program_t>(219) on left : 1,\n    on right : 0 statement_list<statement_list_t>(220) on left : 2 3,\n    on right : 1 3 statement<statement_t>(221) on left : 4 5 6 7,\n    on right : 2 3 cmd<cmd_t>(222) on left : 8 9 10 11 12 13 14 15 16 17,\n    on right : 7 cmd_release<cmd_release_t>(223) on left : 18 19,\n    on right : 13 savepoint_name<savepoint_name_t>(224) on left : 20,\n    on right : 18 19 55 56 cmd_pragma<cmd_pragma_t>(225) on left : 21 22 23,\n    on right : 8 cmd_reindex<cmd_reindex_t>(226) on left : 24 25,\n    on right : 9 cmd_analyze<cmd_analyze_t>(227) on left : 26 27,\n    on right : 10 cmd_attach<cmd_attach_t>(228) on left : 28 29,\n    on right : 11 cmd_detach<cmd_detach_t>(229) on left : 30 31,\n    on right : 12 pragma_key<pragma_key_t>(230) on left : 32 33,\n    on right : 21 22 23 pragma_value<pragma_value_t>(\n        231) on left : 34 35 36 37 38 39,\n    on right : 22 23 schema_name<schema_name_t>(232) on left : 40,\n    on right : 28 29 30 31 33 60 181 pragma_name<pragma_name_t>(\n        233) on left : 41,\n    on right : 32 33 preparable_statement<preparable_statement_t>(\n        234) on left : 42 43 44 45 46 47 48 49 50 51,\n    on right : 5 rollback_statement<rollback_statement_t>(235) on left : 52,\n    on right : 14 opt_transaction<opt_transaction_t>(236) on left : 53 54,\n    on right : 52 62 63 64 65 66 67 opt_to_savepoint<opt_to_savepoint_t>(\n        237) on left : 55 56 57,\n    on right : 52 vacuum_statement<vacuum_statement_t>(238) on left : 58 59,\n    on right : 15 opt_schema_name<opt_schema_name_t>(239) on left : 60 61,\n    on right : 58 59 begin_statement<begin_statement_t>(\n        240) on left : 62 63 64 65,\n    on right : 16 commit_statement<commit_statement_t>(241) on left : 66 67,\n    on right : 17 opt_upsert_clause<opt_upsert_clause_t>(242) on left : 68 69,\n    on right : 187 188 upsert_clause<upsert_clause_t>(\n        243) on left : 70 71 72 73,\n    on right : 68 indexed_column_list<indexed_column_list_t>(\n        244) on left : 74 75,\n    on right : 72 73 75 indexed_column<indexed_column_t>(245) on left : 76,\n    on right : 74 75 opt_collate<opt_collate_t>(246) on left : 77 78,\n    on right : 76 assign_list<assign_list_t>(247) on left : 79 80,\n    on right : 71 73 80 opt_null<opt_null_t>(248) on left : 81 82 83,\n    on right : 260 assign_clause<assign_clause_t>(249) on left : 84,\n    on right : 79 80 column_name_list<column_name_list_t>(250) on left : 85 86,\n    on right : 84 86 collation_name<collation_name_t>(251) on left : 87,\n    on right : 77 opt_hints<optional_hints_t>(252) on left : 88 89,\n    on right : 4 5 hint_list<hint_list_t>(253) on left : 90 91,\n    on right : 88 91 hint<hint_t>(254) on left : 92 93,\n    on right : 90 91 prepare_statement<prepare_statement_t>(255) on left : 94,\n    on right : 4 prepare_target_query<prepare_target_query_t>(256) on left : 95,\n    on right : 94 execute_statement<execute_statement_t>(257) on left : 96 97,\n    on right : 50 import_statement<import_statement_t>(258) on left : 98,\n    on right : 43 import_file_type<import_file_type_t>(259) on left : 99,\n    on right : 98 file_path<file_path_t>(260) on left : 100,\n    on right : 58 98 109 show_statement<show_statement_t>(\n        261) on left : 101 102 103,\n    on right : 6 alter_statement<alter_statement_t>(262) on left : 104 105 106,\n    on right : 51 opt_column<opt_column_t>(263) on left : 107 108,\n    on right : 105 106 create_statement<create_statement_t>(\n        264) on left : 109 110 111 112 113 114 115 116,\n    on right : 44 opt_unique<opt_unique_t>(265) on left : 117 118,\n    on right : 113 index_name<index_name_t>(266) on left : 119,\n    on right : 113 trigger_declare<trigger_declare_t>(267) on left : 120,\n    on right : 116 opt_tmp<opt_tmp_t>(268) on left : 121 122,\n    on right : 120 trigger_name<trigger_name_t>(269) on left : 123,\n    on right : 120 181 182 opt_trigger_time<opt_trigger_time_t>(\n        270) on left : 124 125 126 127,\n    on right : 120 trigger_event<trigger_event_t>(271) on left : 128 129 130,\n    on right : 120 opt_of_column_list<opt_of_column_list_t>(\n        272) on left : 131 132,\n    on right : 130 opt_for_each<opt_for_each_t>(273) on left : 133 134,\n    on right : 120 opt_when<opt_when_t>(274) on left : 135 136,\n    on right : 120 trigger_cmd_list<trigger_cmd_list_t>(275) on left : 137 138,\n    on right : 116 138 trigger_cmd<trigger_cmd_t>(\n        276) on left : 139 140 141 142,\n    on right : 137 138 module_name<module_name_t>(277) on left : 143,\n    on right : 114 115 opt_not_exists<opt_not_exists_t>(278) on left : 144 145,\n    on right : 109 110 111 112 113 114 115 120 column_def_commalist<\n        column_def_comma_list_t>(279) on left : 146 147,\n    on right : 110 115 147 column_def<column_def_t>(280) on left : 148,\n    on right : 106 146 147 opt_column_arglist<opt_column_arglist_t>(\n        281) on left : 149 150,\n    on right : 148 column_arglist<column_arglist_t>(282) on left : 151 152,\n    on right : 149 151 column_arg<column_arg_t>(\n        283) on left : 153 154 155 156 157 158 159,\n    on right : 151 152 opt_on_conflict<opt_on_conflict_t>(\n        284) on left : 160 161,\n    on right : 153 154 155 156 resolve_type<resolve_type_t>(\n        285) on left : 162 163 164 165 166,\n    on right : 160 193 opt_autoinc<opt_autoinc_t>(286) on left : 167 168,\n    on right : 155 column_type<column_type_t>(\n        287) on left : 169 170 171 172 173 174 175 176 177,\n    on right : 148 295 drop_statement<drop_statement_t>(\n        288) on left : 178 179 180 181 182,\n    on right : 49 opt_exists<opt_exists_t>(289) on left : 183 184,\n    on right : 178 179 181 182 delete_statement<delete_statement_t>(\n        290) on left : 185,\n    on right : 46 142 truncate_statement<delete_statement_t>(291) on left : 186,\n    on right : 47 insert_statement<insert_statement_t>(292) on left : 187 188,\n    on right : 45 141 super_list<super_list_t>(293) on left : 189 190,\n    on right : 187 190 insert_type<insert_type_t>(294) on left : 191 192 193,\n    on right : 187 188 opt_column_list<opt_column_list_t>(\n        295) on left : 194 195,\n    on right : 112 187 188 update_statement<update_statement_t>(\n        296) on left : 196,\n    on right : 48 140 update_clause_commalist<update_clause_commalist_t>(\n        297) on left : 197 198,\n    on right : 196 198 update_clause<update_clause_t>(298) on left : 199,\n    on right : 197 198 select_statement<select_statement_t>(\n        299) on left : 200 201 202,\n    on right : 42 111 112 139 select_with_paren<select_with_paren_t>(\n        300) on left : 203 204,\n    on right : 200 202 204 205 401 select_paren_or_clause<\n        select_paren_or_clause_t>(301) on left : 205 206,\n    on right : 202 208 select_no_paren<select_no_paren_t>(\n        302) on left : 207 208,\n    on right : 188 201 203 294 321 322 329 330 374 set_operator<set_operator_t>(\n        303) on left : 209,\n    on right : 202 208 set_type<set_type_t>(304) on left : 210 211 212,\n    on right : 209 opt_all<opt_all_t>(305) on left : 213 214,\n    on right : 209 select_clause<select_clause_t>(306) on left : 215 216,\n    on right : 206 207 208 window_clause<window_clause_t>(307) on left : 217,\n    on right : 216 windowdefn_list<window_defn_list_t>(308) on left : 218 219,\n    on right : 217 219 windowdefn<window_defn_t>(309) on left : 220,\n    on right : 218 219 window<window_t>(310) on left : 221 222,\n    on right : 220 340 opt_base_window_name<opt_base_window_name_t>(\n        311) on left : 223 224,\n    on right : 221 222 opt_frame<opt_frame_t>(312) on left : 225 226 227,\n    on right : 221 222 range_or_rows<range_or_rows_t>(\n        313) on left : 228 229 230,\n    on right : 225 226 frame_bound_s<frame_bound_s_t>(314) on left : 231 232,\n    on right : 225 226 frame_bound_e<frame_bound_e_t>(315) on left : 233 234,\n    on right : 226 frame_bound<frame_bound_t>(316) on left : 235 236 237,\n    on right : 231 233 opt_frame_exclude<opt_frame_exclude_t>(\n        317) on left : 238 239,\n    on right : 225 226 frame_exclude<frame_exclude_t>(\n        318) on left : 240 241 242 243,\n    on right : 238 opt_distinct<opt_distinct_t>(319) on left : 244 245,\n    on right : 215 216 339 select_list<select_list_t>(320) on left : 246,\n    on right : 215 216 opt_from_clause<opt_from_clause_t>(\n        321) on left : 247 248,\n    on right : 215 216 from_clause<from_clause_t>(322) on left : 249,\n    on right : 247 opt_where<opt_where_t>(323) on left : 250 251,\n    on right : 71 72 73 113 185 196 215 216 opt_group<opt_group_t>(\n        324) on left : 252 253,\n    on right : 215 216 opt_having<opt_having_t>(325) on left : 254 255,\n    on right : 252 opt_order<opt_order_t>(326) on left : 256 257,\n    on right : 202 207 208 221 222 order_list<order_list_t>(\n        327) on left : 258 259,\n    on right : 256 259 order_desc<order_desc_t>(328) on left : 260,\n    on right : 258 259 opt_order_type<opt_order_type_t>(\n        329) on left : 261 262 263,\n    on right : 76 155 260 opt_top<opt_top_t>(330) on left : 264 265,\n    on right : 215 216 opt_limit<opt_limit_t>(\n        331) on left : 266 267 268 269 270 271,\n    on right : 202 207 208 expr_list<expr_list_t>(332) on left : 272 273,\n    on right : 221 246 252 273 319 320 339 352 373 opt_literal_list<\n        opt_literal_list_t>(333) on left : 274 275,\n    on right : 97 literal_list<literal_list_t>(334) on left : 276 277,\n    on right : 93 189 190 274 277 expr_alias<expr_alias_t>(335) on left : 278,\n    on right : 272 273 expr<expr_t>(336) on left : 279 280 281 282 283 284,\n    on\n    right : 28 29 76 84 135 157 158 159 199 235 236 250 254 260 266 267 268 270 278 285 295 317 318 323 324 326 327 328 343 345 386 operand<\n        operand_t>(337) on left : 285 286 287 288 289 290 291 292 293 294,\n    on\n    right : 279 298 299 300 301 302 304 305 306 307 308 309 310 311 312 313 314 315 316 319 320 321 322 331 332 333 334 335 336 337 353 354 cast_expr<\n        cast_expr_t>(338) on left : 295,\n    on right : 284 scalar_expr<scalar_expr_t>(339) on left : 296 297,\n    on right : 287 unary_expr<unary_expr_t>(340) on left : 298 299 300 301 302,\n    on right : 288 binary_expr<binary_expr_t>(\n        341) on left : 303 304 305 306 307 308 309 310 311 312 313 314 315 316,\n    on right : 289 logic_expr<logic_expr_t>(342) on left : 317 318,\n    on right : 281 in_expr<in_expr_t>(343) on left : 319 320 321 322,\n    on right : 283 case_expr<case_expr_t>(344) on left : 323 324 325 326,\n    on right : 290 case_list<case_list_t>(345) on left : 327 328,\n    on right : 323 324 325 326 328 exists_expr<exists_expr_t>(\n        346) on left : 329 330,\n    on right : 282 comp_expr<comp_expr_t>(\n        347) on left : 331 332 333 334 335 336 337,\n    on right : 303 function_expr<function_expr_t>(348) on left : 338 339,\n    on right : 291 opt_over_clause<opt_over_clause_t>(\n        349) on left : 340 341 342,\n    on right : 338 339 opt_filter_clause<opt_filter_clause_t>(\n        350) on left : 343 344,\n    on right : 338 339 extract_expr<extract_expr_t>(351) on left : 345,\n    on right : 292 datetime_field<datetime_field_t>(\n        352) on left : 346 347 348 349 350 351,\n    on right : 345 array_expr<array_expr_t>(353) on left : 352,\n    on right : 293 array_index<array_index_t>(354) on left : 353,\n    on right : 286 between_expr<between_expr_t>(355) on left : 354,\n    on right : 280 column_name<column_name_t>(356) on left : 355 356 357 358,\n    on right : 85 86 105 296 383 literal<literal_t>(\n        357) on left : 359 360 361 362 363,\n    on right : 276 277 297 string_literal<string_literal_t>(358) on left : 364,\n    on right : 35 100 359 bool_literal<bool_literal_t>(359) on left : 365 366,\n    on right : 360 num_literal<num_literal_t>(360) on left : 367 368,\n    on right : 34 361 int_literal<int_literal_t>(361) on left : 369,\n    on right : 264 353 368 null_literal<null_literal_t>(362) on left : 370,\n    on right : 362 param_expr<param_expr_t>(363) on left : 371,\n    on right : 363 table_ref<table_ref_t>(364) on left : 372 373 374 375,\n    on right : 249 375 376 table_prefix<table_prefix_t>(365) on left : 376 377,\n    on right : 372 373 374 375 join_op<join_op_t>(\n        366) on left : 378 379 380 381 382,\n    on right : 376 opt_index<opt_index_t>(367) on left : 383 384 385,\n    on right : 372 opt_on<opt_on_t>(368) on left : 386 387,\n    on right : 372 373 374 375 opt_using<opt_using_t>(369) on left : 388 389,\n    on\n    right : 372 373 374 375 table_ref_name_no_alias<table_ref_name_no_alias_t>(\n        370) on left : 390,\n    on right : 196 table_name<table_name_t>(371) on left : 391 392,\n    on\n    right : 25 27 98 102 103 104 105 106 109 110 111 112 113 114 115 120 178 179 185 186 187 188 372 373 390 alias<\n        alias_t>(372) on left : 393,\n    on right : 394 opt_alias<opt_alias_t>(373) on left : 394 395,\n    on right : 278 372 373 374 375 opt_with_clause<opt_with_clause_t>(\n        374) on left : 396 397,\n    on right : 200 201 202 with_clause<with_clause_t>(375) on left : 398,\n    on right : 396 with_description_list<with_description_list_t>(\n        376) on left : 399 400,\n    on right : 398 400 with_description<with_description_t>(377) on left : 401,\n    on right : 399 400 join_kw<join_kw_t>(\n        378) on left : 402 403 404 405 406 407 408 409 410 411,\n    on right : 380 381 382 opt_semicolon<opt_semicolon_t>(\n        379) on left : 412 413,\n    on right : 1 ident_commalist<ident_commalist_t>(380) on left : 414 415,\n    on right : 113 131 194 388 415\n\n    State 0\n\n    0 $accept :.input $end\n\n               DEALLOCATE shift,\n    and go to state 1 TRUNCATE shift, and go to state 2 ANALYZE shift,\n    and go to state 3 EXECUTE shift, and go to state 4 PREPARE shift,\n    and go to state 5 DESCRIBE shift, and go to state 6 CREATE shift,\n    and go to state 7 DELETE shift, and go to state 8 IMPORT shift,\n    and go to state 9 INSERT shift, and go to state 10 UPDATE shift,\n    and go to state 11 ALTER shift, and go to state 12 DROP shift,\n    and go to state 13 SHOW shift, and go to state 14 WITH shift,\n    and go to state 15 END shift, and go to state 16 PRAGMA shift,\n    and go to state 17 REINDEX shift, and go to state 18 REPLACE shift,\n    and go to state 19 ROLLBACK shift, and go to state 20 BEGIN shift,\n    and go to state 21 ATTACH shift, and go to state 22 DETACH shift,\n    and go to state 23 RELEASE shift, and go to state 24 VACUUM shift,\n    and go to state 25 COMMIT shift,\n    and go to state 26\n\n        $default reduce using rule 397(opt_with_clause)\n\n            input go to state 27 statement_list go to state\n        28 statement go to state 29 cmd go to state 30 cmd_release go to state\n        31 cmd_pragma go to state 32 cmd_reindex go to state\n        33 cmd_analyze go to state 34 cmd_attach go to state\n        35 cmd_detach go to state 36 preparable_statement go to state\n        37 rollback_statement go to state 38 vacuum_statement go to state\n        39 begin_statement go to state 40 commit_statement go to state\n        41 prepare_statement go to state 42 execute_statement go to state\n        43 import_statement go to state 44 show_statement go to state\n        45 alter_statement go to state 46 create_statement go to state\n        47 drop_statement go to state 48 delete_statement go to state\n        49 truncate_statement go to state 50 insert_statement go to state\n        51 insert_type go to state 52 update_statement go to state\n        53 select_statement go to state 54 opt_with_clause go to state\n        55 with_clause go to state 56\n\n        State 1\n\n        180 drop_statement : DEALLOCATE.PREPARE IDENTIFIER\n\n                             PREPARE shift,\n    and go to state 57\n\n        State 2\n\n        186 truncate_statement : TRUNCATE.table_name\n\n                                 IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 59\n\n        State 3\n\n        26 cmd_analyze : ANALYZE .27 |\n        ANALYZE.table_name\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        $default reduce using rule 26(cmd_analyze)\n\n            table_name go to state 60\n\n        State 4\n\n        96 execute_statement : EXECUTE.IDENTIFIER 97 |\n        EXECUTE.IDENTIFIER '(' opt_literal_list ')'\n\n        IDENTIFIER shift,\n    and go to state 61\n\n        State 5\n\n        94 prepare_statement : PREPARE.IDENTIFIER FROM prepare_target_query\n\n                               IDENTIFIER shift,\n    and go to state 62\n\n        State 6\n\n        103 show_statement : DESCRIBE.table_name\n\n                             IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 63\n\n        State 7\n\n        109 create_statement\n    : CREATE.TABLE opt_not_exists table_name FROM TBL FILE file_path 110 |\n        CREATE.TABLE opt_not_exists table_name '(' column_def_commalist\n        ')' 111 |\n        CREATE.TABLE opt_not_exists table_name AS select_statement 112 |\n        CREATE.VIEW opt_not_exists table_name opt_column_list AS\n        select_statement 113 |\n        CREATE.opt_unique INDEX opt_not_exists index_name ON table_name\n        '(' ident_commalist ')' opt_where 114 |\n        CREATE.VIRTUAL TABLE opt_not_exists table_name USING module_name 115 |\n        CREATE.VIRTUAL TABLE opt_not_exists table_name USING module_name\n        '(' column_def_commalist ')' 116 |\n        CREATE.trigger_declare BEGIN trigger_cmd_list END\n\n        VIRTUAL shift,\n    and go to state 64 UNIQUE shift, and go to state 65 TABLE shift,\n    and go to state 66 VIEW shift, and go to state 67 TEMP shift,\n    and go to state 68\n\n        TRIGGER reduce using rule 122(opt_tmp)$default reduce using rule\n        118(opt_unique)\n\n            opt_unique go to state 69 trigger_declare go to state\n        70 opt_tmp go to state 71\n\n        State 8\n\n        185 delete_statement : DELETE.FROM table_name opt_where\n\n                               FROM shift,\n    and go to state 72\n\n        State 9\n\n        98 import_statement\n    : IMPORT.FROM import_file_type FILE file_path INTO table_name\n\n      FROM shift,\n    and go to state 73\n\n        State 10\n\n        191 insert_type : INSERT .193 |\n        INSERT.OR resolve_type\n\n        OR shift,\n    and go to state 74\n\n        $default reduce using rule 191(insert_type)\n\n            State 11\n\n        196 update_statement\n    : UPDATE.table_ref_name_no_alias SET update_clause_commalist opt_where\n\n      IDENTIFIER shift,\n    and go to state 58\n\n        table_ref_name_no_alias go to state 75 table_name go to state 76\n\n        State 12\n\n        104 alter_statement : ALTER.TABLE table_name RENAME TO table_name 105 |\n        ALTER.TABLE table_name RENAME opt_column column_name TO column_name\n        106 |\n        ALTER.TABLE table_name ADD opt_column column_def\n\n        TABLE shift,\n    and go to state 77\n\n        State 13\n\n        178 drop_statement : DROP.TABLE opt_exists table_name 179 |\n        DROP.VIEW opt_exists table_name 181 |\n        DROP.TRIGGER opt_exists schema_name '.' trigger_name 182 |\n        DROP.TRIGGER opt_exists trigger_name\n\n        TABLE shift,\n    and go to state 78 VIEW shift, and go to state 79 TRIGGER shift,\n    and go to state 80\n\n        State 14\n\n        101 show_statement : SHOW.TABLES 102 |\n        SHOW.COLUMNS table_name\n\n        COLUMNS shift,\n    and go to state 81 TABLES shift,\n    and go to state 82\n\n        State 15\n\n        398 with_clause : WITH.with_description_list\n\n                          IDENTIFIER shift,\n    and go to state 83\n\n        with_description_list go to state 84 with_description go to state 85\n\n        State 16\n\n        67 commit_statement : END.opt_transaction\n\n                              TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 87\n\n        State 17\n\n        21 cmd_pragma : PRAGMA.pragma_key 22 |\n        PRAGMA.pragma_key '=' pragma_value 23 |\n        PRAGMA.pragma_key '(' pragma_value ')'\n\n        IDENTIFIER shift,\n    and go to state 88\n\n        pragma_key go to state 89 schema_name go to state\n        90 pragma_name go to state 91\n\n        State 18\n\n        24 cmd_reindex : REINDEX .25 |\n        REINDEX.table_name\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        $default reduce using rule 24(cmd_reindex)\n\n            table_name go to state 92\n\n        State 19\n\n        192 insert_type : REPLACE\n                              .\n\n                          $default reduce using rule 192(insert_type)\n\n                              State 20\n\n                          52 rollback_statement\n    : ROLLBACK.opt_transaction opt_to_savepoint\n\n      TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 93\n\n        State 21\n\n        62 begin_statement : BEGIN.opt_transaction 63 |\n        BEGIN.DEFFERED opt_transaction 64 | BEGIN.IMEDIATE opt_transaction 65 |\n        BEGIN.EXCLUSIVE opt_transaction\n\n        TRANSACTION shift,\n    and go to state 86 DEFFERED shift, and go to state 94 EXCLUSIVE shift,\n    and go to state 95 IMEDIATE shift,\n    and go to state 96\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 97\n\n        State 22\n\n        28 cmd_attach : ATTACH.expr AS schema_name 29 |\n        ATTACH.DATABASE expr AS schema_name\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 DATABASE shift,\n    and go to state 110 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 116 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 23\n\n        30 cmd_detach : DETACH.schema_name 31 |\n        DETACH.DATABASE schema_name\n\n        IDENTIFIER shift,\n    and go to state 140 DATABASE shift,\n    and go to state 141\n\n        schema_name go to state 142\n\n        State 24\n\n        18 cmd_release : RELEASE.SAVEPOINT savepoint_name 19 |\n        RELEASE.savepoint_name\n\n        IDENTIFIER shift,\n    and go to state 143 SAVEPOINT shift,\n    and go to state 144\n\n        savepoint_name go to state 145\n\n        State 25\n\n        58 vacuum_statement : VACUUM.opt_schema_name INTO file_path 59 |\n        VACUUM.opt_schema_name\n\n        IDENTIFIER shift,\n    and go to state 140\n\n        $default reduce using rule 61(opt_schema_name)\n\n            schema_name go to state 146 opt_schema_name go to state 147\n\n        State 26\n\n        66 commit_statement : COMMIT.opt_transaction\n\n                              TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 148\n\n        State 27\n\n        0 $accept : input.$end\n\n                    $end shift,\n    and go to state 149\n\n        State 28\n\n        1 input : statement_list.opt_semicolon 3 statement_list\n    : statement_list.';' statement\n\n      ';' shift,\n    and go to state 150\n\n        $default reduce using rule 413(opt_semicolon)\n\n            opt_semicolon go to state 151\n\n        State 29\n\n        2 statement_list : statement\n                               .\n\n                           $default reduce using rule 2(statement_list)\n\n                               State 30\n\n                           7 statement\n    : cmd.\n\n      $default reduce using rule 7(statement)\n\n          State 31\n\n      13 cmd : cmd_release.\n\n               $default reduce using rule 13(cmd)\n\n                   State 32\n\n               8 cmd\n    : cmd_pragma.\n\n      $default reduce using rule 8(cmd)\n\n          State 33\n\n      9 cmd : cmd_reindex.\n\n              $default reduce using rule 9(cmd)\n\n                  State 34\n\n              10 cmd\n    : cmd_analyze.\n\n      $default reduce using rule 10(cmd)\n\n          State 35\n\n      11 cmd : cmd_attach.\n\n               $default reduce using rule 11(cmd)\n\n                   State 36\n\n               12 cmd\n    : cmd_detach.\n\n      $default reduce using rule 12(cmd)\n\n          State 37\n\n      5 statement : preparable_statement.opt_hints\n\n                    WITH shift,\n    and go to state 152\n\n        $default reduce using rule 89(opt_hints)\n\n            opt_hints go to state 153\n\n        State 38\n\n        14 cmd : rollback_statement\n                     .\n\n                 $default reduce using rule 14(cmd)\n\n                     State 39\n\n                 15 cmd : vacuum_statement\n                     .\n\n                          $default reduce using rule 15(cmd)\n\n                              State 40\n\n                          16 cmd\n    : begin_statement.\n\n      $default reduce using rule 16(cmd)\n\n          State 41\n\n      17 cmd : commit_statement\n                     .\n\n               $default reduce using rule 17(cmd)\n\n                   State 42\n\n               4 statement : prepare_statement.opt_hints\n\n                             WITH shift,\n    and go to state 152\n\n        $default reduce using rule 89(opt_hints)\n\n            opt_hints go to state 154\n\n        State 43\n\n        50 preparable_statement : execute_statement\n                                      .\n\n                                  $default reduce using rule\n                                  50(preparable_statement)\n\n                                      State 44\n\n                                  43 preparable_statement\n    : import_statement.\n\n      $default reduce using rule 43(preparable_statement)\n\n          State 45\n\n      6 statement : show_statement.\n\n                    $default reduce using rule 6(statement)\n\n                        State 46\n\n                    51 preparable_statement\n    : alter_statement.\n\n      $default reduce using rule 51(preparable_statement)\n\n          State 47\n\n      44 preparable_statement\n    : create_statement.\n\n      $default reduce using rule 44(preparable_statement)\n\n          State 48\n\n      49 preparable_statement\n    : drop_statement.\n\n      $default reduce using rule 49(preparable_statement)\n\n          State 49\n\n      46 preparable_statement\n    : delete_statement.\n\n      $default reduce using rule 46(preparable_statement)\n\n          State 50\n\n      47 preparable_statement\n    : truncate_statement.\n\n      $default reduce using rule 47(preparable_statement)\n\n          State 51\n\n      45 preparable_statement\n    : insert_statement.\n\n      $default reduce using rule 45(preparable_statement)\n\n          State 52\n\n      187 insert_statement : insert_type.INTO table_name opt_column_list VALUES\n                             super_list opt_upsert_clause 188 |\n        insert_type.INTO table_name opt_column_list select_no_paren\n        opt_upsert_clause\n\n        INTO shift,\n    and go to state 155\n\n        State 53\n\n        48 preparable_statement : update_statement\n                                      .\n\n                                  $default reduce using rule\n                                  48(preparable_statement)\n\n                                      State 54\n\n                                  42 preparable_statement\n    : select_statement.\n\n      $default reduce using rule 42(preparable_statement)\n\n          State 55\n\n      200 select_statement : opt_with_clause.select_with_paren 201 |\n        opt_with_clause.select_no_paren 202 |\n        opt_with_clause.select_with_paren set_operator\n        select_paren_or_clause opt_order opt_limit\n\n        SELECT shift,\n    and go to state 156 '(' shift,\n    and go to state 157\n\n        select_with_paren go to state 158 select_no_paren go to state\n        159 select_clause go to state 160\n\n        State 56\n\n        396 opt_with_clause : with_clause\n                                  .\n\n                              $default reduce using rule 396(opt_with_clause)\n\n                                  State 57\n\n                              180 drop_statement : DEALLOCATE PREPARE.IDENTIFIER\n\n                                                   IDENTIFIER shift,\n    and go to state 161\n\n        State 58\n\n        391 table_name : IDENTIFIER .392 |\n        IDENTIFIER.'.' IDENTIFIER\n\n        '.' shift,\n    and go to state 162\n\n        $default reduce using rule 391(table_name)\n\n            State 59\n\n        186 truncate_statement : TRUNCATE table_name\n                                     .\n\n                                 $default reduce using rule\n                                 186(truncate_statement)\n\n                                     State 60\n\n                                 27 cmd_analyze\n    : ANALYZE table_name.\n\n      $default reduce using rule 27(cmd_analyze)\n\n          State 61\n\n      96 execute_statement : EXECUTE IDENTIFIER .97 |\n        EXECUTE IDENTIFIER.'(' opt_literal_list ')'\n\n        '(' shift,\n    and go to state 163\n\n        $default reduce using rule 96(execute_statement)\n\n            State 62\n\n        94 prepare_statement : PREPARE IDENTIFIER.FROM prepare_target_query\n\n                               FROM shift,\n    and go to state 164\n\n        State 63\n\n        103 show_statement : DESCRIBE table_name\n                                 .\n\n                             $default reduce using rule 103(show_statement)\n\n                                 State 64\n\n                             114 create_statement\n    : CREATE VIRTUAL.TABLE opt_not_exists table_name USING module_name 115 |\n        CREATE VIRTUAL.TABLE opt_not_exists table_name USING module_name\n        '(' column_def_commalist ')'\n\n        TABLE shift,\n    and go to state 165\n\n        State 65\n\n        117 opt_unique : UNIQUE\n                             .\n\n                         $default reduce using rule 117(opt_unique)\n\n                             State 66\n\n                         109 create_statement\n    : CREATE TABLE.opt_not_exists table_name FROM TBL FILE file_path 110 |\n        CREATE TABLE.opt_not_exists table_name '(' column_def_commalist\n        ')' 111 |\n        CREATE TABLE.opt_not_exists table_name AS select_statement\n\n        IF shift,\n    and go to state 166\n\n        $default reduce using rule 145(opt_not_exists)\n\n            opt_not_exists go to state 167\n\n        State 67\n\n        112 create_statement\n    : CREATE VIEW.opt_not_exists table_name opt_column_list AS select_statement\n\n      IF shift,\n    and go to state 166\n\n        $default reduce using rule 145(opt_not_exists)\n\n            opt_not_exists go to state 168\n\n        State 68\n\n        121 opt_tmp : TEMP.\n\n                      $default reduce using rule 121(opt_tmp)\n\n                          State 69\n\n                      113 create_statement\n    : CREATE opt_unique.INDEX opt_not_exists index_name ON table_name\n      '(' ident_commalist ')' opt_where\n\n      INDEX shift,\n    and go to state 169\n\n        State 70\n\n        116 create_statement : CREATE trigger_declare.BEGIN trigger_cmd_list END\n\n                               BEGIN shift,\n    and go to state 170\n\n        State 71\n\n        120 trigger_declare\n    : opt_tmp.TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON table_name opt_for_each opt_when\n\n      TRIGGER shift,\n    and go to state 171\n\n        State 72\n\n        185 delete_statement : DELETE FROM.table_name opt_where\n\n                               IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 172\n\n        State 73\n\n        98 import_statement\n    : IMPORT FROM.import_file_type FILE file_path INTO table_name\n\n      CSV shift,\n    and go to state 173\n\n        import_file_type go to state 174\n\n        State 74\n\n        193 insert_type : INSERT OR.resolve_type\n\n                          IGNORE shift,\n    and go to state 175 REPLACE shift, and go to state 176 ROLLBACK shift,\n    and go to state 177 ABORT shift, and go to state 178 FAIL shift,\n    and go to state 179\n\n        resolve_type go to state 180\n\n        State 75\n\n        196 update_statement\n    : UPDATE table_ref_name_no_alias.SET update_clause_commalist opt_where\n\n      SET shift,\n    and go to state 181\n\n        State 76\n\n        390 table_ref_name_no_alias\n    : table_name\n          .\n\n      $default reduce using rule 390(table_ref_name_no_alias)\n\n          State 77\n\n      104 alter_statement : ALTER TABLE.table_name RENAME TO table_name 105 |\n        ALTER TABLE.table_name RENAME opt_column column_name TO column_name\n        106 |\n        ALTER TABLE.table_name ADD opt_column column_def\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 182\n\n        State 78\n\n        178 drop_statement : DROP TABLE.opt_exists table_name\n\n                             IF shift,\n    and go to state 183\n\n        $default reduce using rule 184(opt_exists)\n\n            opt_exists go to state 184\n\n        State 79\n\n        179 drop_statement : DROP VIEW.opt_exists table_name\n\n                             IF shift,\n    and go to state 183\n\n        $default reduce using rule 184(opt_exists)\n\n            opt_exists go to state 185\n\n        State 80\n\n        181 drop_statement : DROP TRIGGER.opt_exists schema_name\n                             '.' trigger_name 182 |\n        DROP TRIGGER.opt_exists trigger_name\n\n        IF shift,\n    and go to state 183\n\n        $default reduce using rule 184(opt_exists)\n\n            opt_exists go to state 186\n\n        State 81\n\n        102 show_statement : SHOW COLUMNS.table_name\n\n                             IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 187\n\n        State 82\n\n        101 show_statement : SHOW TABLES\n                                 .\n\n                             $default reduce using rule 101(show_statement)\n\n                                 State 83\n\n                             401 with_description\n    : IDENTIFIER.AS select_with_paren\n\n      AS shift,\n    and go to state 188\n\n        State 84\n\n        398 with_clause : WITH with_description_list .400 with_description_list\n    : with_description_list.',' with_description\n\n      ',' shift,\n    and go to state 189\n\n        $default reduce using rule 398(with_clause)\n\n            State 85\n\n        399 with_description_list : with_description\n                                        .\n\n                                    $default reduce using rule\n                                    399(with_description_list)\n\n                                        State 86\n\n                                    53 opt_transaction\n    : TRANSACTION.\n\n      $default reduce using rule 53(opt_transaction)\n\n          State 87\n\n      67 commit_statement\n    : END opt_transaction.\n\n      $default reduce using rule 67(commit_statement)\n\n          State 88\n\n      40 schema_name : IDENTIFIER .41 pragma_name\n    : IDENTIFIER.\n\n      '.' reduce using rule 40(schema_name)$default reduce using rule\n      41(pragma_name)\n\n          State 89\n\n      21 cmd_pragma : PRAGMA pragma_key .22 |\n        PRAGMA pragma_key.'=' pragma_value 23 |\n        PRAGMA pragma_key.'(' pragma_value ')'\n\n        '=' shift,\n    and go to state 190 '(' shift,\n    and go to state 191\n\n        $default reduce using rule 21(cmd_pragma)\n\n            State 90\n\n        33 pragma_key : schema_name.'.' pragma_name\n\n                        '.' shift,\n    and go to state 192\n\n        State 91\n\n        32 pragma_key : pragma_name\n                            .\n\n                        $default reduce using rule 32(pragma_key)\n\n                            State 92\n\n                        25 cmd_reindex\n    : REINDEX table_name.\n\n      $default reduce using rule 25(cmd_reindex)\n\n          State 93\n\n      52 rollback_statement : ROLLBACK opt_transaction.opt_to_savepoint\n\n                              TO shift,\n    and go to state 193\n\n        $default reduce using rule 57(opt_to_savepoint)\n\n            opt_to_savepoint go to state 194\n\n        State 94\n\n        63 begin_statement : BEGIN DEFFERED.opt_transaction\n\n                             TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 195\n\n        State 95\n\n        65 begin_statement : BEGIN EXCLUSIVE.opt_transaction\n\n                             TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 196\n\n        State 96\n\n        64 begin_statement : BEGIN IMEDIATE.opt_transaction\n\n                             TRANSACTION shift,\n    and go to state 86\n\n        $default reduce using rule 54(opt_transaction)\n\n            opt_transaction go to state 197\n\n        State 97\n\n        62 begin_statement : BEGIN opt_transaction\n                                 .\n\n                             $default reduce using rule 62(begin_statement)\n\n                                 State 98\n\n                             364 string_literal\n    : STRING.\n\n      $default reduce using rule 364(string_literal)\n\n          State 99\n\n      338 function_expr : IDENTIFIER.'(' ')' opt_filter_clause opt_over_clause\n                          339 |\n        IDENTIFIER.'(' opt_distinct expr_list\n        ')' opt_filter_clause opt_over_clause 355 column_name : IDENTIFIER\n                                                                .356 |\n        IDENTIFIER.'.' IDENTIFIER 358 |\n        IDENTIFIER.'.' '*'\n\n        '(' shift,\n    and go to state 198 '.' shift,\n    and go to state 199\n\n        $default reduce using rule 355(column_name)\n\n            State 100\n\n        367 num_literal : FLOATVAL\n                              .\n\n                          $default reduce using rule 367(num_literal)\n\n                              State 101\n\n                          369 int_literal\n    : INTVAL.\n\n      $default reduce using rule 369(int_literal)\n\n          State 102\n\n      329 exists_expr : EXISTS.'(' select_no_paren ')'\n\n                        '(' shift,\n    and go to state 200\n\n        State 103\n\n        345 extract_expr : EXTRACT.'(' datetime_field FROM expr ')'\n\n                           '(' shift,\n    and go to state 201\n\n        State 104\n\n        323 case_expr : CASE.expr case_list END 324 |\n        CASE.expr case_list ELSE expr END 325 | CASE.case_list END 326 |\n        CASE.case_list ELSE expr END\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 WHEN shift,\n    and go to state 202 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 203 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 case_list go to state 204 exists_expr go to state\n        125 comp_expr go to state 126 function_expr go to state\n        127 extract_expr go to state 128 array_expr go to state\n        129 array_index go to state 130 between_expr go to state\n        131 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 105\n\n        370 null_literal : NULL.\n\n                           $default reduce using rule 370(null_literal)\n\n                               State 106\n\n                           299 unary_expr : NOT.operand 330 exists_expr\n    : NOT.EXISTS '(' select_no_paren ')'\n\n      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 205 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 206 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 207 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 107\n\n        352 array_expr : ARRAY.'[' expr_list ']'\n\n                         '[' shift,\n    and go to state 208\n\n        State 108\n\n        365 bool_literal : TRUE.\n\n                           $default reduce using rule 365(bool_literal)\n\n                               State 109\n\n                           366 bool_literal\n    : FALSE\n          .\n\n      $default reduce using rule 366(bool_literal)\n\n          State 110\n\n      29 cmd_attach : ATTACH DATABASE.expr AS schema_name\n\n                      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 209 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 111\n\n        295 cast_expr : CAST.'(' expr AS column_type ')'\n\n                        '(' shift,\n    and go to state 210\n\n        State 112\n\n        298 unary_expr : '-'.operand\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 211 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 113\n\n        357 column_name : '*'.\n\n                          $default reduce using rule 357(column_name)\n\n                              State 114\n\n                          285 operand : '('.expr ')' 294 |\n        '('.select_no_paren ')'\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 SELECT shift,\n    and go to state 156 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        select_no_paren go to state 212 select_clause go to state\n        160 expr go to state 213 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 115\n\n        371 param_expr : '?'.\n\n                         $default reduce using rule 371(param_expr)\n\n                             State 116\n\n                         28 cmd_attach\n    : ATTACH expr.AS schema_name 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 AS shift, and go to state 215 OR shift,\n    and go to state 216\n\n        State 117\n\n        279 expr : operand .300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 314 | operand.GLOB operand 315 |\n        operand.MATCH operand 316 |\n        operand.REGEX operand 319 in_expr : operand.IN '(' expr_list ')' 320 |\n        operand.NOT IN '(' expr_list ')' 321 |\n        operand.IN '(' select_no_paren ')' 322 |\n        operand.NOT IN '(' select_no_paren ')' 331 comp_expr\n    : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index\n    : operand.'[' int_literal ']' 354 between_expr\n    : operand.BETWEEN operand AND operand\n\n      BETWEEN shift,\n    and go to state 217 ISNULL shift, and go to state 218 LIKE shift,\n    and go to state 219 NOT shift, and go to state 220 IN shift,\n    and go to state 221 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 ILIKE shift, and go to state 224 GLOB shift,\n    and go to state 225 MATCH shift, and go to state 226 REGEX shift,\n    and go to state 227 '=' shift, and go to state 228 EQUALS shift,\n    and go to state 229 NOTEQUALS shift, and go to state 230 '<' shift,\n    and go to state 231 '>' shift, and go to state 232 LESSEQ shift,\n    and go to state 233 GREATEREQ shift, and go to state 234 '+' shift,\n    and go to state 235 '-' shift, and go to state 236 '*' shift,\n    and go to state 237 '/' shift, and go to state 238 '%' shift,\n    and go to state 239 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 279(expr)\n\n            State 118\n\n        284 expr : cast_expr\n                       .\n\n                   $default reduce using rule 284(expr)\n\n                       State 119\n\n                   287 operand\n    : scalar_expr.\n\n      $default reduce using rule 287(operand)\n\n          State 120\n\n      288 operand\n    : unary_expr.\n\n      $default reduce using rule 288(operand)\n\n          State 121\n\n      289 operand\n    : binary_expr.\n\n      $default reduce using rule 289(operand)\n\n          State 122\n\n      281 expr\n    : logic_expr.\n\n      $default reduce using rule 281(expr)\n\n          State 123\n\n      283 expr\n    : in_expr.\n\n      $default reduce using rule 283(expr)\n\n          State 124\n\n      290 operand\n    : case_expr.\n\n      $default reduce using rule 290(operand)\n\n          State 125\n\n      282 expr\n    : exists_expr.\n\n      $default reduce using rule 282(expr)\n\n          State 126\n\n      303 binary_expr\n    : comp_expr.\n\n      $default reduce using rule 303(binary_expr)\n\n          State 127\n\n      291 operand\n    : function_expr.\n\n      $default reduce using rule 291(operand)\n\n          State 128\n\n      292 operand\n    : extract_expr.\n\n      $default reduce using rule 292(operand)\n\n          State 129\n\n      293 operand\n    : array_expr.\n\n      $default reduce using rule 293(operand)\n\n          State 130\n\n      286 operand\n    : array_index.\n\n      $default reduce using rule 286(operand)\n\n          State 131\n\n      280 expr\n    : between_expr.\n\n      $default reduce using rule 280(expr)\n\n          State 132\n\n      296 scalar_expr\n    : column_name.\n\n      $default reduce using rule 296(scalar_expr)\n\n          State 133\n\n      297 scalar_expr\n    : literal.\n\n      $default reduce using rule 297(scalar_expr)\n\n          State 134\n\n      359 literal\n    : string_literal.\n\n      $default reduce using rule 359(literal)\n\n          State 135\n\n      360 literal\n    : bool_literal.\n\n      $default reduce using rule 360(literal)\n\n          State 136\n\n      361 literal\n    : num_literal.\n\n      $default reduce using rule 361(literal)\n\n          State 137\n\n      368 num_literal\n    : int_literal.\n\n      $default reduce using rule 368(num_literal)\n\n          State 138\n\n      362 literal\n    : null_literal.\n\n      $default reduce using rule 362(literal)\n\n          State 139\n\n      363 literal\n    : param_expr.\n\n      $default reduce using rule 363(literal)\n\n          State 140\n\n      40 schema_name\n    : IDENTIFIER.\n\n      $default reduce using rule 40(schema_name)\n\n          State 141\n\n      31 cmd_detach : DETACH DATABASE.schema_name\n\n                      IDENTIFIER shift,\n    and go to state 140\n\n        schema_name go to state 242\n\n        State 142\n\n        30 cmd_detach : DETACH schema_name\n                            .\n\n                        $default reduce using rule 30(cmd_detach)\n\n                            State 143\n\n                        20 savepoint_name\n    : IDENTIFIER.\n\n      $default reduce using rule 20(savepoint_name)\n\n          State 144\n\n      18 cmd_release : RELEASE SAVEPOINT.savepoint_name\n\n                       IDENTIFIER shift,\n    and go to state 143\n\n        savepoint_name go to state 243\n\n        State 145\n\n        19 cmd_release : RELEASE savepoint_name\n                             .\n\n                         $default reduce using rule 19(cmd_release)\n\n                             State 146\n\n                         60 opt_schema_name\n    : schema_name.\n\n      $default reduce using rule 60(opt_schema_name)\n\n          State 147\n\n      58 vacuum_statement : VACUUM opt_schema_name.INTO file_path 59 |\n        VACUUM opt_schema_name.\n\n        INTO shift,\n    and go to state 244\n\n        $default reduce using rule 59(vacuum_statement)\n\n            State 148\n\n        66 commit_statement : COMMIT opt_transaction\n                                  .\n\n                              $default reduce using rule 66(commit_statement)\n\n                                  State 149\n\n                              0 $accept\n    : input $end.\n\n      $default accept\n\n      State 150\n\n      3 statement_list : statement_list ';'.statement 412 opt_semicolon\n    : ';'.\n\n      DEALLOCATE shift,\n    and go to state 1 TRUNCATE shift, and go to state 2 ANALYZE shift,\n    and go to state 3 EXECUTE shift, and go to state 4 PREPARE shift,\n    and go to state 5 DESCRIBE shift, and go to state 6 CREATE shift,\n    and go to state 7 DELETE shift, and go to state 8 IMPORT shift,\n    and go to state 9 INSERT shift, and go to state 10 UPDATE shift,\n    and go to state 11 ALTER shift, and go to state 12 DROP shift,\n    and go to state 13 SHOW shift, and go to state 14 WITH shift,\n    and go to state 15 END shift, and go to state 16 PRAGMA shift,\n    and go to state 17 REINDEX shift, and go to state 18 REPLACE shift,\n    and go to state 19 ROLLBACK shift, and go to state 20 BEGIN shift,\n    and go to state 21 ATTACH shift, and go to state 22 DETACH shift,\n    and go to state 23 RELEASE shift, and go to state 24 VACUUM shift,\n    and go to state 25 COMMIT shift,\n    and go to state 26\n\n        $end reduce using rule 412(opt_semicolon)$default reduce using rule\n        397(opt_with_clause)\n\n            statement go to state 245 cmd go to state 30 cmd_release go to state\n        31 cmd_pragma go to state 32 cmd_reindex go to state\n        33 cmd_analyze go to state 34 cmd_attach go to state\n        35 cmd_detach go to state 36 preparable_statement go to state\n        37 rollback_statement go to state 38 vacuum_statement go to state\n        39 begin_statement go to state 40 commit_statement go to state\n        41 prepare_statement go to state 42 execute_statement go to state\n        43 import_statement go to state 44 show_statement go to state\n        45 alter_statement go to state 46 create_statement go to state\n        47 drop_statement go to state 48 delete_statement go to state\n        49 truncate_statement go to state 50 insert_statement go to state\n        51 insert_type go to state 52 update_statement go to state\n        53 select_statement go to state 54 opt_with_clause go to state\n        55 with_clause go to state 56\n\n        State 151\n\n        1 input : statement_list opt_semicolon\n                      .\n\n                  $default reduce using rule 1(input)\n\n                      State 152\n\n                  88 opt_hints : WITH.HINT '(' hint_list ')'\n\n                                 HINT shift,\n    and go to state 246\n\n        State 153\n\n        5 statement : preparable_statement opt_hints\n                          .\n\n                      $default reduce using rule 5(statement)\n\n                          State 154\n\n                      4 statement : prepare_statement opt_hints\n                          .\n\n                                    $default reduce using rule 4(statement)\n\n                                        State 155\n\n                                    187 insert_statement\n    : insert_type INTO.table_name opt_column_list VALUES super_list\n      opt_upsert_clause 188 |\n        insert_type INTO.table_name opt_column_list select_no_paren\n        opt_upsert_clause\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 247\n\n        State 156\n\n        215 select_clause : SELECT.opt_top opt_distinct select_list\n                            opt_from_clause opt_where opt_group 216 |\n        SELECT.opt_top opt_distinct select_list\n        opt_from_clause opt_where opt_group window_clause\n\n        TOP shift,\n    and go to state 248\n\n        $default reduce using rule 265(opt_top)\n\n            opt_top go to state 249\n\n        State 157\n\n        203 select_with_paren : '('.select_no_paren ')' 204 |\n        '('.select_with_paren ')'\n\n        SELECT shift,\n    and go to state 156 '(' shift,\n    and go to state 157\n\n        select_with_paren go to state 250 select_no_paren go to state\n        251 select_clause go to state 160\n\n        State 158\n\n        200 select_statement : opt_with_clause select_with_paren .202 |\n        opt_with_clause select_with_paren.set_operator\n        select_paren_or_clause opt_order opt_limit\n\n        INTERSECT shift,\n    and go to state 252 EXCEPT shift, and go to state 253 UNION shift,\n    and go to state 254\n\n        $default reduce using rule 200(select_statement)\n\n            set_operator go to state 255 set_type go to state 256\n\n        State 159\n\n        201 select_statement : opt_with_clause select_no_paren\n                                   .\n\n                               $default reduce using rule 201(select_statement)\n\n                                   State 160\n\n                               207 select_no_paren\n    : select_clause.opt_order opt_limit 208 |\n        select_clause.set_operator select_paren_or_clause opt_order opt_limit\n\n        INTERSECT shift,\n    and go to state 252 EXCEPT shift, and go to state 253 ORDER shift,\n    and go to state 257 UNION shift,\n    and go to state 254\n\n        $default reduce using rule 257(opt_order)\n\n            set_operator go to state 258 set_type go to state\n        256 opt_order go to state 259\n\n        State 161\n\n        180 drop_statement : DEALLOCATE PREPARE IDENTIFIER\n                                 .\n\n                             $default reduce using rule 180(drop_statement)\n\n                                 State 162\n\n                             392 table_name : IDENTIFIER '.'.IDENTIFIER\n\n                                              IDENTIFIER shift,\n    and go to state 260\n\n        State 163\n\n        97 execute_statement : EXECUTE IDENTIFIER '('.opt_literal_list ')'\n\n                               STRING shift,\n    and go to state 98 FLOATVAL shift, and go to state 100 INTVAL shift,\n    and go to state 101 NULL shift, and go to state 105 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '?' shift,\n    and go to state 115\n\n        $default reduce using rule 275(opt_literal_list)\n\n            opt_literal_list go to state 261 literal_list go to state\n        262 literal go to state 263 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 164\n\n        94 prepare_statement : PREPARE IDENTIFIER FROM.prepare_target_query\n\n                               STRING shift,\n    and go to state 264\n\n        prepare_target_query go to state 265\n\n        State 165\n\n        114 create_statement\n    : CREATE VIRTUAL TABLE.opt_not_exists table_name USING module_name 115 |\n        CREATE VIRTUAL TABLE.opt_not_exists table_name USING module_name\n        '(' column_def_commalist ')'\n\n        IF shift,\n    and go to state 166\n\n        $default reduce using rule 145(opt_not_exists)\n\n            opt_not_exists go to state 266\n\n        State 166\n\n        144 opt_not_exists : IF.NOT EXISTS\n\n                             NOT shift,\n    and go to state 267\n\n        State 167\n\n        109 create_statement\n    : CREATE TABLE opt_not_exists.table_name FROM TBL FILE file_path 110 |\n        CREATE TABLE opt_not_exists.table_name '(' column_def_commalist\n        ')' 111 |\n        CREATE TABLE opt_not_exists.table_name AS select_statement\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 268\n\n        State 168\n\n        112 create_statement\n    : CREATE VIEW opt_not_exists.table_name opt_column_list AS select_statement\n\n      IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 269\n\n        State 169\n\n        113 create_statement\n    : CREATE opt_unique INDEX.opt_not_exists index_name ON table_name\n      '(' ident_commalist ')' opt_where\n\n      IF shift,\n    and go to state 166\n\n        $default reduce using rule 145(opt_not_exists)\n\n            opt_not_exists go to state 270\n\n        State 170\n\n        116 create_statement : CREATE trigger_declare BEGIN.trigger_cmd_list END\n\n                               DELETE shift,\n    and go to state 8 INSERT shift, and go to state 10 UPDATE shift,\n    and go to state 11 WITH shift, and go to state 15 REPLACE shift,\n    and go to state 19\n\n        $default reduce using rule 397(opt_with_clause)\n\n            trigger_cmd_list go to state 271 trigger_cmd go to state\n        272 delete_statement go to state 273 insert_statement go to state\n        274 insert_type go to state 52 update_statement go to state\n        275 select_statement go to state 276 opt_with_clause go to state\n        55 with_clause go to state 56\n\n        State 171\n\n        120 trigger_declare\n    : opt_tmp TRIGGER.opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON table_name opt_for_each opt_when\n\n      IF shift,\n    and go to state 166\n\n        $default reduce using rule 145(opt_not_exists)\n\n            opt_not_exists go to state 277\n\n        State 172\n\n        185 delete_statement : DELETE FROM table_name.opt_where\n\n                               WHERE shift,\n    and go to state 278\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 279\n\n        State 173\n\n        99 import_file_type : CSV.\n\n                              $default reduce using rule 99(import_file_type)\n\n                                  State 174\n\n                              98 import_statement\n    : IMPORT FROM import_file_type.FILE file_path INTO table_name\n\n      FILE shift,\n    and go to state 280\n\n        State 175\n\n        162 resolve_type : IGNORE\n                               .\n\n                           $default reduce using rule 162(resolve_type)\n\n                               State 176\n\n                           163 resolve_type\n    : REPLACE.\n\n      $default reduce using rule 163(resolve_type)\n\n          State 177\n\n      164 resolve_type\n    : ROLLBACK.\n\n      $default reduce using rule 164(resolve_type)\n\n          State 178\n\n      165 resolve_type : ABORT.\n\n                         $default reduce using rule 165(resolve_type)\n\n                             State 179\n\n                         166 resolve_type\n    : FAIL.\n\n      $default reduce using rule 166(resolve_type)\n\n          State 180\n\n      193 insert_type\n    : INSERT OR resolve_type.\n\n      $default reduce using rule 193(insert_type)\n\n          State 181\n\n      196 update_statement\n    : UPDATE table_ref_name_no_alias SET.update_clause_commalist opt_where\n\n      IDENTIFIER shift,\n    and go to state 281\n\n        update_clause_commalist go to state 282 update_clause go to state 283\n\n        State 182\n\n        104 alter_statement : ALTER TABLE table_name.RENAME TO table_name 105 |\n        ALTER TABLE table_name.RENAME opt_column column_name TO column_name\n        106 |\n        ALTER TABLE table_name.ADD opt_column column_def\n\n        RENAME shift,\n    and go to state 284 ADD shift,\n    and go to state 285\n\n        State 183\n\n        183 opt_exists : IF.EXISTS\n\n                         EXISTS shift,\n    and go to state 286\n\n        State 184\n\n        178 drop_statement : DROP TABLE opt_exists.table_name\n\n                             IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 287\n\n        State 185\n\n        179 drop_statement : DROP VIEW opt_exists.table_name\n\n                             IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 288\n\n        State 186\n\n        181 drop_statement : DROP TRIGGER opt_exists.schema_name\n                             '.' trigger_name 182 |\n        DROP TRIGGER opt_exists.trigger_name\n\n        IDENTIFIER shift,\n    and go to state 289\n\n        schema_name go to state 290 trigger_name go to state 291\n\n        State 187\n\n        102 show_statement : SHOW COLUMNS table_name\n                                 .\n\n                             $default reduce using rule 102(show_statement)\n\n                                 State 188\n\n                             401 with_description\n    : IDENTIFIER AS.select_with_paren\n\n      '(' shift,\n    and go to state 157\n\n        select_with_paren go to state 292\n\n        State 189\n\n        400 with_description_list : with_description_list ','.with_description\n\n                                    IDENTIFIER shift,\n    and go to state 83\n\n        with_description go to state 293\n\n        State 190\n\n        22 cmd_pragma : PRAGMA pragma_key '='.pragma_value\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 294 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 DEFAULT shift,\n    and go to state 295 DELETE shift, and go to state 296 ON shift,\n    and go to state 297\n\n        pragma_value go to state 298 string_literal go to state\n        299 num_literal go to state 300 int_literal go to state 137\n\n        State 191\n\n        23 cmd_pragma : PRAGMA pragma_key '('.pragma_value ')'\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 294 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 DEFAULT shift,\n    and go to state 295 DELETE shift, and go to state 296 ON shift,\n    and go to state 297\n\n        pragma_value go to state 301 string_literal go to state\n        299 num_literal go to state 300 int_literal go to state 137\n\n        State 192\n\n        33 pragma_key : schema_name '.'.pragma_name\n\n                        IDENTIFIER shift,\n    and go to state 302\n\n        pragma_name go to state 303\n\n        State 193\n\n        55 opt_to_savepoint : TO.savepoint_name 56 |\n        TO.SAVEPOINT savepoint_name\n\n        IDENTIFIER shift,\n    and go to state 143 SAVEPOINT shift,\n    and go to state 304\n\n        savepoint_name go to state 305\n\n        State 194\n\n        52 rollback_statement : ROLLBACK opt_transaction opt_to_savepoint\n                                    .\n\n                                $default reduce using rule\n                                52(rollback_statement)\n\n                                    State 195\n\n                                63 begin_statement\n    : BEGIN DEFFERED opt_transaction.\n\n      $default reduce using rule 63(begin_statement)\n\n          State 196\n\n      65 begin_statement\n    : BEGIN EXCLUSIVE\n      opt_transaction.\n\n      $default reduce using rule 65(begin_statement)\n\n          State 197\n\n      64 begin_statement\n    : BEGIN IMEDIATE opt_transaction.\n\n      $default reduce using rule 64(begin_statement)\n\n          State 198\n\n      338 function_expr : IDENTIFIER '('.')' opt_filter_clause opt_over_clause\n                          339 |\n        IDENTIFIER '('.opt_distinct expr_list\n        ')' opt_filter_clause opt_over_clause\n\n        DISTINCT shift,\n    and go to state 306 ')' shift,\n    and go to state 307\n\n        $default reduce using rule 245(opt_distinct)\n\n            opt_distinct go to state 308\n\n        State 199\n\n        356 column_name : IDENTIFIER '.'.IDENTIFIER 358 |\n        IDENTIFIER '.'.'*'\n\n        IDENTIFIER shift,\n    and go to state 309 '*' shift,\n    and go to state 310\n\n        State 200\n\n        329 exists_expr : EXISTS '('.select_no_paren ')'\n\n                          SELECT shift,\n    and go to state 156\n\n        select_no_paren go to state 311 select_clause go to state 160\n\n        State 201\n\n        345 extract_expr : EXTRACT '('.datetime_field FROM expr ')'\n\n                           SECOND shift,\n    and go to state 312 MINUTE shift, and go to state 313 HOUR shift,\n    and go to state 314 DAY shift, and go to state 315 MONTH shift,\n    and go to state 316 YEAR shift,\n    and go to state 317\n\n        datetime_field go to state 318\n\n        State 202\n\n        327 case_list : WHEN.expr THEN expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 319 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 203\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 323 case_expr : CASE expr.case_list END 324 |\n        CASE expr.case_list ELSE expr END\n\n        WHEN shift,\n    and go to state 202 AND shift, and go to state 214 OR shift,\n    and go to state 216\n\n        case_list go to state 320\n\n        State 204\n\n        325 case_expr : CASE case_list.END 326 |\n        CASE case_list.ELSE expr END 328 case_list\n    : case_list.WHEN expr THEN expr\n\n      ELSE shift,\n    and go to state 321 WHEN shift, and go to state 322 END shift,\n    and go to state 323\n\n        State 205\n\n        330 exists_expr : NOT EXISTS.'(' select_no_paren ')'\n\n                          '(' shift,\n    and go to state 324\n\n        State 206\n\n        299 unary_expr : NOT.operand\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 207 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 207\n\n        299 unary_expr : NOT operand .300 |\n        operand.ISNULL 301 | operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 314 | operand.GLOB operand 315 |\n        operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    ISNULL shift,\n    and go to state 218 LIKE shift, and go to state 219 NOT shift,\n    and go to state 325 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 ILIKE shift, and go to state 224 GLOB shift,\n    and go to state 225 MATCH shift, and go to state 226 REGEX shift,\n    and go to state 227 '=' shift, and go to state 228 EQUALS shift,\n    and go to state 229 NOTEQUALS shift, and go to state 230 '<' shift,\n    and go to state 231 '>' shift, and go to state 232 LESSEQ shift,\n    and go to state 233 GREATEREQ shift, and go to state 234 '+' shift,\n    and go to state 235 '-' shift, and go to state 236 '*' shift,\n    and go to state 237 '/' shift, and go to state 238 '%' shift,\n    and go to state 239 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 299(unary_expr)\n\n            State 208\n\n        352 array_expr : ARRAY '['.expr_list ']'\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_list go to state 326 expr_alias go to state 327 expr go to state\n        328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 209\n\n        29 cmd_attach\n    : ATTACH DATABASE expr.AS schema_name 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 AS shift, and go to state 329 OR shift,\n    and go to state 216\n\n        State 210\n\n        295 cast_expr : CAST '('.expr AS column_type ')'\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 330 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 211\n\n        298 unary_expr : '-' operand .300 |\n        operand.ISNULL 301 | operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 314 | operand.GLOB operand 315 |\n        operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 298(unary_expr)\n\n            State 212\n\n        294 operand : '(' select_no_paren.')'\n\n                      ')' shift,\n    and go to state 331\n\n        State 213\n\n        285 operand : '(' expr.')' 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 332\n\n        State 214\n\n        317 logic_expr : expr AND.expr\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 333 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 215\n\n        28 cmd_attach : ATTACH expr AS.schema_name\n\n                        IDENTIFIER shift,\n    and go to state 140\n\n        schema_name go to state 334\n\n        State 216\n\n        318 logic_expr : expr OR.expr\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 335 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 217\n\n        354 between_expr : operand BETWEEN.operand AND operand\n\n                           STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 336 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 218\n\n        300 unary_expr : operand ISNULL\n                             .\n\n                         $default reduce using rule 300(unary_expr)\n\n                             State 219\n\n                         310 binary_expr : operand LIKE.operand\n\n                                           STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 337 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 220\n\n        311 binary_expr : operand NOT.LIKE operand 320 in_expr\n    : operand NOT.IN '(' expr_list ')' 322 |\n        operand NOT.IN '(' select_no_paren ')'\n\n        LIKE shift,\n    and go to state 338 IN shift,\n    and go to state 339\n\n        State 221\n\n        319 in_expr : operand IN.'(' expr_list ')' 321 |\n        operand IN.'(' select_no_paren ')'\n\n        '(' shift,\n    and go to state 340\n\n        State 222\n\n        301 unary_expr : operand IS.NULL 302 |\n        operand IS.NOT NULL\n\n        NULL shift,\n    and go to state 341 NOT shift,\n    and go to state 342\n\n        State 223\n\n        313 binary_expr : operand CONCAT.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 343 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 224\n\n        312 binary_expr : operand ILIKE.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 344 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 225\n\n        314 binary_expr : operand GLOB.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 345 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 226\n\n        315 binary_expr : operand MATCH.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 346 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 227\n\n        316 binary_expr : operand REGEX.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 347 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 228\n\n        331 comp_expr : operand '='.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 348 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 229\n\n        332 comp_expr : operand EQUALS.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 349 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 230\n\n        333 comp_expr : operand NOTEQUALS.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 350 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 231\n\n        334 comp_expr : operand '<'.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 351 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 232\n\n        335 comp_expr : operand '>'.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 352 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 233\n\n        336 comp_expr : operand LESSEQ.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 353 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 234\n\n        337 comp_expr : operand GREATEREQ.operand\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 354 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 235\n\n        305 binary_expr : operand '+'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 355 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 236\n\n        304 binary_expr : operand '-'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 356 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 237\n\n        307 binary_expr : operand '*'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 357 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 238\n\n        306 binary_expr : operand '/'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 358 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 239\n\n        308 binary_expr : operand '%'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 359 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 240\n\n        309 binary_expr : operand '^'.operand\n\n                          STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 360 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 241\n\n        353 array_index : operand '['.int_literal ']'\n\n                          INTVAL shift,\n    and go to state 101\n\n        int_literal go to state 361\n\n        State 242\n\n        31 cmd_detach : DETACH DATABASE schema_name\n                            .\n\n                        $default reduce using rule 31(cmd_detach)\n\n                            State 243\n\n                        18 cmd_release\n    : RELEASE SAVEPOINT\n      savepoint_name.\n\n      $default reduce using rule 18(cmd_release)\n\n          State 244\n\n      58 vacuum_statement : VACUUM opt_schema_name INTO.file_path\n\n                            STRING shift,\n    and go to state 98\n\n        file_path go to state 362 string_literal go to state 363\n\n        State 245\n\n        3 statement_list : statement_list ';' statement\n                               .\n\n                           $default reduce using rule 3(statement_list)\n\n                               State 246\n\n                           88 opt_hints : WITH HINT.'(' hint_list ')'\n\n                                          '(' shift,\n    and go to state 364\n\n        State 247\n\n        187 insert_statement\n    : insert_type INTO table_name.opt_column_list VALUES super_list\n      opt_upsert_clause 188 |\n        insert_type INTO table_name.opt_column_list select_no_paren\n        opt_upsert_clause\n\n        '(' shift,\n    and go to state 365\n\n        $default reduce using rule 195(opt_column_list)\n\n            opt_column_list go to state 366\n\n        State 248\n\n        264 opt_top : TOP.int_literal\n\n                      INTVAL shift,\n    and go to state 101\n\n        int_literal go to state 367\n\n        State 249\n\n        215 select_clause : SELECT opt_top.opt_distinct select_list\n                            opt_from_clause opt_where opt_group 216 |\n        SELECT opt_top.opt_distinct select_list\n        opt_from_clause opt_where opt_group window_clause\n\n        DISTINCT shift,\n    and go to state 306\n\n        $default reduce using rule 245(opt_distinct)\n\n            opt_distinct go to state 368\n\n        State 250\n\n        204 select_with_paren : '(' select_with_paren.')'\n\n                                ')' shift,\n    and go to state 369\n\n        State 251\n\n        203 select_with_paren : '(' select_no_paren.')'\n\n                                ')' shift,\n    and go to state 370\n\n        State 252\n\n        211 set_type : INTERSECT\n                           .\n\n                       $default reduce using rule 211(set_type)\n\n                           State 253\n\n                       212 set_type\n    : EXCEPT.\n\n      $default reduce using rule 212(set_type)\n\n          State 254\n\n      210 set_type : UNION.\n\n                     $default reduce using rule 210(set_type)\n\n                         State 255\n\n                     202 select_statement\n    : opt_with_clause select_with_paren\n      set_operator.select_paren_or_clause opt_order opt_limit\n\n      SELECT shift,\n    and go to state 156 '(' shift,\n    and go to state 157\n\n        select_with_paren go to state 371 select_paren_or_clause go to state\n        372 select_clause go to state 373\n\n        State 256\n\n        209 set_operator : set_type.opt_all\n\n                           ALL shift,\n    and go to state 374\n\n        $default reduce using rule 214(opt_all)\n\n            opt_all go to state 375\n\n        State 257\n\n        256 opt_order : ORDER.BY order_list\n\n                        BY shift,\n    and go to state 376\n\n        State 258\n\n        208 select_no_paren\n    : select_clause set_operator.select_paren_or_clause opt_order opt_limit\n\n      SELECT shift,\n    and go to state 156 '(' shift,\n    and go to state 157\n\n        select_with_paren go to state 371 select_paren_or_clause go to state\n        377 select_clause go to state 373\n\n        State 259\n\n        207 select_no_paren : select_clause opt_order.opt_limit\n\n                              OFFSET shift,\n    and go to state 378 LIMIT shift,\n    and go to state 379\n\n        $default reduce using rule 271(opt_limit)\n\n            opt_limit go to state 380\n\n        State 260\n\n        392 table_name : IDENTIFIER '.' IDENTIFIER\n                             .\n\n                         $default reduce using rule 392(table_name)\n\n                             State 261\n\n                         97 execute_statement : EXECUTE IDENTIFIER\n                                                '(' opt_literal_list.')'\n\n                                                ')' shift,\n    and go to state 381\n\n        State 262\n\n        274 opt_literal_list : literal_list .277 literal_list\n    : literal_list.',' literal\n\n      ',' shift,\n    and go to state 382\n\n        $default reduce using rule 274(opt_literal_list)\n\n            State 263\n\n        276 literal_list : literal\n                               .\n\n                           $default reduce using rule 276(literal_list)\n\n                               State 264\n\n                           95 prepare_target_query\n    : STRING.\n\n      $default reduce using rule 95(prepare_target_query)\n\n          State 265\n\n      94 prepare_statement\n    : PREPARE IDENTIFIER FROM\n      prepare_target_query.\n\n      $default reduce using rule 94(prepare_statement)\n\n          State 266\n\n      114 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists.table_name USING module_name 115 |\n        CREATE VIRTUAL TABLE opt_not_exists.table_name USING module_name\n        '(' column_def_commalist ')'\n\n        IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 383\n\n        State 267\n\n        144 opt_not_exists : IF NOT.EXISTS\n\n                             EXISTS shift,\n    and go to state 384\n\n        State 268\n\n        109 create_statement\n    : CREATE TABLE opt_not_exists table_name.FROM TBL FILE file_path 110 |\n        CREATE TABLE opt_not_exists table_name.'(' column_def_commalist\n        ')' 111 |\n        CREATE TABLE opt_not_exists table_name.AS select_statement\n\n        FROM shift,\n    and go to state 385 AS shift, and go to state 386 '(' shift,\n    and go to state 387\n\n        State 269\n\n        112 create_statement\n    : CREATE VIEW opt_not_exists table_name.opt_column_list AS select_statement\n\n      '(' shift,\n    and go to state 365\n\n        $default reduce using rule 195(opt_column_list)\n\n            opt_column_list go to state 388\n\n        State 270\n\n        113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists.index_name ON table_name\n      '(' ident_commalist ')' opt_where\n\n      IDENTIFIER shift,\n    and go to state 389\n\n        index_name go to state 390\n\n        State 271\n\n        116 create_statement\n    : CREATE trigger_declare BEGIN\n      trigger_cmd_list.END 138 trigger_cmd_list : trigger_cmd_list.trigger_cmd\n                                                  ';'\n\n                                                  DELETE shift,\n    and go to state 8 INSERT shift, and go to state 10 UPDATE shift,\n    and go to state 11 WITH shift, and go to state 15 END shift,\n    and go to state 391 REPLACE shift,\n    and go to state 19\n\n        $default reduce using rule 397(opt_with_clause)\n\n            trigger_cmd go to state 392 delete_statement go to state\n        273 insert_statement go to state 274 insert_type go to state\n        52 update_statement go to state 275 select_statement go to state\n        276 opt_with_clause go to state 55 with_clause go to state 56\n\n        State 272\n\n        137 trigger_cmd_list : trigger_cmd.';'\n\n                               ';' shift,\n    and go to state 393\n\n        State 273\n\n        142 trigger_cmd : delete_statement\n                              .\n\n                          $default reduce using rule 142(trigger_cmd)\n\n                              State 274\n\n                          141 trigger_cmd\n    : insert_statement.\n\n      $default reduce using rule 141(trigger_cmd)\n\n          State 275\n\n      140 trigger_cmd\n    : update_statement.\n\n      $default reduce using rule 140(trigger_cmd)\n\n          State 276\n\n      139 trigger_cmd\n    : select_statement.\n\n      $default reduce using rule 139(trigger_cmd)\n\n          State 277\n\n      120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists.trigger_name opt_trigger_time\n      trigger_event ON table_name opt_for_each opt_when\n\n      IDENTIFIER shift,\n    and go to state 394\n\n        trigger_name go to state 395\n\n        State 278\n\n        250 opt_where : WHERE.expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 396 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 279\n\n        185 delete_statement : DELETE FROM table_name opt_where\n                                   .\n\n                               $default reduce using rule 185(delete_statement)\n\n                                   State 280\n\n                               98 import_statement\n    : IMPORT FROM import_file_type FILE.file_path INTO table_name\n\n      STRING shift,\n    and go to state 98\n\n        file_path go to state 397 string_literal go to state 363\n\n        State 281\n\n        199 update_clause : IDENTIFIER.'=' expr\n\n                            '=' shift,\n    and go to state 398\n\n        State 282\n\n        196 update_statement\n    : UPDATE table_ref_name_no_alias SET update_clause_commalist\n          .opt_where 198 update_clause_commalist\n    : update_clause_commalist.',' update_clause\n\n      WHERE shift,\n    and go to state 278 ',' shift,\n    and go to state 399\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 400\n\n        State 283\n\n        197 update_clause_commalist\n    : update_clause\n          .\n\n      $default reduce using rule 197(update_clause_commalist)\n\n          State 284\n\n      104 alter_statement : ALTER TABLE table_name RENAME.TO table_name 105 |\n        ALTER TABLE table_name RENAME.opt_column column_name TO column_name\n\n        COLUMN shift,\n    and go to state 401 TO shift,\n    and go to state 402\n\n        $default reduce using rule 108(opt_column)\n\n            opt_column go to state 403\n\n        State 285\n\n        106 alter_statement : ALTER TABLE table_name ADD.opt_column column_def\n\n                              COLUMN shift,\n    and go to state 401\n\n        $default reduce using rule 108(opt_column)\n\n            opt_column go to state 404\n\n        State 286\n\n        183 opt_exists : IF EXISTS\n                             .\n\n                         $default reduce using rule 183(opt_exists)\n\n                             State 287\n\n                         178 drop_statement\n    : DROP TABLE opt_exists\n      table_name.\n\n      $default reduce using rule 178(drop_statement)\n\n          State 288\n\n      179 drop_statement\n    : DROP VIEW opt_exists\n      table_name.\n\n      $default reduce using rule 179(drop_statement)\n\n          State 289\n\n      40 schema_name : IDENTIFIER .123 trigger_name\n    : IDENTIFIER.\n\n      '.' reduce using rule 40(schema_name)$default reduce using rule\n      123(trigger_name)\n\n          State 290\n\n      181 drop_statement : DROP TRIGGER opt_exists schema_name.'.' trigger_name\n\n                           '.' shift,\n    and go to state 405\n\n        State 291\n\n        182 drop_statement : DROP TRIGGER opt_exists trigger_name\n                                 .\n\n                             $default reduce using rule 182(drop_statement)\n\n                                 State 292\n\n                             401 with_description\n    : IDENTIFIER AS\n      select_with_paren.\n\n      $default reduce using rule 401(with_description)\n\n          State 293\n\n      400 with_description_list\n    : with_description_list\n      ',' with_description.\n\n      $default reduce using rule 400(with_description_list)\n\n          State 294\n\n      36 pragma_value\n    : IDENTIFIER.\n\n      $default reduce using rule 36(pragma_value)\n\n          State 295\n\n      39 pragma_value : DEFAULT.\n\n                        $default reduce using rule 39(pragma_value)\n\n                            State 296\n\n                        38 pragma_value\n    : DELETE.\n\n      $default reduce using rule 38(pragma_value)\n\n          State 297\n\n      37 pragma_value : ON.\n\n                        $default reduce using rule 37(pragma_value)\n\n                            State 298\n\n                        22 cmd_pragma\n    : PRAGMA pragma_key\n      '=' pragma_value.\n\n      $default reduce using rule 22(cmd_pragma)\n\n          State 299\n\n      35 pragma_value\n    : string_literal.\n\n      $default reduce using rule 35(pragma_value)\n\n          State 300\n\n      34 pragma_value\n    : num_literal.\n\n      $default reduce using rule 34(pragma_value)\n\n          State 301\n\n      23 cmd_pragma : PRAGMA pragma_key '(' pragma_value.')'\n\n                      ')' shift,\n    and go to state 406\n\n        State 302\n\n        41 pragma_name : IDENTIFIER\n                             .\n\n                         $default reduce using rule 41(pragma_name)\n\n                             State 303\n\n                         33 pragma_key\n    : schema_name\n      '.' pragma_name.\n\n      $default reduce using rule 33(pragma_key)\n\n          State 304\n\n      56 opt_to_savepoint : TO SAVEPOINT.savepoint_name\n\n                            IDENTIFIER shift,\n    and go to state 143\n\n        savepoint_name go to state 407\n\n        State 305\n\n        55 opt_to_savepoint : TO savepoint_name\n                                  .\n\n                              $default reduce using rule 55(opt_to_savepoint)\n\n                                  State 306\n\n                              244 opt_distinct\n    : DISTINCT.\n\n      $default reduce using rule 244(opt_distinct)\n\n          State 307\n\n      338 function_expr : IDENTIFIER '(' ')'.opt_filter_clause opt_over_clause\n\n                          FILTER shift,\n    and go to state 408\n\n        $default reduce using rule 344(opt_filter_clause)\n\n            opt_filter_clause go to state 409\n\n        State 308\n\n        339 function_expr : IDENTIFIER '(' opt_distinct.expr_list\n                            ')' opt_filter_clause opt_over_clause\n\n                            STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_list go to state 410 expr_alias go to state 327 expr go to state\n        328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 309\n\n        356 column_name : IDENTIFIER '.' IDENTIFIER\n                              .\n\n                          $default reduce using rule 356(column_name)\n\n                              State 310\n\n                          358 column_name\n    : IDENTIFIER '.' '*'.\n\n      $default reduce using rule 358(column_name)\n\n          State 311\n\n      329 exists_expr : EXISTS '(' select_no_paren.')'\n\n                        ')' shift,\n    and go to state 411\n\n        State 312\n\n        346 datetime_field : SECOND\n                                 .\n\n                             $default reduce using rule 346(datetime_field)\n\n                                 State 313\n\n                             347 datetime_field\n    : MINUTE.\n\n      $default reduce using rule 347(datetime_field)\n\n          State 314\n\n      348 datetime_field : HOUR.\n\n                           $default reduce using rule 348(datetime_field)\n\n                               State 315\n\n                           349 datetime_field\n    : DAY.\n\n      $default reduce using rule 349(datetime_field)\n\n          State 316\n\n      350 datetime_field : MONTH.\n\n                           $default reduce using rule 350(datetime_field)\n\n                               State 317\n\n                           351 datetime_field\n    : YEAR.\n\n      $default reduce using rule 351(datetime_field)\n\n          State 318\n\n      345 extract_expr : EXTRACT '(' datetime_field.FROM expr ')'\n\n                         FROM shift,\n    and go to state 412\n\n        State 319\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 327 case_list : WHEN expr.THEN expr\n\n                                     THEN shift,\n    and go to state 413 AND shift, and go to state 214 OR shift,\n    and go to state 216\n\n        State 320\n\n        323 case_expr : CASE expr case_list.END 324 |\n        CASE expr case_list.ELSE expr END 328 case_list\n    : case_list.WHEN expr THEN expr\n\n      ELSE shift,\n    and go to state 414 WHEN shift, and go to state 322 END shift,\n    and go to state 415\n\n        State 321\n\n        326 case_expr : CASE case_list ELSE.expr END\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 416 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 322\n\n        328 case_list : case_list WHEN.expr THEN expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 417 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 323\n\n        325 case_expr : CASE case_list END\n                            .\n\n                        $default reduce using rule 325(case_expr)\n\n                            State 324\n\n                        330 exists_expr : NOT EXISTS '('.select_no_paren ')'\n\n                                          SELECT shift,\n    and go to state 156\n\n        select_no_paren go to state 418 select_clause go to state 160\n\n        State 325\n\n        311 binary_expr : operand NOT.LIKE operand\n\n                          LIKE shift,\n    and go to state 338\n\n        State 326\n\n        273 expr_list\n    : expr_list.',' expr_alias 352 array_expr : ARRAY '[' expr_list.']'\n\n                                                ']' shift,\n    and go to state 419 ',' shift,\n    and go to state 420\n\n        State 327\n\n        272 expr_list : expr_alias\n                            .\n\n                        $default reduce using rule 272(expr_list)\n\n                            State 328\n\n                        278 expr_alias : expr.opt_alias 317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 AS shift, and go to state 421 OR shift,\n    and go to state 216\n\n        $default reduce using rule 395(opt_alias)\n\n            alias go to state 422 opt_alias go to state 423\n\n        State 329\n\n        29 cmd_attach : ATTACH DATABASE expr AS.schema_name\n\n                        IDENTIFIER shift,\n    and go to state 140\n\n        schema_name go to state 424\n\n        State 330\n\n        295 cast_expr : CAST '(' expr.AS column_type ')' 317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 AS shift, and go to state 425 OR shift,\n    and go to state 216\n\n        State 331\n\n        294 operand : '(' select_no_paren\n                      ')'.\n\n                      $default reduce using rule 294(operand)\n\n                          State 332\n\n                      285 operand : '(' expr\n                                    ')'.\n\n                                    $default reduce using rule 285(operand)\n\n                                        State 333\n\n                                    317 logic_expr : expr.AND expr 317 |\n        expr AND expr .318 |\n        expr.OR expr\n\n        $default reduce using rule 317(logic_expr)\n\n            State 334\n\n        28 cmd_attach : ATTACH expr AS schema_name\n                            .\n\n                        $default reduce using rule 28(cmd_attach)\n\n                            State 335\n\n                        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 318 |\n        expr OR expr.\n\n        AND shift,\n    and go to state 214\n\n        $default reduce using rule 318(logic_expr)\n\n            State 336\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 314 | operand.GLOB operand 315 |\n        operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index\n    : operand.'[' int_literal ']' 354 between_expr\n    : operand BETWEEN operand.AND operand\n\n      ISNULL shift,\n    and go to state 218 LIKE shift, and go to state 219 AND shift,\n    and go to state 426 NOT shift, and go to state 325 IS shift,\n    and go to state 222 CONCAT shift, and go to state 223 ILIKE shift,\n    and go to state 224 GLOB shift, and go to state 225 MATCH shift,\n    and go to state 226 REGEX shift, and go to state 227 '=' shift,\n    and go to state 228 EQUALS shift, and go to state 229 NOTEQUALS shift,\n    and go to state 230 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n        State 337\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 310 |\n        operand LIKE operand .311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 310(binary_expr)\n\n    State 338\n\n    311 binary_expr : operand NOT LIKE.operand\n\n                      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 427 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 339\n\n        320 in_expr : operand NOT IN.'(' expr_list ')' 322 |\n        operand NOT IN.'(' select_no_paren ')'\n\n        '(' shift,\n    and go to state 428\n\n        State 340\n\n        319 in_expr : operand IN '('.expr_list ')' 321 |\n        operand IN '('.select_no_paren ')'\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 SELECT shift,\n    and go to state 156 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        select_no_paren go to state 429 select_clause go to state\n        160 expr_list go to state 430 expr_alias go to state\n        327 expr go to state 328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 341\n\n        301 unary_expr : operand IS NULL\n                             .\n\n                         $default reduce using rule 301(unary_expr)\n\n                             State 342\n\n                         302 unary_expr : operand IS NOT.NULL\n\n                                          NULL shift,\n    and go to state 431\n\n        State 343\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 313 | operand CONCAT operand .314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    '[' shift,\n    and go to state 241\n\n        $default reduce using rule 313(binary_expr)\n\n            State 344\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 312 |\n        operand ILIKE operand .313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 312(binary_expr)\n\n        State 345\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 314 |\n    operand GLOB operand .315 | operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 314(binary_expr)\n\n        State 346\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 315 | operand MATCH operand .316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 315(binary_expr)\n\n        State 347\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 | operand.REGEX operand 316 |\n    operand REGEX operand .331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 316(binary_expr)\n\n        State 348\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 331 |\n    operand '=' operand .332 | operand.EQUALS operand 333 |\n    operand.NOTEQUALS operand 334 | operand.'<' operand 335 |\n    operand.'>' operand 336 | operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 331(comp_expr)\n\n        State 349\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 332 | operand EQUALS operand .333 |\n    operand.NOTEQUALS operand 334 | operand.'<' operand 335 |\n    operand.'>' operand 336 | operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 332(comp_expr)\n\n        State 350\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 333 |\n    operand NOTEQUALS operand .334 | operand.'<' operand 335 |\n    operand.'>' operand 336 | operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 333(comp_expr)\n\n        State 351\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 334 | operand '<' operand .335 |\n    operand.'>' operand 336 | operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    '<' error(nonassociative) '>' error(nonassociative) LESSEQ\n    error(nonassociative)\nGREATEREQ error(nonassociative)\n\n$default reduce using rule 334(comp_expr)\n\n        State 352\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 335 |\n    operand '>' operand .336 | operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    '<' error(nonassociative) '>' error(nonassociative) LESSEQ\n    error(nonassociative)\nGREATEREQ error(nonassociative)\n\n$default reduce using rule 335(comp_expr)\n\n        State 353\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 336 | operand LESSEQ operand .337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    '<' error(nonassociative) '>' error(nonassociative) LESSEQ\n    error(nonassociative)\nGREATEREQ error(nonassociative)\n\n$default reduce using rule 336(comp_expr)\n\n        State 354\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 306 | operand.'/' operand 307 |\n    operand.'*' operand 308 | operand.'%' operand 309 |\n    operand.'^' operand 310 | operand.LIKE operand 311 |\n    operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n    operand.CONCAT operand 314 | operand.GLOB operand 315 |\n    operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 337 | operand.GREATEREQ operand 337 |\n    operand GREATEREQ operand .353 array_index : operand.'[' int_literal ']'\n\n                                                 ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    '<' error(nonassociative) '>' error(nonassociative) LESSEQ\n    error(nonassociative)\nGREATEREQ error(nonassociative)\n\n$default reduce using rule 337(comp_expr)\n\n        State 355\n\n    300 unary_expr : operand.ISNULL 301 |\n    operand.IS NULL 302 |\n    operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n    operand.'+' operand 305 | operand '+' operand .306 |\n    operand.'/' operand 307 | operand.'*' operand 308 |\n    operand.'%' operand 309 | operand.'^' operand 310 |\n    operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n    operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n    operand.GLOB operand 315 | operand.MATCH operand 316 |\n    operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n    operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n    operand.'<' operand 335 | operand.'>' operand 336 |\n    operand.LESSEQ operand 337 |\n    operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                CONCAT shift,\n    and go to state 223 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 305(binary_expr)\n\n            State 356\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 304 |\n        operand '-' operand .305 | operand.'+' operand 306 |\n        operand.'/' operand 307 | operand.'*' operand 308 |\n        operand.'%' operand 309 | operand.'^' operand 310 |\n        operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 304(binary_expr)\n\n            State 357\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 307 | operand '*' operand .308 |\n        operand.'%' operand 309 | operand.'^' operand 310 |\n        operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 307(binary_expr)\n\n            State 358\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 306 |\n        operand '/' operand .307 | operand.'*' operand 308 |\n        operand.'%' operand 309 | operand.'^' operand 310 |\n        operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 306(binary_expr)\n\n            State 359\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 308 |\n        operand '%' operand .309 | operand.'^' operand 310 |\n        operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 308(binary_expr)\n\n            State 360\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 309 | operand '^' operand .310 |\n        operand.LIKE operand 311 | operand.NOT LIKE operand 312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    CONCAT shift,\n    and go to state 223 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 309(binary_expr)\n\n            State 361\n\n        353 array_index : operand '[' int_literal.']'\n\n                          ']' shift,\n    and go to state 432\n\n        State 362\n\n        58 vacuum_statement : VACUUM opt_schema_name INTO file_path\n                                  .\n\n                              $default reduce using rule 58(vacuum_statement)\n\n                                  State 363\n\n                              100 file_path\n    : string_literal.\n\n      $default reduce using rule 100(file_path)\n\n          State 364\n\n      88 opt_hints : WITH HINT '('.hint_list ')'\n\n                     IDENTIFIER shift,\n    and go to state 433\n\n        hint_list go to state 434 hint go to state 435\n\n        State 365\n\n        194 opt_column_list : '('.ident_commalist ')'\n\n                              IDENTIFIER shift,\n    and go to state 436\n\n        ident_commalist go to state 437\n\n        State 366\n\n        187 insert_statement\n    : insert_type INTO table_name opt_column_list.VALUES super_list\n      opt_upsert_clause 188 |\n        insert_type INTO table_name opt_column_list.select_no_paren\n        opt_upsert_clause\n\n        SELECT shift,\n    and go to state 156 VALUES shift,\n    and go to state 438\n\n        select_no_paren go to state 439 select_clause go to state 160\n\n        State 367\n\n        264 opt_top : TOP int_literal\n                          .\n\n                      $default reduce using rule 264(opt_top)\n\n                          State 368\n\n                      215 select_clause\n    : SELECT opt_top opt_distinct.select_list\n      opt_from_clause opt_where opt_group 216 |\n        SELECT opt_top opt_distinct.select_list\n        opt_from_clause opt_where opt_group window_clause\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        select_list go to state 440 expr_list go to state\n        441 expr_alias go to state 327 expr go to state 328 operand go to state\n        117 cast_expr go to state 118 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 logic_expr go to state 122 in_expr go to state\n        123 case_expr go to state 124 exists_expr go to state\n        125 comp_expr go to state 126 function_expr go to state\n        127 extract_expr go to state 128 array_expr go to state\n        129 array_index go to state 130 between_expr go to state\n        131 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 369\n\n        204 select_with_paren\n    : '(' select_with_paren\n      ')'.\n\n      $default reduce using rule 204(select_with_paren)\n\n          State 370\n\n      203 select_with_paren : '(' select_no_paren ')'\n                                  .\n\n                              $default reduce using rule 203(select_with_paren)\n\n                                  State 371\n\n                              205 select_paren_or_clause\n    : select_with_paren.\n\n      $default reduce using rule 205(select_paren_or_clause)\n\n          State 372\n\n      202 select_statement : opt_with_clause select_with_paren set_operator\n                             select_paren_or_clause.opt_order opt_limit\n\n                             ORDER shift,\n    and go to state 257\n\n        $default reduce using rule 257(opt_order)\n\n            opt_order go to state 442\n\n        State 373\n\n        206 select_paren_or_clause : select_clause\n                                         .\n\n                                     $default reduce using rule\n                                     206(select_paren_or_clause)\n\n                                         State 374\n\n                                     213 opt_all\n    : ALL.\n\n      $default reduce using rule 213(opt_all)\n\n          State 375\n\n      209 set_operator : set_type opt_all.\n\n                         $default reduce using rule 209(set_operator)\n\n                             State 376\n\n                         256 opt_order : ORDER BY.order_list\n\n                                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        order_list go to state 443 order_desc go to state 444 expr go to state\n        445 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 377\n\n        208 select_no_paren\n    : select_clause set_operator select_paren_or_clause.opt_order opt_limit\n\n      ORDER shift,\n    and go to state 257\n\n        $default reduce using rule 257(opt_order)\n\n            opt_order go to state 446\n\n        State 378\n\n        267 opt_limit : OFFSET.expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 447 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 379\n\n        266 opt_limit : LIMIT.expr 268 |\n        LIMIT.expr OFFSET expr 269 | LIMIT.ALL 270 |\n        LIMIT.ALL OFFSET expr\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 ALL shift,\n    and go to state 448 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 449 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 380\n\n        207 select_no_paren : select_clause opt_order opt_limit\n                                  .\n\n                              $default reduce using rule 207(select_no_paren)\n\n                                  State 381\n\n                              97 execute_statement\n    : EXECUTE IDENTIFIER '(' opt_literal_list\n      ')'.\n\n      $default reduce using rule 97(execute_statement)\n\n          State 382\n\n      277 literal_list : literal_list ','.literal\n\n                         STRING shift,\n    and go to state 98 FLOATVAL shift, and go to state 100 INTVAL shift,\n    and go to state 101 NULL shift, and go to state 105 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '?' shift,\n    and go to state 115\n\n        literal go to state 450 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 383\n\n        114 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name.USING module_name 115 |\n        CREATE VIRTUAL TABLE opt_not_exists table_name.USING module_name\n        '(' column_def_commalist ')'\n\n        USING shift,\n    and go to state 451\n\n        State 384\n\n        144 opt_not_exists : IF NOT EXISTS\n                                 .\n\n                             $default reduce using rule 144(opt_not_exists)\n\n                                 State 385\n\n                             109 create_statement\n    : CREATE TABLE opt_not_exists table_name FROM.TBL FILE file_path\n\n      TBL shift,\n    and go to state 452\n\n        State 386\n\n        111 create_statement\n    : CREATE TABLE opt_not_exists table_name AS.select_statement\n\n      WITH shift,\n    and go to state 15\n\n        $default reduce using rule 397(opt_with_clause)\n\n            select_statement go to state 453 opt_with_clause go to state\n        55 with_clause go to state 56\n\n        State 387\n\n        110 create_statement : CREATE TABLE opt_not_exists table_name\n                               '('.column_def_commalist ')'\n\n                               IDENTIFIER shift,\n    and go to state 454\n\n        column_def_commalist go to state 455 column_def go to state 456\n\n        State 388\n\n        112 create_statement\n    : CREATE VIEW opt_not_exists table_name opt_column_list.AS select_statement\n\n      AS shift,\n    and go to state 457\n\n        State 389\n\n        119 index_name : IDENTIFIER\n                             .\n\n                         $default reduce using rule 119(index_name)\n\n                             State 390\n\n                         113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name.ON table_name\n      '(' ident_commalist ')' opt_where\n\n      ON shift,\n    and go to state 458\n\n        State 391\n\n        116 create_statement : CREATE trigger_declare BEGIN trigger_cmd_list END\n                                   .\n\n                               $default reduce using rule 116(create_statement)\n\n                                   State 392\n\n                               138 trigger_cmd_list\n    : trigger_cmd_list trigger_cmd.';'\n\n      ';' shift,\n    and go to state 459\n\n        State 393\n\n        137 trigger_cmd_list : trigger_cmd ';'\n                                   .\n\n                               $default reduce using rule 137(trigger_cmd_list)\n\n                                   State 394\n\n                               123 trigger_name\n    : IDENTIFIER.\n\n      $default reduce using rule 123(trigger_name)\n\n          State 395\n\n      120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name.opt_trigger_time\n      trigger_event ON table_name opt_for_each opt_when\n\n      BEFORE shift,\n    and go to state 460 AFTER shift, and go to state 461 INSTEAD shift,\n    and go to state 462\n\n        $default reduce using rule 127(opt_trigger_time)\n\n            opt_trigger_time go to state 463\n\n        State 396\n\n        250 opt_where : WHERE expr .317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 250(opt_where)\n\n            State 397\n\n        98 import_statement\n    : IMPORT FROM import_file_type FILE file_path.INTO table_name\n\n      INTO shift,\n    and go to state 464\n\n        State 398\n\n        199 update_clause : IDENTIFIER '='.expr\n\n                            STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 465 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 399\n\n        198 update_clause_commalist : update_clause_commalist ','.update_clause\n\n                                      IDENTIFIER shift,\n    and go to state 281\n\n        update_clause go to state 466\n\n        State 400\n\n        196 update_statement : UPDATE table_ref_name_no_alias SET\n                               update_clause_commalist opt_where\n                                   .\n\n                               $default reduce using rule 196(update_statement)\n\n                                   State 401\n\n                               107 opt_column\n    : COLUMN.\n\n      $default reduce using rule 107(opt_column)\n\n          State 402\n\n      104 alter_statement : ALTER TABLE table_name RENAME TO.table_name\n\n                            IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 467\n\n        State 403\n\n        105 alter_statement\n    : ALTER TABLE table_name RENAME opt_column.column_name TO column_name\n\n      IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        column_name go to state 469\n\n        State 404\n\n        106 alter_statement : ALTER TABLE table_name ADD opt_column.column_def\n\n                              IDENTIFIER shift,\n    and go to state 454\n\n        column_def go to state 470\n\n        State 405\n\n        181 drop_statement : DROP TRIGGER opt_exists schema_name\n                             '.'.trigger_name\n\n                             IDENTIFIER shift,\n    and go to state 394\n\n        trigger_name go to state 471\n\n        State 406\n\n        23 cmd_pragma : PRAGMA pragma_key '(' pragma_value\n                        ')'.\n\n                        $default reduce using rule 23(cmd_pragma)\n\n                            State 407\n\n                        56 opt_to_savepoint\n    : TO SAVEPOINT savepoint_name\n          .\n\n      $default reduce using rule 56(opt_to_savepoint)\n\n          State 408\n\n      343 opt_filter_clause : FILTER.'(' WHERE expr ')'\n\n                              '(' shift,\n    and go to state 472\n\n        State 409\n\n        338 function_expr : IDENTIFIER '(' ')' opt_filter_clause.opt_over_clause\n\n                            OVER shift,\n    and go to state 473\n\n        $default reduce using rule 342(opt_over_clause)\n\n            opt_over_clause go to state 474\n\n        State 410\n\n        273 expr_list : expr_list\n                            .',' expr_alias 339 function_expr\n    : IDENTIFIER\n      '(' opt_distinct expr_list.')' opt_filter_clause opt_over_clause\n\n      ')' shift,\n    and go to state 475 ',' shift,\n    and go to state 420\n\n        State 411\n\n        329 exists_expr : EXISTS '(' select_no_paren\n                          ')'.\n\n                          $default reduce using rule 329(exists_expr)\n\n                              State 412\n\n                          345 extract_expr : EXTRACT\n                                             '(' datetime_field FROM.expr ')'\n\n                                             STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 476 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 413\n\n        327 case_list : WHEN expr THEN.expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 477 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 414\n\n        324 case_expr : CASE expr case_list ELSE.expr END\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 478 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 415\n\n        323 case_expr : CASE expr case_list END\n                            .\n\n                        $default reduce using rule 323(case_expr)\n\n                            State 416\n\n                        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 326 case_expr : CASE case_list ELSE expr.END\n\n                                     AND shift,\n    and go to state 214 END shift, and go to state 479 OR shift,\n    and go to state 216\n\n        State 417\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 328 case_list : case_list WHEN expr.THEN expr\n\n                                     THEN shift,\n    and go to state 480 AND shift, and go to state 214 OR shift,\n    and go to state 216\n\n        State 418\n\n        330 exists_expr : NOT EXISTS '(' select_no_paren.')'\n\n                          ')' shift,\n    and go to state 481\n\n        State 419\n\n        352 array_expr : ARRAY '[' expr_list\n                         ']'.\n\n                         $default reduce using rule 352(array_expr)\n\n                             State 420\n\n                         273 expr_list : expr_list ','.expr_alias\n\n                                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_alias go to state 482 expr go to state 328 operand go to state\n        117 cast_expr go to state 118 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 logic_expr go to state 122 in_expr go to state\n        123 case_expr go to state 124 exists_expr go to state\n        125 comp_expr go to state 126 function_expr go to state\n        127 extract_expr go to state 128 array_expr go to state\n        129 array_index go to state 130 between_expr go to state\n        131 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 421\n\n        393 alias : AS.IDENTIFIER\n\n                    IDENTIFIER shift,\n    and go to state 483\n\n        State 422\n\n        394 opt_alias : alias\n                            .\n\n                        $default reduce using rule 394(opt_alias)\n\n                            State 423\n\n                        278 expr_alias\n    : expr opt_alias.\n\n      $default reduce using rule 278(expr_alias)\n\n          State 424\n\n      29 cmd_attach\n    : ATTACH DATABASE expr AS\n      schema_name.\n\n      $default reduce using rule 29(cmd_attach)\n\n          State 425\n\n      295 cast_expr : CAST '(' expr AS.column_type ')'\n\n                      INTEGER shift,\n    and go to state 484 VARCHAR shift, and go to state 485 DOUBLE shift,\n    and go to state 486 FLOAT shift, and go to state 487 CHAR shift,\n    and go to state 488 LONG shift, and go to state 489 TEXT shift,\n    and go to state 490 INT shift,\n    and go to state 491\n\n        $default reduce using rule 177(column_type)\n\n            column_type go to state 492\n\n        State 426\n\n        354 between_expr : operand BETWEEN operand AND.operand\n\n                           STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 206 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        operand go to state 493 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 case_expr go to state 124 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 427\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 311 | operand NOT LIKE operand .312 |\n        operand.ILIKE operand 313 | operand.CONCAT operand 314 |\n        operand.GLOB operand 315 | operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand.'[' int_literal ']'\n\n                                                    ISNULL shift,\n    and go to state 218 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 '<' shift, and go to state 231 '>' shift,\n    and go to state 232 LESSEQ shift, and go to state 233 GREATEREQ shift,\n    and go to state 234 '+' shift, and go to state 235 '-' shift,\n    and go to state 236 '*' shift, and go to state 237 '/' shift,\n    and go to state 238 '%' shift, and go to state 239 '^' shift,\n    and go to state 240 '[' shift,\n    and go to state 241\n\n    LIKE error(nonassociative)\nILIKE error(nonassociative)\nGLOB error(nonassociative)\nMATCH error(nonassociative)\nREGEX\nerror(nonassociative) '=' error(nonassociative) EQUALS error(nonassociative)\nNOTEQUALS error(nonassociative)\n\n$default reduce using rule 311(binary_expr)\n\n        State 428\n\n    320 in_expr : operand NOT IN '('.expr_list ')' 322 |\n    operand NOT IN '('.select_no_paren ')'\n\n    STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 SELECT shift,\n    and go to state 156 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        select_no_paren go to state 494 select_clause go to state\n        160 expr_list go to state 495 expr_alias go to state\n        327 expr go to state 328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 429\n\n        321 in_expr : operand IN '(' select_no_paren.')'\n\n                      ')' shift,\n    and go to state 496\n\n        State 430\n\n        273 expr_list\n    : expr_list.',' expr_alias 319 in_expr : operand IN '(' expr_list.')'\n\n                                             ')' shift,\n    and go to state 497 ',' shift,\n    and go to state 420\n\n        State 431\n\n        302 unary_expr : operand IS NOT NULL\n                             .\n\n                         $default reduce using rule 302(unary_expr)\n\n                             State 432\n\n                         353 array_index : operand '[' int_literal ']'.\n\n                                           $default reduce using rule\n                                           353(array_index)\n\n                                               State 433\n\n                                           92 hint : IDENTIFIER .93 |\n        IDENTIFIER.'(' literal_list ')'\n\n        '(' shift,\n    and go to state 498\n\n        $default reduce using rule 92(hint)\n\n            State 434\n\n        88 opt_hints : WITH HINT '(' hint_list.')' 91 hint_list\n    : hint_list.',' hint\n\n      ')' shift,\n    and go to state 499 ',' shift,\n    and go to state 500\n\n        State 435\n\n        90 hint_list : hint.\n\n                       $default reduce using rule 90(hint_list)\n\n                           State 436\n\n                       414 ident_commalist : IDENTIFIER\n                                                 .\n\n                                             $default reduce using rule\n                                             414(ident_commalist)\n\n                                                 State 437\n\n                                             194 opt_column_list\n    : '(' ident_commalist.')' 415 ident_commalist\n    : ident_commalist.',' IDENTIFIER\n\n      ')' shift,\n    and go to state 501 ',' shift,\n    and go to state 502\n\n        State 438\n\n        187 insert_statement\n    : insert_type INTO table_name opt_column_list VALUES.super_list\n      opt_upsert_clause\n\n      '(' shift,\n    and go to state 503\n\n        super_list go to state 504\n\n        State 439\n\n        188 insert_statement : insert_type INTO table_name opt_column_list\n                               select_no_paren.opt_upsert_clause\n\n                               ON shift,\n    and go to state 505\n\n        $default reduce using rule 69(opt_upsert_clause)\n\n            opt_upsert_clause go to state 506 upsert_clause go to state 507\n\n        State 440\n\n        215 select_clause : SELECT opt_top opt_distinct\n                            select_list.opt_from_clause opt_where opt_group\n                            216 |\n        SELECT opt_top opt_distinct\n        select_list.opt_from_clause opt_where opt_group window_clause\n\n        FROM shift,\n    and go to state 508\n\n        $default reduce using rule 248(opt_from_clause)\n\n            opt_from_clause go to state 509 from_clause go to state 510\n\n        State 441\n\n        246 select_list : expr_list .273 expr_list : expr_list.',' expr_alias\n\n                                                     ',' shift,\n    and go to state 420\n\n        $default reduce using rule 246(select_list)\n\n            State 442\n\n        202 select_statement : opt_with_clause select_with_paren set_operator\n                               select_paren_or_clause opt_order.opt_limit\n\n                               OFFSET shift,\n    and go to state 378 LIMIT shift,\n    and go to state 379\n\n        $default reduce using rule 271(opt_limit)\n\n            opt_limit go to state 511\n\n        State 443\n\n        256 opt_order : ORDER BY order_list .259 order_list\n    : order_list.',' order_desc\n\n      ',' shift,\n    and go to state 512\n\n        $default reduce using rule 256(opt_order)\n\n            State 444\n\n        258 order_list : order_desc\n                             .\n\n                         $default reduce using rule 258(order_list)\n\n                             State 445\n\n                         260 order_desc\n    : expr.opt_order_type opt_null 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        DESC shift,\n    and go to state 513 AND shift, and go to state 214 ASC shift,\n    and go to state 514 OR shift,\n    and go to state 216\n\n        $default reduce using rule 263(opt_order_type)\n\n            opt_order_type go to state 515\n\n        State 446\n\n        208 select_no_paren\n    : select_clause set_operator select_paren_or_clause opt_order.opt_limit\n\n      OFFSET shift,\n    and go to state 378 LIMIT shift,\n    and go to state 379\n\n        $default reduce using rule 271(opt_limit)\n\n            opt_limit go to state 516\n\n        State 447\n\n        267 opt_limit : OFFSET expr .317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 267(opt_limit)\n\n            State 448\n\n        269 opt_limit : LIMIT ALL .270 |\n        LIMIT ALL.OFFSET expr\n\n        OFFSET shift,\n    and go to state 517\n\n        $default reduce using rule 269(opt_limit)\n\n            State 449\n\n        266 opt_limit : LIMIT expr .268 |\n        LIMIT expr.OFFSET expr 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        OFFSET shift,\n    and go to state 518 AND shift, and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 266(opt_limit)\n\n            State 450\n\n        277 literal_list : literal_list ',' literal\n                               .\n\n                           $default reduce using rule 277(literal_list)\n\n                               State 451\n\n                           114 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name USING.module_name 115 |\n        CREATE VIRTUAL TABLE opt_not_exists table_name USING.module_name\n        '(' column_def_commalist ')'\n\n        IDENTIFIER shift,\n    and go to state 519\n\n        module_name go to state 520\n\n        State 452\n\n        109 create_statement\n    : CREATE TABLE opt_not_exists table_name FROM TBL.FILE file_path\n\n      FILE shift,\n    and go to state 521\n\n        State 453\n\n        111 create_statement\n    : CREATE TABLE opt_not_exists table_name AS select_statement\n          .\n\n      $default reduce using rule 111(create_statement)\n\n          State 454\n\n      148 column_def : IDENTIFIER.column_type opt_column_arglist\n\n                       INTEGER shift,\n    and go to state 484 VARCHAR shift, and go to state 485 DOUBLE shift,\n    and go to state 486 FLOAT shift, and go to state 487 CHAR shift,\n    and go to state 488 LONG shift, and go to state 489 TEXT shift,\n    and go to state 490 INT shift,\n    and go to state 491\n\n        $default reduce using rule 177(column_type)\n\n            column_type go to state 522\n\n        State 455\n\n        110 create_statement\n    : CREATE TABLE opt_not_exists table_name '(' column_def_commalist\n          .')' 147 column_def_commalist : column_def_commalist.',' column_def\n\n                                          ')' shift,\n    and go to state 523 ',' shift,\n    and go to state 524\n\n        State 456\n\n        146 column_def_commalist : column_def\n                                       .\n\n                                   $default reduce using rule\n                                   146(column_def_commalist)\n\n                                       State 457\n\n                                   112 create_statement\n    : CREATE VIEW opt_not_exists table_name opt_column_list AS.select_statement\n\n      WITH shift,\n    and go to state 15\n\n        $default reduce using rule 397(opt_with_clause)\n\n            select_statement go to state 525 opt_with_clause go to state\n        55 with_clause go to state 56\n\n        State 458\n\n        113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name ON.table_name\n      '(' ident_commalist ')' opt_where\n\n      IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 526\n\n        State 459\n\n        138 trigger_cmd_list : trigger_cmd_list trigger_cmd ';'\n                                   .\n\n                               $default reduce using rule 138(trigger_cmd_list)\n\n                                   State 460\n\n                               124 opt_trigger_time\n    : BEFORE.\n\n      $default reduce using rule 124(opt_trigger_time)\n\n          State 461\n\n      125 opt_trigger_time : AFTER.\n\n                             $default reduce using rule 125(opt_trigger_time)\n\n                                 State 462\n\n                             126 opt_trigger_time : INSTEAD.OF\n\n                                                    OF shift,\n    and go to state 527\n\n        State 463\n\n        120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name\n      opt_trigger_time.trigger_event ON table_name opt_for_each opt_when\n\n      DELETE shift,\n    and go to state 528 INSERT shift, and go to state 529 UPDATE shift,\n    and go to state 530\n\n        trigger_event go to state 531\n\n        State 464\n\n        98 import_statement\n    : IMPORT FROM import_file_type FILE file_path INTO.table_name\n\n      IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 532\n\n        State 465\n\n        199 update_clause : IDENTIFIER '=' expr .317 logic_expr : expr.AND expr\n                                                                  318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 199(update_clause)\n\n            State 466\n\n        198 update_clause_commalist\n    : update_clause_commalist ',' update_clause\n          .\n\n      $default reduce using rule 198(update_clause_commalist)\n\n          State 467\n\n      104 alter_statement : ALTER TABLE table_name RENAME TO table_name.\n\n                            $default reduce using rule 104(alter_statement)\n\n                                State 468\n\n                            355 column_name : IDENTIFIER .356 |\n        IDENTIFIER.'.' IDENTIFIER 358 |\n        IDENTIFIER.'.' '*'\n\n        '.' shift,\n    and go to state 199\n\n        $default reduce using rule 355(column_name)\n\n            State 469\n\n        105 alter_statement\n    : ALTER TABLE table_name RENAME opt_column column_name.TO column_name\n\n      TO shift,\n    and go to state 533\n\n        State 470\n\n        106 alter_statement : ALTER TABLE table_name ADD opt_column column_def\n                                  .\n\n                              $default reduce using rule 106(alter_statement)\n\n                                  State 471\n\n                              181 drop_statement\n    : DROP TRIGGER opt_exists schema_name\n      '.' trigger_name.\n\n      $default reduce using rule 181(drop_statement)\n\n          State 472\n\n      343 opt_filter_clause : FILTER '('.WHERE expr ')'\n\n                              WHERE shift,\n    and go to state 534\n\n        State 473\n\n        340 opt_over_clause : OVER.'(' window ')' 341 |\n        OVER.IDENTIFIER\n\n        IDENTIFIER shift,\n    and go to state 535 '(' shift,\n    and go to state 536\n\n        State 474\n\n        338 function_expr : IDENTIFIER '(' ')' opt_filter_clause opt_over_clause\n                                .\n\n                            $default reduce using rule 338(function_expr)\n\n                                State 475\n\n                            339 function_expr\n    : IDENTIFIER '(' opt_distinct expr_list\n      ')'.opt_filter_clause opt_over_clause\n\n      FILTER shift,\n    and go to state 408\n\n        $default reduce using rule 344(opt_filter_clause)\n\n            opt_filter_clause go to state 537\n\n        State 476\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 345 extract_expr : EXTRACT '(' datetime_field FROM expr.')'\n\n                                        AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 538\n\n        State 477\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 327 case_list : WHEN expr THEN expr.\n\n                                     AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 327(case_list)\n\n            State 478\n\n        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 324 case_expr : CASE expr case_list ELSE expr.END\n\n                                     AND shift,\n    and go to state 214 END shift, and go to state 539 OR shift,\n    and go to state 216\n\n        State 479\n\n        326 case_expr : CASE case_list ELSE expr END\n                            .\n\n                        $default reduce using rule 326(case_expr)\n\n                            State 480\n\n                        328 case_list : case_list WHEN expr THEN.expr\n\n                                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 540 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 481\n\n        330 exists_expr : NOT EXISTS '(' select_no_paren ')'\n                              .\n\n                          $default reduce using rule 330(exists_expr)\n\n                              State 482\n\n                          273 expr_list\n    : expr_list ',' expr_alias.\n\n      $default reduce using rule 273(expr_list)\n\n          State 483\n\n      393 alias\n    : AS IDENTIFIER.\n\n      $default reduce using rule 393(alias)\n\n          State 484\n\n      170 column_type\n    : INTEGER.\n\n      $default reduce using rule 170(column_type)\n\n          State 485\n\n      174 column_type : VARCHAR.'(' INTVAL ')'\n\n                        '(' shift,\n    and go to state 541\n\n        State 486\n\n        173 column_type : DOUBLE\n                              .\n\n                          $default reduce using rule 173(column_type)\n\n                              State 487\n\n                          172 column_type\n    : FLOAT.\n\n      $default reduce using rule 172(column_type)\n\n          State 488\n\n      175 column_type : CHAR.'(' INTVAL ')'\n\n                        '(' shift,\n    and go to state 542\n\n        State 489\n\n        171 column_type : LONG.\n\n                          $default reduce using rule 171(column_type)\n\n                              State 490\n\n                          176 column_type\n    : TEXT.\n\n      $default reduce using rule 176(column_type)\n\n          State 491\n\n      169 column_type : INT.\n\n                        $default reduce using rule 169(column_type)\n\n                            State 492\n\n                        295 cast_expr : CAST '(' expr AS column_type.')'\n\n                                        ')' shift,\n    and go to state 543\n\n        State 493\n\n        300 unary_expr : operand.ISNULL 301 |\n        operand.IS NULL 302 |\n        operand.IS NOT NULL 304 binary_expr : operand.'-' operand 305 |\n        operand.'+' operand 306 | operand.'/' operand 307 |\n        operand.'*' operand 308 | operand.'%' operand 309 |\n        operand.'^' operand 310 | operand.LIKE operand 311 |\n        operand.NOT LIKE operand 312 | operand.ILIKE operand 313 |\n        operand.CONCAT operand 314 | operand.GLOB operand 315 |\n        operand.MATCH operand 316 |\n        operand.REGEX operand 331 comp_expr : operand.'=' operand 332 |\n        operand.EQUALS operand 333 | operand.NOTEQUALS operand 334 |\n        operand.'<' operand 335 | operand.'>' operand 336 |\n        operand.LESSEQ operand 337 |\n        operand.GREATEREQ operand 353 array_index : operand\n                                                        .'[' int_literal\n                                                    ']' 354 between_expr\n    : operand BETWEEN operand AND operand.\n\n      ISNULL shift,\n    and go to state 218 LIKE shift, and go to state 219 NOT shift,\n    and go to state 325 IS shift, and go to state 222 CONCAT shift,\n    and go to state 223 ILIKE shift, and go to state 224 GLOB shift,\n    and go to state 225 MATCH shift, and go to state 226 REGEX shift,\n    and go to state 227 '=' shift, and go to state 228 EQUALS shift,\n    and go to state 229 NOTEQUALS shift, and go to state 230 '<' shift,\n    and go to state 231 '>' shift, and go to state 232 LESSEQ shift,\n    and go to state 233 GREATEREQ shift, and go to state 234 '+' shift,\n    and go to state 235 '-' shift, and go to state 236 '*' shift,\n    and go to state 237 '/' shift, and go to state 238 '%' shift,\n    and go to state 239 '^' shift, and go to state 240 '[' shift,\n    and go to state 241\n\n        $default reduce using rule 354(between_expr)\n\n            State 494\n\n        322 in_expr : operand NOT IN '(' select_no_paren.')'\n\n                      ')' shift,\n    and go to state 544\n\n        State 495\n\n        273 expr_list\n    : expr_list.',' expr_alias 320 in_expr : operand NOT IN '(' expr_list.')'\n\n                                             ')' shift,\n    and go to state 545 ',' shift,\n    and go to state 420\n\n        State 496\n\n        321 in_expr : operand IN '(' select_no_paren\n                      ')'.\n\n                      $default reduce using rule 321(in_expr)\n\n                          State 497\n\n                      319 in_expr : operand IN '(' expr_list\n                                    ')'.\n\n                                    $default reduce using rule 319(in_expr)\n\n                                        State 498\n\n                                    93 hint : IDENTIFIER '('.literal_list ')'\n\n                                              STRING shift,\n    and go to state 98 FLOATVAL shift, and go to state 100 INTVAL shift,\n    and go to state 101 NULL shift, and go to state 105 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '?' shift,\n    and go to state 115\n\n        literal_list go to state 546 literal go to state\n        263 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 499\n\n        88 opt_hints : WITH HINT '(' hint_list\n                       ')'.\n\n                       $default reduce using rule 88(opt_hints)\n\n                           State 500\n\n                       91 hint_list : hint_list ','.hint\n\n                                      IDENTIFIER shift,\n    and go to state 433\n\n        hint go to state 547\n\n        State 501\n\n        194 opt_column_list : '(' ident_commalist\n                              ')'.\n\n                              $default reduce using rule 194(opt_column_list)\n\n                                  State 502\n\n                              415 ident_commalist : ident_commalist\n                                                    ','.IDENTIFIER\n\n                                                    IDENTIFIER shift,\n    and go to state 548\n\n        State 503\n\n        189 super_list : '('.literal_list ')'\n\n                         STRING shift,\n    and go to state 98 FLOATVAL shift, and go to state 100 INTVAL shift,\n    and go to state 101 NULL shift, and go to state 105 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '?' shift,\n    and go to state 115\n\n        literal_list go to state 549 literal go to state\n        263 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 504\n\n        187 insert_statement\n    : insert_type INTO table_name opt_column_list VALUES\n      super_list.opt_upsert_clause 190 super_list\n    : super_list.',' '(' literal_list ')'\n\n      ON shift,\n    and go to state 505 ',' shift,\n    and go to state 550\n\n        $default reduce using rule 69(opt_upsert_clause)\n\n            opt_upsert_clause go to state 551 upsert_clause go to state 507\n\n        State 505\n\n        70 upsert_clause : ON.CONFLICT DO NOTHING 71 |\n        ON.CONFLICT DO UPDATE SET assign_list opt_where 72 |\n        ON.CONFLICT '(' indexed_column_list ')' opt_where DO NOTHING 73 |\n        ON.CONFLICT '(' indexed_column_list\n        ')' opt_where DO UPDATE SET assign_list opt_where\n\n        CONFLICT shift,\n    and go to state 552\n\n        State 506\n\n        188 insert_statement : insert_type INTO table_name opt_column_list\n                               select_no_paren opt_upsert_clause\n                                   .\n\n                               $default reduce using rule 188(insert_statement)\n\n                                   State 507\n\n                               68 opt_upsert_clause\n    : upsert_clause.\n\n      $default reduce using rule 68(opt_upsert_clause)\n\n          State 508\n\n      249 from_clause\n    : FROM.table_ref\n\n      $default reduce using rule 377(table_prefix)\n\n          table_ref go to state 553 table_prefix go to state 554\n\n      State 509\n\n      215 select_clause : SELECT opt_top opt_distinct select_list\n                          opt_from_clause.opt_where opt_group 216 |\n        SELECT opt_top opt_distinct select_list\n        opt_from_clause.opt_where opt_group window_clause\n\n        WHERE shift,\n    and go to state 278\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 555\n\n        State 510\n\n        247 opt_from_clause : from_clause\n                                  .\n\n                              $default reduce using rule 247(opt_from_clause)\n\n                                  State 511\n\n                              202 select_statement\n    : opt_with_clause select_with_paren set_operator select_paren_or_clause\n      opt_order opt_limit.\n\n      $default reduce using rule 202(select_statement)\n\n          State 512\n\n      259 order_list : order_list ','.order_desc\n\n                       STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        order_desc go to state 556 expr go to state 445 operand go to state\n        117 cast_expr go to state 118 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 logic_expr go to state 122 in_expr go to state\n        123 case_expr go to state 124 exists_expr go to state\n        125 comp_expr go to state 126 function_expr go to state\n        127 extract_expr go to state 128 array_expr go to state\n        129 array_index go to state 130 between_expr go to state\n        131 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 513\n\n        262 opt_order_type : DESC.\n\n                             $default reduce using rule 262(opt_order_type)\n\n                                 State 514\n\n                             261 opt_order_type\n    : ASC.\n\n      $default reduce using rule 261(opt_order_type)\n\n          State 515\n\n      260 order_desc : expr opt_order_type.opt_null\n\n                       NULLS shift,\n    and go to state 557\n\n        $default reduce using rule 83(opt_null)\n\n            opt_null go to state 558\n\n        State 516\n\n        208 select_no_paren\n    : select_clause set_operator select_paren_or_clause opt_order opt_limit\n          .\n\n      $default reduce using rule 208(select_no_paren)\n\n          State 517\n\n      270 opt_limit : LIMIT ALL OFFSET.expr\n\n                      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 559 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 518\n\n        268 opt_limit : LIMIT expr OFFSET.expr\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 560 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 519\n\n        143 module_name : IDENTIFIER.\n\n                          $default reduce using rule 143(module_name)\n\n                              State 520\n\n                          114 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name .115 |\n        CREATE VIRTUAL TABLE opt_not_exists table_name USING\n        module_name.'(' column_def_commalist ')'\n\n        '(' shift,\n    and go to state 561\n\n        $default reduce using rule 114(create_statement)\n\n            State 521\n\n        109 create_statement\n    : CREATE TABLE opt_not_exists table_name FROM TBL FILE.file_path\n\n      STRING shift,\n    and go to state 98\n\n        file_path go to state 562 string_literal go to state 363\n\n        State 522\n\n        148 column_def : IDENTIFIER column_type.opt_column_arglist\n\n                         PRIMARY shift,\n    and go to state 563 UNIQUE shift, and go to state 564 NULL shift,\n    and go to state 565 NOT shift, and go to state 566 AS shift,\n    and go to state 567 GENERATED shift, and go to state 568 CHECK shift,\n    and go to state 569\n\n        $default reduce using rule 150(opt_column_arglist)\n\n            opt_column_arglist go to state 570 column_arglist go to state\n        571 column_arg go to state 572\n\n        State 523\n\n        110 create_statement\n    : CREATE TABLE opt_not_exists table_name '(' column_def_commalist\n      ')'.\n\n      $default reduce using rule 110(create_statement)\n\n          State 524\n\n      147 column_def_commalist : column_def_commalist ','.column_def\n\n                                 IDENTIFIER shift,\n    and go to state 454\n\n        column_def go to state 573\n\n        State 525\n\n        112 create_statement\n    : CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement\n          .\n\n      $default reduce using rule 112(create_statement)\n\n          State 526\n\n      113 create_statement : CREATE opt_unique INDEX opt_not_exists\n                             index_name ON table_name.'(' ident_commalist\n                             ')' opt_where\n\n                             '(' shift,\n    and go to state 574\n\n        State 527\n\n        126 opt_trigger_time : INSTEAD OF\n                                   .\n\n                               $default reduce using rule 126(opt_trigger_time)\n\n                                   State 528\n\n                               128 trigger_event\n    : DELETE.\n\n      $default reduce using rule 128(trigger_event)\n\n          State 529\n\n      129 trigger_event : INSERT.\n\n                          $default reduce using rule 129(trigger_event)\n\n                              State 530\n\n                          130 trigger_event : UPDATE.opt_of_column_list\n\n                                              OF shift,\n    and go to state 575\n\n        $default reduce using rule 132(opt_of_column_list)\n\n            opt_of_column_list go to state 576\n\n        State 531\n\n        120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event.ON table_name opt_for_each opt_when\n\n      ON shift,\n    and go to state 577\n\n        State 532\n\n        98 import_statement\n    : IMPORT FROM import_file_type FILE file_path INTO table_name\n          .\n\n      $default reduce using rule 98(import_statement)\n\n          State 533\n\n      105 alter_statement\n    : ALTER TABLE table_name RENAME opt_column column_name TO.column_name\n\n      IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        column_name go to state 578\n\n        State 534\n\n        343 opt_filter_clause : FILTER '(' WHERE.expr ')'\n\n                                STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 579 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 535\n\n        341 opt_over_clause : OVER IDENTIFIER\n                                  .\n\n                              $default reduce using rule 341(opt_over_clause)\n\n                                  State 536\n\n                              340 opt_over_clause : OVER '('.window ')'\n\n                                                    IDENTIFIER shift,\n    and go to state 580\n\n        $default reduce using rule 224(opt_base_window_name)\n\n            window go to state 581 opt_base_window_name go to state 582\n\n        State 537\n\n        339 function_expr : IDENTIFIER '(' opt_distinct expr_list\n                            ')' opt_filter_clause.opt_over_clause\n\n                            OVER shift,\n    and go to state 473\n\n        $default reduce using rule 342(opt_over_clause)\n\n            opt_over_clause go to state 583\n\n        State 538\n\n        345 extract_expr : EXTRACT '(' datetime_field FROM expr\n                           ')'.\n\n                           $default reduce using rule 345(extract_expr)\n\n                               State 539\n\n                           324 case_expr : CASE expr case_list ELSE expr END\n                                               .\n\n                                           $default reduce using rule\n                                           324(case_expr)\n\n                                               State 540\n\n                                           317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 328 case_list : case_list WHEN expr THEN expr.\n\n                                     AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 328(case_list)\n\n            State 541\n\n        174 column_type : VARCHAR '('.INTVAL ')'\n\n                          INTVAL shift,\n    and go to state 584\n\n        State 542\n\n        175 column_type : CHAR '('.INTVAL ')'\n\n                          INTVAL shift,\n    and go to state 585\n\n        State 543\n\n        295 cast_expr : CAST '(' expr AS column_type\n                        ')'.\n\n                        $default reduce using rule 295(cast_expr)\n\n                            State 544\n\n                        322 in_expr : operand NOT IN '(' select_no_paren\n                                      ')'.\n\n                                      $default reduce using rule 322(in_expr)\n\n                                          State 545\n\n                                      320 in_expr\n    : operand NOT IN '(' expr_list\n      ')'.\n\n      $default reduce using rule 320(in_expr)\n\n          State 546\n\n      93 hint : IDENTIFIER '(' literal_list.')' 277 literal_list\n    : literal_list.',' literal\n\n      ')' shift,\n    and go to state 586 ',' shift,\n    and go to state 382\n\n        State 547\n\n        91 hint_list : hint_list ',' hint\n                           .\n\n                       $default reduce using rule 91(hint_list)\n\n                           State 548\n\n                       415 ident_commalist\n    : ident_commalist\n      ',' IDENTIFIER.\n\n      $default reduce using rule 415(ident_commalist)\n\n          State 549\n\n      189 super_list : '(' literal_list.')' 277 literal_list\n    : literal_list.',' literal\n\n      ')' shift,\n    and go to state 587 ',' shift,\n    and go to state 382\n\n        State 550\n\n        190 super_list : super_list ','.'(' literal_list ')'\n\n                         '(' shift,\n    and go to state 588\n\n        State 551\n\n        187 insert_statement\n    : insert_type INTO table_name opt_column_list VALUES super_list\n      opt_upsert_clause\n          .\n\n      $default reduce using rule 187(insert_statement)\n\n          State 552\n\n      70 upsert_clause : ON CONFLICT.DO NOTHING 71 |\n        ON CONFLICT.DO UPDATE SET assign_list opt_where 72 |\n        ON CONFLICT.'(' indexed_column_list ')' opt_where DO NOTHING 73 |\n        ON CONFLICT.'(' indexed_column_list\n        ')' opt_where DO UPDATE SET assign_list opt_where\n\n        DO shift,\n    and go to state 589 '(' shift,\n    and go to state 590\n\n        State 553\n\n        249 from_clause : FROM table_ref .376 table_prefix : table_ref.join_op\n\n                                                             NATURAL shift,\n    and go to state 591 CROSS shift, and go to state 592 INNER shift,\n    and go to state 593 OUTER shift, and go to state 594 RIGHT shift,\n    and go to state 595 FULL shift, and go to state 596 JOIN shift,\n    and go to state 597 LEFT shift, and go to state 598 ',' shift,\n    and go to state 599\n\n        $default reduce using rule 249(from_clause)\n\n            join_op go to state 600 join_kw go to state 601\n\n        State 554\n\n        372 table_ref\n    : table_prefix.table_name opt_alias opt_index opt_on opt_using 373 |\n        table_prefix.table_name '(' expr_list ')' opt_alias opt_on opt_using\n        374 |\n        table_prefix.'(' select_no_paren ')' opt_alias opt_on opt_using 375 |\n        table_prefix.'(' table_ref ')' opt_alias opt_on opt_using\n\n        IDENTIFIER shift,\n    and go to state 58 '(' shift,\n    and go to state 602\n\n        table_name go to state 603\n\n        State 555\n\n        215 select_clause : SELECT opt_top opt_distinct select_list\n                            opt_from_clause opt_where.opt_group 216 |\n        SELECT opt_top opt_distinct select_list\n        opt_from_clause opt_where.opt_group window_clause\n\n        GROUP shift,\n    and go to state 604\n\n        $default reduce using rule 253(opt_group)\n\n            opt_group go to state 605\n\n        State 556\n\n        259 order_list : order_list ',' order_desc\n                             .\n\n                         $default reduce using rule 259(order_list)\n\n                             State 557\n\n                         81 opt_null : NULLS.FIRST 82 |\n        NULLS.LAST\n\n        LAST shift,\n    and go to state 606 FIRST shift,\n    and go to state 607\n\n        State 558\n\n        260 order_desc : expr opt_order_type opt_null\n                             .\n\n                         $default reduce using rule 260(order_desc)\n\n                             State 559\n\n                         270 opt_limit : LIMIT ALL OFFSET expr .317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 270(opt_limit)\n\n            State 560\n\n        268 opt_limit : LIMIT expr OFFSET expr .317 logic_expr : expr.AND expr\n                                                                 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 268(opt_limit)\n\n            State 561\n\n        115 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name\n      '('.column_def_commalist ')'\n\n      IDENTIFIER shift,\n    and go to state 454\n\n        column_def_commalist go to state 608 column_def go to state 456\n\n        State 562\n\n        109 create_statement\n    : CREATE TABLE opt_not_exists table_name FROM TBL FILE file_path\n          .\n\n      $default reduce using rule 109(create_statement)\n\n          State 563\n\n      155 column_arg : PRIMARY.KEY opt_order_type opt_on_conflict opt_autoinc\n\n                       KEY shift,\n    and go to state 609\n\n        State 564\n\n        156 column_arg : UNIQUE.opt_on_conflict\n\n                         ON shift,\n    and go to state 610\n\n        $default reduce using rule 161(opt_on_conflict)\n\n            opt_on_conflict go to state 611\n\n        State 565\n\n        153 column_arg : NULL.opt_on_conflict\n\n                         ON shift,\n    and go to state 610\n\n        $default reduce using rule 161(opt_on_conflict)\n\n            opt_on_conflict go to state 612\n\n        State 566\n\n        154 column_arg : NOT.NULL opt_on_conflict\n\n                         NULL shift,\n    and go to state 613\n\n        State 567\n\n        158 column_arg : AS.'(' expr ')'\n\n                         '(' shift,\n    and go to state 614\n\n        State 568\n\n        157 column_arg : GENERATED.ALWAYS AS '(' expr ')'\n\n                         ALWAYS shift,\n    and go to state 615\n\n        State 569\n\n        159 column_arg : CHECK.'(' expr ')'\n\n                         '(' shift,\n    and go to state 616\n\n        State 570\n\n        148 column_def : IDENTIFIER column_type opt_column_arglist\n                             .\n\n                         $default reduce using rule 148(column_def)\n\n                             State 571\n\n                         149 opt_column_arglist\n    : column_arglist .151 column_arglist : column_arglist.column_arg\n\n                                           PRIMARY shift,\n    and go to state 563 UNIQUE shift, and go to state 564 NULL shift,\n    and go to state 565 NOT shift, and go to state 566 AS shift,\n    and go to state 567 GENERATED shift, and go to state 568 CHECK shift,\n    and go to state 569\n\n        $default reduce using rule 149(opt_column_arglist)\n\n            column_arg go to state 617\n\n        State 572\n\n        152 column_arglist : column_arg\n                                 .\n\n                             $default reduce using rule 152(column_arglist)\n\n                                 State 573\n\n                             147 column_def_commalist\n    : column_def_commalist\n      ',' column_def.\n\n      $default reduce using rule 147(column_def_commalist)\n\n          State 574\n\n      113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name ON table_name\n      '('.ident_commalist ')' opt_where\n\n      IDENTIFIER shift,\n    and go to state 436\n\n        ident_commalist go to state 618\n\n        State 575\n\n        131 opt_of_column_list : OF.ident_commalist\n\n                                 IDENTIFIER shift,\n    and go to state 436\n\n        ident_commalist go to state 619\n\n        State 576\n\n        130 trigger_event : UPDATE opt_of_column_list\n                                .\n\n                            $default reduce using rule 130(trigger_event)\n\n                                State 577\n\n                            120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON.table_name opt_for_each opt_when\n\n      IDENTIFIER shift,\n    and go to state 58\n\n        table_name go to state 620\n\n        State 578\n\n        105 alter_statement\n    : ALTER TABLE table_name RENAME opt_column column_name TO column_name\n          .\n\n      $default reduce using rule 105(alter_statement)\n\n          State 579\n\n      317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 343 opt_filter_clause : FILTER '(' WHERE expr.')'\n\n                                             AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 621\n\n        State 580\n\n        223 opt_base_window_name : IDENTIFIER\n                                       .\n\n                                   $default reduce using rule\n                                   223(opt_base_window_name)\n\n                                       State 581\n\n                                   340 opt_over_clause : OVER '(' window.')'\n\n                                                         ')' shift,\n    and go to state 622\n\n        State 582\n\n        221 window\n    : opt_base_window_name.PARTITION BY expr_list opt_order opt_frame 222 |\n        opt_base_window_name.opt_order opt_frame\n\n        ORDER shift,\n    and go to state 257 PARTITION shift,\n    and go to state 623\n\n        $default reduce using rule 257(opt_order)\n\n            opt_order go to state 624\n\n        State 583\n\n        339 function_expr : IDENTIFIER '(' opt_distinct expr_list\n                            ')' opt_filter_clause opt_over_clause\n                                .\n\n                            $default reduce using rule 339(function_expr)\n\n                                State 584\n\n                            174 column_type : VARCHAR '(' INTVAL.')'\n\n                                              ')' shift,\n    and go to state 625\n\n        State 585\n\n        175 column_type : CHAR '(' INTVAL.')'\n\n                          ')' shift,\n    and go to state 626\n\n        State 586\n\n        93 hint : IDENTIFIER '(' literal_list\n                  ')'.\n\n                  $default reduce using rule 93(hint)\n\n                      State 587\n\n                  189 super_list : '(' literal_list\n                                   ')'.\n\n                                   $default reduce using rule 189(super_list)\n\n                                       State 588\n\n                                   190 super_list : super_list\n                                                    ',' '('.literal_list ')'\n\n                                                    STRING shift,\n    and go to state 98 FLOATVAL shift, and go to state 100 INTVAL shift,\n    and go to state 101 NULL shift, and go to state 105 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 '?' shift,\n    and go to state 115\n\n        literal_list go to state 627 literal go to state\n        263 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 589\n\n        70 upsert_clause : ON CONFLICT DO.NOTHING 71 |\n        ON CONFLICT DO.UPDATE SET assign_list opt_where\n\n        UPDATE shift,\n    and go to state 628 NOTHING shift,\n    and go to state 629\n\n        State 590\n\n        72 upsert_clause : ON CONFLICT '('.indexed_column_list\n                           ')' opt_where DO NOTHING 73 |\n        ON CONFLICT '('.indexed_column_list\n        ')' opt_where DO UPDATE SET assign_list opt_where\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        indexed_column_list go to state 630 indexed_column go to state\n        631 expr go to state 632 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 591\n\n        411 join_kw : NATURAL\n                          .\n\n                      $default reduce using rule 411(join_kw)\n\n                          State 592\n\n                      410 join_kw\n    : CROSS.\n\n      $default reduce using rule 410(join_kw)\n\n          State 593\n\n      402 join_kw : INNER.\n\n                    $default reduce using rule 402(join_kw)\n\n                        State 594\n\n                    408 join_kw\n    : OUTER.\n\n      $default reduce using rule 408(join_kw)\n\n          State 595\n\n      405 join_kw : RIGHT.OUTER 406 |\n        RIGHT.\n\n        OUTER shift,\n    and go to state 633\n\n        $default reduce using rule 406(join_kw)\n\n            State 596\n\n        407 join_kw : FULL.OUTER 409 |\n        FULL.\n\n        OUTER shift,\n    and go to state 634\n\n        $default reduce using rule 409(join_kw)\n\n            State 597\n\n        379 join_op : JOIN.\n\n                      $default reduce using rule 379(join_op)\n\n                          State 598\n\n                      403 join_kw : LEFT.OUTER 404 |\n        LEFT.\n\n        OUTER shift,\n    and go to state 635\n\n        $default reduce using rule 404(join_kw)\n\n            State 599\n\n        378 join_op : ','.\n\n                      $default reduce using rule 378(join_op)\n\n                          State 600\n\n                      376 table_prefix : table_ref join_op\n                                             .\n\n                                         $default reduce using rule\n                                         376(table_prefix)\n\n                                             State 601\n\n                                         380 join_op : join_kw.JOIN 381 |\n        join_kw.IDENTIFIER JOIN 382 |\n        join_kw.IDENTIFIER IDENTIFIER JOIN\n\n        IDENTIFIER shift,\n    and go to state 636 JOIN shift,\n    and go to state 637\n\n        State 602\n\n        374 table_ref : table_prefix '('.select_no_paren\n                        ')' opt_alias opt_on opt_using 375 |\n        table_prefix '('.table_ref ')' opt_alias opt_on opt_using\n\n        SELECT shift,\n    and go to state 156\n\n        $default reduce using rule 377(table_prefix)\n\n            select_no_paren go to state 638 select_clause go to state\n        160 table_ref go to state 639 table_prefix go to state 554\n\n        State 603\n\n        372 table_ref\n    : table_prefix table_name.opt_alias opt_index opt_on opt_using 373 |\n        table_prefix table_name.'(' expr_list ')' opt_alias opt_on opt_using\n\n        AS shift,\n    and go to state 421 '(' shift,\n    and go to state 640\n\n        $default reduce using rule 395(opt_alias)\n\n            alias go to state 422 opt_alias go to state 641\n\n        State 604\n\n        252 opt_group : GROUP.BY expr_list opt_having\n\n                        BY shift,\n    and go to state 642\n\n        State 605\n\n        215 select_clause : SELECT opt_top opt_distinct select_list\n                            opt_from_clause opt_where opt_group .216 |\n        SELECT opt_top opt_distinct select_list\n        opt_from_clause opt_where opt_group.window_clause\n\n        WINDOW shift,\n    and go to state 643\n\n        $default reduce using rule 215(select_clause)\n\n            window_clause go to state 644\n\n        State 606\n\n        82 opt_null : NULLS LAST\n                          .\n\n                      $default reduce using rule 82(opt_null)\n\n                          State 607\n\n                      81 opt_null\n    : NULLS FIRST.\n\n      $default reduce using rule 81(opt_null)\n\n          State 608\n\n      115 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name\n      '(' column_def_commalist\n                          .')' 147 column_def_commalist\n    : column_def_commalist.',' column_def\n\n      ')' shift,\n    and go to state 645 ',' shift,\n    and go to state 524\n\n        State 609\n\n        155 column_arg : PRIMARY KEY.opt_order_type opt_on_conflict opt_autoinc\n\n                         DESC shift,\n    and go to state 513 ASC shift,\n    and go to state 514\n\n        $default reduce using rule 263(opt_order_type)\n\n            opt_order_type go to state 646\n\n        State 610\n\n        160 opt_on_conflict : ON.CONFLICT resolve_type\n\n                              CONFLICT shift,\n    and go to state 647\n\n        State 611\n\n        156 column_arg : UNIQUE opt_on_conflict\n                             .\n\n                         $default reduce using rule 156(column_arg)\n\n                             State 612\n\n                         153 column_arg\n    : NULL opt_on_conflict.\n\n      $default reduce using rule 153(column_arg)\n\n          State 613\n\n      154 column_arg : NOT NULL.opt_on_conflict\n\n                       ON shift,\n    and go to state 610\n\n        $default reduce using rule 161(opt_on_conflict)\n\n            opt_on_conflict go to state 648\n\n        State 614\n\n        158 column_arg : AS '('.expr ')'\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 649 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 615\n\n        157 column_arg : GENERATED ALWAYS.AS '(' expr ')'\n\n                         AS shift,\n    and go to state 650\n\n        State 616\n\n        159 column_arg : CHECK '('.expr ')'\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 651 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 617\n\n        151 column_arglist : column_arglist column_arg\n                                 .\n\n                             $default reduce using rule 151(column_arglist)\n\n                                 State 618\n\n                             113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name ON table_name\n      '(' ident_commalist.')' opt_where 415 ident_commalist\n    : ident_commalist.',' IDENTIFIER\n\n      ')' shift,\n    and go to state 652 ',' shift,\n    and go to state 502\n\n        State 619\n\n        131 opt_of_column_list : OF ident_commalist .415 ident_commalist\n    : ident_commalist.',' IDENTIFIER\n\n      ',' shift,\n    and go to state 502\n\n        $default reduce using rule 131(opt_of_column_list)\n\n            State 620\n\n        120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON table_name.opt_for_each opt_when\n\n      FOR shift,\n    and go to state 653\n\n        $default reduce using rule 134(opt_for_each)\n\n            opt_for_each go to state 654\n\n        State 621\n\n        343 opt_filter_clause\n    : FILTER '(' WHERE expr\n      ')'.\n\n      $default reduce using rule 343(opt_filter_clause)\n\n          State 622\n\n      340 opt_over_clause : OVER '(' window\n                            ')'.\n\n                            $default reduce using rule 340(opt_over_clause)\n\n                                State 623\n\n                            221 window\n    : opt_base_window_name PARTITION.BY expr_list opt_order opt_frame\n\n      BY shift,\n    and go to state 655\n\n        State 624\n\n        222 window : opt_base_window_name opt_order.opt_frame\n\n                     GROUPS shift,\n    and go to state 656 RANGE shift, and go to state 657 ROWS shift,\n    and go to state 658\n\n        $default reduce using rule 227(opt_frame)\n\n            opt_frame go to state 659 range_or_rows go to state 660\n\n        State 625\n\n        174 column_type : VARCHAR '(' INTVAL\n                          ')'.\n\n                          $default reduce using rule 174(column_type)\n\n                              State 626\n\n                          175 column_type\n    : CHAR '(' INTVAL\n      ')'.\n\n      $default reduce using rule 175(column_type)\n\n          State 627\n\n      190 super_list : super_list\n                       ',' '(' literal_list.')' 277 literal_list\n    : literal_list.',' literal\n\n      ')' shift,\n    and go to state 661 ',' shift,\n    and go to state 382\n\n        State 628\n\n        71 upsert_clause : ON CONFLICT DO UPDATE.SET assign_list opt_where\n\n                           SET shift,\n    and go to state 662\n\n        State 629\n\n        70 upsert_clause : ON CONFLICT DO NOTHING\n                               .\n\n                           $default reduce using rule 70(upsert_clause)\n\n                               State 630\n\n                           72 upsert_clause\n    : ON CONFLICT '(' indexed_column_list.')' opt_where DO NOTHING 73 |\n        ON CONFLICT '(' indexed_column_list\n            .')' opt_where DO UPDATE SET assign_list opt_where\n        75 indexed_column_list : indexed_column_list.',' indexed_column\n\n                                 ')' shift,\n    and go to state 663 ',' shift,\n    and go to state 664\n\n        State 631\n\n        74 indexed_column_list : indexed_column\n                                     .\n\n                                 $default reduce using rule\n                                 74(indexed_column_list)\n\n                                     State 632\n\n                                 76 indexed_column\n    : expr.opt_collate opt_order_type 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 COLLATE shift,\n    and go to state 665\n\n        $default reduce using rule 78(opt_collate)\n\n            opt_collate go to state 666\n\n        State 633\n\n        405 join_kw : RIGHT OUTER\n                          .\n\n                      $default reduce using rule 405(join_kw)\n\n                          State 634\n\n                      407 join_kw\n    : FULL OUTER.\n\n      $default reduce using rule 407(join_kw)\n\n          State 635\n\n      403 join_kw\n    : LEFT OUTER.\n\n      $default reduce using rule 403(join_kw)\n\n          State 636\n\n      381 join_op : join_kw IDENTIFIER.JOIN 382 |\n        join_kw IDENTIFIER.IDENTIFIER JOIN\n\n        IDENTIFIER shift,\n    and go to state 667 JOIN shift,\n    and go to state 668\n\n        State 637\n\n        380 join_op : join_kw JOIN\n                          .\n\n                      $default reduce using rule 380(join_op)\n\n                          State 638\n\n                      374 table_ref\n    : table_prefix '(' select_no_paren.')' opt_alias opt_on opt_using\n\n      ')' shift,\n    and go to state 669\n\n        State 639\n\n        375 table_ref\n    : table_prefix\n      '(' table_ref.')' opt_alias opt_on opt_using 376 table_prefix\n    : table_ref.join_op\n\n      NATURAL shift,\n    and go to state 591 CROSS shift, and go to state 592 INNER shift,\n    and go to state 593 OUTER shift, and go to state 594 RIGHT shift,\n    and go to state 595 FULL shift, and go to state 596 JOIN shift,\n    and go to state 597 LEFT shift, and go to state 598 ')' shift,\n    and go to state 670 ',' shift,\n    and go to state 599\n\n        join_op go to state 600 join_kw go to state 601\n\n        State 640\n\n        373 table_ref : table_prefix table_name '('.expr_list\n                        ')' opt_alias opt_on opt_using\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_list go to state 671 expr_alias go to state 327 expr go to state\n        328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 641\n\n        372 table_ref\n    : table_prefix table_name opt_alias.opt_index opt_on opt_using\n\n      NOT shift,\n    and go to state 672 INDEXED shift,\n    and go to state 673\n\n        $default reduce using rule 385(opt_index)\n\n            opt_index go to state 674\n\n        State 642\n\n        252 opt_group : GROUP BY.expr_list opt_having\n\n                        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_list go to state 675 expr_alias go to state 327 expr go to state\n        328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 643\n\n        217 window_clause : WINDOW.windowdefn_list\n\n                            IDENTIFIER shift,\n    and go to state 676\n\n        windowdefn_list go to state 677 windowdefn go to state 678\n\n        State 644\n\n        216 select_clause : SELECT opt_top opt_distinct select_list\n                            opt_from_clause opt_where opt_group window_clause\n                                .\n\n                            $default reduce using rule 216(select_clause)\n\n                                State 645\n\n                            115 create_statement\n    : CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name\n      '(' column_def_commalist\n      ')'.\n\n      $default reduce using rule 115(create_statement)\n\n          State 646\n\n      155 column_arg : PRIMARY KEY opt_order_type.opt_on_conflict opt_autoinc\n\n                       ON shift,\n    and go to state 610\n\n        $default reduce using rule 161(opt_on_conflict)\n\n            opt_on_conflict go to state 679\n\n        State 647\n\n        160 opt_on_conflict : ON CONFLICT.resolve_type\n\n                              IGNORE shift,\n    and go to state 175 REPLACE shift, and go to state 176 ROLLBACK shift,\n    and go to state 177 ABORT shift, and go to state 178 FAIL shift,\n    and go to state 179\n\n        resolve_type go to state 680\n\n        State 648\n\n        154 column_arg : NOT NULL opt_on_conflict\n                             .\n\n                         $default reduce using rule 154(column_arg)\n\n                             State 649\n\n                         158 column_arg : AS '(' expr.')' 317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 681\n\n        State 650\n\n        157 column_arg : GENERATED ALWAYS AS.'(' expr ')'\n\n                         '(' shift,\n    and go to state 682\n\n        State 651\n\n        159 column_arg : CHECK '(' expr.')' 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 683\n\n        State 652\n\n        113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name ON table_name\n      '(' ident_commalist ')'.opt_where\n\n      WHERE shift,\n    and go to state 278\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 684\n\n        State 653\n\n        133 opt_for_each : FOR.EACH ROW\n\n                           EACH shift,\n    and go to state 685\n\n        State 654\n\n        120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON table_name opt_for_each.opt_when\n\n      WHEN shift,\n    and go to state 686\n\n        $default reduce using rule 136(opt_when)\n\n            opt_when go to state 687\n\n        State 655\n\n        221 window\n    : opt_base_window_name PARTITION BY.expr_list opt_order opt_frame\n\n      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr_list go to state 688 expr_alias go to state 327 expr go to state\n        328 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 656\n\n        230 range_or_rows : GROUPS\n                                .\n\n                            $default reduce using rule 230(range_or_rows)\n\n                                State 657\n\n                            228 range_or_rows\n    : RANGE.\n\n      $default reduce using rule 228(range_or_rows)\n\n          State 658\n\n      229 range_or_rows : ROWS.\n\n                          $default reduce using rule 229(range_or_rows)\n\n                              State 659\n\n                          222 window : opt_base_window_name opt_order opt_frame\n                                .\n\n                                       $default reduce using rule 222(window)\n\n                                           State 660\n\n                                       225 opt_frame\n    : range_or_rows.frame_bound_s opt_frame_exclude 226 |\n        range_or_rows.BETWEEN frame_bound_s AND frame_bound_e opt_frame_exclude\n\n        STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 BETWEEN shift,\n    and go to state 689 EXISTS shift, and go to state 102 EXTRACT shift,\n    and go to state 103 CASE shift, and go to state 104 NULL shift,\n    and go to state 105 NOT shift, and go to state 106 ARRAY shift,\n    and go to state 107 TRUE shift, and go to state 108 FALSE shift,\n    and go to state 109 CURRENT shift, and go to state 690 UNBOUNDED shift,\n    and go to state 691 CAST shift, and go to state 111 '-' shift,\n    and go to state 112 '*' shift, and go to state 113 '(' shift,\n    and go to state 114 '?' shift,\n    and go to state 115\n\n        frame_bound_s go to state 692 frame_bound go to state\n        693 expr go to state 694 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 661\n\n        190 super_list : super_list ',' '(' literal_list\n                         ')'.\n\n                         $default reduce using rule 190(super_list)\n\n                             State 662\n\n                         71 upsert_clause\n    : ON CONFLICT DO UPDATE SET.assign_list opt_where\n\n      IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        assign_list go to state 695 assign_clause go to state\n        696 column_name_list go to state 697 column_name go to state 698\n\n        State 663\n\n        72 upsert_clause : ON CONFLICT '(' indexed_column_list\n                           ')'.opt_where DO NOTHING 73 |\n        ON CONFLICT '(' indexed_column_list\n        ')'.opt_where DO UPDATE SET assign_list opt_where\n\n        WHERE shift,\n    and go to state 278\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 699\n\n        State 664\n\n        75 indexed_column_list : indexed_column_list ','.indexed_column\n\n                                 STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        indexed_column go to state 700 expr go to state 632 operand go to state\n        117 cast_expr go to state 118 scalar_expr go to state\n        119 unary_expr go to state 120 binary_expr go to state\n        121 logic_expr go to state 122 in_expr go to state\n        123 case_expr go to state 124 exists_expr go to state\n        125 comp_expr go to state 126 function_expr go to state\n        127 extract_expr go to state 128 array_expr go to state\n        129 array_index go to state 130 between_expr go to state\n        131 column_name go to state 132 literal go to state\n        133 string_literal go to state 134 bool_literal go to state\n        135 num_literal go to state 136 int_literal go to state\n        137 null_literal go to state 138 param_expr go to state 139\n\n        State 665\n\n        77 opt_collate : COLLATE.collation_name\n\n                         IDENTIFIER shift,\n    and go to state 701\n\n        collation_name go to state 702\n\n        State 666\n\n        76 indexed_column : expr opt_collate.opt_order_type\n\n                            DESC shift,\n    and go to state 513 ASC shift,\n    and go to state 514\n\n        $default reduce using rule 263(opt_order_type)\n\n            opt_order_type go to state 703\n\n        State 667\n\n        382 join_op : join_kw IDENTIFIER IDENTIFIER.JOIN\n\n                      JOIN shift,\n    and go to state 704\n\n        State 668\n\n        381 join_op : join_kw IDENTIFIER JOIN\n                          .\n\n                      $default reduce using rule 381(join_op)\n\n                          State 669\n\n                      374 table_ref : table_prefix '(' select_no_paren\n                                      ')'.opt_alias opt_on opt_using\n\n                                      AS shift,\n    and go to state 421\n\n        $default reduce using rule 395(opt_alias)\n\n            alias go to state 422 opt_alias go to state 705\n\n        State 670\n\n        375 table_ref : table_prefix '(' table_ref\n                        ')'.opt_alias opt_on opt_using\n\n                        AS shift,\n    and go to state 421\n\n        $default reduce using rule 395(opt_alias)\n\n            alias go to state 422 opt_alias go to state 706\n\n        State 671\n\n        273 expr_list : expr_list\n                            .',' expr_alias 373 table_ref\n    : table_prefix table_name '(' expr_list.')' opt_alias opt_on opt_using\n\n      ')' shift,\n    and go to state 707 ',' shift,\n    and go to state 420\n\n        State 672\n\n        384 opt_index : NOT.INDEXED\n\n                        INDEXED shift,\n    and go to state 708\n\n        State 673\n\n        383 opt_index : INDEXED.BY column_name\n\n                        BY shift,\n    and go to state 709\n\n        State 674\n\n        372 table_ref\n    : table_prefix table_name opt_alias opt_index.opt_on opt_using\n\n      ON shift,\n    and go to state 710\n\n        ON[reduce using rule 387(opt_on)] $default reduce using rule 387(opt_on)\n\n            opt_on go to state 711\n\n        State 675\n\n        252 opt_group : GROUP BY expr_list.opt_having 273 expr_list\n    : expr_list.',' expr_alias\n\n      HAVING shift,\n    and go to state 712 ',' shift,\n    and go to state 420\n\n        $default reduce using rule 255(opt_having)\n\n            opt_having go to state 713\n\n        State 676\n\n        220 windowdefn : IDENTIFIER.AS '(' window ')'\n\n                         AS shift,\n    and go to state 714\n\n        State 677\n\n        217 window_clause : WINDOW windowdefn_list .219 windowdefn_list\n    : windowdefn_list.',' windowdefn\n\n      ',' shift,\n    and go to state 715\n\n        $default reduce using rule 217(window_clause)\n\n            State 678\n\n        218 windowdefn_list : windowdefn\n                                  .\n\n                              $default reduce using rule 218(windowdefn_list)\n\n                                  State 679\n\n                              155 column_arg\n    : PRIMARY KEY opt_order_type opt_on_conflict.opt_autoinc\n\n      AUTOINCR shift,\n    and go to state 716\n\n        $default reduce using rule 168(opt_autoinc)\n\n            opt_autoinc go to state 717\n\n        State 680\n\n        160 opt_on_conflict : ON CONFLICT resolve_type\n                                  .\n\n                              $default reduce using rule 160(opt_on_conflict)\n\n                                  State 681\n\n                              158 column_arg\n    : AS '(' expr ')'.\n\n      $default reduce using rule 158(column_arg)\n\n          State 682\n\n      157 column_arg : GENERATED ALWAYS AS '('.expr ')'\n\n                       STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 718 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 683\n\n        159 column_arg : CHECK '(' expr\n                         ')'.\n\n                         $default reduce using rule 159(column_arg)\n\n                             State 684\n\n                         113 create_statement\n    : CREATE opt_unique INDEX opt_not_exists index_name ON table_name\n      '(' ident_commalist ')' opt_where\n          .\n\n      $default reduce using rule 113(create_statement)\n\n          State 685\n\n      133 opt_for_each : FOR EACH.ROW\n\n                         ROW shift,\n    and go to state 719\n\n        State 686\n\n        135 opt_when : WHEN.expr\n\n                       STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 720 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 687\n\n        120 trigger_declare\n    : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n      trigger_event ON table_name opt_for_each opt_when\n          .\n\n      $default reduce using rule 120(trigger_declare)\n\n          State 688\n\n      221 window : opt_base_window_name PARTITION BY expr_list\n          .opt_order opt_frame 273 expr_list : expr_list.',' expr_alias\n\n                                               ORDER shift,\n    and go to state 257 ',' shift,\n    and go to state 420\n\n        $default reduce using rule 257(opt_order)\n\n            opt_order go to state 721\n\n        State 689\n\n        226 opt_frame\n    : range_or_rows BETWEEN.frame_bound_s AND frame_bound_e opt_frame_exclude\n\n      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CURRENT shift,\n    and go to state 690 UNBOUNDED shift, and go to state 691 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        frame_bound_s go to state 722 frame_bound go to state\n        693 expr go to state 694 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 690\n\n        237 frame_bound : CURRENT.ROW\n\n                          ROW shift,\n    and go to state 723\n\n        State 691\n\n        232 frame_bound_s : UNBOUNDED.PRECEDING\n\n                            PRECEDING shift,\n    and go to state 724\n\n        State 692\n\n        225 opt_frame : range_or_rows frame_bound_s.opt_frame_exclude\n\n                        EXCLUDE shift,\n    and go to state 725\n\n        $default reduce using rule 239(opt_frame_exclude)\n\n            opt_frame_exclude go to state 726\n\n        State 693\n\n        231 frame_bound_s : frame_bound\n                                .\n\n                            $default reduce using rule 231(frame_bound_s)\n\n                                State 694\n\n                            235 frame_bound : expr.PRECEDING 236 |\n        expr.FOLLOWING 317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 FOLLOWING shift,\n    and go to state 727 PRECEDING shift,\n    and go to state 728\n\n        State 695\n\n        71 upsert_clause : ON CONFLICT DO UPDATE SET\n                           assign_list.opt_where 80 assign_list\n    : assign_list.',' assign_clause\n\n      WHERE shift,\n    and go to state 278 ',' shift,\n    and go to state 729\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 730\n\n        State 696\n\n        79 assign_list : assign_clause\n                             .\n\n                         $default reduce using rule 79(assign_list)\n\n                             State 697\n\n                         84 assign_clause\n    : column_name_list.'=' expr 86 column_name_list\n    : column_name_list.',' column_name\n\n      '=' shift,\n    and go to state 731 ',' shift,\n    and go to state 732\n\n        State 698\n\n        85 column_name_list : column_name\n                                  .\n\n                              $default reduce using rule 85(column_name_list)\n\n                                  State 699\n\n                              72 upsert_clause\n    : ON CONFLICT '(' indexed_column_list ')' opt_where.DO NOTHING 73 |\n        ON CONFLICT '(' indexed_column_list\n        ')' opt_where.DO UPDATE SET assign_list opt_where\n\n        DO shift,\n    and go to state 733\n\n        State 700\n\n        75 indexed_column_list : indexed_column_list ',' indexed_column\n                                     .\n\n                                 $default reduce using rule\n                                 75(indexed_column_list)\n\n                                     State 701\n\n                                 87 collation_name\n    : IDENTIFIER.\n\n      $default reduce using rule 87(collation_name)\n\n          State 702\n\n      77 opt_collate\n    : COLLATE collation_name.\n\n      $default reduce using rule 77(opt_collate)\n\n          State 703\n\n      76 indexed_column\n    : expr opt_collate opt_order_type.\n\n      $default reduce using rule 76(indexed_column)\n\n          State 704\n\n      382 join_op : join_kw IDENTIFIER\n                    IDENTIFIER JOIN.\n\n                    $default reduce using rule 382(join_op)\n\n                        State 705\n\n                    374 table_ref : table_prefix '(' select_no_paren\n                                    ')' opt_alias.opt_on opt_using\n\n                                    ON shift,\n    and go to state 710\n\n        ON[reduce using rule 387(opt_on)] $default reduce using rule 387(opt_on)\n\n            opt_on go to state 734\n\n        State 706\n\n        375 table_ref : table_prefix '(' table_ref\n                        ')' opt_alias.opt_on opt_using\n\n                        ON shift,\n    and go to state 710\n\n        ON[reduce using rule 387(opt_on)] $default reduce using rule 387(opt_on)\n\n            opt_on go to state 735\n\n        State 707\n\n        373 table_ref : table_prefix table_name '(' expr_list\n                        ')'.opt_alias opt_on opt_using\n\n                        AS shift,\n    and go to state 421\n\n        $default reduce using rule 395(opt_alias)\n\n            alias go to state 422 opt_alias go to state 736\n\n        State 708\n\n        384 opt_index : NOT INDEXED\n                            .\n\n                        $default reduce using rule 384(opt_index)\n\n                            State 709\n\n                        383 opt_index : INDEXED BY.column_name\n\n                                        IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        column_name go to state 737\n\n        State 710\n\n        386 opt_on : ON.expr\n\n                     STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 738 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 711\n\n        372 table_ref\n    : table_prefix table_name opt_alias opt_index opt_on.opt_using\n\n      USING shift,\n    and go to state 739\n\n        $default reduce using rule 389(opt_using)\n\n            opt_using go to state 740\n\n        State 712\n\n        254 opt_having : HAVING.expr\n\n                         STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 741 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 713\n\n        252 opt_group : GROUP BY expr_list opt_having\n                            .\n\n                        $default reduce using rule 252(opt_group)\n\n                            State 714\n\n                        220 windowdefn : IDENTIFIER AS.'(' window ')'\n\n                                         '(' shift,\n    and go to state 742\n\n        State 715\n\n        219 windowdefn_list : windowdefn_list ','.windowdefn\n\n                              IDENTIFIER shift,\n    and go to state 676\n\n        windowdefn go to state 743\n\n        State 716\n\n        167 opt_autoinc : AUTOINCR\n                              .\n\n                          $default reduce using rule 167(opt_autoinc)\n\n                              State 717\n\n                          155 column_arg\n    : PRIMARY KEY opt_order_type opt_on_conflict\n      opt_autoinc.\n\n      $default reduce using rule 155(column_arg)\n\n          State 718\n\n      157 column_arg : GENERATED ALWAYS AS '(' expr.')' 317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift, and go to state 216 ')' shift,\n    and go to state 744\n\n        State 719\n\n        133 opt_for_each : FOR EACH ROW\n                               .\n\n                           $default reduce using rule 133(opt_for_each)\n\n                               State 720\n\n                           135 opt_when : WHEN expr .317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 135(opt_when)\n\n            State 721\n\n        221 window\n    : opt_base_window_name PARTITION BY expr_list opt_order.opt_frame\n\n      GROUPS shift,\n    and go to state 656 RANGE shift, and go to state 657 ROWS shift,\n    and go to state 658\n\n        $default reduce using rule 227(opt_frame)\n\n            opt_frame go to state 745 range_or_rows go to state 660\n\n        State 722\n\n        226 opt_frame\n    : range_or_rows BETWEEN frame_bound_s.AND frame_bound_e opt_frame_exclude\n\n      AND shift,\n    and go to state 746\n\n        State 723\n\n        237 frame_bound : CURRENT ROW\n                              .\n\n                          $default reduce using rule 237(frame_bound)\n\n                              State 724\n\n                          232 frame_bound_s\n    : UNBOUNDED PRECEDING.\n\n      $default reduce using rule 232(frame_bound_s)\n\n          State 725\n\n      238 opt_frame_exclude : EXCLUDE.frame_exclude\n\n                              GROUP shift,\n    and go to state 747 CURRENT shift, and go to state 748 NO shift,\n    and go to state 749 TIES shift,\n    and go to state 750\n\n        frame_exclude go to state 751\n\n        State 726\n\n        225 opt_frame : range_or_rows frame_bound_s opt_frame_exclude\n                            .\n\n                        $default reduce using rule 225(opt_frame)\n\n                            State 727\n\n                        236 frame_bound\n    : expr FOLLOWING.\n\n      $default reduce using rule 236(frame_bound)\n\n          State 728\n\n      235 frame_bound\n    : expr PRECEDING.\n\n      $default reduce using rule 235(frame_bound)\n\n          State 729\n\n      80 assign_list : assign_list ','.assign_clause\n\n                       IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        assign_clause go to state 752 column_name_list go to state\n        697 column_name go to state 698\n\n        State 730\n\n        71 upsert_clause : ON CONFLICT DO UPDATE SET assign_list opt_where\n                               .\n\n                           $default reduce using rule 71(upsert_clause)\n\n                               State 731\n\n                           84 assign_clause : column_name_list '='.expr\n\n                                              STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        expr go to state 753 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 732\n\n        86 column_name_list : column_name_list ','.column_name\n\n                              IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        column_name go to state 754\n\n        State 733\n\n        72 upsert_clause : ON CONFLICT '(' indexed_column_list\n                           ')' opt_where DO.NOTHING 73 |\n        ON CONFLICT '(' indexed_column_list\n        ')' opt_where DO.UPDATE SET assign_list opt_where\n\n        UPDATE shift,\n    and go to state 755 NOTHING shift,\n    and go to state 756\n\n        State 734\n\n        374 table_ref : table_prefix '(' select_no_paren\n                        ')' opt_alias opt_on.opt_using\n\n                        USING shift,\n    and go to state 739\n\n        $default reduce using rule 389(opt_using)\n\n            opt_using go to state 757\n\n        State 735\n\n        375 table_ref : table_prefix '(' table_ref\n                        ')' opt_alias opt_on.opt_using\n\n                        USING shift,\n    and go to state 739\n\n        $default reduce using rule 389(opt_using)\n\n            opt_using go to state 758\n\n        State 736\n\n        373 table_ref : table_prefix table_name '(' expr_list\n                        ')' opt_alias.opt_on opt_using\n\n                        ON shift,\n    and go to state 710\n\n        ON[reduce using rule 387(opt_on)] $default reduce using rule 387(opt_on)\n\n            opt_on go to state 759\n\n        State 737\n\n        383 opt_index : INDEXED BY column_name\n                            .\n\n                        $default reduce using rule 383(opt_index)\n\n                            State 738\n\n                        317 logic_expr : expr.AND expr 318 |\n        expr.OR expr 386 opt_on : ON expr.\n\n                                  AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 386(opt_on)\n\n            State 739\n\n        388 opt_using : USING.'(' ident_commalist ')'\n\n                        '(' shift,\n    and go to state 760\n\n        State 740\n\n        372 table_ref\n    : table_prefix table_name opt_alias opt_index opt_on opt_using\n          .\n\n      $default reduce using rule 372(table_ref)\n\n          State 741\n\n      254 opt_having : HAVING expr .317 logic_expr : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 254(opt_having)\n\n            State 742\n\n        220 windowdefn : IDENTIFIER AS '('.window ')'\n\n                         IDENTIFIER shift,\n    and go to state 580\n\n        $default reduce using rule 224(opt_base_window_name)\n\n            window go to state 761 opt_base_window_name go to state 582\n\n        State 743\n\n        219 windowdefn_list : windowdefn_list ',' windowdefn\n                                  .\n\n                              $default reduce using rule 219(windowdefn_list)\n\n                                  State 744\n\n                              157 column_arg\n    : GENERATED ALWAYS AS '(' expr\n      ')'.\n\n      $default reduce using rule 157(column_arg)\n\n          State 745\n\n      221 window : opt_base_window_name PARTITION BY expr_list opt_order\n                   opt_frame.\n\n                   $default reduce using rule 221(window)\n\n                       State 746\n\n                   226 opt_frame\n    : range_or_rows BETWEEN frame_bound_s AND.frame_bound_e opt_frame_exclude\n\n      STRING shift,\n    and go to state 98 IDENTIFIER shift, and go to state 99 FLOATVAL shift,\n    and go to state 100 INTVAL shift, and go to state 101 EXISTS shift,\n    and go to state 102 EXTRACT shift, and go to state 103 CASE shift,\n    and go to state 104 NULL shift, and go to state 105 NOT shift,\n    and go to state 106 ARRAY shift, and go to state 107 TRUE shift,\n    and go to state 108 FALSE shift, and go to state 109 CURRENT shift,\n    and go to state 690 UNBOUNDED shift, and go to state 762 CAST shift,\n    and go to state 111 '-' shift, and go to state 112 '*' shift,\n    and go to state 113 '(' shift, and go to state 114 '?' shift,\n    and go to state 115\n\n        frame_bound_e go to state 763 frame_bound go to state\n        764 expr go to state 694 operand go to state 117 cast_expr go to state\n        118 scalar_expr go to state 119 unary_expr go to state\n        120 binary_expr go to state 121 logic_expr go to state\n        122 in_expr go to state 123 case_expr go to state\n        124 exists_expr go to state 125 comp_expr go to state\n        126 function_expr go to state 127 extract_expr go to state\n        128 array_expr go to state 129 array_index go to state\n        130 between_expr go to state 131 column_name go to state\n        132 literal go to state 133 string_literal go to state\n        134 bool_literal go to state 135 num_literal go to state\n        136 int_literal go to state 137 null_literal go to state\n        138 param_expr go to state 139\n\n        State 747\n\n        242 frame_exclude : GROUP\n                                .\n\n                            $default reduce using rule 242(frame_exclude)\n\n                                State 748\n\n                            241 frame_exclude : CURRENT.ROW\n\n                                                ROW shift,\n    and go to state 765\n\n        State 749\n\n        240 frame_exclude : NO.OTHERS\n\n                            OTHERS shift,\n    and go to state 766\n\n        State 750\n\n        243 frame_exclude : TIES.\n\n                            $default reduce using rule 243(frame_exclude)\n\n                                State 751\n\n                            238 opt_frame_exclude : EXCLUDE frame_exclude\n                                                        .\n\n                                                    $default reduce using rule\n                                                    238(opt_frame_exclude)\n\n                                                        State 752\n\n                                                    80 assign_list\n    : assign_list ',' assign_clause.\n\n      $default reduce using rule 80(assign_list)\n\n          State 753\n\n      84 assign_clause : column_name_list '=' expr .317 logic_expr\n    : expr.AND expr 318 |\n        expr.OR expr\n\n        AND shift,\n    and go to state 214 OR shift,\n    and go to state 216\n\n        $default reduce using rule 84(assign_clause)\n\n            State 754\n\n        86 column_name_list : column_name_list ',' column_name\n                                  .\n\n                              $default reduce using rule 86(column_name_list)\n\n                                  State 755\n\n                              73 upsert_clause\n    : ON CONFLICT '(' indexed_column_list\n      ')' opt_where DO UPDATE.SET assign_list opt_where\n\n      SET shift,\n    and go to state 767\n\n        State 756\n\n        72 upsert_clause : ON CONFLICT '(' indexed_column_list\n                           ')' opt_where DO NOTHING\n                               .\n\n                           $default reduce using rule 72(upsert_clause)\n\n                               State 757\n\n                           374 table_ref\n    : table_prefix '(' select_no_paren ')' opt_alias opt_on\n      opt_using.\n\n      $default reduce using rule 374(table_ref)\n\n          State 758\n\n      375 table_ref : table_prefix '(' table_ref ')' opt_alias opt_on opt_using\n                               .\n\n                      $default reduce using rule 375(table_ref)\n\n                          State 759\n\n                      373 table_ref : table_prefix table_name '(' expr_list\n                                      ')' opt_alias opt_on.opt_using\n\n                                      USING shift,\n    and go to state 739\n\n        $default reduce using rule 389(opt_using)\n\n            opt_using go to state 768\n\n        State 760\n\n        388 opt_using : USING '('.ident_commalist ')'\n\n                        IDENTIFIER shift,\n    and go to state 436\n\n        ident_commalist go to state 769\n\n        State 761\n\n        220 windowdefn : IDENTIFIER AS '(' window.')'\n\n                         ')' shift,\n    and go to state 770\n\n        State 762\n\n        234 frame_bound_e : UNBOUNDED.FOLLOWING\n\n                            FOLLOWING shift,\n    and go to state 771\n\n        State 763\n\n        226 opt_frame\n    : range_or_rows BETWEEN frame_bound_s AND frame_bound_e.opt_frame_exclude\n\n      EXCLUDE shift,\n    and go to state 725\n\n        $default reduce using rule 239(opt_frame_exclude)\n\n            opt_frame_exclude go to state 772\n\n        State 764\n\n        233 frame_bound_e : frame_bound\n                                .\n\n                            $default reduce using rule 233(frame_bound_e)\n\n                                State 765\n\n                            241 frame_exclude\n    : CURRENT ROW.\n\n      $default reduce using rule 241(frame_exclude)\n\n          State 766\n\n      240 frame_exclude\n    : NO OTHERS.\n\n      $default reduce using rule 240(frame_exclude)\n\n          State 767\n\n      73 upsert_clause : ON CONFLICT '(' indexed_column_list\n                         ')' opt_where DO UPDATE SET.assign_list opt_where\n\n                         IDENTIFIER shift,\n    and go to state 468 '*' shift,\n    and go to state 113\n\n        assign_list go to state 773 assign_clause go to state\n        696 column_name_list go to state 697 column_name go to state 698\n\n        State 768\n\n        373 table_ref : table_prefix table_name '(' expr_list\n                        ')' opt_alias opt_on opt_using\n                            .\n\n                        $default reduce using rule 373(table_ref)\n\n                            State 769\n\n                        388 opt_using\n    : USING '(' ident_commalist.')' 415 ident_commalist\n    : ident_commalist.',' IDENTIFIER\n\n      ')' shift,\n    and go to state 774 ',' shift,\n    and go to state 502\n\n        State 770\n\n        220 windowdefn : IDENTIFIER AS '(' window\n                         ')'.\n\n                         $default reduce using rule 220(windowdefn)\n\n                             State 771\n\n                         234 frame_bound_e : UNBOUNDED FOLLOWING\n                                                 .\n\n                                             $default reduce using rule\n                                             234(frame_bound_e)\n\n                                                 State 772\n\n                                             226 opt_frame\n    : range_or_rows BETWEEN frame_bound_s AND frame_bound_e\n      opt_frame_exclude.\n\n      $default reduce using rule 226(opt_frame)\n\n          State 773\n\n      73 upsert_clause\n    : ON CONFLICT '(' indexed_column_list\n      ')' opt_where DO UPDATE SET assign_list.opt_where 80 assign_list\n    : assign_list.',' assign_clause\n\n      WHERE shift,\n    and go to state 278 ',' shift,\n    and go to state 729\n\n        $default reduce using rule 251(opt_where)\n\n            opt_where go to state 775\n\n        State 774\n\n        388 opt_using : USING '(' ident_commalist\n                        ')'.\n\n                        $default reduce using rule 388(opt_using)\n\n                            State 775\n\n                        73 upsert_clause\n    : ON CONFLICT '(' indexed_column_list\n      ')' opt_where DO UPDATE SET assign_list opt_where.\n\n      $default reduce using rule 73(upsert_clause)\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/bison_parser.y",
    "content": "% {\n/**\n * bison_parser.y\n * defines bison_parser.h\n * outputs bison_parser.c\n *\n * Grammar File Spec: http://dinosaur.compilertools.net/bison/bison_6.html\n *\n */\n/*********************************\n ** Section 1: C Declarations\n *********************************/\n\n#include <stdio.h>\n#include <string.h>\n\n#include \"bison_parser.h\"\n#include \"flex_lexer.h\"\n\n      int yyerror(YYLTYPE * llocp, Program* result, yyscan_t scanner,\n                  const char* msg){return 0;\n}\n\n%\n}\n/*********************************\n ** Section 2: Bison Parser Declarations\n *********************************/\n\n// Specify code that is included in the generated .h and .c files\n% code requires {\n  // %code requires block\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n//#include \"../include/utils.h\"\n#include \"parser_typedef.h\"\n\n// Auto update column and line number\n#define YY_USER_ACTION                        \\\n  yylloc->first_line = yylloc->last_line;     \\\n  yylloc->first_column = yylloc->last_column; \\\n  for (int i = 0; yytext[i] != '\\0'; i++) {   \\\n    yylloc->total_column++;                   \\\n    yylloc->string_length++;                  \\\n    if (yytext[i] == '\\n') {                  \\\n      yylloc->last_line++;                    \\\n      yylloc->last_column = 0;                \\\n    } else {                                  \\\n      yylloc->last_column++;                  \\\n    }                                         \\\n  }\n}\n\n// Define the names of the created files (defined in Makefile)\n// %output  \"bison_parser.cpp\"\n// %defines \"bison_parser.h\"\n\n// Tell bison to create a reentrant parser\n%\n        define api.pure full\n\n        // Prefix the parser\n        % define api.prefix{hsql_} % define api.token.prefix{SQL_}\n\n        % define parse.error verbose % locations\n\n        % initial -\n    action {\n  // Initialize\n  @$.first_column = 0;\n  @$.last_column = 0;\n  @$.first_line = 0;\n  @$.last_line = 0;\n  @$.total_column = 0;\n  @$.string_length = 0;\n};\n\n// Define additional parameters for yylex\n// (http://www.gnu.org/software/bison/manual/html_node/Pure-Calling.html)\n% lex -\n    param{yyscan_t scanner}\n\n        // Define additional parameters for yyparse\n        % parse -\n    param{Program * result} % parse -\n    param{yyscan_t scanner}\n\n        /*********************************\n         ** Define all data-types\n         *(http://www.gnu.org/software/bison/manual/html_node/Union-Decl.html)\n         *********************************/\n        % union HSQL_STYPE {\n  double fval;\n  int64_t ival;\n  char* sval;\n  uintmax_t uval;\n  bool bval;\n\n  Program* program_t;\n  StatementList* statement_list_t;\n  Statement* statement_t;\n  PreparableStatement* preparable_statement_t;\n  OptionalHints* optional_hints_t;\n  HintList* hint_list_t;\n  Hint* hint_t;\n  PrepareStatement* prepare_statement_t;\n  PrepareTargetQuery* prepare_target_query_t;\n  ExecuteStatement* execute_statement_t;\n  ImportStatement* import_statement_t;\n  ImportFileType* import_file_type_t;\n  FilePath* file_path_t;\n  TableRefCommaList* table_ref_commalist_t;\n  ShowStatement* show_statement_t;\n  CreateStatement* create_statement_t;\n  OptNotExists* opt_not_exists_t;\n  ColumnDefCommaList* column_def_comma_list_t;\n  ColumnDef* column_def_t;\n  ColumnType* column_type_t;\n  // OptColumnNullable* opt_column_nullable_t;\n  DropStatement* drop_statement_t;\n  OptExists* opt_exists_t;\n  DeleteStatement* delete_statement_t;\n  InsertStatement* insert_statement_t;\n  OptColumnList* opt_column_list_t;\n  UpdateStatement* update_statement_t;\n  UpdateClauseCommalist* update_clause_commalist_t;\n  UpdateClause* update_clause_t;\n  SelectStatement* select_statement_t;\n  SelectWithParen* select_with_paren_t;\n  SelectParenOrClause* select_paren_or_clause_t;\n  SelectNoParen* select_no_paren_t;\n  SetOperator* set_operator_t;\n  SetType* set_type_t;\n  OptAll* opt_all_t;\n  IdentCommaList* ident_commalist_t;\n  SelectClause* select_clause_t;\n  OptDistinct* opt_distinct_t;\n  SelectList* select_list_t;\n  OptFromClause* opt_from_clause_t;\n  FromClause* from_clause_t;\n  OptWhere* opt_where_t;\n  OptGroup* opt_group_t;\n  OptHaving* opt_having_t;\n  OptOrder* opt_order_t;\n  OrderList* order_list_t;\n  OrderDesc* order_desc_t;\n  OptOrderType* opt_order_type_t;\n  OptTop* opt_top_t;\n  OptLimit* opt_limit_t;\n  ExprList* expr_list_t;\n  OptLiteralList* opt_literal_list_t;\n  LiteralList* literal_list_t;\n  ExprAlias* expr_alias_t;\n  Expr* expr_t;\n  Operand* operand_t;\n  ScalarExpr* scalar_expr_t;\n  UnaryExpr* unary_expr_t;\n  BinaryExpr* binary_expr_t;\n  LogicExpr* logic_expr_t;\n  InExpr* in_expr_t;\n  CompExpr* comp_expr_t;\n  CaseExpr* case_expr_t;\n  CaseClause* case_clause_t;\n  CaseList* case_list_t;\n  ExistsExpr* exists_expr_t;\n  FunctionExpr* function_expr_t;\n  ExtractExpr* extract_expr_t;\n  DatetimeField* datetime_field_t;\n  ArrayExpr* array_expr_t;\n  ArrayIndex* array_index_t;\n  BetweenExpr* between_expr_t;\n  ColumnName* column_name_t;\n  Literal* literal_t;\n  StringLiteral* string_literal_t;\n  BoolLiteral* bool_literal_t;\n  NumLiteral* num_literal_t;\n  IntLiteral* int_literal_t;\n  NullLiteral* null_literal_t;\n  ParamExpr* param_expr_t;\n  TableRef* table_ref_t;\n  TableRefAtomic* table_ref_atomic_t;\n  NonjoinTableRefAtomic* nonjoin_table_ref_atomic_t;\n  TableRefName* table_ref_name_t;\n  TableRefNameNoAlias* table_ref_name_no_alias_t;\n  TableName* table_name_t;\n  TableAlias* table_alias_t;\n  OptTableAlias* opt_table_alias_t;\n  Alias* alias_t;\n  OptAlias* opt_alias_t;\n  OptWithClause* opt_with_clause_t;\n  WithClause* with_clause_t;\n  WithDescriptionList* with_description_list_t;\n  WithDescription* with_description_t;\n  JoinClause* join_clause_t;\n  OptJoinType* opt_join_type_t;\n  JoinCondition* join_condition_t;\n  OptSemicolon* opt_semicolon_t;\n  Identifier* identifier_t;\n  Cmd* cmd_t;\n  CmdAttach* cmd_attach_t;\n  CmdDetach* cmd_detach_t;\n  CmdReindex* cmd_reindex_t;\n  CmdAnalyze* cmd_analyze_t;\n  CmdPragma* cmd_pragma_t;\n  PragmaKey* pragma_key_t;\n  PragmaValue* pragma_value_t;\n  PragmaName* pragma_name_t;\n  SchemaName* schema_name_t;\n  OptColumnArglist* opt_column_arglist_t;\n  ColumnArglist* column_arglist_t;\n  ColumnArg* column_arg_t;\n  OptOnConflict* opt_on_conflict_t;\n  ResolveType* resolve_type_t;\n  OptAutoinc* opt_autoinc_t;\n  OptUnique* opt_unique_t;\n  IndexName* index_name_t;\n  TriggerDeclare* trigger_declare_t;\n  OptTmp* opt_tmp_t;\n  TriggerName* trigger_name_t;\n  OptTriggerTime* opt_trigger_time_t;\n  TriggerEvent* trigger_event_t;\n  OptOfColumnList* opt_of_column_list_t;\n  OptForEach* opt_for_each_t;\n  OptWhen* opt_when_t;\n  TriggerCmdList* trigger_cmd_list_t;\n  TriggerCmd* trigger_cmd_t;\n  ModuleName* module_name_t;\n  OptOverClause* opt_over_clause_t;\n  OptFilterClause* opt_filter_clause_t;\n  WindowClause* window_clause_t;\n  WindowDefnList* window_defn_list_t;\n  WindowDefn* window_defn_t;\n  Window* window_t;\n  OptBaseWindowName* opt_base_window_name_t;\n  OptFrame* opt_frame_t;\n  RangeOrRows* range_or_rows_t;\n  FrameBoundS* frame_bound_s_t;\n  FrameBoundE* frame_bound_e_t;\n  FrameBound* frame_bound_t;\n  OptFrameExclude* opt_frame_exclude_t;\n  FrameExclude* frame_exclude_t;\n  InsertType* insert_type_t;\n  SuperList* super_list_t;\n  JoinKw* join_kw_t;\n\n  TablePrefix* table_prefix_t;\n  JoinOp* join_op_t;\n  OptIndex* opt_index_t;\n  OptOn* opt_on_t;\n  OptUsing* opt_using_t;\n\n  CastExpr* cast_expr_t;\n  AlterStatement* alter_statement_t;\n  OptColumn* opt_column_t;\n  CmdRelease* cmd_release_t;\n  SavepointName* savepoint_name_t;\n  VacuumStatement* vacuum_statement_t;\n  OptSchemaName* opt_schema_name_t;\n  RollbackStatement* rollback_statement_t;\n  OptTransaction* opt_transaction_t;\n  OptToSavepoint* opt_to_savepoint_t;\n  BeginStatement* begin_statement_t;\n  CommitStatement* commit_statement_t;\n  UpsertClause* upsert_clause_t;\n  IndexedColumnList* indexed_column_list_t;\n  IndexedColumn* indexed_column_t;\n  OptCollate* opt_collate_t;\n  AssignList* assign_list_t;\n  OptNull* opt_null_t;\n  AssignClause* assign_clause_t;\n  ColumnNameList* column_name_list_t;\n  CollationName* collation_name_t;\n  OptUpsertClause* opt_upsert_clause_t;\n\n  std::vector<char*>* str_vec;\n  std::vector<TableRef*>* table_vec;\n  std::vector<ColumnDef*>* column_vec;\n  std::vector<UpdateClause*>* update_vec;\n  std::vector<Expr*>* expr_vec;\n  std::vector<OrderDesc*>* order_vec;\n  std::vector<WithDescription*>* with_description_vec;\n}\n\n    /*********************************\n     ** Token Definition\n     *********************************/\n    % token<sval> STRING IDENTIFIER % token<fval> FLOATVAL %\n    token<ival> INTVAL\n    //%token <identifier_t> IDENTIFIER\n\n    /* SQL Keywords */\n    % token DEALLOCATE PARAMETERS INTERSECT TEMPORARY TIMESTAMP %\n    token DISTINCT NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN %\n    token CASCADE COLUMNS CONTROL DEFAULT EXECUTE EXPLAIN %\n    token INTEGER NATURAL PREPARE PRIMARY SCHEMAS %\n    token SPATIAL VARCHAR VIRTUAL DESCRIBE BEFORE COLUMN CREATE DELETE DIRECT %\n    token DOUBLE ESCAPE EXCEPT EXISTS EXTRACT GLOBAL HAVING IMPORT %\n    token INSERT ISNULL OFFSET RENAME SCHEMA SELECT SORTED %\n    token TABLES UNIQUE UNLOAD UPDATE VALUES AFTER ALTER CROSS %\n    token DELTA FLOAT GROUP INDEX INNER LIMIT LOCAL MERGE MINUS ORDER %\n    token OUTER RIGHT TABLE UNION USING WHERE CALL CASE CHAR DATE %\n    token DESC DROP ELSE FILE FROM FULL HASH HINT INTO JOIN %\n    token LEFT LIKE LOAD LONG NULL PLAN SHOW TEXT THEN TIME %\n    token VIEW WHEN WITH ADD ALL AND ASC CSV END FOR INT KEY %\n    token NOT OFF SET TBL TOP AS BY IF IN IS OF ON OR TO %\n    token ARRAY CONCAT ILIKE SECOND MINUTE HOUR DAY MONTH YEAR %\n    token TRUE FALSE\n\n    /* For SQLite\n     */\n\n    % token PRAGMA REINDEX GENERATED ALWAYS CHECK CONFLICT IGNORE REPLACE\n          ROLLBACK %\n    token ABORT FAIL AUTOINCR BEGIN TRIGGER TEMP INSTEAD EACH ROW OVER FILTER\n        PARTITION %\n    token CURRENT EXCLUDE FOLLOWING GROUPS NO OTHERS PRECEDING RANGE ROWS TIES\n        UNBOUNDED WINDOW %\n    token ATTACH DETACH DATABASE INDEXED CAST SAVEPOINT RELEASE VACUUM\n        TRANSACTION DEFFERED EXCLUSIVE %\n    token IMEDIATE COMMIT GLOB MATCH REGEX NOTHING NULLS LAST FIRST DO COLLATE\n\n    % type<program_t> input % type<statement_list_t> statement_list %\n    type<statement_t> statement %\n    type<preparable_statement_t> preparable_statement %\n    type<optional_hints_t> opt_hints % type<hint_list_t> hint_list %\n    type<hint_t> hint % type<prepare_statement_t> prepare_statement %\n    type<prepare_target_query_t> prepare_target_query %\n    type<execute_statement_t> execute_statement %\n    type<import_statement_t> import_statement %\n    type<import_file_type_t> import_file_type % type<file_path_t> file_path %\n    type<show_statement_t> show_statement %\n    type<create_statement_t> create_statement %\n    type<opt_not_exists_t> opt_not_exists %\n    type<column_def_comma_list_t> column_def_commalist %\n    type<column_def_t> column_def % type<column_type_t> column_type %\n    type<drop_statement_t> drop_statement % type<opt_exists_t> opt_exists %\n    type<delete_statement_t> delete_statement truncate_statement %\n    type<insert_statement_t> insert_statement %\n    type<opt_column_list_t> opt_column_list %\n    type<update_statement_t> update_statement %\n    type<update_clause_commalist_t> update_clause_commalist %\n    type<update_clause_t> update_clause %\n    type<select_statement_t> select_statement %\n    type<select_with_paren_t> select_with_paren %\n    type<select_paren_or_clause_t> select_paren_or_clause %\n    type<select_no_paren_t> select_no_paren %\n    type<set_operator_t> set_operator % type<set_type_t> set_type %\n    type<opt_all_t> opt_all % type<select_clause_t> select_clause %\n    type<opt_distinct_t> opt_distinct % type<select_list_t> select_list %\n    type<opt_from_clause_t> opt_from_clause % type<from_clause_t> from_clause %\n    type<opt_where_t> opt_where % type<opt_group_t> opt_group %\n    type<opt_having_t> opt_having % type<opt_order_t> opt_order %\n    type<order_list_t> order_list % type<order_desc_t> order_desc %\n    type<opt_order_type_t> opt_order_type % type<opt_top_t> opt_top %\n    type<opt_limit_t> opt_limit % type<expr_list_t> expr_list %\n    type<opt_literal_list_t> opt_literal_list %\n    type<literal_list_t> literal_list % type<expr_alias_t> expr_alias %\n    type<expr_t> expr % type<operand_t> operand %\n    type<scalar_expr_t> scalar_expr % type<unary_expr_t> unary_expr %\n    type<binary_expr_t> binary_expr % type<logic_expr_t> logic_expr %\n    type<in_expr_t> in_expr % type<comp_expr_t> comp_expr %\n    type<case_expr_t> case_expr % type<case_list_t> case_list %\n    type<exists_expr_t> exists_expr % type<function_expr_t> function_expr %\n    type<extract_expr_t> extract_expr % type<datetime_field_t> datetime_field %\n    type<array_expr_t> array_expr % type<array_index_t> array_index %\n    type<between_expr_t> between_expr % type<column_name_t> column_name %\n    type<literal_t> literal % type<string_literal_t> string_literal %\n    type<bool_literal_t> bool_literal % type<num_literal_t> num_literal %\n    type<int_literal_t> int_literal % type<null_literal_t> null_literal %\n    type<param_expr_t> param_expr % type<table_ref_t> table_ref %\n    type<table_ref_name_no_alias_t> table_ref_name_no_alias %\n    type<table_name_t> table_name % type<alias_t> alias %\n    type<opt_alias_t> opt_alias % type<opt_with_clause_t> opt_with_clause %\n    type<with_clause_t> with_clause %\n    type<with_description_list_t> with_description_list %\n    type<with_description_t> with_description %\n    type<opt_semicolon_t> opt_semicolon %\n    type<ident_commalist_t> ident_commalist\n\n    % type<table_prefix_t> table_prefix % type<join_op_t> join_op %\n    type<opt_index_t> opt_index % type<opt_on_t> opt_on %\n    type<opt_using_t> opt_using % type<join_kw_t> join_kw\n\n    % type<cmd_t> cmd % type<cmd_attach_t> cmd_attach %\n    type<cmd_detach_t> cmd_detach % type<cmd_analyze_t> cmd_analyze %\n    type<cmd_reindex_t> cmd_reindex % type<cmd_pragma_t> cmd_pragma %\n    type<pragma_key_t> pragma_key % type<pragma_value_t> pragma_value %\n    type<pragma_name_t> pragma_name % type<schema_name_t> schema_name\n\n    % type<opt_column_arglist_t> opt_column_arglist %\n    type<column_arglist_t> column_arglist % type<column_arg_t> column_arg %\n    type<opt_on_conflict_t> opt_on_conflict %\n    type<resolve_type_t> resolve_type % type<opt_autoinc_t> opt_autoinc %\n    type<opt_unique_t> opt_unique % type<index_name_t> index_name %\n    type<trigger_declare_t> trigger_declare % type<opt_tmp_t> opt_tmp %\n    type<trigger_name_t> trigger_name %\n    type<opt_trigger_time_t> opt_trigger_time %\n    type<trigger_event_t> trigger_event %\n    type<opt_of_column_list_t> opt_of_column_list %\n    type<opt_for_each_t> opt_for_each % type<opt_when_t> opt_when %\n    type<trigger_cmd_list_t> trigger_cmd_list %\n    type<trigger_cmd_t> trigger_cmd % type<module_name_t> module_name %\n    type<opt_over_clause_t> opt_over_clause %\n    type<opt_filter_clause_t> opt_filter_clause %\n    type<window_clause_t> window_clause %\n    type<window_defn_list_t> windowdefn_list % type<window_defn_t> windowdefn %\n    type<window_t> window % type<opt_base_window_name_t> opt_base_window_name %\n    type<opt_frame_t> opt_frame % type<range_or_rows_t> range_or_rows %\n    type<frame_bound_s_t> frame_bound_s % type<frame_bound_e_t> frame_bound_e %\n    type<frame_bound_t> frame_bound %\n    type<opt_frame_exclude_t> opt_frame_exclude %\n    type<frame_exclude_t> frame_exclude % type<insert_type_t> insert_type %\n    type<super_list_t> super_list\n\n    % type<cast_expr_t> cast_expr % type<alter_statement_t> alter_statement %\n    type<opt_column_t> opt_column % type<cmd_release_t> cmd_release %\n    type<savepoint_name_t> savepoint_name %\n    type<vacuum_statement_t> vacuum_statement %\n    type<opt_schema_name_t> opt_schema_name %\n    type<rollback_statement_t> rollback_statement %\n    type<opt_transaction_t> opt_transaction %\n    type<opt_to_savepoint_t> opt_to_savepoint %\n    type<begin_statement_t> begin_statement %\n    type<commit_statement_t> commit_statement %\n    type<upsert_clause_t> upsert_clause %\n    type<indexed_column_list_t> indexed_column_list %\n    type<indexed_column_t> indexed_column % type<opt_collate_t> opt_collate\n\n    % type<assign_list_t> assign_list % type<opt_null_t> opt_null %\n    type<assign_clause_t> assign_clause %\n    type<column_name_list_t> column_name_list %\n    type<collation_name_t> collation_name %\n    type<opt_upsert_clause_t> opt_upsert_clause\n    /*********************************\n     ** Destructor symbols\n     *********************************/\n    % destructor{}<fval><ival> /*<uval> <bval> */<program_t> % destructor {\n  free(($$));\n}\n<sval>\n    /*\n    %destructor {\n        cout << \"try to delete column_name_t\" << endl;\n        if($$ != NULL){\n            if($$->identifier1_) delete $$->identifier1_;\n            if($$->identifier2_) delete $$->identifier2_;\n        }\n        delete $$;\n    } column_name\n\n    %destructor{\n        cout << \"try to delete table_name_t\" << endl;\n        if($$ != NULL){\n            delete($$->table_name_);\n            delete($$->database_name_);\n        }\n        delete $$;\n    }  table_name\n\n\n    %destructor{\n        cout << \"duck here\" << endl;\n        if($$ != NULL){\n            delete($$->id_);\n        }\n        delete $$;\n    } <hint_t> <with_description_t> <prepare_statement_t> <execute_statement_t>\n    <column_def_t> <drop_statement_t> <update_clause_t> <function_expr_t>\n    <table_alias_t> <alias_t>\n\n    %destructor{\n        cout << \"duck me\" << endl;\n        if($$ != NULL){\n            for(auto &i: $$->v_expr_list_){\n                delete(i);\n            }\n            delete($$);\n        }\n    } <expr_list_t>\n    */\n    % destructor {\n  if ($$ != NULL) $$->deep_delete();\n}\n<*>\n\n    /******************************\n     ** Token Precedence and Associativity\n     ** Precedence: lowest to highest\n     ******************************/\n\n    % left OR\n\n    % left AND % right NOT %\n    nonassoc '=' EQUALS NOTEQUALS LIKE ILIKE GLOB MATCH REGEX %\n    nonassoc '<' '>' LESS GREATER LESSEQ GREATEREQ\n\n    % nonassoc NOTNULL % nonassoc ISNULL %\n    nonassoc IS /* sets precedence for IS NULL, etc */\n    % left '+' '-' % left '*' '/' '%' % left '^' %\n    left CONCAT\n\n    /* Unary Operators */\n    % right UMINUS % left '[' ']' % left '(' ')' % left '.' % right JOIN\n\n    % %\n    /*********************************\n     ** Section 3: Grammar Definition\n     *********************************/\n\n    // Defines our general input.\n    input : statement_list opt_semicolon {\n  $$ = NULL;\n  result->statement_list_ = $1;\n  result->opt_semicolon_ = $2;\n};\n\nstatement_list : statement {\n  $$ = new StatementList();\n  $$->v_statement_list_.push_back($1);\n}\n| statement_list ';' statement {\n  $1->v_statement_list_.push_back($3);\n  $$ = $1;\n};\n\nstatement : prepare_statement opt_hints {\n  $$ = new Statement();\n  $$->sub_type_ = CASE1;\n  $$->prepare_statement_ = $1;\n  $$->optional_hints_ = $2;\n}\n| preparable_statement opt_hints {\n  $$ = new Statement();\n  $$->sub_type_ = CASE0;\n  $$->preparable_statement_ = $1;\n  $$->optional_hints_ = $2;\n}\n| show_statement {\n  $$ = new Statement();\n  $$->sub_type_ = CASE2;\n  $$->show_statement_ = $1;\n}\n\n| cmd {\n  $$ = new Statement();\n  $$->sub_type_ = CASE3;\n  $$->cmd_ = $1;\n};\n\ncmd : cmd_pragma { $$ = $1; }\n| cmd_reindex { $$ = $1; }\n| cmd_analyze { $$ = $1; }\n| cmd_attach { $$ = $1; }\n| cmd_detach { $$ = $1; }\n| cmd_release { $$ = $1; }\n| rollback_statement { $$ = $1; }\n| vacuum_statement { $$ = $1; }\n| begin_statement { $$ = $1; }\n| commit_statement { $$ = $1; };\n\ncmd_release : RELEASE SAVEPOINT savepoint_name {\n  $$ = new CmdRelease();\n  $$->sub_type_ = CASE0;\n  $$->savepoint_name_ = $3;\n}\n| RELEASE savepoint_name {\n  $$ = new CmdRelease();\n  $$->sub_type_ = CASE1;\n  $$->savepoint_name_ = $2;\n};\n\nsavepoint_name : IDENTIFIER {\n  $$ = new SavepointName();\n  $$->id_ = new Identifier($1, id_savepoint_name);\n  free($1);\n};\n\ncmd_pragma : PRAGMA pragma_key {\n  $$ = new CmdPragma();\n  $$->sub_type_ = CASE0;\n  $$->pragma_key_ = $2;\n}\n| PRAGMA pragma_key '=' pragma_value {\n  $$ = new CmdPragma();\n  $$->sub_type_ = CASE1;\n  $$->pragma_key_ = $2;\n  $$->pragma_value_ = $4;\n}\n| PRAGMA pragma_key '(' pragma_value ')' {\n  $$ = new CmdPragma();\n  $$->sub_type_ = CASE2;\n  $$->pragma_key_ = $2;\n  $$->pragma_value_ = $4;\n};\n\ncmd_reindex : REINDEX {\n  $$ = new CmdReindex();\n  $$->sub_type_ = CASE0;\n}\n| REINDEX table_name {\n  $$ = new CmdReindex();\n  $$->sub_type_ = CASE1;\n  $$->table_name_ = $2;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n};\n\ncmd_analyze : ANALYZE {\n  $$ = new CmdAnalyze();\n  $$->sub_type_ = CASE0;\n}\n| ANALYZE table_name {\n  $$ = new CmdAnalyze();\n  $$->sub_type_ = CASE1;\n  $$->table_name_ = $2;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n};\n\ncmd_attach : ATTACH expr AS schema_name {\n  $$ = new CmdAttach();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n  $$->schema_name_ = $4;\n}\n| ATTACH DATABASE expr AS schema_name {\n  $$ = new CmdAttach();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $3;\n  $$->schema_name_ = $5;\n};\n\ncmd_detach : DETACH schema_name {\n  $$ = new CmdDetach();\n  $$->sub_type_ = CASE0;\n  $$->schema_name_ = $2;\n}\n| DETACH DATABASE schema_name {\n  $$ = new CmdDetach();\n  $$->sub_type_ = CASE1;\n  $$->schema_name_ = $3;\n};\n\npragma_key : pragma_name {\n  $$ = new PragmaKey();\n  $$->sub_type_ = CASE0;\n  $$->pragma_name_ = $1;\n}\n| schema_name '.' pragma_name {\n  $$ = new PragmaKey();\n  $$->sub_type_ = CASE1;\n  $$->schema_name_ = $1;\n  $$->pragma_name_ = $3;\n};\n\npragma_value : num_literal {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE0;\n  $$->num_literal_ = $1;\n}\n| string_literal {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE1;\n  $$->string_literal_ = $1;\n}\n| IDENTIFIER {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE2;\n  $$->id_ = new Identifier($1, id_pragma_value);\n  free($1);\n}\n| ON {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE2;\n  $$->id_ = new Identifier(\"ON\", id_pragma_value);\n}\n| DELETE {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE2;\n  $$->id_ = new Identifier(\"DELETE\", id_pragma_value);\n}\n| DEFAULT {\n  $$ = new PragmaValue();\n  $$->sub_type_ = CASE2;\n  $$->id_ = new Identifier(\"DEFAULT\", id_pragma_value);\n};\n\nschema_name : IDENTIFIER {\n  $$ = new SchemaName();\n  $$->id_ = new Identifier($1, id_schema_name);\n  free($1);\n};\n\npragma_name : IDENTIFIER {\n  $$ = new PragmaName();\n  $$->id_ = new Identifier($1, id_pragma_name);\n  free($1);\n};\n\npreparable_statement : select_statement { $$ = $1; }\n| import_statement { $$ = $1; }\n| create_statement { $$ = $1; }\n| insert_statement { $$ = $1; }\n| delete_statement { $$ = $1; }\n| truncate_statement { $$ = $1; }\n| update_statement { $$ = $1; }\n| drop_statement { $$ = $1; }\n| execute_statement { $$ = $1; }\n| alter_statement { $$ = $1; };\n\nrollback_statement :  // add z\n                      ROLLBACK opt_transaction opt_to_savepoint {\n  $$ = new RollbackStatement();\n  $$->opt_transaction_ = $2;\n  $$->opt_to_savepoint_ = $3;\n};\n\nopt_transaction :  // add z\n                   TRANSACTION {\n  $$ = new OptTransaction();\n  $$->sub_type_ = CASE0;\n  $$->str_val_ = string(\"TRANSACTION\");\n}\n| /* empty */ {\n  $$ = new OptTransaction();\n  $$->sub_type_ = CASE1;\n  $$->str_val_ = string(\"\");\n};\n\nopt_to_savepoint :  // add z\n                    TO savepoint_name {\n  $$ = new OptToSavepoint();\n  $$->sub_type_ = CASE0;\n  $$->savepoint_name_ = $2;\n}\n| TO SAVEPOINT savepoint_name {\n  $$ = new OptToSavepoint();\n  $$->sub_type_ = CASE1;\n  $$->savepoint_name_ = $3;\n}\n| /* empty */ {\n  $$ = new OptToSavepoint();\n  $$->sub_type_ = CASE2;\n};\n\nvacuum_statement :  // add z\n                    VACUUM opt_schema_name INTO file_path {\n  $$ = new VacuumStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_schema_name_ = $2;\n  $$->file_path_ = $4;\n}\n| VACUUM opt_schema_name {\n  $$ = new VacuumStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_schema_name_ = $2;\n};\n\nopt_schema_name :  // add z\n                   schema_name {\n  $$ = new OptSchemaName();\n  $$->sub_type_ = CASE0;\n  $$->schema_name_ = $1;\n}\n| /*empty*/ {\n  $$ = new OptSchemaName();\n  $$->sub_type_ = CASE1;\n};\n\nbegin_statement :  // add z\n                   BEGIN opt_transaction {\n  $$ = new BeginStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_transaction_ = $2;\n}\n| BEGIN DEFFERED opt_transaction {\n  $$ = new BeginStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_transaction_ = $3;\n}\n| BEGIN IMEDIATE opt_transaction {\n  $$ = new BeginStatement();\n  $$->sub_type_ = CASE2;\n  $$->opt_transaction_ = $3;\n}\n| BEGIN EXCLUSIVE opt_transaction {\n  $$ = new BeginStatement();\n  $$->sub_type_ = CASE3;\n  $$->opt_transaction_ = $3;\n};\n\ncommit_statement :  // add z\n                    COMMIT opt_transaction {\n  $$ = new CommitStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_transaction_ = $2;\n}\n| END opt_transaction {\n  $$ = new CommitStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_transaction_ = $2;\n};\n\nopt_upsert_clause : upsert_clause {\n  $$ = new OptUpsertClause();\n  $$->sub_type_ = CASE0;\n  $$->upsert_clause_ = $1;\n}\n| /* empty */ {\n  $$ = new OptUpsertClause();\n  $$->sub_type_ = CASE1;\n}\n\nupsert_clause : ON CONFLICT DO NOTHING {\n  $$ = new UpsertClause();\n  $$->sub_type_ = CASE0;\n}\n| ON CONFLICT DO UPDATE SET assign_list opt_where {\n  $$ = new UpsertClause();\n  $$->sub_type_ = CASE1;\n  $$->assign_list_ = $6;\n  $$->opt_where1_ = $7;\n}\n| ON CONFLICT '(' indexed_column_list ')' opt_where DO NOTHING {\n  $$ = new UpsertClause();\n  $$->sub_type_ = CASE2;\n  $$->indexed_column_list_ = $4;\n  $$->opt_where1_ = $6;\n}\n| ON CONFLICT '(' indexed_column_list ')' opt_where DO UPDATE SET assign_list\n        opt_where {\n  $$ = new UpsertClause();\n  $$->sub_type_ = CASE3;\n  $$->indexed_column_list_ = $4;\n  $$->opt_where1_ = $6;\n  $$->assign_list_ = $10;\n  $$->opt_where2_ = $11;\n}\n\n;\n\nindexed_column_list : indexed_column {\n  $$ = new IndexedColumnList();\n  $$->v_indexed_column_list_.push_back($1);\n}\n| indexed_column_list ',' indexed_column {\n  $1->v_indexed_column_list_.push_back($3);\n  $$ = $1;\n};\n\nindexed_column : expr opt_collate opt_order_type {\n  $$ = new IndexedColumn();\n  $$->expr_ = $1;\n  $$->opt_collate_ = $2;\n  $$->opt_order_type_ = $3;\n};\n\nopt_collate : COLLATE collation_name {\n  $$ = new OptCollate();\n  $$->sub_type_ = CASE0;\n  $$->collation_name_ = $2;\n}\n| /* empty */ {\n  $$ = new OptCollate();\n  $$->sub_type_ = CASE1;\n  $$->str_val_ = string(\"\");\n};\n\nassign_list : assign_clause {\n  $$ = new AssignList();\n  $$->v_assign_list_.push_back($1);\n}\n| assign_list ',' assign_clause {\n  $1->v_assign_list_.push_back($3);\n  $$ = $1;\n};\n\nopt_null : NULLS FIRST {\n  $$ = new OptNull();\n  $$->str_val_ = string(\"NULLS FIRST\");\n}\n| NULLS LAST {\n  $$ = new OptNull();\n  $$->str_val_ = string(\"NULLS LAST\");\n}\n| {\n  $$ = new OptNull();\n  $$->str_val_ = string(\"\");\n};\n\nassign_clause : column_name_list '=' expr {\n  $$ = new AssignClause();\n  $$->column_name_list_ = $1;\n  $$->expr_ = $3;\n};\n\ncolumn_name_list : column_name {\n  $$ = new ColumnNameList();\n  $$->v_column_name_list_.push_back($1);\n}\n| column_name_list ',' column_name {\n  $1->v_column_name_list_.push_back($3);\n  $$ = $1;\n};\n\ncollation_name : IDENTIFIER {\n  $$ = new CollationName();\n  $$->id_ = new Identifier($1, id_collation_name);\n  free($1);\n};\n\n/******************************\n * Hints\n ******************************/\n\nopt_hints : WITH HINT '(' hint_list ')' {\n  $$ = new OptionalHints();\n  $$->sub_type_ = CASE0;\n  $$->hint_list_ = $4;\n}\n| /* empty */ {\n  $$ = new OptionalHints();\n  $$->sub_type_ = CASE1;\n};\n\nhint_list : hint {\n  $$ = new HintList();\n  $$->v_hint_list_.push_back($1);\n}\n| hint_list ',' hint {\n  $1->v_hint_list_.push_back($3);\n  $$ = $1;\n};\n\nhint : IDENTIFIER {\n  $$ = new Hint();\n  $$->sub_type_ = CASE1;\n  $$->id_ = new Identifier($1);\n  free($1);\n}\n| IDENTIFIER '(' literal_list ')' {\n  $$ = new Hint();\n  $$->sub_type_ = CASE0;\n  $$->id_ = new Identifier($1);\n  $$->literal_list_ = $3;\n  free($1);\n};\n\n/******************************\n * Prepared Statement\n ******************************/\nprepare_statement : PREPARE IDENTIFIER FROM prepare_target_query {\n  $$ = new PrepareStatement();\n  $$->id_ = new Identifier($2);\n  $$->prep_target_que_ = $4;\n  free($2);\n};\n\nprepare_target_query : STRING {\n  $$ = new PrepareTargetQuery();\n  $$->prep_target_que_ = \"'\" + string($1) + \"'\";\n  free($1);\n};\n\nexecute_statement : EXECUTE IDENTIFIER {\n  $$ = new ExecuteStatement();\n  $$->sub_type_ = CASE0;\n  $$->id_ = new Identifier($2);\n  free($2);\n}\n| EXECUTE IDENTIFIER '(' opt_literal_list ')' {\n  $$ = new ExecuteStatement();\n  $$->sub_type_ = CASE1;\n  $$->id_ = new Identifier($2);\n  $$->opt_literal_list_ = $4;\n  free($2);\n};\n\n/******************************\n * Import Statement\n ******************************/\nimport_statement : IMPORT FROM import_file_type FILE file_path INTO table_name {\n  $$ = new ImportStatement();\n  $$->import_file_type_ = $3;\n  $$->file_path_ = $5;\n  $$->table_name_ = $7;\n};\n\nimport_file_type : CSV {\n  $$ = new ImportFileType();\n  $$->str_val_ = \"CSV\";\n};\n\nfile_path : string_literal {\n  $$ = new FilePath();\n  $$->str_val_ = $1->str_val_;\n  delete ($1);\n};\n\n/******************************\n * Show Statement\n * SHOW TABLES;\n ******************************/\n\nshow_statement : SHOW TABLES {\n  $$ = new ShowStatement();\n  $$->sub_type_ = CASE0;\n}\n| SHOW COLUMNS table_name {\n  $$ = new ShowStatement();\n  $$->sub_type_ = CASE1;\n  $$->table_name_ = $3;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n}\n| DESCRIBE table_name {\n  $$ = new ShowStatement();\n  $$->sub_type_ = CASE2;\n  $$->table_name_ = $2;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n};\n\n/*****************************\n * Alter statement\n * ALTER TABLE a RENAME TO b;\n * ALTER TABLE a ADD COLUMN c(name INT);\n *****************************/\nalter_statement : ALTER TABLE table_name RENAME TO table_name {\n  $$ = new AlterStatement();\n  $$->sub_type_ = CASE0;\n  $$->table_name1_ = $3;\n  $$->table_name2_ = $6;\n}\n| ALTER TABLE table_name RENAME opt_column column_name TO column_name {\n  $$ = new AlterStatement();\n  $$->sub_type_ = CASE1;\n  $$->table_name1_ = $3;\n  $$->opt_column_ = $5;\n  $$->column_name1_ = $6;\n  $$->column_name2_ = $8;\n}\n| ALTER TABLE table_name ADD opt_column column_def {\n  $$ = new AlterStatement();\n  $$->sub_type_ = CASE2;\n  $$->table_name1_ = $3;\n  $$->opt_column_ = $5;\n  $$->column_def_ = $6;\n};\n\nopt_column : COLUMN {\n  $$ = new OptColumn();\n  $$->sub_type_ = CASE0;\n  $$->str_val_ = string(\"COLUMN\");\n}\n| /* empty */ {\n  $$ = new OptColumn();\n  $$->sub_type_ = CASE1;\n  $$->str_val_ = string(\"\");\n};\n\n/******************************\n * Create Statement\n * CREATE TABLE students (name TEXT, student_number INTEGER, city TEXT, grade\n *DOUBLE) CREATE TABLE students FROM TBL FILE 'test/students.tbl'\n ******************************/\ncreate_statement\n    : CREATE TABLE opt_not_exists table_name FROM TBL FILE file_path {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_not_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->file_path_ = $8;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n}\n| CREATE TABLE opt_not_exists table_name '(' column_def_commalist ')' {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_not_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->column_def_comma_list_ = $6;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n}\n| CREATE TABLE opt_not_exists table_name AS select_statement {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE2;\n  $$->opt_not_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->select_statement_ = $6;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n}\n| CREATE VIEW opt_not_exists table_name opt_column_list AS select_statement {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE3;\n  $$->opt_not_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n  $$->opt_column_list_ = $5;\n  if ($$->opt_column_list_->sub_type_ == CASE0)\n    for (auto& i :\n         $$->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n      i->id_type_ = id_create_column_name;\n    }\n  $$->select_statement_ = $7;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n}\n// add 2\n| CREATE opt_unique INDEX opt_not_exists index_name ON\n        table_name '(' ident_commalist ')' opt_where {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE4;\n  $$->opt_unique_ = $2;\n  $$->opt_not_exists_ = $4;\n  $$->index_name_ = $5;\n  $$->table_name_ = $7;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->ident_commalist_ = $9;\n  for (auto& i : $$->ident_commalist_->v_iden_comma_list_) {\n    i->id_type_ = id_column_name;\n  }\n  $$->opt_where_ = $11;\n}\n| CREATE VIRTUAL TABLE opt_not_exists table_name USING module_name {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE5;\n  $$->opt_not_exists_ = $4;\n  $$->table_name_ = $5;\n  $$->module_name_ = $7;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n}\n| CREATE VIRTUAL TABLE opt_not_exists table_name USING\n        module_name '(' column_def_commalist ')' {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE6;\n  $$->opt_not_exists_ = $4;\n  $$->table_name_ = $5;\n  $$->module_name_ = $7;\n  $$->table_name_->table_name_->id_type_ = id_create_table_name;\n  $$->column_def_comma_list_ = $9;\n}\n| CREATE trigger_declare BEGIN trigger_cmd_list END {\n  $$ = new CreateStatement();\n  $$->sub_type_ = CASE7;\n  $$->trigger_declare_ = $2;\n  $$->trigger_cmd_list_ = $4;\n};\n\nopt_unique : UNIQUE {\n  $$ = new OptUnique();\n  $$->str_val_ = string(\"UNIQUE\");\n}\n| /* empty */ {\n  $$ = new OptUnique();\n  $$->str_val_ = string(\"\");\n};\n\nindex_name : IDENTIFIER {\n  $$ = new IndexName();\n  $$->id_ = new Identifier($1, id_index_name);\n  free($1);\n};\n\ntrigger_declare : opt_tmp TRIGGER opt_not_exists trigger_name opt_trigger_time\n                      trigger_event ON table_name opt_for_each opt_when {\n  $$ = new TriggerDeclare();\n  $$->opt_tmp_ = $1;\n  $$->opt_not_exists_ = $3;\n  $$->trigger_name_ = $4;\n  $$->opt_trigger_time_ = $5;\n  $$->trigger_event_ = $6;\n  $$->table_name_ = $8;\n  $$->opt_for_each_ = $9;\n  $$->opt_when_ = $10;\n};\n\nopt_tmp : TEMP {\n  $$ = new OptTmp();\n  $$->str_val_ = string(\"TEMP\");\n}\n| /* empty */ {\n  $$ = new OptTmp();\n  $$->str_val_ = string(\"\");\n};\n\ntrigger_name : IDENTIFIER {\n  $$ = new TriggerName();\n  $$->id_ = new Identifier($1, id_trigger_name);\n  free($1);\n};\n\nopt_trigger_time : BEFORE {\n  $$ = new OptTriggerTime();\n  $$->str_val_ = string(\"BEFORE\");\n}\n| AFTER {\n  $$ = new OptTriggerTime();\n  $$->str_val_ = string(\"AFTER\");\n}\n| INSTEAD OF {\n  $$ = new OptTriggerTime();\n  $$->str_val_ = string(\"INSTEAD OF\");\n}\n| /* empty */ {\n  $$ = new OptTriggerTime();\n  $$->str_val_ = string(\"\");\n};\n\ntrigger_event : DELETE {\n  $$ = new TriggerEvent();\n  $$->sub_type_ = CASE0;\n}\n| INSERT {\n  $$ = new TriggerEvent();\n  $$->sub_type_ = CASE1;\n}\n| UPDATE opt_of_column_list {\n  $$ = new TriggerEvent();\n  $$->sub_type_ = CASE2;\n  $$->opt_of_column_list_ = $2;\n};\n\nopt_of_column_list : OF ident_commalist {\n  $$ = new OptOfColumnList();\n  $$->sub_type_ = CASE0;\n  $$->ident_commalist_ = $2;\n}\n| /* empty */ {\n  $$ = new OptOfColumnList();\n  $$->sub_type_ = CASE1;\n};\n\nopt_for_each : FOR EACH ROW {\n  $$ = new OptForEach();\n  $$->str_val_ = string(\"FOR EACH ROW\");\n}\n| /* empty */ {\n  $$ = new OptForEach();\n  $$->str_val_ = string(\"\");\n};\n\nopt_when : WHEN expr {\n  $$ = new OptWhen();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n}\n| /* empty */ {\n  $$ = new OptWhen();\n  $$->sub_type_ = CASE1;\n};\n\ntrigger_cmd_list : trigger_cmd ';' {\n  $$ = new TriggerCmdList();\n  $$->v_trigger_cmd_list_.push_back($1);\n}\n| trigger_cmd_list trigger_cmd ';' {\n  $1->v_trigger_cmd_list_.push_back($2);\n  $$ = $1;\n};\n\ntrigger_cmd : select_statement {\n  $$ = new TriggerCmd();\n  $$->stmt_ = $1;\n}\n| update_statement {\n  $$ = new TriggerCmd();\n  $$->stmt_ = $1;\n}\n| insert_statement {\n  $$ = new TriggerCmd();\n  $$->stmt_ = $1;\n}\n| delete_statement {\n  $$ = new TriggerCmd();\n  $$->stmt_ = $1;\n};\n\nmodule_name : IDENTIFIER {\n  $$ = new ModuleName();\n  $$->id_ = new Identifier($1);\n  free($1);\n};\n\nopt_not_exists : IF NOT EXISTS {\n  $$ = new OptNotExists();\n  $$->sub_type_ = CASE0;\n}\n| /* empty */ {\n  $$ = new OptNotExists();\n  $$->sub_type_ = CASE1;\n};\n\ncolumn_def_commalist : column_def {\n  $$ = new ColumnDefCommaList();\n  $$->v_column_def_comma_list_.push_back($1);\n}\n| column_def_commalist ',' column_def {\n  $1->v_column_def_comma_list_.push_back($3);\n  $$ = $1;\n};\n\ncolumn_def : IDENTIFIER column_type opt_column_arglist {\n  $$ = new ColumnDef();\n  $$->id_ = new Identifier($1, id_create_column_name);\n  $$->column_type_ = $2;\n  $$->opt_column_arglist_ = $3;\n  free($1);\n};\n\nopt_column_arglist : column_arglist {\n  $$ = new OptColumnArglist();\n  $$->sub_type_ = CASE0;\n  $$->column_arglist_ = $1;\n}\n| /* empty */ {\n  $$ = new OptColumnArglist();\n  $$->sub_type_ = CASE1;\n};\n\ncolumn_arglist : column_arglist column_arg {\n  $1->v_column_arg_.push_back($2);\n  $$ = $1;\n}\n| column_arg {\n  $$ = new ColumnArglist();\n  $$->v_column_arg_.push_back($1);\n};\n\ncolumn_arg : NULL opt_on_conflict {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE0;\n  $$->opt_on_conflict_ = $2;\n}\n| NOT NULL opt_on_conflict {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE1;\n  $$->opt_on_conflict_ = $3;\n}\n| PRIMARY KEY opt_order_type opt_on_conflict opt_autoinc {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE2;\n  $$->opt_order_type_ = $3;\n  $$->opt_on_conflict_ = $4;\n  $$->opt_autoinc_ = $5;\n}\n| UNIQUE opt_on_conflict {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE3;\n  $$->opt_on_conflict_ = $2;\n}\n| GENERATED ALWAYS AS '(' expr ')' {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE4;\n  $$->expr_ = $5;\n}\n| AS '(' expr ')' {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE5;\n  $$->expr_ = $3;\n}\n| CHECK '(' expr ')' {\n  $$ = new ColumnArg();\n  $$->sub_type_ = CASE6;\n  $$->expr_ = $3;\n};\n\nopt_on_conflict : ON CONFLICT resolve_type {\n  $$ = new OptOnConflict();\n  $$->sub_type_ = CASE0;\n  $$->resolve_type_ = $3;\n}\n| /* empty */ {\n  $$ = new OptOnConflict();\n  $$->sub_type_ = CASE1;\n};\n\nresolve_type : IGNORE {\n  $$ = new ResolveType();\n  $$->str_val_ = string(\"IGNORE\");\n}\n| REPLACE {\n  $$ = new ResolveType();\n  $$->str_val_ = string(\"REPLACE\");\n}\n| ROLLBACK {\n  $$ = new ResolveType();\n  $$->str_val_ = string(\"ROLLBACK\");\n}\n| ABORT {\n  $$ = new ResolveType();\n  $$->str_val_ = string(\"ABORT\");\n}\n| FAIL {\n  $$ = new ResolveType();\n  $$->str_val_ = string(\"FAIL\");\n};\n\nopt_autoinc : AUTOINCR {\n  $$ = new OptAutoinc();\n  $$->str_val_ = string(\"AUTOINCR\");\n}\n| /* empty */ {\n  $$ = new OptAutoinc();\n  $$->str_val_ = string(\"\");\n};\n\ncolumn_type : INT {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"INT\");\n}\n| INTEGER {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"INTEGER\");\n}\n| LONG {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"LONG\");\n}\n| FLOAT {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"FLOAT\");\n}\n| DOUBLE {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"DOUBLE\");\n}\n| VARCHAR '(' INTVAL ')' {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"VARCHAR(\") + to_string($3) + \")\";\n}\n| CHAR '(' INTVAL ')' {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"CHAR(\") + to_string($3) + \")\";\n}\n| TEXT {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"TEXT\");\n}\n| /* empty*/ {\n  $$ = new ColumnType();\n  $$->str_val_ = string(\"\");\n};\n\n/******************************\n * Drop Statement\n * DROP TABLE students;\n * DEALLOCATE PREPARE stmt;\n ******************************/\n\ndrop_statement : DROP TABLE opt_exists table_name {\n  $$ = new DropStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->id_ = NULL;\n}\n| DROP VIEW opt_exists table_name {\n  $$ = new DropStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_exists_ = $3;\n  $$->table_name_ = $4;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->id_ = NULL;\n}\n| DEALLOCATE PREPARE IDENTIFIER {\n  $$ = new DropStatement();\n  $$->sub_type_ = CASE2;\n  $$->id_ = new Identifier($3);\n  free($3);\n}\n| DROP TRIGGER opt_exists schema_name '.' trigger_name {\n  $$ = new DropStatement();\n  $$->sub_type_ = CASE3;\n  $$->opt_exists_ = $3;\n  $$->schema_name_ = $4;\n  $$->trigger_name_ = $6;\n}\n\n| DROP TRIGGER opt_exists trigger_name {\n  $$ = new DropStatement();\n  $$->sub_type_ = CASE4;\n  $$->opt_exists_ = $3;\n  $$->trigger_name_ = $4;\n};\n\nopt_exists : IF EXISTS {\n  $$ = new OptExists();\n  $$->str_val_ = string(\"IF EXISTS\");\n}\n| /* empty */ {\n  $$ = new OptExists();\n  $$->str_val_ = string(\"\");\n};\n\n/******************************\n * Delete Statement / Truncate statement\n * DELETE FROM students WHERE grade > 3.0\n * DELETE FROM students <=> TRUNCATE students\n ******************************/\ndelete_statement : DELETE FROM table_name opt_where {\n  $$ = new DeleteStatement();\n  $$->sub_type_ = CASE0;\n  $$->table_name_ = $3;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->opt_where_ = $4;\n};\n\ntruncate_statement : TRUNCATE table_name {\n  $$ = new DeleteStatement();\n  $$->sub_type_ = CASE1;\n  $$->table_name_ = $2;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n};\n\n/******************************\n * Insert Statement\n * INSERT INTO students VALUES ('Max', 1112233, 'Musterhausen', 2.3)\n * INSERT INTO employees SELECT * FROM stundents\n ******************************/\ninsert_statement : insert_type INTO table_name opt_column_list VALUES super_list\n                       opt_upsert_clause {\n  $$ = new InsertStatement();\n  $$->sub_type_ = CASE0;\n  $$->insert_type_ = $1;\n  $$->table_name_ = $3;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->opt_column_list_ = $4;\n  $$->super_list_ = $6;\n  $$->opt_upsert_clause_ = $7;\n  if ($$->opt_column_list_->sub_type_ == CASE0) {\n    for (auto& cname :\n         $$->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n      cname->id_type_ = id_column_name;\n    }\n  }\n}\n| insert_type INTO table_name opt_column_list select_no_paren\n        opt_upsert_clause {\n  $$ = new InsertStatement();\n  $$->sub_type_ = CASE1;\n  $$->insert_type_ = $1;\n  $$->table_name_ = $3;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n  $$->opt_column_list_ = $4;\n  $$->select_no_paren_ = $5;\n  $$->opt_upsert_clause_ = $6;\n  if ($$->opt_column_list_->sub_type_ == CASE0) {\n    for (auto& cname :\n         $$->opt_column_list_->ident_comma_list_->v_iden_comma_list_) {\n      cname->id_type_ = id_column_name;\n    }\n  }\n};\n\nsuper_list : '(' literal_list ')' {\n  $$ = new SuperList();\n  $$->v_super_list_.push_back($2);\n}\n| super_list ',' '(' literal_list ')' {\n  $1->v_super_list_.push_back($4);\n  $$ = $1;\n};\n\ninsert_type : INSERT {\n  $$ = new InsertType();\n  $$->sub_type_ = CASE0;\n  $$->str_val_ = string(\"INSERT\");\n}\n| REPLACE {\n  $$ = new InsertType();\n  $$->sub_type_ = CASE1;\n  $$->str_val_ = string(\"REPLACE\");\n}\n| INSERT OR resolve_type {\n  $$ = new InsertType();\n  $$->sub_type_ = CASE2;\n  $$->resolve_type_ = $3;\n};\n\nopt_column_list : '(' ident_commalist ')' {\n  $$ = new OptColumnList();\n  $$->sub_type_ = CASE0;\n  $$->ident_comma_list_ = $2;\n}\n| /* empty */ {\n  $$ = new OptColumnList();\n  $$->sub_type_ = CASE1;\n};\n\n/******************************\n * Update Statement\n * UPDATE students SET grade = 1.3, name='Felix Fürstenberg' WHERE name = 'Max\n *Mustermann';\n ******************************/\n\nupdate_statement\n    : UPDATE table_ref_name_no_alias SET update_clause_commalist opt_where {\n  $$ = new UpdateStatement();\n  $$->table_ref_name_no_alias_ =\n      $2;  // had set id_top_table_name in table_ref_name_no_alias\n  $$->update_clause_comma_list_ = $4;\n  $$->opt_where_ = $5;\n};\n\nupdate_clause_commalist : update_clause {\n  $$ = new UpdateClauseCommalist();\n  $$->v_update_clause_list_.push_back($1);\n}\n| update_clause_commalist ',' update_clause {\n  $1->v_update_clause_list_.push_back($3);\n  $$ = $1;\n};\n\nupdate_clause : IDENTIFIER '=' expr {\n  $$ = new UpdateClause();\n  $$->id_ = new Identifier($1, id_column_name);\n  $$->expr_ = $3;\n  free($1);\n};\n\n/******************************\n * Select Statement\n * SELECT a TABLE table1 WHERE c = 1\n ******************************/\n\nselect_statement : opt_with_clause select_with_paren {\n  $$ = new SelectStatement();\n  $$->sub_type_ = CASE0;\n  $$->opt_with_clause_ = $1;\n  $$->select_with_paren_ = $2;\n}\n| opt_with_clause select_no_paren {\n  $$ = new SelectStatement();\n  $$->sub_type_ = CASE1;\n  $$->opt_with_clause_ = $1;\n  $$->select_no_paren_ = $2;\n}\n| opt_with_clause select_with_paren set_operator select_paren_or_clause\n        opt_order opt_limit {\n  $$ = new SelectStatement();\n  $$->sub_type_ = CASE2;\n  $$->opt_with_clause_ = $1;\n  $$->select_with_paren_ = $2;\n  $$->set_operator_ = $3;\n  $$->select_paren_or_clause_ = $4;\n  $$->opt_order_ = $5;\n  $$->opt_limit_ = $6;\n};\n\nselect_with_paren : '(' select_no_paren ')' {\n  $$ = new SelectWithParen();\n  $$->sub_type_ = CASE0;\n  $$->select_no_paren_ = $2;\n}\n| '(' select_with_paren ')' {\n  $$ = new SelectWithParen();\n  $$->sub_type_ = CASE1;\n  $$->select_with_paren_ = $2;\n};\n\nselect_paren_or_clause : select_with_paren {\n  $$ = new SelectParenOrClause();\n  $$->sub_type_ = CASE0;\n  $$->select_with_paren_ = $1;\n}\n| select_clause {\n  $$ = new SelectParenOrClause();\n  $$->sub_type_ = CASE1;\n  $$->select_clause_ = $1;\n};\n\nselect_no_paren : select_clause opt_order opt_limit {\n  $$ = new SelectNoParen();\n  $$->sub_type_ = CASE0;\n  $$->select_clause_ = $1;\n  $$->opt_order_ = $2;\n  $$->opt_limit_ = $3;\n}\n| select_clause set_operator select_paren_or_clause opt_order opt_limit {\n  $$ = new SelectNoParen();\n  $$->sub_type_ = CASE1;\n  $$->select_clause_ = $1;\n  $$->set_operator_ = $2;\n  $$->select_paren_or_clause_ = $3;\n  $$->opt_order_ = $4;\n  $$->opt_limit_ = $5;\n};\n\nset_operator : set_type opt_all {\n  $$ = new SetOperator();\n  $$->set_type_ = $1;\n  $$->opt_all_ = $2;\n};\n\nset_type : UNION {\n  $$ = new SetType();\n  $$->str_val_ = string(\"UNION\");\n}\n| INTERSECT {\n  $$ = new SetType();\n  $$->str_val_ = string(\"INTERSECT\");\n}\n| EXCEPT {\n  $$ = new SetType();\n  $$->str_val_ = string(\"EXCEPT\");\n};\n\nopt_all : ALL {\n  $$ = new OptAll();\n  $$->str_val_ = string(\"ALL\");\n}\n| /* empty */ {\n  $$ = new OptAll();\n  $$->str_val_ = string(\"\");\n};\n\nselect_clause : SELECT opt_top opt_distinct select_list opt_from_clause\n                    opt_where opt_group {\n  $$ = new SelectClause();\n  $$->sub_type_ = CASE0;\n  $$->opt_top_ = $2;\n  $$->opt_distinct_ = $3;\n  $$->select_list_ = $4;\n  $$->opt_from_clause_ = $5;\n  $$->opt_where_ = $6;\n  $$->opt_group_ = $7;\n}\n\n| SELECT opt_top opt_distinct select_list opt_from_clause opt_where opt_group\n        window_clause {\n  $$ = new SelectClause();\n  $$->sub_type_ = CASE1;\n  $$->opt_top_ = $2;\n  $$->opt_distinct_ = $3;\n  $$->select_list_ = $4;\n  $$->opt_from_clause_ = $5;\n  $$->opt_where_ = $6;\n  $$->opt_group_ = $7;\n  $$->window_clause_ = $8;\n};\n\nwindow_clause : WINDOW windowdefn_list {\n  $$ = new WindowClause();\n  $$->windowdefn_list_ = $2;\n};\n\nwindowdefn_list : windowdefn {\n  $$ = new WindowDefnList();\n  $$->v_windowdefn_list_.push_back($1);\n}\n| windowdefn_list ',' windowdefn {\n  $1->v_windowdefn_list_.push_back($3);\n  $$ = $1;\n};\n\nwindowdefn : IDENTIFIER AS '(' window ')' {\n  $$ = new WindowDefn();\n  $$->id_ = new Identifier($1);\n  $$->window_ = $4;\n  free($1);\n};\n\nwindow : opt_base_window_name PARTITION BY expr_list opt_order opt_frame {\n  $$ = new Window();\n  $$->sub_type_ = CASE0;\n  $$->opt_base_window_name_ = $1;\n  $$->expr_list_ = $4;\n  $$->opt_order_ = $5;\n  $$->opt_frame_ = $6;\n}\n| opt_base_window_name opt_order opt_frame {\n  $$ = new Window();\n  $$->sub_type_ = CASE1;\n  $$->opt_base_window_name_ = $1;\n  $$->opt_order_ = $2;\n  $$->opt_frame_ = $3;\n};\n\nopt_base_window_name : IDENTIFIER {\n  $$ = new OptBaseWindowName();\n  $$->sub_type_ = CASE0;\n  $$->id_ = new Identifier($1);\n  free($1);\n}\n| /* empty */ {\n  $$ = new OptBaseWindowName();\n  $$->sub_type_ = CASE1;\n};\n\nopt_frame : range_or_rows frame_bound_s opt_frame_exclude {\n  $$ = new OptFrame();\n  $$->sub_type_ = CASE0;\n  $$->range_or_rows_ = $1;\n  $$->frame_bound_s_ = $2;\n  $$->opt_frame_exclude_ = $3;\n}\n| range_or_rows BETWEEN frame_bound_s AND frame_bound_e opt_frame_exclude {\n  $$ = new OptFrame();\n  $$->sub_type_ = CASE1;\n  $$->range_or_rows_ = $1;\n  $$->frame_bound_s_ = $3;\n  $$->frame_bound_e_ = $5;\n  $$->opt_frame_exclude_ = $6;\n}\n| /* empty */ {\n  $$ = new OptFrame();\n  $$->sub_type_ = CASE2;\n};\n\nrange_or_rows : RANGE {\n  $$ = new RangeOrRows();\n  $$->str_val_ = string(\"RANGE\");\n}\n| ROWS {\n  $$ = new RangeOrRows();\n  $$->str_val_ = string(\"ROWS\");\n}\n| GROUPS {\n  $$ = new RangeOrRows();\n  $$->str_val_ = string(\"GROUPS\");\n};\n\nframe_bound_s : frame_bound {\n  $$ = new FrameBoundS();\n  $$->sub_type_ = CASE0;\n  $$->frame_bound_ = $1;\n}\n| UNBOUNDED PRECEDING {\n  $$ = new FrameBoundS();\n  $$->sub_type_ = CASE1;\n};\n\nframe_bound_e : frame_bound {\n  $$ = new FrameBoundE();\n  $$->sub_type_ = CASE0;\n  $$->frame_bound_ = $1;\n}\n| UNBOUNDED FOLLOWING {\n  $$ = new FrameBoundE();\n  $$->sub_type_ = CASE1;\n};\n\nframe_bound : expr PRECEDING {\n  $$ = new FrameBound();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $1;\n}\n| expr FOLLOWING {\n  $$ = new FrameBound();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| CURRENT ROW {\n  $$ = new FrameBound();\n  $$->sub_type_ = CASE2;\n};\n\nopt_frame_exclude : EXCLUDE frame_exclude {\n  $$ = new OptFrameExclude();\n  $$->sub_type_ = CASE0;\n  $$->frame_exclude_ = $2;\n}\n| /* empty */ {\n  $$ = new OptFrameExclude();\n  $$->sub_type_ = CASE1;\n};\n\nframe_exclude : NO OTHERS {\n  $$ = new FrameExclude();\n  $$->str_val_ = string(\"NO OTHERS\");\n}\n| CURRENT ROW {\n  $$ = new FrameExclude();\n  $$->str_val_ = string(\"CURRENT ROW\");\n}\n| GROUP {\n  $$ = new FrameExclude();\n  $$->str_val_ = string(\"GROUP\");\n}\n| TIES {\n  $$ = new FrameExclude();\n  $$->str_val_ = string(\"TIES\");\n};\n\nopt_distinct : DISTINCT {\n  $$ = new OptDistinct();\n  $$->str_val_ = string(\"DISTINCT\");\n}\n| /* empty */ {\n  $$ = new OptDistinct();\n  $$->str_val_ = string(\"\");\n};\n\nselect_list : expr_list {\n  $$ = new SelectList();\n  $$->expr_list_ = $1;\n};\n\nopt_from_clause : from_clause {\n  $$ = new OptFromClause();\n  $$->sub_type_ = CASE0;\n  $$->from_clause_ = $1;\n}\n| /* empty */ {\n  $$ = new OptFromClause();\n  $$->sub_type_ = CASE1;\n};\n\nfrom_clause : FROM table_ref {\n  $$ = new FromClause();\n  $$->table_ref_ = $2;\n};\n\nopt_where : WHERE expr {\n  $$ = new OptWhere();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n}\n| /* empty */ {\n  $$ = new OptWhere();\n  $$->sub_type_ = CASE1;\n};\n\nopt_group : GROUP BY expr_list opt_having {\n  $$ = new OptGroup();\n  $$->sub_type_ = CASE0;\n  $$->expr_list_ = $3;\n  $$->opt_having_ = $4;\n}\n| /* empty */ {\n  $$ = new OptGroup();\n  $$->sub_type_ = CASE1;\n};\n\nopt_having : HAVING expr {\n  $$ = new OptHaving();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n}\n| /* empty */ {\n  $$ = new OptHaving();\n  $$->sub_type_ = CASE1;\n};\n\nopt_order : ORDER BY order_list {\n  $$ = new OptOrder();\n  $$->sub_type_ = CASE0;\n  $$->order_list_ = $3;\n}\n| /* empty */ {\n  $$ = new OptOrder();\n  $$->sub_type_ = CASE1;\n};\n\norder_list : order_desc {\n  $$ = new OrderList();\n  $$->v_order_desc_.push_back($1);\n}\n| order_list ',' order_desc {\n  $1->v_order_desc_.push_back($3);\n  $$ = $1;\n};\n\norder_desc : expr opt_order_type opt_null {\n  $$ = new OrderDesc();\n  $$->expr_ = $1;\n  $$->opt_order_type_ = $2;\n  $$->opt_null_ = $3;\n};\n\nopt_order_type : ASC {\n  $$ = new OptOrderType();\n  $$->str_val_ = string(\"ASC\");\n}\n| DESC {\n  $$ = new OptOrderType();\n  $$->str_val_ = string(\"DESC\");\n}\n| /* empty */ {\n  $$ = new OptOrderType();\n  $$->str_val_ = string(\"\");\n};\n\nopt_top : TOP int_literal {\n  $$ = new OptTop();\n  $$->sub_type_ = CASE0;\n  $$->int_literal_ = $2;\n}\n| /* empty */ {\n  $$ = new OptTop();\n  $$->sub_type_ = CASE1;\n};\n\nopt_limit : LIMIT expr {\n  $$ = new OptLimit();\n  $$->sub_type_ = CASE0;\n  $$->expr1_ = $2;\n}\n| OFFSET expr {\n  $$ = new OptLimit();\n  $$->sub_type_ = CASE1;\n  $$->expr1_ = $2;\n}\n| LIMIT expr OFFSET expr {\n  $$ = new OptLimit();\n  $$->sub_type_ = CASE2;\n  $$->expr1_ = $2;\n  $$->expr2_ = $4;\n}\n| LIMIT ALL {\n  $$ = new OptLimit();\n  $$->sub_type_ = CASE3;\n}\n| LIMIT ALL OFFSET expr {\n  $$ = new OptLimit();\n  $$->sub_type_ = CASE4;\n  $$->expr1_ = $4;\n}\n| /* empty */ { $$ = nullptr; };\n\n/******************************\n * Expressions\n ******************************/\nexpr_list : expr_alias {\n  $$ = new ExprList();\n  $$->v_expr_list_.push_back($1);\n}\n| expr_list ',' expr_alias {\n  $1->v_expr_list_.push_back($3);\n  $$ = $1;\n};\n\nopt_literal_list : literal_list {\n  $$ = new OptLiteralList();\n  $$->sub_type_ = CASE0;\n  $$->literal_list_ = $1;\n}\n| /* empty */ {\n  $$ = new OptLiteralList();\n  $$->sub_type_ = CASE1;\n};\n\nliteral_list : literal {\n  $$ = new LiteralList();\n  $$->v_literal_list_.push_back($1);\n}\n| literal_list ',' literal {\n  $1->v_literal_list_.push_back($3);\n  $$ = $1;\n};\n\nexpr_alias : expr opt_alias {\n  $$ = new ExprAlias();\n  $$->expr_ = $1;\n  $$->opt_alias_ = $2;\n};\n\nexpr : operand { $$ = $1; }\n| between_expr { $$ = $1; }\n| logic_expr { $$ = $1; }\n| exists_expr { $$ = $1; }\n| in_expr { $$ = $1; }\n| cast_expr { $$ = $1; };\n\noperand : '(' expr ')' {\n  $$ = new Operand();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n}\n| array_index {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| scalar_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| unary_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| binary_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| case_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| function_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| extract_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| array_expr {\n  $$ = new Operand();\n  $$->sub_type_ = CASE1;\n  $$->expr_ = $1;\n}\n| '(' select_no_paren ')' {\n  $$ = new Operand();\n  $$->sub_type_ = CASE2;\n  $$->select_no_paren_ = $2;\n};\n\ncast_expr : CAST '(' expr AS column_type ')' {\n  $$ = new CastExpr();\n  $$->expr_ = $3;\n  $$->column_type_ = $5;\n};\n\nscalar_expr : column_name {\n  $$ = new ScalarExpr();\n  $$->sub_type_ = CASE0;\n  $$->column_name_ = $1;\n}\n| literal {\n  $$ = new ScalarExpr();\n  $$->sub_type_ = CASE1;\n  $$->literal_ = $1;\n};\n\nunary_expr : '-' operand {\n  $$ = new UnaryExpr();\n  $$->sub_type_ = CASE0;\n  $$->operand_ = $2;\n  $$->operator_ = string(\"-\");\n}\n| NOT operand {\n  $$ = new UnaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand_ = $2;\n  $$->operator_ = string(\"NOT\");\n}\n| operand ISNULL {\n  $$ = new UnaryExpr();\n  $$->sub_type_ = CASE2;\n  $$->operand_ = $1;\n  $$->operator_ = string(\"ISNULL\");\n}\n| operand IS NULL {\n  $$ = new UnaryExpr();\n  $$->sub_type_ = CASE3;\n  $$->operand_ = $1;\n  $$->operator_ = string(\"IS NULL\");\n}\n| operand IS NOT NULL {\n  $$ = new UnaryExpr();\n  $$->sub_type_ = CASE4;\n  $$->operand_ = $1;\n  $$->operator_ = string(\"IS NOT NULL\");\n};\n\nbinary_expr : comp_expr {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE0;\n  $$->comp_expr_ = $1;\n}\n| operand '-' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"-\");\n}\n| operand '+' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"+\");\n}\n| operand '/' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"/\");\n}\n| operand '*' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"*\");\n}\n| operand '%' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"%\");\n}\n| operand '^' operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"^\");\n}\n| operand LIKE operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"LIKE\");\n}\n| operand NOT LIKE operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $4;\n  $$->operator_ = string(\"NOT LIKE\");\n}\n| operand ILIKE operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"ILIKE\");\n}\n| operand CONCAT operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"CONCAT\");\n}\n| operand GLOB operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"GLOB\");\n}\n| operand MATCH operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"MATCH\");\n}\n| operand REGEX operand {\n  $$ = new BinaryExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"REGEX\");\n};\n\nlogic_expr : expr AND expr {\n  $$ = new LogicExpr();\n  $$->expr1_ = $1;\n  $$->expr2_ = $3;\n  $$->operator_ = string(\"AND\");\n}\n| expr OR expr {\n  $$ = new LogicExpr();\n  $$->expr1_ = $1;\n  $$->expr2_ = $3;\n  $$->operator_ = string(\"OR\");\n};\n\nin_expr : operand IN '(' expr_list ')' {\n  $$ = new InExpr();\n  $$->sub_type_ = CASE0;\n  $$->operand_ = $1;\n  $$->expr_list_ = $4;\n}\n| operand NOT IN '(' expr_list ')' {\n  $$ = new InExpr();\n  $$->sub_type_ = CASE1;\n  $$->operand_ = $1;\n  $$->expr_list_ = $5;\n}\n| operand IN '(' select_no_paren ')' {\n  $$ = new InExpr();\n  $$->sub_type_ = CASE2;\n  $$->operand_ = $1;\n  $$->select_no_paren_ = $4;\n}\n| operand NOT IN '(' select_no_paren ')' {\n  $$ = new InExpr();\n  $$->sub_type_ = CASE3;\n  $$->operand_ = $1;\n  $$->select_no_paren_ = $5;\n};\n\n// CASE grammar based on: flex & bison by John Levine\n// https://www.safaribooksonline.com/library/view/flex-bison/9780596805418/ch04.html#id352665\ncase_expr : CASE expr case_list END {\n  $$ = new CaseExpr();\n  $$->sub_type_ = CASE0;\n  $$->case_expr_ = $2;\n  $$->case_list_ = $3;\n}\n| CASE expr case_list ELSE expr END {\n  $$ = new CaseExpr();\n  $$->sub_type_ = CASE1;\n  $$->case_expr_ = $2;\n  $$->case_list_ = $3;\n  $$->else_expr_ = $5;\n}\n| CASE case_list END {\n  $$ = new CaseExpr();\n  $$->sub_type_ = CASE2;\n  $$->case_list_ = $2;\n}\n| CASE case_list ELSE expr END {\n  $$ = new CaseExpr();\n  $$->sub_type_ = CASE3;\n  $$->else_expr_ = $4;\n  $$->case_list_ = $2;\n};\n\ncase_list : WHEN expr THEN expr {\n  $$ = new CaseList();\n  $$->v_case_list_.push_back(new CaseClause($2, $4));\n}\n| case_list WHEN expr THEN expr {\n  $$->v_case_list_.push_back(new CaseClause($3, $5));\n  $$ = $1;\n};\n\nexists_expr : EXISTS '(' select_no_paren ')' {\n  $$ = new ExistsExpr();\n  $$->sub_type_ = CASE0;\n  $$->select_no_paren_ = $3;\n}\n| NOT EXISTS '(' select_no_paren ')' {\n  $$ = new ExistsExpr();\n  $$->sub_type_ = CASE1;\n  $$->select_no_paren_ = $4;\n};\n\ncomp_expr : operand '=' operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"=\");\n}\n| operand EQUALS operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"==\");\n}  // zr\n| operand NOTEQUALS operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"!=\");\n}  // zr\n| operand '<' operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"<\");\n}\n| operand '>' operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\">\");\n}\n| operand LESSEQ operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\"<=\");\n}  // zr\n| operand GREATEREQ operand {\n  $$ = new CompExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operator_ = string(\">=\");\n}  // zr\n;\n\nfunction_expr : IDENTIFIER '(' ')' opt_filter_clause opt_over_clause {\n  $$ = new FunctionExpr();\n  $$->sub_type_ = CASE0;\n  $$->id_ = new Identifier($1);\n  $$->opt_filter_clause_ = $4;\n  $$->opt_over_clause_ = $5;\n  free($1);\n}\n| IDENTIFIER '(' opt_distinct expr_list ')' opt_filter_clause opt_over_clause {\n  $$ = new FunctionExpr();\n  $$->sub_type_ = CASE1;\n  $$->id_ = new Identifier($1);\n  $$->opt_distinct_ = $3;\n  $$->expr_list_ = $4;\n  $$->opt_filter_clause_ = $6;\n  $$->opt_over_clause_ = $7;\n  free($1);\n};\n\nopt_over_clause : OVER '(' window ')' {\n  $$ = new OptOverClause();\n  $$->sub_type_ = CASE0;\n  $$->window_ = $3;\n}\n| OVER IDENTIFIER /* over window_name */ {\n  $$ = new OptOverClause();\n  $$->sub_type_ = CASE1;\n  $$->id_ = new Identifier($2, id_window_name);\n  free($2);\n}\n| /* emtpy */ {\n  $$ = new OptOverClause();\n  $$->sub_type_ = CASE2;\n};\n\nopt_filter_clause : FILTER '(' WHERE expr ')' {\n  $$ = new OptFilterClause();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $4;\n}\n| /* emtpy */ {\n  $$ = new OptFilterClause();\n  $$->sub_type_ = CASE1;\n};\n\nextract_expr : EXTRACT '(' datetime_field FROM expr ')' {\n  $$ = new ExtractExpr();\n  $$->datetime_field_ = $3;\n  $$->expr_ = $5;\n  $$->sub_type_ = CASE0;\n};\n\ndatetime_field : SECOND {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"SECOND\");\n}\n| MINUTE {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"MINUTE\");\n}\n| HOUR {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"HOUR\");\n}\n| DAY {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"DAY\");\n}\n| MONTH {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"MONTH\");\n}\n| YEAR {\n  $$ = new DatetimeField();\n  $$->str_val_ = string(\"YEAR\");\n};\n\narray_expr : ARRAY '[' expr_list ']' {\n  $$ = new ArrayExpr();\n  $$->expr_list_ = $3;\n};\n\narray_index : operand '[' int_literal ']' {\n  $$ = new ArrayIndex();\n  $$->operand_ = $1;\n  $$->int_literal_ = $3;\n};\n\nbetween_expr : operand BETWEEN operand AND operand {\n  $$ = new BetweenExpr();\n  $$->operand1_ = $1;\n  $$->operand2_ = $3;\n  $$->operand3_ = $5;\n};\n\ncolumn_name : IDENTIFIER {\n  $$ = new ColumnName();\n  $$->sub_type_ = CASE0;\n  $$->identifier1_ = new Identifier($1, id_column_name);\n  free($1);\n}\n| IDENTIFIER '.' IDENTIFIER {\n  $$ = new ColumnName();\n  $$->sub_type_ = CASE1;\n  $$->identifier1_ = new Identifier($1, id_table_name);\n  $$->identifier2_ = new Identifier($3, id_column_name);\n  free($1);\n  free($3);\n}\n| '*' {\n  $$ = new ColumnName();\n  $$->sub_type_ = CASE2;\n}\n| IDENTIFIER '.' '*' {\n  $$ = new ColumnName();\n  $$->sub_type_ = CASE3;\n  $$->identifier1_ = new Identifier($1, id_table_name);\n  free($1);\n};\n\nliteral : string_literal { $$ = $1; }\n| bool_literal { $$ = $1; }\n| num_literal { $$ = $1; }\n| null_literal { $$ = $1; }\n| param_expr { $$ = $1; };\n\nstring_literal : STRING {\n  $$ = new StringLiteral();\n  $$->str_val_ = $1;\n  free($1);\n};\n\nbool_literal : TRUE {\n  $$ = new BoolLiteral();\n  $$->b_val_ = true;\n}\n| FALSE {\n  $$ = new BoolLiteral();\n  $$->b_val_ = false;\n};\n\nnum_literal : FLOATVAL {\n  $$ = new NumLiteral();\n  $$->sub_type_ = CASE0;\n  $$->f_val_ = $1;\n}\n| int_literal {\n  $$ = new NumLiteral();\n  $$->sub_type_ = CASE1;\n  $$->int_literal_ = $1;\n};\n\nint_literal : INTVAL {\n  $$ = new IntLiteral();\n  $$->int_val_ = $1;\n};\n\nnull_literal : NULL { $$ = new NullLiteral(); };\n\nparam_expr : '?' { $$ = new ParamExpr(); };\n\n/******************************\n * Table\n ******************************/\n\ntable_ref : table_prefix table_name opt_alias opt_index opt_on opt_using {\n  $$ = new TableRef();\n  $$->sub_type_ = CASE0;\n  $$->table_prefix_ = $1;\n  $$->table_name_ = $2;\n  $$->opt_alias_ = $3;\n  $$->opt_index_ = $4;\n  $$->opt_on_ = $5;\n  $$->opt_using_ = $6;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n}\n| table_prefix table_name '(' expr_list ')' opt_alias opt_on opt_using {\n  $$ = new TableRef();\n  $$->sub_type_ = CASE1;\n  $$->table_prefix_ = $1;\n  $$->table_name_ = $2;\n  $$->expr_list_ = $4;\n  $$->opt_alias_ = $6;\n  $$->opt_on_ = $7;\n  $$->opt_using_ = $8;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n}\n| table_prefix '(' select_no_paren ')' opt_alias opt_on opt_using {\n  $$ = new TableRef();\n  $$->sub_type_ = CASE2;\n  $$->table_prefix_ = $1;\n  $$->select_no_paren_ = $3;\n  $$->opt_alias_ = $5;\n  $$->opt_on_ = $6;\n  $$->opt_using_ = $7;\n}\n| table_prefix '(' table_ref ')' opt_alias opt_on opt_using {\n  $$ = new TableRef();\n  $$->sub_type_ = CASE3;\n  $$->table_prefix_ = $1;\n  $$->table_ref_ = $3;\n  $$->opt_alias_ = $5;\n  $$->opt_on_ = $6;\n  $$->opt_using_ = $7;\n};\n\ntable_prefix : table_ref join_op {\n  $$ = new TablePrefix();\n  $$->sub_type_ = CASE0;\n  $$->table_ref_ = $1;\n  $$->join_op_ = $2;\n}\n| /*empty*/ {\n  $$ = new TablePrefix();\n  $$->sub_type_ = CASE1;\n};\njoin_op : ',' {\n  $$ = new JoinOp();\n  $$->sub_type_ = CASE0;\n}\n| JOIN {\n  $$ = new JoinOp();\n  $$->sub_type_ = CASE1;\n}\n| join_kw JOIN {\n  $$ = new JoinOp();\n  $$->sub_type_ = CASE2;\n  $$->join_kw_ = $1;\n}\n| join_kw IDENTIFIER JOIN {\n  $$ = new JoinOp();\n  $$->sub_type_ = CASE3;\n  $$->id1_ = new Identifier($2, id_top_table_name);\n  $$->join_kw_ = $1;\n  free($2);\n}\n| join_kw IDENTIFIER IDENTIFIER JOIN {\n  $$ = new JoinOp();\n  $$->sub_type_ = CASE4;\n  $$->id1_ = new Identifier($2);\n  $$->id2_ = new Identifier($3);\n  $$->join_kw_ = $1;\n  free($2);\n  free($3);\n};\n\nopt_index : INDEXED BY column_name {\n  $$ = new OptIndex();\n  $$->sub_type_ = CASE0;\n  $$->column_name_ = $3;\n}\n| NOT INDEXED {\n  $$ = new OptIndex();\n  $$->sub_type_ = CASE1;\n}\n| /*empty*/ {\n  $$ = new OptIndex();\n  $$->sub_type_ = CASE2;\n};\n\nopt_on : ON expr {\n  $$ = new OptOn();\n  $$->sub_type_ = CASE0;\n  $$->expr_ = $2;\n}\n| /*empty*/ {\n  $$ = new OptOn();\n  $$->sub_type_ = CASE1;\n};\n\nopt_using : USING '(' ident_commalist ')' {\n  $$ = new OptUsing();\n  $$->sub_type_ = CASE0;\n  $$->ident_commalist_ = $3;\n}\n| /*empty*/ {\n  $$ = new OptUsing();\n  $$->sub_type_ = CASE1;\n};\n\ntable_ref_name_no_alias : table_name {\n  $$ = new TableRefNameNoAlias();\n  $$->table_name_ = $1;\n  $$->table_name_->table_name_->id_type_ = id_top_table_name;\n};\ntable_name : IDENTIFIER {\n  $$ = new TableName();\n  $$->sub_type_ = CASE0;\n  $$->table_name_ = new Identifier($1, id_table_name);\n  $$->database_name_ = NULL;\n  free($1);\n}\n| IDENTIFIER '.' IDENTIFIER {\n  $$ = new TableName();\n  $$->sub_type_ = CASE1;\n  $$->database_name_ = new Identifier($1, id_database_name);\n  $$->table_name_ = new Identifier($3, id_table_name);\n  free($1);\n  free($3);\n};\n\nalias : AS IDENTIFIER {\n  $$ = new Alias();\n  $$->sub_type_ = CASE0;\n  $$->id_ = new Identifier($2);\n  free($2);\n};\n\nopt_alias : alias {\n  $$ = new OptAlias();\n  $$->sub_type_ = CASE0;\n  $$->alias_ = $1;\n}\n| /* empty */ {\n  $$ = new OptAlias();\n  $$->sub_type_ = CASE1;\n};\n\n/******************************\n * With Descriptions\n ******************************/\n\nopt_with_clause : with_clause {\n  $$ = new OptWithClause();\n  $$->sub_type_ = CASE0;\n  $$->with_clause_ = $1;\n}\n| /* empty */ {\n  $$ = new OptWithClause();\n  $$->sub_type_ = CASE1;\n};\n\nwith_clause : WITH with_description_list {\n  $$ = new WithClause();\n  $$->with_description_list_ = $2;\n};\n\nwith_description_list : with_description {\n  $$ = new WithDescriptionList();\n  $$->v_with_description_list_.push_back($1);\n}\n| with_description_list ',' with_description {\n  $1->v_with_description_list_.push_back($3);\n  $$ = $1;\n};\n\nwith_description : IDENTIFIER AS select_with_paren {\n  $$ = new WithDescription();\n  $$->id_ = new Identifier($1);\n  $$->select_with_paren_ = $3;\n  free($1);\n};\n\n/******************************\n * Join Statements\n ******************************/\n\njoin_kw : INNER {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"INNER\");\n}\n| LEFT OUTER {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"LEFT OUTER\");\n}\n| LEFT {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"LEFT\");\n}\n| RIGHT OUTER {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"RIGHT OUTER\");\n}\n| RIGHT {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"RIGHT\");\n}\n| FULL OUTER {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"FULL OUTER\");\n}\n| OUTER {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"OUTER\");\n}\n| FULL {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"FULL\");\n}\n| CROSS {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"CROSS\");\n}\n| NATURAL {\n  $$ = new JoinKw();\n  $$->str_val_ = string(\"NATURAL\");\n}\n//|   /* empty, default */    { $$ = new JoinKw(); $$->str_val_ = string(\"\"); }\n;\n\n/*\njoin_condition:\n        expr { $$ = new JoinCondition(); $$->expr_ = $1;}\n        ;\n*/\n\n/******************************\n * Misc\n ******************************/\n\nopt_semicolon : ';' {\n  $$ = new OptSemicolon();\n  $$->str_val_ = string(\";\");\n}\n| /* empty */ {\n  $$ = new OptSemicolon();\n  $$->str_val_ = string(\"\");\n};\n\nident_commalist : IDENTIFIER {\n  $$ = new IdentCommaList();\n  $$->v_iden_comma_list_.push_back(new Identifier($1));\n  free($1);\n}\n| ident_commalist ',' IDENTIFIER {\n  $1->v_iden_comma_list_.push_back(new Identifier($3));\n  $$ = $1;\n  free($3);\n};\n\n% %\n    /*********************************\n     ** Section 4: Additional C code\n     *********************************/\n\n    /* empty */\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/flex_lexer.cpp",
    "content": "#line 2 \"flex_lexer.cpp\"\n\n#line 4 \"flex_lexer.cpp\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define hsql__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer hsql__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define hsql__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer hsql__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define hsql__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer hsql__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define hsql__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string hsql__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define hsql__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes hsql__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define hsql__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer hsql__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define hsql__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer hsql__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define hsql__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state hsql__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define hsql__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer hsql__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define hsql_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state hsql_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define hsql_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state hsql_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define hsql_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack hsql_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define hsql_lex_ALREADY_DEFINED\n#else\n#define yylex hsql_lex\n#endif\n\n#ifdef yyrestart\n#define hsql_restart_ALREADY_DEFINED\n#else\n#define yyrestart hsql_restart\n#endif\n\n#ifdef yylex_init\n#define hsql_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init hsql_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define hsql_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra hsql_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define hsql_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy hsql_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define hsql_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug hsql_get_debug\n#endif\n\n#ifdef yyset_debug\n#define hsql_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug hsql_set_debug\n#endif\n\n#ifdef yyget_extra\n#define hsql_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra hsql_get_extra\n#endif\n\n#ifdef yyset_extra\n#define hsql_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra hsql_set_extra\n#endif\n\n#ifdef yyget_in\n#define hsql_get_in_ALREADY_DEFINED\n#else\n#define yyget_in hsql_get_in\n#endif\n\n#ifdef yyset_in\n#define hsql_set_in_ALREADY_DEFINED\n#else\n#define yyset_in hsql_set_in\n#endif\n\n#ifdef yyget_out\n#define hsql_get_out_ALREADY_DEFINED\n#else\n#define yyget_out hsql_get_out\n#endif\n\n#ifdef yyset_out\n#define hsql_set_out_ALREADY_DEFINED\n#else\n#define yyset_out hsql_set_out\n#endif\n\n#ifdef yyget_leng\n#define hsql_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng hsql_get_leng\n#endif\n\n#ifdef yyget_text\n#define hsql_get_text_ALREADY_DEFINED\n#else\n#define yyget_text hsql_get_text\n#endif\n\n#ifdef yyget_lineno\n#define hsql_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno hsql_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define hsql_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno hsql_set_lineno\n#endif\n\n#ifdef yyget_column\n#define hsql_get_column_ALREADY_DEFINED\n#else\n#define yyget_column hsql_get_column\n#endif\n\n#ifdef yyset_column\n#define hsql_set_column_ALREADY_DEFINED\n#else\n#define yyset_column hsql_set_column\n#endif\n\n#ifdef yywrap\n#define hsql_wrap_ALREADY_DEFINED\n#else\n#define yywrap hsql_wrap\n#endif\n\n#ifdef yyget_lval\n#define hsql_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval hsql_get_lval\n#endif\n\n#ifdef yyset_lval\n#define hsql_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval hsql_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define hsql_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc hsql_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define hsql_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc hsql_set_lloc\n#endif\n\n#ifdef yyalloc\n#define hsql_alloc_ALREADY_DEFINED\n#else\n#define yyalloc hsql_alloc\n#endif\n\n#ifdef yyrealloc\n#define hsql_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc hsql_realloc\n#endif\n\n#ifdef yyfree\n#define hsql_free_ALREADY_DEFINED\n#else\n#define yyfree hsql_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* Returned upon end-of-file. */\n#define YY_NULL 0\n\n/* Promotes a possibly negative, possibly signed char to an\n *   integer in range [0..255] for use as an array index.\n */\n#define YY_SC_TO_UI(c) ((YY_CHAR)(c))\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Enter a start condition.  This macro really ought to take a parameter,\n * but we do it the disgusting crufty way forced on us by the ()-less\n * definition of BEGIN.\n */\n#define BEGIN yyg->yy_start = 1 + 2 *\n/* Translate the current start state into a value that can be later handed\n * to BEGIN to return to the state.  The YYSTATE alias is for lex\n * compatibility.\n */\n#define YY_START ((yyg->yy_start - 1) / 2)\n#define YYSTATE YY_START\n/* Action number for EOF rule of a given start state. */\n#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)\n/* Special action meaning \"start processing a new file\". */\n#define YY_NEW_FILE yyrestart(yyin, yyscanner)\n#define YY_END_OF_BUFFER_CHAR 0\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n/* The state buf must be large enough to hold one state per character in the\n * main buffer.\n */\n#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#define EOB_ACT_CONTINUE_SCAN 0\n#define EOB_ACT_END_OF_FILE 1\n#define EOB_ACT_LAST_MATCH 2\n\n#define YY_LESS_LINENO(n)\n#define YY_LINENO_REWIND_TO(ptr)\n\n/* Return all but the first \"n\" matched characters back to the input stream. */\n#define yyless(n)                                                     \\\n  do {                                                                \\\n    /* Undo effects of setting up yytext. */                          \\\n    int yyless_macro_arg = (n);                                       \\\n    YY_LESS_LINENO(yyless_macro_arg);                                 \\\n    *yy_cp = yyg->yy_hold_char;                                       \\\n    YY_RESTORE_YY_MORE_OFFSET                                         \\\n    yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \\\n    YY_DO_BEFORE_ACTION; /* set up yytext again */                    \\\n  } while (0)\n#define unput(c) yyunput(c, yyg->yytext_ptr, yyscanner)\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n\n#define YY_BUFFER_NEW 0\n#define YY_BUFFER_NORMAL 1\n  /* When an EOF's been seen but there's still some text to process\n   * then we mark the buffer as YY_EOF_PENDING, to indicate that we\n   * shouldn't try reading from the input source any more.  We might\n   * still have a bunch of tokens to match, though, because of\n   * possible backing-up.\n   *\n   * When we actually see the EOF, we change the status to \"new\"\n   * (via yyrestart()), so that the user can continue scanning by\n   * just pointing yyin at a new input file.\n   */\n#define YY_BUFFER_EOF_PENDING 2\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\n/* We provide macros for accessing buffer states in case in the\n * future we want to put the buffer states in a more general\n * \"scanner state\".\n *\n * Returns the top of the stack, or NULL.\n */\n#define YY_CURRENT_BUFFER \\\n  (yyg->yy_buffer_stack ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] : NULL)\n/* Same as previous macro, but useful when we know that the buffer stack is not\n * NULL or when we need an lvalue. For internal use only.\n */\n#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nstatic void yyensure_buffer_stack(yyscan_t yyscanner);\nstatic void yy_load_buffer_state(yyscan_t yyscanner);\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner);\n#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER, yyscanner)\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n#define yy_new_buffer yy_create_buffer\n#define yy_set_interactive(is_interactive)                        \\\n  {                                                               \\\n    if (!YY_CURRENT_BUFFER) {                                     \\\n      yyensure_buffer_stack(yyscanner);                           \\\n      YY_CURRENT_BUFFER_LVALUE =                                  \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);         \\\n    }                                                             \\\n    YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \\\n  }\n#define yy_set_bol(at_bol)                                \\\n  {                                                       \\\n    if (!YY_CURRENT_BUFFER) {                             \\\n      yyensure_buffer_stack(yyscanner);                   \\\n      YY_CURRENT_BUFFER_LVALUE =                          \\\n          yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner); \\\n    }                                                     \\\n    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol;         \\\n  }\n#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)\n\n/* Begin user sect3 */\n\n#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\ntypedef flex_uint8_t YY_CHAR;\n\ntypedef int yy_state_type;\n\n#define yytext_ptr yytext_r\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner);\nstatic yy_state_type yy_try_NUL_trans(yy_state_type current_state,\n                                      yyscan_t yyscanner);\nstatic int yy_get_next_buffer(yyscan_t yyscanner);\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner);\n\n/* Done after the current pattern has been matched and before the\n * corresponding action - sets up yytext.\n */\n#define YY_DO_BEFORE_ACTION      \\\n  yyg->yytext_ptr = yy_bp;       \\\n  yyleng = (int)(yy_cp - yy_bp); \\\n  yyg->yy_hold_char = *yy_cp;    \\\n  *yy_cp = '\\0';                 \\\n  yyg->yy_c_buf_p = yy_cp;\n#define YY_NUM_RULES 207\n#define YY_END_OF_BUFFER 208\n/* This struct is not used in this scanner,\n   but its presence is necessary. */\nstruct yy_trans_info {\n  flex_int32_t yy_verify;\n  flex_int32_t yy_nxt;\n};\nstatic const flex_int16_t yy_accept[1460] = {\n    0,   0,   0,   204, 204, 2,   2,   208, 206, 4,   4,   206, 206, 196, 202,\n    196, 196, 199, 196, 196, 196, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    196, 204, 205, 2,   2,   3,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   4,   191, 0,   1,\n    199, 198, 197, 193, 192, 190, 194, 201, 201, 201, 201,\n\n    201, 201, 201, 118, 201, 201, 201, 119, 201, 201, 201, 201, 201, 201, 201,\n    201, 201, 186, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 120, 201, 201, 201, 121, 122, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 158, 201, 201, 123, 124, 125, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 126, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    195, 204, 203, 2,   2,   2,   2,   1,   2,   2,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    200, 197, 201, 104, 201, 105, 201, 201, 201, 106, 201, 107, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 108, 201, 201, 130,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 109, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 110, 201, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 111, 201, 201, 112,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 113, 201, 201,\n    114, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 151, 201, 201, 201, 201, 115,\n    201, 201, 201, 201, 116, 201, 201, 201, 201, 201, 117, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 76,  201, 77,\n\n    170, 78,  201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 79,  201, 201,\n    201, 201, 201, 80,  201, 201, 201, 201, 81,  150, 82,  201, 201, 201, 201,\n    201, 201, 201, 144, 201, 83,  201, 201, 201, 201, 84,  85,  201, 179, 201,\n    86,  201, 87,  129, 201, 201, 201, 201, 201, 201, 201, 201, 201, 88,  201,\n    89,  184, 90,  91,  201, 93,  201, 94,  201, 201, 201, 201, 201, 201, 95,\n    201, 201, 201, 201, 201, 152, 201, 201, 96,  201, 201, 201, 201, 201, 201,\n    201, 201, 201, 201, 201, 201, 201, 162, 201, 201,\n\n    201, 201, 97,  201, 201, 201, 148, 98,  99,  163, 100, 201, 201, 188, 201,\n    201, 201, 201, 201, 201, 201, 201, 201, 201, 101, 201, 102, 201, 201, 103,\n    132, 2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   143, 56,  57,  201, 201, 58,  201, 201, 201, 146, 201, 201, 138, 201,\n    201, 201, 201, 201, 201, 59,  201, 201, 201, 201,\n\n    201, 201, 60,  201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,\n    189, 201, 185, 61,  201, 201, 201, 62,  201, 201, 92,  201, 201, 63,  64,\n    201, 201, 201, 201, 201, 65,  66,  180, 67,  68,  201, 131, 201, 201, 183,\n    201, 201, 69,  201, 70,  201, 201, 201, 201, 201, 201, 161, 181, 201, 201,\n    201, 201, 201, 71,  201, 201, 201, 201, 201, 201, 201, 72,  201, 201, 201,\n    201, 201, 201, 73,  201, 201, 201, 74,  201, 201, 201, 201, 75,  201, 2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    2,   2,   137, 201, 167, 201, 31,  201, 201, 201, 32,  178, 201, 201, 33,\n    201, 201, 201, 201, 201, 34,  201, 168, 35,  201, 36,  37,  38,  201, 201,\n    201, 39,  201, 201, 153, 201, 201, 41,  157, 42,  140, 201, 43,  201, 44,\n    201, 201, 201, 45,  128, 201, 201, 201, 46,  159, 201, 201, 134, 201, 201,\n    201, 201, 201, 47,  201, 201, 201, 201, 48,  127, 49,  50,  201, 51,  201,\n    201, 201, 201, 201, 201, 52,  53,  54,  173, 55,  201, 201, 165, 2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   15,\n    201, 16,  17,  187, 18,  201, 19,  154, 201, 201, 20,  201, 201, 201, 155,\n    201, 21,  22,  40,  201, 201, 201, 133, 149, 23,\n\n    201, 24,  182, 201, 201, 201, 201, 25,  26,  135, 172, 141, 201, 201, 201,\n    27,  28,  201, 201, 201, 147, 201, 201, 29,  30,  2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   145, 139, 169, 201, 175, 10,  11,  201, 201, 201, 177, 201, 12,  201,\n    201, 201, 13,  142, 201, 201, 201, 201, 14,  201,\n\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   2,   2,   2,   2,   201, 176, 156, 136, 7,   201,\n    166, 160, 171, 8,   9,   201, 164, 2,   2,   2,   2,   2,   2,   2,   2,\n    2,   2,   2,   2,   2,   5,   6,   201, 2,   2,   2,   174, 2,   0};\n\nstatic const YY_CHAR yy_ec[256] = {\n    0,  1,  1,  1,  1,  1,  1,  1,  1,  2,  3,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  4,  5,  1,  1,  6,\n    1,  7,  6,  6,  6,  6,  6,  8,  9,  6,  10, 10, 10, 10, 10, 10, 10, 10, 10,\n    10, 6,  6,  11, 12, 13, 6,  1,  14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 6,  1,  6,  6,\n    40, 1,  41, 42, 43, 44,\n\n    45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n    64, 65, 66, 6,  67, 6,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,\n\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\n    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};\n\nstatic const YY_CHAR yy_meta[68] = {\n    0, 1, 1, 2, 1, 3, 1, 4, 1, 1, 5, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1};\n\nstatic const flex_int16_t yy_base[1466] = {\n    0,    0,    0,    380,  373,  67,   0,    379,  5858, 133,  135,  365,\n    0,    5858, 5858, 131,  365,  133,  132,  362,  361,  131,  122,  179,\n    181,  191,  242,  163,  203,  285,  119,  131,  243,  300,  219,  337,\n    210,  0,    302,  386,  429,  294,  137,  131,  137,  302,  0,    358,\n    0,    166,  168,  296,  296,  0,    0,    188,  277,  192,  236,  273,\n    263,  487,  540,  592,  644,  696,  748,  241,  368,  796,  297,  264,\n    418,  542,  848,  896,  590,  289,  642,  948,  1000, 636,  686,  363,\n    295,  196,  275,  5858, 224,  5858, 280,  204,  196,  5858, 5858, 5858,\n    5858, 0,    129,  202,  209,\n\n    385,  375,  288,  320,  328,  333,  406,  0,    536,  440,  591,  548,\n    332,  345,  576,  697,  531,  344,  394,  419,  406,  438,  553,  811,\n    597,  636,  547,  687,  583,  587,  598,  604,  641,  644,  644,  644,\n    0,    659,  693,  707,  748,  690,  697,  682,  694,  713,  743,  758,\n    731,  737,  744,  750,  745,  750,  759,  776,  799,  0,    802,  799,\n    791,  807,  795,  816,  850,  804,  1046, 812,  838,  803,  848,  859,\n    842,  842,  863,  863,  854,  891,  862,  890,  856,  904,  945,  877,\n    876,  947,  950,  902,  919,  908,  5858, 0,    5858, 0,    293,  0,\n    199,  0,    349,  187,\n\n    162,  0,    0,    0,    0,    962,  964,  999,  1002, 1036, 1039, 994,\n    1069, 1073, 1090, 1106, 1052, 1104, 1102, 1147, 1103, 1092, 1144, 1143,\n    1199, 1146, 1188, 1142, 1178, 1196, 1212, 1209, 1262, 1244, 1245, 1247,\n    1263, 1286, 1261, 1298, 1301, 1302, 1326, 1315, 1336, 1317, 1341, 1327,\n    1355, 1404, 1360, 1381, 1378, 1395, 1432, 1421, 1457, 1423, 1449, 1390,\n    1458, 1471, 1472, 1481, 1506, 1510, 1497, 1521, 1522, 1512, 1516, 1545,\n    1550, 1560, 1562, 1610, 1576, 1581, 1616, 1622, 1620, 1655, 1566, 1668,\n    1653, 1659, 1670, 1584, 1676, 1674, 1714, 1722, 1728, 1704, 1752, 1720,\n    1743, 1773, 1778, 0,\n\n    5858, 156,  893,  0,    914,  0,    930,  957,  949,  0,    969,  0,\n    970,  978,  995,  1002, 1000, 1051, 1787, 1051, 1070, 1773, 1066, 1227,\n    1118, 1151, 0,    1162, 1768, 0,    1190, 1388, 1656, 1255, 1309, 1330,\n    1344, 1368, 1409, 1431, 1463, 0,    1477, 1776, 1509, 1526, 1568, 1621,\n    1665, 1695, 1781, 1725, 1748, 1777, 0,    1786, 1790, 1804, 1809, 1797,\n    1814, 1814, 1804, 1809, 1816, 1821, 1829, 1820, 1832, 1834, 1835, 1837,\n    1820, 1829, 0,    1824, 1826, 1842, 1839, 1849, 1855, 1850, 1858, 1856,\n    1844, 1852, 1855, 1869, 1866, 1863, 1866, 1881, 1882, 1884, 1873, 1895,\n    1879, 1887, 1894, 1882,\n\n    1891, 1895, 1887, 1897, 1905, 1895, 1889, 1903, 1905, 1900, 1921, 1925,\n    1916, 1927, 0,    1912, 1919, 1920, 1929, 0,    1927, 1925, 1933, 1929,\n    1944, 0,    1936, 1944, 1947, 1939, 1948, 1940, 1955, 1946, 1943, 1948,\n    1968, 1950, 1960, 1971, 1980, 1978, 1975, 0,    151,  1990, 1989, 1992,\n    1994, 1998, 2000, 2022, 2004, 2032, 2013, 2038, 2043, 2044, 2046, 2068,\n    2067, 2084, 2076, 2100, 2112, 2102, 2133, 2142, 2130, 2136, 2154, 2168,\n    2152, 2166, 2196, 2187, 2178, 2208, 2190, 2206, 2212, 2227, 2241, 2222,\n    2230, 2256, 2260, 2264, 2258, 2266, 2282, 2290, 2292, 2281, 2316, 2318,\n    2320, 2315, 2326, 2344,\n\n    2332, 2369, 2356, 2355, 2370, 2380, 2392, 2384, 2408, 2410, 2413, 2398,\n    2424, 2434, 2438, 2426, 2443, 2447, 2462, 2468, 2464, 2492, 2487, 2497,\n    2498, 2501, 2529, 2516, 2535, 2537, 2551, 2540, 2552, 2569, 2541, 2546,\n    2570, 2591, 2605, 2586, 2607, 2626, 2594, 2640, 2603, 2635, 2639, 2661,\n    2656, 2665, 2674, 2689, 2679, 2648, 2678, 2714, 2691, 2702, 2710, 2727,\n    2733, 2732, 2743, 2745, 2758, 2762, 2767, 2764, 2768, 2777, 2799, 2803,\n    2807, 2821, 2822, 2820, 2836, 2835, 2837, 2873, 2861, 2870, 2894, 2875,\n    2889, 2891, 1984, 2022, 2035, 2058, 2077, 2088, 2120, 2139, 2145, 2175,\n    2218, 0,    2302, 0,\n\n    0,    0,    2298, 2325, 2342, 2356, 2381, 2416, 2463, 2489, 2506, 2588,\n    0,    2636, 2629, 2713, 2702, 2723, 2789, 2827, 2840, 2882, 2889, 0,\n    0,    0,    2888, 2894, 2894, 2899, 2909, 2929, 2931, 0,    2928, 0,\n    2929, 2918, 2920, 2929, 0,    0,    2927, 2947, 2933, 0,    2936, 0,\n    0,    2933, 2947, 2944, 2936, 2931, 2940, 2944, 2958, 2966, 0,    2952,\n    0,    0,    0,    0,    2946, 0,    2956, 0,    2961, 2965, 2967, 2966,\n    2965, 2979, 2973, 2991, 2993, 2981, 2984, 2985, 0,    2991, 2996, 0,\n    2993, 3002, 3007, 3008, 3007, 2992, 3013, 3017, 3007, 3021, 3005, 3004,\n    3025, 0,    3012, 3024,\n\n    3024, 3037, 0,    3036, 3033, 3041, 3033, 0,    0,    0,    3033, 3034,\n    3049, 0,    3054, 3037, 3045, 3039, 3060, 3042, 3056, 3045, 3065, 3063,\n    0,    3051, 0,    3069, 3061, 0,    0,    3086, 3077, 3087, 3089, 3091,\n    3095, 3105, 3119, 3131, 3120, 3121, 3135, 3149, 3137, 3143, 3153, 3154,\n    3165, 3175, 3189, 3179, 3191, 3208, 3205, 3194, 3227, 3217, 3233, 3229,\n    3239, 3242, 3265, 3270, 3273, 3279, 3287, 3275, 3281, 3296, 3305, 3313,\n    3319, 3311, 3321, 3329, 3359, 3365, 3315, 3347, 3350, 3353, 3363, 3369,\n    3381, 3375, 3387, 3404, 3403, 3409, 3413, 3432, 3415, 3419, 3445, 3437,\n    3449, 3454, 3463, 3473,\n\n    3475, 3471, 3503, 3477, 3499, 3487, 3508, 3511, 3517, 3521, 3525, 3540,\n    3529, 3539, 3551, 3565, 3570, 3562, 3557, 3581, 3593, 3583, 3611, 3614,\n    3616, 3599, 3615, 3633, 3605, 3639, 3645, 3648, 3673, 3657, 3670, 3679,\n    3687, 3701, 3702, 3711, 3688, 3740, 3712, 3741, 3742, 3745, 3746, 3743,\n    3755, 3774, 3756, 3786, 3780, 3784, 3795, 3798, 3810, 3814, 3799, 3838,\n    3828, 3820, 3850, 3853, 3854, 3862, 3852, 3878, 3883, 3884, 3892, 3887,\n    3902, 3906, 3917, 3918, 0,    0,    0,    3058, 3182, 0,    3204, 3336,\n    3398, 0,    3421, 3444, 0,    3512, 3585, 3634, 3651, 3657, 3691, 0,\n    3799, 3836, 3878, 3887,\n\n    3907, 3923, 0,    3920, 3924, 3913, 3923, 3936, 3940, 3926, 3943, 3931,\n    3934, 3948, 3958, 0,    3945, 0,    0,    3942, 3965, 3955, 3952, 3968,\n    3971, 0,    3976, 3959, 3976, 0,    3962, 3982, 3980, 3967, 3975, 0,\n    0,    0,    0,    0,    3986, 0,    3994, 3982, 0,    3989, 3979, 0,\n    3981, 0,    3996, 3985, 4006, 4007, 3997, 3998, 0,    0,    4012, 4000,\n    4015, 4018, 4016, 0,    4028, 4015, 4030, 4029, 4015, 4032, 4036, 4020,\n    4022, 4021, 4044, 4044, 4049, 4037, 0,    4048, 4050, 4050, 0,    4046,\n    4042, 4064, 4068, 0,    4047, 4066, 4068, 4069, 4070, 4078, 4074, 4082,\n    4110, 4080, 4104, 4108,\n\n    4123, 4114, 4118, 4139, 4147, 4152, 4144, 4153, 4158, 4168, 4196, 4187,\n    4201, 4190, 4182, 4193, 4218, 4233, 4212, 4241, 4231, 4242, 4252, 4256,\n    4266, 4271, 4296, 4304, 4287, 4306, 4290, 4295, 4320, 4305, 4341, 4330,\n    4354, 4335, 4339, 4349, 4358, 4360, 4364, 4379, 4393, 4370, 4395, 4403,\n    4392, 4398, 4404, 4408, 4414, 4427, 4429, 4448, 4443, 4433, 4462, 4457,\n    4446, 4467, 4458, 4483, 4486, 4500, 4498, 4502, 4519, 4511, 4516, 4517,\n    4521, 4534, 4552, 4551, 4540, 4569, 4570, 4588, 4574, 4603, 4586, 4609,\n    4614, 4624, 4627, 4626, 4638, 4643, 4648, 4640, 4652, 4677, 4662, 4678,\n    4680, 4692, 4714, 4720,\n\n    4681, 4711, 0,    4079, 0,    4138, 0,    4133, 4184, 4198, 4232, 0,\n    4249, 4250, 0,    4294, 4418, 4466, 4511, 4556, 0,    4578, 0,    0,\n    4595, 0,    0,    0,    4604, 4655, 4691, 0,    4685, 4681, 0,    4713,\n    4707, 0,    0,    0,    0,    4711, 0,    4731, 0,    4733, 4722, 4736,\n    0,    0,    4735, 4743, 4750, 0,    0,    4733, 4746, 0,    4747, 4752,\n    4734, 4736, 4760, 0,    4764, 4767, 4768, 4764, 4756, 0,    0,    0,\n    4764, 0,    4778, 4780, 4782, 4770, 4769, 4786, 0,    0,    0,    0,\n    0,    4773, 4781, 0,    4789, 4794, 4799, 4802, 4804, 4808, 4805, 4818,\n    4820, 4823, 4839, 4853,\n\n    4842, 4848, 4857, 4856, 4879, 4858, 4882, 4891, 4892, 4893, 4910, 4896,\n    4897, 4907, 4922, 4928, 4925, 4931, 4941, 4947, 4933, 4966, 4956, 4964,\n    4965, 4979, 4981, 4987, 4990, 4996, 5000, 5005, 5033, 5015, 5018, 5021,\n    5044, 5054, 5059, 5030, 5049, 5070, 5084, 5067, 5089, 5072, 5075, 5105,\n    5103, 5107, 5108, 5139, 5140, 5141, 5129, 5126, 5142, 5157, 5171, 5163,\n    5179, 5196, 5195, 5181, 5197, 5214, 5180, 5209, 5211, 5225, 5230, 5233,\n    5247, 5235, 0,    4793, 0,    0,    0,    0,    4859, 0,    0,    4936,\n    4950, 0,    4983, 5036, 5024, 0,    5104, 0,    0,    0,    5138, 5158,\n    5232, 0,    0,    0,\n\n    5239, 0,    0,    5235, 5249, 5241, 5254, 0,    0,    0,    0,    0,\n    5250, 5260, 5259, 0,    0,    5256, 5262, 5256, 0,    5279, 5283, 0,\n    0,    5284, 5287, 5285, 5288, 5289, 5299, 5302, 5301, 5303, 5313, 5341,\n    5318, 5343, 5339, 5347, 5351, 5355, 5353, 5356, 5357, 5387, 5381, 5385,\n    5391, 5393, 5395, 5419, 5406, 5409, 5430, 5421, 5425, 5449, 5427, 5451,\n    5455, 5459, 5460, 5473, 5483, 5481, 5464, 5492, 5505, 5513, 5509, 5514,\n    5522, 5523, 5526, 5527, 0,    0,    0,    5310, 0,    0,    0,    5397,\n    5408, 5468, 0,    5489, 0,    5522, 5528, 5536, 0,    0,    5529, 5535,\n    5546, 5554, 0,    5560,\n\n    5563, 5567, 5568, 5576, 5572, 5577, 5578, 5580, 5606, 5602, 5589, 5617,\n    5593, 5621, 5630, 5643, 5611, 5642, 5656, 5647, 5673, 5675, 5660, 5692,\n    5651, 0,    0,    0,    0,    5640, 0,    0,    0,    0,    0,    5645,\n    0,    5688, 5696, 5697, 5701, 5705, 5713, 5709, 5710, 5714, 5726, 5731,\n    5745, 5742, 0,    0,    5738, 5750, 5759, 5767, 0,    5763, 5858, 5832,\n    5837, 149,  5842, 5847, 5852};\n\nstatic const flex_int16_t yy_def[1466] = {\n    0,    1459, 1,    1460, 1460, 1459, 5,    1459, 1459, 1459, 1459, 1459,\n    1461, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1459, 1463, 1459,\n    1464, 1464, 1459, 1464, 1465, 1464, 1464, 1464, 1464, 1464, 1464, 1464,\n    1464, 1459, 61,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   1464, 1459, 1459, 1461, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1459, 1463, 1459, 1464, 1464, 1464,\n    1465, 1464, 1464, 1464,\n\n    1464, 1464, 1464, 1464, 1464, 62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   1464,\n\n    1459, 1459, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1464, 1464, 62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,\n\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,\n\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,\n\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,\n\n    62,   62,   1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,\n\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 1462, 1462, 1462,\n\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462,\n    1462, 62,   62,   62,   62,   62,   62,   62,   62,   62,   62,   62,\n    62,   62,   1462, 1462, 1462, 62,   62,   62,   1462, 62,   0,    1459,\n    1459, 1459, 1459, 1459, 1459};\n\nstatic const flex_int16_t yy_nxt[5926] = {\n    0,    8,    9,    10,   11,   12,   13,   14,   15,   16,   17,   18,\n    19,   20,   21,   22,   23,   24,   25,   26,   27,   28,   29,   30,\n    31,   32,   33,   34,   35,   36,   37,   38,   39,   40,   41,   42,\n    43,   37,   44,   37,   8,    21,   22,   23,   24,   25,   26,   27,\n    28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,   39,\n    40,   41,   42,   43,   37,   44,   37,   45,   48,   49,   50,   51,\n    52,   53,   54,   55,   56,   57,   58,   59,   60,   61,   62,   63,\n    64,   65,   66,   67,   68,   69,   70,   71,   72,   73,   74,   75,\n    76,   77,   78,   79,   80,\n\n    81,   82,   83,   77,   84,   77,   48,   61,   62,   63,   64,   65,\n    66,   67,   68,   69,   70,   71,   72,   73,   74,   75,   76,   77,\n    78,   79,   80,   81,   82,   83,   77,   84,   77,   85,   86,   86,\n    86,   86,   89,   107,  90,   92,   90,   93,   94,   98,   143,  99,\n    144,  100,  186,  188,  189,  97,   190,  101,  303,  102,  187,  108,\n    445,  103,  104,  105,  106,  302,  107,  195,  86,   86,   86,   445,\n    98,   143,  99,   144,  100,  186,  188,  189,  131,  190,  101,  303,\n    102,  187,  108,  132,  103,  104,  105,  106,  109,  133,  115,  198,\n    200,  199,  116,  110,\n\n    201,  199,  117,  444,  120,  302,  111,  131,  118,  112,  113,  119,\n    114,  91,   132,  121,  134,  122,  304,  109,  133,  115,  123,  163,\n    135,  116,  110,  124,  301,  117,  136,  120,  153,  111,  164,  118,\n    112,  113,  119,  114,  165,  305,  121,  134,  122,  304,  154,  202,\n    203,  123,  163,  135,  155,  156,  124,  125,  145,  136,  240,  153,\n    146,  164,  300,  126,  147,  241,  127,  165,  305,  128,  148,  242,\n    129,  154,  205,  130,  86,   86,   206,  155,  156,  253,  125,  145,\n    204,  240,  200,  146,  92,   90,   126,  147,  241,  127,  195,  86,\n    128,  148,  242,  129,\n\n    194,  206,  130,  137,  138,  206,  206,  196,  253,  139,  140,  141,\n    299,  149,  206,  166,  142,  150,  311,  167,  183,  151,  184,  168,\n    252,  185,  206,  152,  206,  169,  137,  138,  206,  206,  206,  312,\n    139,  140,  141,  299,  149,  206,  166,  142,  150,  311,  167,  183,\n    151,  184,  168,  252,  185,  206,  152,  157,  169,  201,  199,  206,\n    313,  206,  312,  158,  193,  314,  327,  159,  191,  160,  161,  162,\n    96,   95,   91,   328,  87,   338,  1459, 47,   206,  243,  157,  297,\n    298,  206,  47,   313,  309,  244,  158,  310,  314,  327,  159,  245,\n    160,  161,  162,  170,\n\n    206,  171,  328,  172,  338,  206,  173,  206,  243,  306,  297,  298,\n    206,  174,  175,  309,  244,  307,  310,  1459, 308,  339,  245,  1459,\n    315,  316,  170,  206,  171,  1459, 172,  254,  206,  173,  340,  255,\n    306,  341,  317,  256,  174,  175,  176,  177,  307,  257,  178,  308,\n    339,  179,  180,  315,  316,  320,  342,  206,  181,  321,  254,  182,\n    1459, 340,  255,  1459, 341,  317,  256,  1459, 1459, 176,  177,  1459,\n    257,  178,  1459, 1459, 179,  180,  1459, 1459, 320,  342,  206,  181,\n    321,  1459, 182,  194,  194,  1459, 194,  194,  194,  194,  194,  194,\n    206,  194,  194,  194,\n\n    206,  207,  206,  208,  206,  209,  206,  206,  206,  206,  206,  210,\n    206,  211,  206,  206,  206,  212,  213,  214,  215,  206,  206,  206,\n    206,  206,  206,  206,  207,  206,  208,  206,  209,  206,  206,  206,\n    206,  206,  210,  206,  211,  206,  206,  206,  212,  213,  214,  215,\n    206,  206,  206,  206,  206,  194,  206,  258,  206,  216,  206,  259,\n    318,  336,  337,  260,  206,  325,  206,  319,  343,  261,  206,  206,\n    206,  206,  353,  326,  1459, 217,  1459, 206,  1459, 206,  258,  206,\n    216,  206,  259,  318,  336,  337,  260,  206,  325,  206,  319,  343,\n    261,  206,  206,  206,\n\n    206,  353,  326,  272,  217,  218,  206,  206,  329,  206,  356,  357,\n    219,  330,  273,  322,  323,  324,  349,  220,  274,  350,  221,  222,\n    358,  223,  1459, 206,  1459, 206,  272,  359,  218,  1459, 206,  329,\n    206,  356,  357,  219,  330,  273,  322,  323,  324,  349,  220,  274,\n    350,  221,  222,  358,  223,  206,  206,  275,  206,  224,  359,  276,\n    351,  225,  292,  277,  293,  226,  352,  294,  360,  278,  363,  227,\n    1459, 206,  228,  361,  1459, 364,  362,  206,  206,  206,  275,  1459,\n    224,  365,  276,  351,  225,  292,  277,  293,  226,  352,  294,  360,\n    278,  363,  227,  295,\n\n    206,  228,  361,  206,  364,  362,  206,  296,  206,  229,  331,  354,\n    365,  206,  366,  332,  373,  355,  374,  375,  230,  333,  231,  206,\n    367,  376,  295,  232,  334,  335,  206,  377,  233,  206,  296,  368,\n    229,  331,  354,  1459, 206,  366,  332,  373,  355,  374,  375,  230,\n    333,  231,  206,  367,  376,  1459, 232,  334,  335,  1459, 377,  233,\n    206,  234,  368,  383,  369,  206,  378,  384,  379,  235,  385,  380,\n    236,  381,  370,  237,  386,  387,  238,  371,  372,  239,  388,  389,\n    382,  206,  1459, 1459, 234,  390,  383,  369,  206,  378,  384,  379,\n    235,  385,  380,  236,\n\n    381,  370,  237,  386,  387,  238,  371,  372,  239,  388,  389,  382,\n    206,  206,  246,  247,  390,  391,  392,  393,  248,  249,  250,  394,\n    395,  396,  344,  251,  345,  397,  401,  408,  346,  206,  1459, 1459,\n    1459, 411,  1459, 347,  206,  246,  247,  348,  391,  392,  393,  248,\n    249,  250,  394,  395,  396,  344,  251,  345,  397,  401,  408,  346,\n    206,  262,  409,  398,  411,  206,  347,  399,  412,  416,  348,  400,\n    417,  410,  413,  263,  418,  419,  420,  423,  1459, 264,  265,  414,\n    426,  206,  1459, 1459, 262,  409,  398,  415,  206,  433,  399,  412,\n    416,  434,  400,  417,\n\n    410,  413,  263,  418,  419,  420,  423,  424,  264,  265,  414,  426,\n    206,  206,  266,  425,  421,  427,  415,  440,  433,  443,  267,  587,\n    434,  428,  268,  422,  269,  270,  271,  588,  1459, 206,  424,  1459,\n    1459, 429,  1459, 1459, 206,  266,  425,  421,  427,  441,  440,  589,\n    443,  267,  587,  442,  428,  268,  422,  269,  270,  271,  588,  430,\n    206,  279,  435,  280,  429,  281,  431,  438,  282,  432,  590,  436,\n    441,  591,  589,  283,  284,  437,  442,  206,  439,  206,  592,  593,\n    1459, 206,  430,  1459, 279,  435,  280,  446,  281,  431,  438,  282,\n    432,  590,  436,  206,\n\n    591,  206,  283,  284,  437,  594,  206,  439,  206,  592,  593,  206,\n    206,  285,  286,  447,  206,  287,  446,  206,  288,  289,  595,  596,\n    454,  1459, 206,  290,  206,  1459, 291,  206,  594,  1459, 448,  597,\n    206,  206,  206,  206,  285,  286,  447,  206,  287,  1459, 206,  288,\n    289,  595,  596,  454,  452,  206,  290,  453,  206,  291,  206,  1459,\n    449,  448,  597,  206,  206,  402,  206,  403,  450,  206,  404,  451,\n    405,  206,  406,  598,  206,  407,  1459, 452,  206,  602,  453,  206,\n    455,  603,  206,  449,  1459, 206,  206,  606,  402,  1459, 403,  450,\n    206,  404,  451,  405,\n\n    206,  406,  598,  206,  407,  456,  206,  206,  602,  206,  206,  455,\n    603,  206,  1459, 463,  206,  206,  606,  464,  468,  206,  457,  206,\n    458,  459,  470,  206,  461,  206,  469,  609,  456,  206,  206,  462,\n    206,  206,  460,  206,  206,  206,  463,  206,  1459, 1459, 464,  468,\n    206,  457,  206,  458,  459,  470,  206,  461,  206,  469,  609,  206,\n    206,  206,  462,  206,  206,  460,  206,  206,  206,  482,  206,  465,\n    466,  467,  471,  472,  479,  480,  1459, 206,  473,  206,  610,  206,\n    206,  1459, 206,  206,  206,  1459, 206,  206,  611,  483,  1459, 206,\n    482,  1459, 465,  466,\n\n    467,  471,  472,  479,  480,  206,  206,  473,  206,  610,  206,  206,\n    474,  206,  614,  206,  206,  475,  1459, 611,  483,  481,  206,  476,\n    486,  206,  206,  484,  485,  206,  477,  478,  206,  206,  1459, 1459,\n    206,  1459, 1459, 474,  206,  614,  206,  206,  475,  607,  206,  1459,\n    481,  206,  476,  486,  206,  206,  484,  485,  206,  477,  478,  608,\n    206,  206,  206,  206,  206,  492,  1459, 1459, 493,  494,  619,  1459,\n    607,  206,  496,  495,  206,  487,  206,  488,  206,  206,  206,  489,\n    206,  500,  608,  497,  206,  206,  490,  206,  492,  498,  491,  493,\n    494,  619,  206,  206,\n\n    206,  496,  495,  206,  487,  206,  488,  206,  206,  206,  489,  206,\n    500,  499,  497,  206,  1459, 490,  206,  206,  498,  491,  620,  206,\n    501,  206,  206,  206,  502,  503,  206,  1459, 206,  1459, 206,  206,\n    1459, 1459, 206,  206,  499,  506,  206,  206,  206,  206,  206,  621,\n    509,  620,  206,  501,  206,  206,  206,  502,  503,  504,  206,  206,\n    505,  206,  206,  206,  206,  206,  206,  508,  506,  507,  206,  206,\n    510,  206,  621,  509,  622,  206,  206,  206,  206,  206,  623,  511,\n    504,  206,  516,  505,  1459, 1459, 206,  206,  206,  1459, 508,  206,\n    507,  206,  206,  510,\n\n    206,  615,  517,  622,  206,  206,  616,  206,  1459, 623,  511,  1459,\n    206,  516,  1459, 518,  528,  1459, 206,  206,  512,  206,  206,  1459,\n    206,  206,  519,  206,  615,  517,  513,  1459, 206,  616,  206,  514,\n    515,  624,  206,  206,  206,  206,  518,  528,  521,  206,  522,  512,\n    206,  206,  520,  625,  1459, 519,  206,  526,  1459, 513,  206,  206,\n    206,  1459, 514,  515,  624,  206,  206,  206,  206,  206,  523,  521,\n    524,  522,  206,  206,  206,  520,  625,  527,  626,  1459, 526,  525,\n    529,  206,  206,  206,  206,  206,  627,  1459, 1459, 206,  206,  206,\n    206,  523,  206,  524,\n\n    1459, 206,  206,  530,  531,  532,  527,  626,  206,  206,  525,  529,\n    1459, 206,  206,  206,  206,  627,  206,  533,  1459, 206,  206,  206,\n    630,  206,  1459, 206,  534,  206,  530,  531,  532,  538,  206,  206,\n    206,  535,  206,  206,  1459, 206,  536,  206,  537,  206,  533,  206,\n    1459, 206,  206,  630,  1459, 206,  206,  534,  206,  631,  206,  206,\n    538,  206,  206,  540,  535,  206,  206,  206,  1459, 536,  206,  537,\n    1459, 541,  206,  539,  206,  542,  1459, 206,  206,  543,  206,  206,\n    631,  206,  206,  206,  544,  206,  540,  1459, 632,  206,  206,  551,\n    560,  206,  206,  206,\n\n    541,  566,  539,  206,  542,  552,  206,  1459, 543,  206,  206,  1459,\n    1459, 206,  206,  544,  553,  1459, 206,  632,  206,  206,  551,  560,\n    206,  206,  206,  206,  566,  545,  206,  546,  552,  206,  547,  556,\n    548,  206,  549,  206,  206,  550,  555,  553,  557,  206,  1459, 206,\n    206,  1459, 554,  633,  558,  206,  206,  1459, 545,  206,  546,  206,\n    206,  547,  556,  548,  206,  549,  206,  562,  550,  555,  206,  557,\n    206,  617,  206,  1459, 206,  554,  633,  558,  206,  561,  559,  563,\n    206,  206,  206,  206,  618,  634,  206,  206,  206,  567,  562,  564,\n    206,  206,  1459, 206,\n\n    617,  568,  569,  206,  1459, 206,  565,  206,  561,  559,  563,  206,\n    206,  206,  206,  618,  634,  206,  206,  206,  567,  206,  564,  206,\n    1459, 577,  635,  570,  568,  569,  1459, 206,  206,  565,  206,  571,\n    573,  581,  206,  206,  206,  206,  1459, 574,  576,  206,  575,  572,\n    206,  1459, 582,  206,  577,  635,  570,  1459, 638,  206,  206,  206,\n    583,  639,  571,  573,  581,  206,  206,  578,  206,  206,  574,  576,\n    206,  575,  572,  1459, 579,  582,  206,  1459, 206,  612,  580,  638,\n    206,  613,  206,  583,  639,  206,  206,  586,  206,  628,  578,  206,\n    206,  604,  636,  584,\n\n    629,  640,  599,  579,  600,  585,  605,  206,  612,  580,  206,  641,\n    613,  637,  642,  206,  206,  206,  586,  601,  628,  643,  206,  644,\n    604,  636,  584,  629,  640,  599,  645,  600,  585,  605,  646,  647,\n    648,  206,  641,  649,  637,  642,  206,  650,  651,  652,  601,  653,\n    643,  654,  644,  655,  656,  660,  658,  661,  662,  645,  663,  664,\n    665,  646,  647,  648,  659,  666,  649,  657,  667,  668,  650,  651,\n    652,  669,  653,  670,  654,  671,  655,  656,  660,  658,  661,  662,\n    672,  663,  664,  665,  673,  674,  675,  659,  666,  676,  657,  667,\n    668,  677,  678,  679,\n\n    669,  680,  670,  681,  671,  684,  685,  688,  682,  686,  689,  672,\n    690,  691,  692,  673,  674,  675,  693,  694,  676,  695,  687,  696,\n    677,  678,  679,  683,  680,  697,  681,  698,  684,  685,  688,  682,\n    686,  689,  699,  690,  691,  692,  700,  701,  702,  693,  694,  703,\n    695,  687,  696,  704,  705,  706,  683,  707,  697,  708,  698,  709,\n    710,  711,  712,  713,  714,  699,  716,  719,  720,  700,  701,  702,\n    721,  715,  703,  717,  722,  718,  704,  705,  706,  723,  707,  724,\n    708,  725,  709,  710,  711,  712,  713,  714,  726,  716,  719,  720,\n    729,  727,  730,  721,\n\n    715,  728,  717,  722,  718,  731,  206,  206,  723,  733,  724,  206,\n    725,  735,  1459, 734,  877,  206,  1459, 726,  732,  206,  1459, 729,\n    727,  730,  206,  206,  728,  206,  206,  206,  731,  206,  206,  206,\n    733,  206,  206,  206,  735,  206,  734,  877,  206,  737,  736,  732,\n    206,  206,  206,  738,  878,  206,  206,  206,  206,  206,  206,  206,\n    206,  206,  206,  206,  206,  879,  206,  741,  206,  206,  739,  740,\n    737,  736,  1459, 206,  206,  206,  738,  878,  206,  206,  206,  206,\n    206,  206,  206,  206,  206,  1459, 206,  743,  879,  206,  741,  880,\n    206,  739,  740,  744,\n\n    1459, 745,  206,  742,  206,  206,  747,  206,  206,  1459, 206,  206,\n    206,  206,  881,  748,  746,  206,  743,  206,  206,  206,  880,  1459,\n    1459, 882,  744,  751,  745,  206,  742,  206,  206,  747,  1459, 883,\n    749,  206,  1459, 206,  206,  881,  748,  746,  206,  750,  206,  206,\n    206,  206,  206,  752,  882,  206,  751,  754,  206,  1459, 1459, 206,\n    884,  755,  883,  749,  206,  753,  206,  206,  1459, 206,  206,  206,\n    750,  206,  206,  885,  206,  206,  752,  206,  206,  757,  754,  206,\n    756,  758,  206,  884,  755,  206,  759,  206,  753,  764,  206,  206,\n    206,  206,  206,  1459,\n\n    206,  886,  885,  206,  762,  206,  206,  766,  757,  760,  206,  756,\n    758,  206,  761,  206,  206,  759,  206,  763,  764,  765,  206,  206,\n    206,  206,  768,  206,  886,  206,  206,  762,  206,  206,  766,  887,\n    760,  1459, 767,  771,  206,  761,  206,  206,  206,  206,  763,  206,\n    765,  206,  206,  206,  206,  768,  206,  769,  206,  1459, 206,  206,\n    206,  770,  887,  1459, 206,  767,  771,  206,  1459, 772,  206,  206,\n    206,  206,  206,  206,  206,  773,  206,  775,  1459, 206,  769,  206,\n    774,  206,  206,  1459, 770,  776,  777,  206,  1459, 206,  206,  206,\n    772,  206,  781,  206,\n\n    206,  206,  206,  206,  773,  206,  775,  206,  206,  206,  206,  774,\n    778,  782,  779,  888,  776,  777,  206,  206,  206,  889,  206,  780,\n    206,  781,  206,  206,  206,  206,  206,  784,  206,  206,  206,  206,\n    206,  206,  890,  778,  782,  779,  888,  206,  785,  206,  206,  783,\n    889,  788,  780,  786,  206,  206,  206,  206,  206,  206,  784,  206,\n    206,  206,  206,  206,  206,  890,  1459, 891,  787,  206,  206,  785,\n    206,  206,  783,  791,  788,  892,  786,  206,  206,  206,  206,  789,\n    206,  1459, 206,  206,  206,  790,  206,  792,  206,  206,  891,  787,\n    206,  206,  1459, 206,\n\n    206,  206,  791,  1459, 892,  893,  206,  206,  206,  206,  789,  795,\n    793,  206,  206,  799,  790,  206,  792,  206,  206,  206,  794,  1459,\n    206,  206,  797,  206,  206,  206,  206,  796,  893,  206,  206,  206,\n    206,  1459, 795,  793,  798,  800,  799,  206,  206,  206,  894,  206,\n    206,  794,  206,  801,  206,  797,  206,  803,  206,  206,  796,  805,\n    206,  206,  206,  206,  206,  804,  802,  798,  800,  806,  206,  206,\n    206,  894,  206,  206,  1459, 206,  801,  206,  206,  809,  803,  1459,\n    206,  206,  805,  206,  206,  1459, 206,  206,  804,  802,  807,  895,\n    806,  1459, 206,  206,\n\n    808,  206,  206,  811,  206,  206,  206,  206,  809,  206,  812,  206,\n    206,  810,  206,  206,  814,  813,  206,  1459, 896,  807,  895,  897,\n    206,  1459, 206,  808,  206,  206,  811,  206,  206,  206,  206,  206,\n    206,  812,  206,  1459, 810,  206,  206,  814,  813,  206,  206,  896,\n    815,  816,  897,  206,  206,  206,  206,  1459, 206,  206,  823,  1459,\n    206,  206,  206,  824,  820,  206,  206,  817,  206,  206,  818,  819,\n    206,  206,  206,  815,  816,  206,  206,  206,  206,  206,  821,  206,\n    206,  823,  206,  825,  206,  206,  824,  820,  1459, 206,  817,  206,\n    206,  818,  819,  206,\n\n    822,  206,  898,  206,  206,  206,  206,  206,  206,  821,  206,  206,\n    829,  206,  825,  206,  206,  1459, 827,  833,  835,  826,  206,  206,\n    206,  1459, 830,  822,  206,  898,  206,  206,  1459, 206,  206,  206,\n    1459, 828,  206,  829,  206,  831,  206,  206,  206,  827,  833,  835,\n    826,  206,  206,  206,  206,  830,  832,  206,  837,  206,  206,  834,\n    899,  836,  900,  206,  828,  844,  1459, 206,  831,  206,  206,  206,\n    206,  206,  838,  1459, 206,  206,  206,  206,  839,  832,  206,  837,\n    206,  206,  834,  899,  836,  900,  206,  206,  844,  206,  841,  845,\n    206,  840,  206,  206,\n\n    206,  838,  206,  206,  206,  206,  206,  839,  847,  206,  843,  206,\n    206,  842,  1459, 206,  206,  1459, 206,  206,  206,  841,  845,  206,\n    840,  206,  206,  206,  206,  206,  901,  206,  1459, 206,  902,  847,\n    903,  843,  206,  206,  842,  846,  206,  206,  206,  848,  206,  206,\n    1459, 206,  206,  206,  1459, 206,  206,  206,  851,  901,  206,  849,\n    206,  902,  206,  903,  206,  850,  206,  1459, 846,  206,  206,  206,\n    848,  852,  206,  206,  206,  206,  206,  206,  206,  856,  206,  851,\n    206,  206,  849,  206,  854,  206,  853,  206,  850,  1459, 206,  206,\n    206,  206,  855,  206,\n\n    852,  206,  206,  857,  206,  206,  206,  206,  856,  206,  1459, 206,\n    206,  1459, 206,  854,  206,  853,  858,  904,  859,  206,  206,  1459,\n    206,  855,  206,  1459, 206,  860,  857,  206,  206,  865,  861,  1459,\n    206,  206,  206,  206,  206,  206,  905,  206,  206,  858,  904,  859,\n    862,  864,  863,  206,  206,  206,  206,  906,  860,  206,  206,  206,\n    865,  861,  866,  206,  206,  206,  206,  206,  867,  905,  868,  206,\n    206,  206,  206,  862,  864,  863,  206,  206,  206,  206,  906,  1459,\n    206,  206,  206,  206,  869,  866,  206,  874,  206,  1459, 1459, 867,\n    870,  868,  206,  206,\n\n    206,  206,  871,  907,  1459, 206,  206,  206,  206,  875,  206,  206,\n    206,  908,  206,  869,  909,  206,  874,  206,  872,  876,  910,  870,\n    873,  206,  206,  911,  206,  871,  907,  206,  912,  206,  206,  206,\n    875,  206,  206,  206,  908,  913,  914,  909,  915,  916,  917,  872,\n    876,  910,  918,  873,  919,  206,  911,  206,  920,  921,  206,  912,\n    922,  923,  924,  925,  926,  927,  928,  929,  913,  914,  930,  915,\n    916,  917,  931,  932,  935,  918,  936,  919,  937,  938,  939,  920,\n    921,  933,  942,  922,  923,  924,  925,  926,  927,  928,  929,  943,\n    934,  930,  940,  941,\n\n    944,  931,  932,  935,  945,  936,  946,  937,  938,  939,  947,  948,\n    933,  942,  949,  950,  951,  952,  953,  954,  955,  956,  943,  934,\n    957,  940,  941,  944,  958,  959,  960,  945,  961,  946,  962,  963,\n    964,  947,  948,  965,  966,  949,  950,  951,  952,  953,  954,  955,\n    956,  967,  968,  957,  969,  970,  971,  958,  959,  960,  972,  961,\n    973,  962,  963,  964,  974,  975,  965,  966,  976,  977,  978,  979,\n    980,  981,  982,  983,  967,  968,  984,  969,  970,  971,  985,  986,\n    987,  972,  988,  973,  989,  1103, 1459, 974,  975,  1459, 206,  976,\n    977,  978,  979,  980,\n\n    981,  982,  983,  206,  206,  984,  206,  991,  206,  985,  986,  987,\n    206,  988,  206,  989,  1103, 992,  990,  1459, 996,  206,  206,  206,\n    206,  1459, 993,  1459, 994,  1459, 206,  206,  995,  206,  991,  206,\n    206,  206,  1000, 206,  997,  206,  206,  1459, 992,  990,  999,  996,\n    206,  206,  206,  206,  206,  993,  206,  994,  206,  206,  206,  995,\n    206,  998,  1001, 206,  206,  1000, 206,  997,  206,  206,  206,  206,\n    206,  999,  206,  206,  1459, 1002, 1003, 206,  206,  206,  206,  206,\n    206,  206,  206,  206,  998,  1001, 206,  206,  206,  206,  1459, 206,\n    206,  206,  206,  206,\n\n    1004, 206,  206,  1006, 1002, 1003, 206,  206,  206,  206,  1005, 1010,\n    206,  206,  1459, 1459, 206,  206,  206,  206,  1104, 1007, 206,  206,\n    1105, 206,  206,  1004, 206,  206,  1006, 206,  1459, 206,  206,  206,\n    1009, 1005, 1010, 206,  1008, 1011, 206,  206,  206,  206,  206,  1104,\n    1007, 206,  206,  1105, 206,  206,  206,  206,  1014, 1012, 206,  206,\n    1459, 206,  1013, 1009, 206,  1459, 206,  1008, 1011, 206,  206,  206,\n    206,  206,  1015, 1459, 206,  206,  1016, 206,  1459, 206,  206,  1014,\n    1012, 1459, 206,  206,  1018, 1013, 206,  206,  206,  206,  1019, 1459,\n    206,  206,  206,  1021,\n\n    1017, 1015, 206,  206,  206,  1016, 206,  206,  1020, 206,  206,  1459,\n    206,  206,  206,  1018, 206,  206,  206,  206,  1459, 1019, 206,  206,\n    206,  206,  1021, 1017, 206,  206,  206,  206,  206,  206,  206,  1020,\n    206,  206,  206,  206,  206,  1022, 206,  206,  1024, 206,  206,  1023,\n    206,  206,  206,  206,  206,  1459, 1025, 206,  206,  206,  206,  206,\n    206,  1026, 1106, 206,  1029, 206,  206,  206,  1022, 206,  1030, 1024,\n    1027, 206,  1023, 206,  206,  206,  1028, 206,  206,  1025, 206,  206,\n    206,  206,  206,  206,  1026, 1106, 206,  1029, 206,  206,  206,  1031,\n    206,  1030, 206,  1027,\n\n    206,  1032, 206,  206,  206,  1028, 206,  206,  1033, 206,  1459, 206,\n    206,  206,  206,  1107, 1035, 206,  206,  206,  206,  206,  1031, 206,\n    206,  206,  206,  206,  1032, 206,  206,  206,  206,  206,  1034, 1033,\n    206,  1036, 1108, 206,  206,  206,  1107, 1035, 1459, 206,  206,  206,\n    206,  206,  206,  206,  206,  206,  1039, 1459, 206,  206,  1037, 206,\n    1109, 1034, 206,  206,  1036, 1108, 206,  206,  206,  206,  1040, 206,\n    1459, 206,  206,  1038, 206,  206,  1459, 206,  206,  1039, 206,  206,\n    1041, 1037, 206,  1109, 1045, 206,  206,  206,  206,  206,  206,  1459,\n    206,  1040, 206,  1042,\n\n    206,  206,  1038, 1043, 206,  1044, 1459, 206,  206,  206,  206,  1041,\n    206,  206,  206,  1045, 206,  206,  206,  206,  206,  206,  1046, 1048,\n    206,  206,  1042, 206,  206,  1459, 1043, 206,  1044, 1047, 206,  206,\n    206,  206,  206,  206,  206,  206,  206,  206,  1110, 206,  206,  206,\n    206,  1046, 1048, 206,  206,  1049, 206,  206,  206,  206,  206,  1051,\n    1047, 206,  206,  206,  1050, 206,  206,  206,  1052, 206,  1459, 1110,\n    206,  206,  206,  206,  206,  206,  1057, 206,  1049, 206,  206,  206,\n    206,  206,  1051, 206,  206,  206,  1055, 1050, 1056, 206,  206,  1052,\n    1053, 1054, 206,  206,\n\n    1060, 206,  206,  206,  206,  1057, 206,  206,  1059, 206,  206,  1111,\n    1058, 1459, 206,  206,  206,  1055, 206,  1056, 206,  206,  206,  1053,\n    1054, 206,  206,  1060, 206,  206,  206,  206,  206,  206,  206,  1059,\n    206,  206,  1111, 1058, 1064, 1061, 206,  206,  1062, 206,  1063, 206,\n    206,  206,  206,  206,  206,  206,  1065, 206,  206,  206,  206,  206,\n    206,  1068, 1067, 206,  1066, 206,  1112, 1064, 1061, 206,  206,  1062,\n    1113, 1063, 1070, 206,  206,  206,  206,  206,  206,  1065, 206,  206,\n    1114, 206,  1069, 206,  1068, 1067, 206,  1066, 206,  1112, 206,  1072,\n    206,  206,  1459, 1113,\n\n    1073, 1070, 1459, 206,  206,  206,  1071, 206,  1115, 206,  206,  1114,\n    206,  1069, 206,  1075, 206,  206,  206,  206,  1077, 206,  1072, 206,\n    206,  206,  1074, 1073, 206,  206,  1459, 206,  206,  1071, 206,  1115,\n    1459, 206,  206,  206,  1459, 1076, 1075, 206,  1459, 206,  206,  1077,\n    206,  206,  1459, 206,  206,  1074, 1078, 206,  206,  206,  206,  206,\n    206,  1082, 206,  206,  1459, 206,  206,  1080, 1076, 1079, 1459, 1081,\n    1083, 1085, 1459, 206,  206,  206,  206,  206,  206,  1078, 206,  206,\n    206,  206,  206,  206,  1082, 206,  206,  206,  206,  206,  1080, 1084,\n    1079, 206,  1081, 1083,\n\n    1085, 206,  1459, 206,  206,  206,  206,  206,  1459, 206,  206,  206,\n    206,  1086, 1459, 206,  206,  206,  206,  206,  206,  206,  1084, 206,\n    206,  1116, 1459, 206,  206,  1087, 206,  206,  206,  1089, 1459, 206,\n    206,  206,  206,  206,  1086, 1088, 206,  206,  206,  206,  1092, 206,\n    206,  1117, 206,  206,  1116, 1090, 206,  206,  1087, 206,  206,  206,\n    1089, 1091, 206,  206,  206,  206,  1094, 206,  1088, 206,  206,  206,\n    206,  1092, 206,  206,  1117, 1459, 206,  206,  1090, 1096, 206,  1093,\n    206,  1097, 1095, 206,  1091, 206,  206,  206,  206,  1094, 206,  1098,\n    206,  206,  206,  206,\n\n    206,  206,  206,  1099, 206,  1118, 206,  1459, 1096, 206,  1093, 1119,\n    1097, 1095, 206,  206,  206,  206,  206,  1101, 206,  206,  1098, 206,\n    206,  1100, 206,  206,  206,  206,  1099, 206,  1118, 1102, 206,  206,\n    206,  1120, 1119, 206,  1121, 1122, 206,  206,  1123, 1124, 1101, 206,\n    206,  1125, 206,  206,  1100, 1126, 206,  206,  206,  1127, 1128, 1129,\n    1102, 206,  206,  1131, 1120, 1132, 206,  1121, 1122, 1133, 206,  1123,\n    1124, 1134, 1130, 1135, 1125, 1136, 1137, 1138, 1126, 206,  206,  1139,\n    1127, 1128, 1129, 1140, 1141, 1142, 1131, 1143, 1132, 1144, 1145, 1146,\n    1133, 1147, 1148, 1149,\n\n    1134, 1130, 1135, 1150, 1136, 1137, 1138, 1151, 1152, 1153, 1139, 1154,\n    1155, 1156, 1140, 1141, 1142, 1157, 1143, 1158, 1144, 1145, 1146, 1159,\n    1147, 1148, 1149, 1160, 1161, 1162, 1150, 1163, 1164, 1165, 1151, 1152,\n    1153, 1166, 1154, 1155, 1156, 1167, 1168, 1169, 1157, 1170, 1158, 1171,\n    1172, 1173, 1159, 1174, 1175, 1176, 1160, 1161, 1162, 1177, 1163, 1164,\n    1165, 1178, 1179, 1180, 1166, 1181, 1182, 1183, 1167, 1168, 1169, 1184,\n    1170, 1185, 1171, 1172, 1173, 1186, 1174, 1175, 1176, 1187, 1188, 206,\n    1177, 206,  206,  206,  1178, 1179, 1180, 206,  1181, 1182, 1183, 206,\n    1275, 1193, 1184, 206,\n\n    1185, 1189, 1191, 206,  1186, 206,  206,  206,  1187, 1188, 206,  206,\n    206,  206,  206,  206,  1190, 206,  206,  206,  1459, 206,  206,  1275,\n    1193, 1194, 206,  206,  1189, 1191, 206,  206,  206,  206,  206,  206,\n    1192, 1459, 206,  1195, 206,  206,  206,  1190, 206,  206,  206,  206,\n    206,  1459, 1196, 206,  1194, 1276, 206,  206,  206,  1459, 206,  1277,\n    206,  206,  206,  1192, 206,  1197, 1195, 206,  206,  206,  1201, 1200,\n    206,  1199, 206,  206,  206,  1196, 206,  1198, 1276, 206,  206,  206,\n    206,  206,  1277, 206,  206,  206,  206,  206,  1197, 1459, 1202, 206,\n    206,  1201, 1200, 1207,\n\n    1199, 1278, 206,  206,  206,  206,  1198, 206,  206,  1203, 206,  206,\n    206,  206,  1204, 1279, 206,  206,  206,  206,  1206, 1202, 206,  1459,\n    206,  1205, 1207, 206,  1278, 206,  206,  206,  206,  206,  206,  206,\n    1203, 206,  206,  1208, 206,  1204, 1279, 1459, 1210, 206,  206,  1206,\n    1212, 206,  206,  206,  1205, 1209, 206,  206,  206,  206,  206,  1213,\n    206,  1459, 206,  1280, 1281, 206,  1208, 1211, 206,  206,  206,  1210,\n    1215, 206,  1282, 1212, 206,  206,  206,  206,  1209, 1459, 206,  206,\n    1214, 206,  1213, 1216, 206,  206,  1280, 1281, 1459, 206,  1211, 206,\n    206,  206,  1217, 1215,\n\n    206,  1282, 1218, 206,  206,  206,  206,  206,  206,  1459, 206,  1214,\n    206,  206,  1216, 206,  206,  1219, 1223, 1220, 206,  206,  206,  206,\n    206,  1217, 1283, 206,  1459, 1218, 206,  206,  206,  206,  206,  206,\n    1221, 206,  1459, 206,  206,  206,  206,  206,  1219, 1223, 1220, 206,\n    206,  206,  206,  206,  1227, 1283, 206,  1222, 206,  206,  206,  206,\n    206,  1225, 1228, 1221, 206,  1224, 206,  206,  206,  206,  206,  206,\n    206,  1226, 206,  206,  206,  1230, 206,  1227, 1459, 206,  1222, 206,\n    206,  206,  206,  1233, 1225, 1228, 1229, 206,  1224, 206,  206,  206,\n    206,  206,  206,  206,\n\n    1226, 206,  206,  206,  1230, 206,  1232, 206,  206,  206,  206,  1231,\n    206,  206,  1233, 206,  206,  1229, 206,  1459, 206,  206,  206,  206,\n    206,  206,  1234, 1235, 206,  206,  206,  206,  206,  1232, 206,  206,\n    206,  206,  1231, 206,  206,  206,  206,  206,  1236, 206,  206,  206,\n    206,  1284, 206,  206,  206,  1234, 1235, 1459, 206,  206,  206,  206,\n    206,  1237, 206,  206,  206,  206,  206,  206,  206,  1238, 206,  1236,\n    206,  206,  206,  206,  1284, 206,  206,  206,  206,  1285, 1239, 206,\n    206,  206,  1459, 206,  1237, 1240, 206,  206,  206,  206,  206,  206,\n    1238, 206,  1241, 206,\n\n    1242, 206,  206,  206,  206,  1459, 206,  206,  1285, 1239, 206,  206,\n    206,  1244, 1245, 206,  1240, 206,  1243, 206,  206,  206,  206,  206,\n    1459, 1241, 206,  1242, 206,  1459, 206,  206,  1246, 206,  1248, 206,\n    206,  206,  206,  206,  1244, 1245, 206,  1286, 206,  1243, 206,  206,\n    206,  1247, 206,  1250, 1249, 206,  206,  206,  206,  206,  206,  1246,\n    206,  1248, 206,  206,  206,  206,  206,  1251, 206,  206,  1286, 206,\n    1252, 1287, 1459, 206,  1247, 206,  1250, 1249, 206,  206,  1253, 206,\n    206,  206,  206,  206,  206,  206,  1256, 206,  1288, 1459, 1251, 206,\n    206,  1254, 206,  1252,\n\n    1287, 1255, 1258, 206,  206,  206,  206,  206,  1459, 1253, 1289, 206,\n    1459, 206,  206,  206,  206,  1256, 206,  1288, 206,  1290, 1259, 206,\n    1254, 206,  206,  1459, 1255, 1258, 206,  206,  206,  206,  206,  1257,\n    1459, 1289, 206,  1263, 206,  206,  1459, 206,  206,  1260, 206,  206,\n    1290, 1259, 206,  206,  206,  206,  1261, 1264, 1265, 206,  206,  1262,\n    206,  206,  1257, 206,  206,  206,  1263, 206,  206,  1267, 206,  206,\n    1260, 206,  1266, 206,  1291, 206,  206,  1269, 206,  1261, 1264, 1265,\n    206,  206,  1262, 206,  206,  206,  206,  206,  206,  1268, 206,  206,\n    1267, 206,  206,  206,\n\n    1459, 1266, 206,  1291, 206,  1270, 1269, 206,  1292, 206,  1459, 1293,\n    206,  1294, 206,  206,  206,  206,  206,  1459, 1268, 206,  206,  1271,\n    206,  206,  206,  1272, 206,  206,  1459, 206,  1270, 1273, 1295, 1292,\n    206,  206,  1293, 1296, 1294, 206,  206,  1297, 206,  206,  1274, 1298,\n    206,  1299, 1271, 206,  1300, 1301, 1272, 206,  206,  206,  206,  1302,\n    1273, 1295, 1303, 1304, 206,  1305, 1296, 1306, 1307, 1308, 1297, 1309,\n    1310, 1274, 1298, 206,  1299, 1311, 206,  1300, 1301, 1312, 1313, 1314,\n    206,  1315, 1302, 1316, 1317, 1303, 1304, 1318, 1305, 1319, 1306, 1307,\n    1308, 1320, 1309, 1310,\n\n    1321, 1322, 1323, 1324, 1311, 1325, 206,  1459, 1312, 1313, 1314, 1326,\n    1315, 1459, 1316, 1317, 206,  1327, 1318, 206,  1319, 206,  1329, 1377,\n    1320, 206,  206,  1321, 1322, 1323, 1324, 206,  1325, 206,  1328, 1330,\n    206,  206,  1326, 206,  206,  206,  206,  206,  1327, 206,  206,  1459,\n    206,  1329, 1377, 1331, 206,  206,  1332, 206,  206,  206,  206,  206,\n    206,  1328, 1330, 206,  206,  206,  206,  206,  206,  206,  206,  1336,\n    206,  206,  206,  1338, 206,  1333, 1331, 206,  1334, 1332, 206,  206,\n    206,  206,  206,  206,  1335, 1459, 206,  1378, 206,  206,  206,  206,\n    206,  206,  1336, 206,\n\n    206,  206,  1338, 206,  1333, 1339, 206,  1334, 206,  206,  206,  1337,\n    206,  206,  206,  1335, 206,  206,  1378, 206,  206,  206,  206,  206,\n    206,  1340, 206,  206,  206,  206,  206,  1459, 1339, 206,  206,  206,\n    206,  206,  1337, 1341, 206,  206,  1343, 206,  206,  206,  206,  206,\n    206,  1342, 206,  206,  1340, 1379, 206,  206,  206,  206,  206,  206,\n    206,  206,  206,  1380, 206,  206,  1341, 1344, 206,  1343, 206,  206,\n    206,  206,  206,  206,  1342, 206,  206,  1345, 1379, 206,  206,  206,\n    206,  206,  206,  1346, 1347, 206,  1380, 206,  206,  206,  1344, 206,\n    206,  206,  206,  1381,\n\n    206,  206,  206,  206,  206,  206,  1345, 206,  206,  206,  206,  206,\n    1349, 206,  1346, 1347, 206,  206,  206,  1348, 206,  1350, 206,  206,\n    206,  206,  1381, 206,  206,  206,  206,  206,  1352, 206,  206,  206,\n    1459, 206,  206,  1349, 206,  1459, 206,  206,  206,  206,  1348, 206,\n    1350, 206,  206,  206,  206,  1382, 206,  206,  1383, 1459, 206,  1352,\n    206,  206,  206,  1351, 206,  206,  206,  206,  1353, 206,  206,  206,\n    1355, 1354, 206,  1459, 206,  206,  1459, 206,  1382, 206,  206,  1383,\n    206,  206,  206,  206,  206,  1359, 1351, 206,  206,  206,  206,  1353,\n    206,  206,  206,  1355,\n\n    1354, 206,  1356, 206,  206,  1357, 206,  206,  206,  206,  1358, 206,\n    1360, 206,  206,  1459, 1359, 1459, 206,  206,  1362, 206,  206,  206,\n    206,  1363, 206,  1459, 206,  1356, 1459, 206,  1357, 206,  206,  1459,\n    206,  1358, 1384, 1360, 206,  1361, 206,  206,  206,  206,  206,  1362,\n    206,  206,  1459, 206,  1363, 206,  1364, 1365, 206,  206,  206,  206,\n    1367, 1459, 1366, 206,  1385, 1384, 206,  206,  1361, 206,  206,  206,\n    206,  206,  206,  1386, 206,  206,  206,  206,  206,  1364, 1365, 206,\n    206,  206,  206,  1367, 206,  1366, 206,  1385, 1369, 206,  206,  1368,\n    206,  206,  206,  1459,\n\n    206,  206,  1386, 206,  206,  206,  206,  206,  206,  1370, 1371, 1372,\n    206,  206,  206,  206,  206,  206,  206,  1369, 1459, 206,  1368, 206,\n    206,  206,  206,  206,  206,  1373, 1374, 206,  206,  206,  206,  206,\n    1370, 1371, 1372, 206,  206,  206,  206,  206,  206,  206,  206,  206,\n    206,  1387, 206,  206,  206,  206,  1388, 206,  1373, 1374, 206,  206,\n    206,  206,  206,  1375, 206,  1389, 1390, 206,  1391, 206,  206,  1376,\n    206,  206,  206,  206,  1387, 206,  206,  206,  1392, 1388, 1393, 1394,\n    206,  1395, 1396, 1397, 1398, 206,  1375, 206,  1389, 1390, 206,  1391,\n    1399, 206,  1376, 206,\n\n    1400, 206,  206,  1459, 206,  206,  206,  1392, 1459, 1393, 1394, 206,\n    1395, 1396, 1397, 1398, 206,  1401, 206,  206,  206,  206,  206,  1399,\n    206,  206,  206,  1400, 206,  206,  1403, 206,  206,  206,  1402, 206,\n    206,  1459, 206,  206,  206,  1459, 1425, 206,  1401, 206,  206,  206,\n    206,  206,  206,  206,  206,  206,  1404, 206,  1406, 1403, 206,  1405,\n    206,  1402, 206,  206,  206,  206,  206,  206,  206,  1425, 206,  1459,\n    206,  206,  206,  1459, 206,  206,  206,  1407, 206,  1404, 206,  1406,\n    206,  206,  1405, 206,  206,  1408, 206,  206,  206,  206,  206,  206,\n    1459, 206,  1410, 206,\n\n    206,  206,  1411, 206,  206,  206,  1407, 206,  206,  1459, 206,  206,\n    206,  1409, 1426, 206,  1408, 206,  206,  206,  206,  206,  206,  206,\n    206,  1410, 206,  1427, 206,  1411, 206,  206,  206,  1459, 1412, 206,\n    206,  206,  1414, 206,  1409, 1426, 206,  206,  206,  206,  206,  206,\n    1459, 206,  206,  206,  1415, 206,  1427, 206,  206,  206,  206,  206,\n    1413, 1412, 206,  206,  206,  1414, 206,  206,  206,  206,  206,  206,\n    206,  206,  206,  1416, 206,  206,  1459, 1415, 1459, 206,  1459, 206,\n    1428, 206,  206,  1413, 206,  206,  206,  206,  206,  206,  206,  206,\n    206,  206,  206,  206,\n\n    206,  206,  1416, 206,  206,  1417, 1418, 1419, 206,  206,  206,  1428,\n    1459, 206,  1459, 206,  1459, 206,  206,  206,  206,  1429, 206,  206,\n    206,  206,  206,  206,  206,  206,  206,  206,  1417, 1418, 1419, 1420,\n    206,  206,  1421, 1423, 1424, 1422, 206,  206,  206,  206,  206,  206,\n    1429, 206,  206,  206,  1430, 206,  1431, 1432, 206,  206,  206,  206,\n    206,  1433, 1420, 206,  206,  1421, 1423, 1424, 1422, 206,  206,  206,\n    1434, 206,  1435, 1436, 1437, 206,  206,  1430, 206,  1431, 1432, 1459,\n    206,  206,  206,  206,  1433, 206,  206,  206,  1459, 206,  206,  206,\n    1459, 1439, 1459, 1434,\n\n    206,  1435, 1436, 1437, 206,  206,  206,  206,  1438, 206,  206,  206,\n    206,  206,  206,  206,  206,  206,  1441, 206,  206,  206,  206,  206,\n    1439, 1440, 206,  206,  206,  1459, 206,  206,  206,  206,  206,  1438,\n    206,  206,  206,  206,  206,  206,  206,  206,  206,  1441, 206,  206,\n    206,  1442, 206,  1443, 1440, 206,  206,  206,  1444, 206,  206,  206,\n    206,  206,  1445, 1459, 206,  206,  206,  206,  1451, 1459, 206,  1452,\n    1453, 206,  206,  206,  1442, 206,  1443, 206,  206,  206,  1459, 1444,\n    1447, 206,  206,  206,  1446, 1445, 206,  206,  206,  206,  206,  1451,\n    1449, 206,  1452, 1453,\n\n    206,  1448, 1459, 1459, 206,  1454, 206,  206,  1450, 206,  206,  1447,\n    206,  206,  206,  1446, 1459, 206,  206,  206,  206,  1459, 206,  1449,\n    206,  206,  206,  206,  1448, 206,  206,  206,  1454, 206,  206,  1450,\n    206,  206,  206,  206,  206,  206,  206,  206,  1455, 206,  206,  206,\n    206,  206,  206,  206,  206,  206,  206,  1459, 206,  206,  206,  206,\n    206,  206,  206,  206,  1457, 206,  1459, 206,  206,  206,  206,  1455,\n    1456, 206,  206,  206,  206,  206,  206,  206,  206,  1459, 206,  1459,\n    206,  1459, 206,  206,  1459, 206,  206,  1457, 1459, 1458, 206,  206,\n    206,  1459, 1459, 1456,\n\n    206,  1459, 1459, 206,  206,  1459, 206,  206,  1459, 206,  1459, 206,\n    1459, 1459, 206,  1459, 1459, 1459, 1459, 1459, 1458, 1459, 1459, 206,\n    1459, 1459, 1459, 206,  1459, 1459, 1459, 206,  46,   46,   46,   46,\n    46,   88,   1459, 1459, 88,   88,   192,  192,  192,  1459, 192,  194,\n    1459, 194,  194,  194,  197,  1459, 197,  197,  197,  7,    1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459,\n\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459};\n\nstatic const flex_int16_t yy_chk[5926] = {\n    0,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,\n    1,    1,    1,    1,    1,    1,    1,    1,    5,    5,    5,    5,\n    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,\n    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,\n    5,    5,    5,    5,    5,\n\n    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,\n    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,\n    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,    9,    9,\n    10,   10,   15,   22,   15,   17,   17,   18,   18,   21,   30,   21,\n    31,   21,   42,   43,   43,   1462, 44,   21,   98,   21,   42,   22,\n    445,  21,   21,   21,   21,   302,  22,   49,   49,   50,   50,   201,\n    21,   30,   21,   31,   21,   42,   43,   43,   27,   44,   21,   98,\n    21,   42,   22,   27,   21,   21,   21,   21,   23,   27,   24,   55,\n    200,  55,   24,   23,\n\n    57,   57,   24,   197,  25,   92,   23,   27,   24,   23,   23,   24,\n    23,   91,   27,   25,   28,   25,   99,   23,   27,   24,   25,   36,\n    28,   24,   23,   25,   88,   24,   28,   25,   34,   23,   36,   24,\n    23,   23,   24,   23,   36,   100,  25,   28,   25,   99,   34,   58,\n    58,   25,   36,   28,   34,   34,   25,   26,   32,   28,   67,   34,\n    32,   36,   85,   26,   32,   67,   26,   36,   100,  26,   32,   67,\n    26,   34,   60,   26,   86,   86,   67,   34,   34,   71,   26,   32,\n    59,   67,   56,   32,   90,   90,   26,   32,   67,   26,   195,  195,\n    26,   32,   67,   26,\n\n    52,   71,   26,   29,   29,   67,   77,   51,   71,   29,   29,   29,\n    84,   33,   70,   38,   29,   33,   103,  38,   41,   33,   41,   38,\n    70,   41,   77,   33,   71,   38,   29,   29,   84,   77,   70,   104,\n    29,   29,   29,   84,   33,   70,   38,   29,   33,   103,  38,   41,\n    33,   41,   38,   70,   41,   77,   33,   35,   38,   199,  199,  84,\n    105,  70,   104,  35,   47,   106,  113,  35,   45,   35,   35,   35,\n    20,   19,   16,   114,  11,   118,  7,    4,    83,   68,   35,   83,\n    83,   68,   3,    105,  102,  68,   35,   102,  106,  113,  35,   68,\n    35,   35,   35,   39,\n\n    83,   39,   114,  39,   118,  68,   39,   83,   68,   101,  83,   83,\n    68,   39,   39,   102,  68,   101,  102,  0,    101,  119,  68,   0,\n    107,  107,  39,   83,   39,   0,    39,   72,   68,   39,   120,  72,\n    101,  121,  107,  72,   39,   39,   40,   40,   101,  72,   40,   101,\n    119,  40,   40,   107,  107,  110,  122,  72,   40,   110,  72,   40,\n    0,    120,  72,   0,    121,  107,  72,   0,    0,    40,   40,   0,\n    72,   40,   0,    0,    40,   40,   0,    0,    110,  122,  72,   40,\n    110,  0,    40,   61,   61,   0,    61,   61,   61,   61,   61,   61,\n    61,   61,   61,   61,\n\n    61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,\n    61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,\n    61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,\n    61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,\n    61,   61,   61,   61,   61,   61,   62,   73,   62,   62,   62,   73,\n    109,  117,  117,  73,   62,   112,  62,   109,  123,  73,   62,   62,\n    62,   62,   127,  112,  0,    62,   0,    73,   0,    62,   73,   62,\n    62,   62,   73,   109,  117,  117,  73,   62,   112,  62,   109,  123,\n    73,   62,   62,   62,\n\n    62,   127,  112,  76,   62,   63,   73,   76,   115,  63,   129,  130,\n    63,   115,  76,   111,  111,  111,  125,  63,   76,   125,  63,   63,\n    131,  63,   0,    76,   0,    63,   76,   132,  63,   0,    76,   115,\n    63,   129,  130,  63,   115,  76,   111,  111,  111,  125,  63,   76,\n    125,  63,   63,   131,  63,   81,   76,   78,   63,   64,   132,  78,\n    126,  64,   81,   78,   81,   64,   126,  81,   133,  78,   135,  64,\n    0,    81,   64,   134,  0,    136,  134,  78,   81,   64,   78,   0,\n    64,   138,  78,   126,  64,   81,   78,   81,   64,   126,  81,   133,\n    78,   135,  64,   82,\n\n    81,   64,   134,  82,   136,  134,  78,   82,   64,   65,   116,  128,\n    138,  65,   139,  116,  142,  128,  143,  144,  65,   116,  65,   82,\n    140,  145,  82,   65,   116,  116,  82,   146,  65,   65,   82,   140,\n    65,   116,  128,  0,    65,   139,  116,  142,  128,  143,  144,  65,\n    116,  65,   82,   140,  145,  0,    65,   116,  116,  0,    146,  65,\n    65,   66,   140,  149,  141,  66,   147,  150,  147,  66,   151,  148,\n    66,   148,  141,  66,   152,  153,  66,   141,  141,  66,   154,  155,\n    148,  66,   0,    0,    66,   156,  149,  141,  66,   147,  150,  147,\n    66,   151,  148,  66,\n\n    148,  141,  66,   152,  153,  66,   141,  141,  66,   154,  155,  148,\n    66,   69,   69,   69,   156,  157,  159,  160,  69,   69,   69,   161,\n    162,  163,  124,  69,   124,  164,  166,  168,  124,  69,   0,    0,\n    0,    170,  0,    124,  69,   69,   69,   124,  157,  159,  160,  69,\n    69,   69,   161,  162,  163,  124,  69,   124,  164,  166,  168,  124,\n    69,   74,   169,  165,  170,  74,   124,  165,  171,  173,  124,  165,\n    174,  169,  172,  74,   175,  176,  177,  179,  0,    74,   74,   172,\n    181,  74,   0,    0,    74,   169,  165,  172,  74,   184,  165,  171,\n    173,  185,  165,  174,\n\n    169,  172,  74,   175,  176,  177,  179,  180,  74,   74,   172,  181,\n    74,   75,   75,   180,  178,  182,  172,  188,  184,  190,  75,   303,\n    185,  182,  75,   178,  75,   75,   75,   305,  0,    75,   180,  0,\n    0,    182,  0,    0,    75,   75,   180,  178,  182,  189,  188,  307,\n    190,  75,   303,  189,  182,  75,   178,  75,   75,   75,   305,  183,\n    75,   79,   186,  79,   182,  79,   183,  187,  79,   183,  308,  186,\n    189,  309,  307,  79,   79,   186,  189,  206,  187,  207,  311,  313,\n    0,    79,   183,  0,    79,   186,  79,   207,  79,   183,  187,  79,\n    183,  308,  186,  206,\n\n    309,  207,  79,   79,   186,  314,  206,  187,  207,  311,  313,  212,\n    79,   80,   80,   208,  208,  80,   207,  209,  80,   80,   315,  316,\n    212,  0,    206,  80,   207,  0,    80,   212,  314,  0,    209,  317,\n    208,  80,   212,  209,  80,   80,   208,  208,  80,   0,    209,  80,\n    80,   315,  316,  212,  211,  210,  80,   211,  211,  80,   212,  0,\n    210,  209,  317,  208,  80,   167,  209,  167,  210,  217,  167,  210,\n    167,  210,  167,  318,  211,  167,  0,    211,  210,  320,  211,  211,\n    213,  321,  213,  210,  0,    217,  214,  323,  167,  0,    167,  210,\n    217,  167,  210,  167,\n\n    210,  167,  318,  211,  167,  214,  213,  215,  320,  222,  214,  213,\n    321,  213,  0,    219,  217,  214,  323,  219,  221,  218,  215,  216,\n    216,  216,  222,  215,  218,  222,  221,  325,  214,  213,  215,  218,\n    222,  214,  216,  219,  221,  218,  219,  216,  0,    0,    219,  221,\n    218,  215,  216,  216,  216,  222,  215,  218,  222,  221,  325,  228,\n    224,  223,  218,  226,  220,  216,  219,  221,  218,  228,  216,  220,\n    220,  220,  223,  224,  226,  226,  0,    228,  224,  223,  326,  226,\n    220,  0,    228,  224,  223,  0,    226,  220,  328,  229,  0,    229,\n    228,  0,    220,  220,\n\n    220,  223,  224,  226,  226,  227,  228,  224,  223,  326,  226,  220,\n    225,  230,  331,  229,  225,  225,  0,    328,  229,  227,  229,  225,\n    232,  227,  232,  230,  231,  231,  225,  225,  227,  230,  0,    0,\n    225,  0,    0,    225,  230,  331,  229,  225,  225,  324,  232,  0,\n    227,  231,  225,  232,  227,  232,  230,  231,  231,  225,  225,  324,\n    230,  234,  235,  225,  236,  234,  0,    0,    234,  235,  334,  0,\n    324,  232,  236,  235,  231,  233,  239,  233,  237,  234,  235,  233,\n    236,  239,  324,  237,  234,  235,  233,  236,  234,  237,  233,  234,\n    235,  334,  239,  233,\n\n    237,  236,  235,  238,  233,  239,  233,  237,  234,  235,  233,  236,\n    239,  238,  237,  240,  0,    233,  241,  242,  237,  233,  335,  238,\n    240,  239,  233,  237,  241,  242,  238,  0,    244,  0,    246,  240,\n    0,    0,    241,  242,  238,  244,  240,  243,  248,  241,  242,  336,\n    248,  335,  238,  240,  244,  245,  246,  241,  242,  243,  247,  244,\n    243,  246,  240,  243,  248,  241,  242,  247,  244,  245,  243,  248,\n    249,  245,  336,  248,  337,  251,  247,  244,  245,  246,  338,  249,\n    243,  247,  251,  243,  0,    0,    243,  248,  249,  0,    247,  253,\n    245,  251,  252,  249,\n\n    245,  332,  252,  337,  251,  247,  332,  260,  0,    338,  249,  0,\n    254,  251,  0,    253,  260,  0,    252,  249,  250,  250,  253,  0,\n    251,  252,  254,  260,  332,  252,  250,  0,    254,  332,  260,  250,\n    250,  339,  256,  254,  258,  250,  253,  260,  256,  252,  256,  250,\n    250,  255,  255,  340,  0,    254,  260,  258,  0,    250,  256,  254,\n    258,  0,    250,  250,  339,  256,  259,  258,  250,  255,  257,  256,\n    257,  256,  257,  261,  255,  255,  340,  259,  341,  0,    258,  257,\n    261,  256,  259,  258,  262,  263,  343,  0,    0,    259,  257,  261,\n    255,  257,  264,  257,\n\n    0,    257,  261,  262,  263,  264,  259,  341,  262,  263,  257,  261,\n    0,    259,  267,  262,  263,  343,  264,  265,  0,    257,  261,  265,\n    345,  264,  0,    266,  266,  270,  262,  263,  264,  271,  267,  262,\n    263,  268,  268,  269,  0,    267,  269,  265,  270,  264,  265,  266,\n    0,    270,  265,  345,  0,    271,  266,  266,  270,  346,  268,  269,\n    271,  267,  272,  273,  268,  268,  269,  273,  0,    269,  265,  270,\n    0,    274,  266,  272,  270,  274,  0,    275,  271,  274,  272,  283,\n    346,  268,  269,  273,  275,  272,  273,  0,    347,  277,  273,  277,\n    283,  274,  278,  275,\n\n    274,  288,  272,  283,  274,  278,  275,  0,    274,  272,  283,  0,\n    0,    277,  273,  275,  278,  0,    278,  347,  277,  288,  277,  283,\n    274,  278,  275,  276,  288,  276,  283,  276,  278,  279,  276,  281,\n    276,  281,  276,  280,  277,  276,  280,  278,  281,  278,  0,    276,\n    288,  0,    279,  348,  281,  279,  276,  0,    276,  281,  276,  280,\n    279,  276,  281,  276,  281,  276,  280,  285,  276,  280,  285,  281,\n    282,  333,  276,  0,    286,  279,  348,  281,  279,  284,  282,  286,\n    281,  284,  280,  287,  333,  349,  285,  290,  282,  289,  285,  287,\n    286,  285,  0,    282,\n\n    333,  289,  290,  286,  0,    284,  287,  287,  284,  282,  286,  290,\n    284,  289,  287,  333,  349,  285,  290,  282,  289,  294,  287,  286,\n    0,    294,  350,  291,  289,  290,  0,    291,  284,  287,  287,  291,\n    292,  296,  290,  292,  289,  294,  0,    292,  293,  293,  292,  291,\n    294,  0,    296,  291,  294,  350,  291,  0,    352,  296,  291,  292,\n    297,  353,  291,  292,  296,  293,  292,  295,  294,  295,  292,  293,\n    293,  292,  291,  0,    295,  296,  291,  0,    297,  329,  295,  352,\n    296,  329,  292,  297,  353,  295,  298,  299,  293,  344,  295,  299,\n    295,  322,  351,  298,\n\n    344,  354,  319,  295,  319,  298,  322,  297,  329,  295,  298,  356,\n    329,  351,  357,  299,  295,  298,  299,  319,  344,  358,  299,  359,\n    322,  351,  298,  344,  354,  319,  360,  319,  298,  322,  361,  362,\n    363,  298,  356,  364,  351,  357,  299,  365,  366,  367,  319,  368,\n    358,  369,  359,  370,  371,  373,  372,  374,  376,  360,  377,  378,\n    379,  361,  362,  363,  372,  380,  364,  371,  381,  382,  365,  366,\n    367,  383,  368,  384,  369,  385,  370,  371,  373,  372,  374,  376,\n    386,  377,  378,  379,  387,  388,  389,  372,  380,  390,  371,  381,\n    382,  391,  392,  393,\n\n    383,  394,  384,  395,  385,  397,  398,  400,  396,  399,  401,  386,\n    402,  403,  404,  387,  388,  389,  405,  406,  390,  407,  399,  408,\n    391,  392,  393,  396,  394,  409,  395,  410,  397,  398,  400,  396,\n    399,  401,  411,  402,  403,  404,  412,  413,  414,  405,  406,  416,\n    407,  399,  408,  417,  418,  419,  396,  421,  409,  422,  410,  423,\n    424,  425,  427,  428,  429,  411,  430,  432,  433,  412,  413,  414,\n    434,  429,  416,  431,  435,  431,  417,  418,  419,  436,  421,  437,\n    422,  438,  423,  424,  425,  427,  428,  429,  439,  430,  432,  433,\n    441,  440,  442,  434,\n\n    429,  440,  431,  435,  431,  443,  447,  446,  436,  448,  437,  449,\n    438,  451,  0,    450,  587,  451,  0,    439,  446,  453,  0,    441,\n    440,  442,  447,  446,  440,  448,  455,  449,  443,  447,  446,  450,\n    448,  451,  449,  452,  451,  453,  450,  587,  451,  454,  452,  446,\n    453,  454,  455,  456,  588,  447,  446,  456,  448,  455,  449,  452,\n    457,  458,  450,  459,  451,  589,  452,  459,  453,  454,  457,  458,\n    454,  452,  0,    456,  454,  455,  456,  588,  457,  458,  456,  459,\n    461,  460,  452,  457,  458,  0,    459,  461,  589,  463,  459,  590,\n    454,  457,  458,  462,\n\n    0,    462,  456,  460,  461,  460,  463,  457,  458,  0,    459,  461,\n    460,  463,  591,  464,  462,  464,  461,  466,  463,  462,  590,  0,\n    0,    592,  462,  466,  462,  465,  460,  461,  460,  463,  0,    593,\n    465,  464,  0,    466,  463,  591,  464,  462,  464,  465,  466,  469,\n    462,  465,  467,  467,  592,  470,  466,  468,  465,  0,    0,    468,\n    594,  469,  593,  465,  464,  467,  466,  469,  0,    473,  467,  471,\n    465,  470,  469,  595,  465,  467,  467,  468,  470,  472,  468,  474,\n    471,  472,  468,  594,  469,  473,  474,  471,  467,  477,  469,  477,\n    473,  467,  471,  0,\n\n    470,  596,  595,  474,  476,  472,  468,  479,  472,  475,  474,  471,\n    472,  475,  475,  477,  473,  474,  471,  476,  477,  478,  477,  480,\n    476,  478,  481,  479,  596,  481,  474,  476,  472,  475,  479,  597,\n    475,  0,    480,  484,  475,  475,  477,  480,  482,  478,  476,  485,\n    478,  481,  480,  476,  478,  481,  479,  482,  481,  0,    483,  484,\n    475,  483,  597,  0,    482,  480,  484,  485,  0,    486,  480,  482,\n    478,  486,  485,  489,  481,  487,  483,  488,  0,    488,  482,  490,\n    487,  483,  484,  0,    483,  489,  490,  482,  0,    486,  485,  489,\n    486,  487,  494,  491,\n\n    486,  488,  489,  490,  487,  483,  488,  492,  488,  493,  490,  487,\n    491,  494,  492,  599,  489,  490,  494,  491,  486,  603,  489,  493,\n    487,  494,  491,  492,  488,  493,  490,  496,  498,  495,  492,  496,\n    493,  497,  604,  491,  494,  492,  599,  499,  497,  494,  491,  495,\n    603,  501,  493,  499,  498,  495,  492,  496,  493,  497,  496,  498,\n    495,  500,  496,  499,  497,  604,  0,    605,  500,  501,  499,  497,\n    504,  503,  495,  504,  501,  606,  499,  498,  495,  500,  496,  502,\n    497,  0,    502,  505,  500,  503,  499,  505,  504,  503,  605,  500,\n    501,  506,  0,    504,\n\n    503,  508,  504,  0,    606,  607,  502,  505,  500,  507,  502,  508,\n    506,  502,  505,  512,  503,  506,  505,  504,  503,  508,  507,  0,\n    506,  509,  510,  510,  508,  507,  511,  509,  607,  502,  505,  512,\n    507,  0,    508,  506,  511,  513,  512,  516,  506,  509,  608,  510,\n    508,  507,  511,  514,  509,  510,  510,  515,  507,  511,  509,  516,\n    517,  513,  512,  516,  518,  515,  514,  511,  513,  517,  516,  514,\n    509,  608,  510,  515,  0,    511,  514,  519,  517,  521,  515,  0,\n    518,  520,  516,  517,  513,  0,    516,  518,  515,  514,  519,  609,\n    517,  0,    514,  519,\n\n    520,  521,  515,  523,  523,  520,  519,  517,  521,  522,  524,  518,\n    520,  522,  524,  525,  526,  525,  526,  0,    610,  519,  609,  611,\n    523,  0,    519,  520,  521,  522,  523,  523,  520,  528,  524,  525,\n    522,  524,  526,  0,    522,  524,  525,  526,  525,  526,  527,  610,\n    527,  528,  611,  523,  529,  528,  530,  0,    522,  532,  535,  0,\n    528,  524,  525,  536,  532,  526,  527,  529,  531,  533,  530,  531,\n    529,  527,  530,  527,  528,  532,  535,  529,  528,  530,  533,  536,\n    532,  535,  534,  537,  531,  533,  536,  532,  0,    527,  529,  531,\n    533,  530,  531,  529,\n\n    534,  530,  612,  540,  532,  535,  534,  537,  538,  533,  536,  543,\n    540,  534,  537,  531,  533,  0,    539,  543,  545,  538,  539,  540,\n    541,  0,    541,  534,  538,  612,  540,  543,  0,    534,  537,  538,\n    0,    539,  543,  540,  545,  542,  539,  542,  541,  539,  543,  545,\n    538,  539,  540,  541,  546,  541,  542,  538,  547,  544,  543,  544,\n    614,  546,  615,  542,  539,  554,  0,    545,  542,  539,  542,  541,\n    546,  549,  548,  0,    547,  544,  548,  546,  549,  542,  550,  547,\n    544,  554,  544,  614,  546,  615,  542,  551,  554,  549,  551,  555,\n    553,  550,  548,  546,\n\n    549,  548,  550,  547,  544,  548,  552,  549,  557,  550,  553,  551,\n    554,  552,  0,    555,  553,  0,    551,  558,  549,  551,  555,  553,\n    550,  548,  552,  559,  557,  550,  616,  556,  0,    552,  617,  557,\n    618,  553,  551,  558,  552,  556,  555,  553,  560,  559,  558,  559,\n    0,    562,  561,  556,  0,    552,  559,  557,  562,  616,  556,  560,\n    563,  617,  564,  618,  560,  561,  558,  0,    556,  562,  561,  560,\n    559,  564,  559,  565,  562,  561,  556,  566,  563,  568,  564,  562,\n    567,  569,  560,  563,  566,  564,  565,  560,  561,  0,    570,  565,\n    562,  561,  567,  566,\n\n    564,  568,  565,  570,  567,  569,  566,  563,  568,  564,  0,    567,\n    569,  0,    570,  566,  571,  565,  571,  619,  572,  570,  565,  0,\n    573,  567,  566,  0,    568,  572,  570,  567,  569,  576,  573,  0,\n    571,  576,  574,  575,  572,  570,  620,  571,  573,  571,  619,  572,\n    574,  575,  574,  573,  578,  577,  579,  621,  572,  576,  574,  575,\n    576,  573,  577,  571,  576,  574,  575,  572,  578,  620,  579,  573,\n    578,  577,  579,  574,  575,  574,  581,  578,  577,  579,  621,  0,\n    576,  574,  575,  582,  580,  577,  580,  584,  584,  0,    0,    578,\n    581,  579,  581,  578,\n\n    577,  579,  582,  622,  0,    581,  585,  582,  586,  585,  580,  583,\n    584,  623,  582,  580,  627,  580,  584,  584,  583,  586,  628,  581,\n    583,  581,  585,  629,  586,  582,  622,  583,  630,  585,  582,  586,\n    585,  580,  583,  584,  623,  631,  632,  627,  633,  635,  637,  583,\n    586,  628,  638,  583,  639,  585,  629,  586,  640,  643,  583,  630,\n    644,  645,  647,  650,  651,  652,  653,  654,  631,  632,  655,  633,\n    635,  637,  656,  657,  660,  638,  665,  639,  667,  669,  670,  640,\n    643,  658,  672,  644,  645,  647,  650,  651,  652,  653,  654,  673,\n    658,  655,  671,  671,\n\n    674,  656,  657,  660,  675,  665,  676,  667,  669,  670,  677,  678,\n    658,  672,  679,  680,  682,  683,  685,  686,  687,  688,  673,  658,\n    689,  671,  671,  674,  690,  691,  692,  675,  693,  676,  694,  695,\n    696,  677,  678,  697,  699,  679,  680,  682,  683,  685,  686,  687,\n    688,  700,  701,  689,  702,  704,  705,  690,  691,  692,  706,  693,\n    707,  694,  695,  696,  711,  712,  697,  699,  713,  715,  716,  717,\n    718,  719,  720,  721,  700,  701,  722,  702,  704,  705,  723,  724,\n    726,  706,  728,  707,  729,  880,  0,    711,  712,  0,    733,  713,\n    715,  716,  717,  718,\n\n    719,  720,  721,  732,  734,  722,  735,  733,  736,  723,  724,  726,\n    737,  728,  733,  729,  880,  734,  732,  0,    738,  733,  738,  732,\n    734,  0,    735,  0,    736,  0,    732,  734,  737,  735,  733,  736,\n    739,  741,  742,  737,  739,  733,  738,  0,    734,  732,  741,  738,\n    740,  738,  732,  734,  743,  735,  745,  736,  739,  741,  742,  737,\n    746,  740,  744,  739,  741,  742,  744,  739,  740,  738,  747,  748,\n    743,  741,  745,  740,  0,    748,  749,  743,  746,  745,  749,  739,\n    741,  742,  744,  746,  740,  744,  747,  748,  750,  744,  0,    740,\n    752,  747,  748,  743,\n\n    750,  745,  749,  752,  748,  749,  751,  746,  753,  749,  751,  756,\n    750,  744,  0,    0,    752,  747,  748,  750,  881,  753,  755,  752,\n    883,  754,  751,  750,  753,  749,  752,  756,  0,    751,  758,  753,\n    755,  751,  756,  750,  754,  757,  755,  752,  757,  754,  760,  881,\n    753,  755,  759,  883,  754,  751,  758,  753,  761,  759,  756,  762,\n    0,    758,  760,  755,  757,  0,    760,  754,  757,  755,  759,  757,\n    754,  760,  762,  0,    761,  759,  763,  762,  0,    758,  763,  761,\n    759,  0,    762,  764,  765,  760,  765,  757,  768,  760,  766,  0,\n    766,  759,  769,  768,\n\n    764,  762,  763,  761,  767,  763,  762,  764,  767,  763,  765,  0,\n    768,  770,  764,  765,  766,  765,  769,  768,  0,    766,  771,  766,\n    767,  769,  768,  764,  774,  763,  772,  767,  779,  770,  764,  767,\n    773,  765,  775,  768,  770,  772,  771,  766,  774,  769,  776,  773,\n    774,  771,  772,  767,  779,  0,    775,  774,  773,  772,  775,  779,\n    770,  776,  884,  773,  780,  775,  776,  781,  772,  771,  782,  774,\n    777,  776,  773,  774,  777,  772,  778,  779,  783,  775,  778,  773,\n    780,  775,  784,  781,  776,  884,  782,  780,  786,  776,  781,  783,\n    777,  782,  785,  777,\n\n    783,  784,  778,  777,  787,  778,  784,  783,  785,  778,  0,    780,\n    786,  784,  781,  885,  789,  782,  785,  786,  789,  788,  783,  777,\n    787,  785,  790,  783,  784,  778,  791,  787,  793,  784,  788,  785,\n    794,  790,  887,  786,  789,  788,  885,  789,  0,    785,  790,  789,\n    788,  792,  791,  787,  793,  790,  796,  0,    794,  791,  792,  793,\n    888,  788,  795,  794,  790,  887,  797,  789,  788,  792,  797,  798,\n    0,    790,  796,  795,  792,  791,  0,    793,  799,  796,  795,  794,\n    798,  792,  797,  888,  802,  795,  800,  798,  801,  797,  804,  0,\n    792,  797,  798,  799,\n\n    799,  796,  795,  800,  806,  801,  0,    799,  802,  795,  800,  798,\n    801,  797,  804,  802,  805,  800,  798,  801,  803,  804,  803,  805,\n    806,  807,  799,  799,  808,  0,    800,  806,  801,  803,  809,  802,\n    805,  800,  810,  801,  803,  804,  811,  805,  890,  807,  813,  803,\n    808,  803,  805,  806,  807,  810,  809,  808,  814,  812,  810,  814,\n    803,  809,  811,  805,  812,  810,  813,  803,  815,  811,  0,    890,\n    807,  813,  819,  808,  814,  812,  819,  818,  810,  809,  816,  814,\n    812,  810,  814,  817,  815,  811,  817,  812,  818,  813,  819,  815,\n    816,  816,  820,  818,\n\n    822,  819,  816,  814,  812,  819,  818,  817,  821,  816,  821,  891,\n    820,  0,    817,  815,  826,  817,  820,  818,  822,  819,  829,  816,\n    816,  820,  818,  822,  823,  816,  821,  824,  827,  825,  817,  821,\n    826,  821,  891,  820,  827,  823,  829,  826,  824,  820,  825,  822,\n    823,  829,  828,  824,  827,  825,  828,  823,  830,  821,  824,  827,\n    825,  832,  831,  826,  830,  832,  892,  827,  823,  829,  828,  824,\n    893,  825,  834,  823,  830,  828,  824,  827,  825,  828,  831,  830,\n    894,  832,  833,  835,  832,  831,  833,  830,  832,  892,  834,  836,\n    836,  828,  0,    893,\n\n    837,  834,  0,    830,  837,  841,  835,  835,  895,  831,  833,  894,\n    832,  833,  835,  839,  836,  833,  838,  839,  841,  834,  836,  836,\n    837,  841,  838,  837,  840,  843,  0,    837,  841,  835,  835,  895,\n    0,    833,  838,  839,  0,    840,  839,  836,  0,    838,  839,  841,\n    840,  843,  0,    837,  841,  838,  842,  840,  843,  842,  844,  845,\n    848,  847,  846,  847,  0,    838,  839,  845,  840,  844,  0,    846,\n    849,  851,  0,    840,  843,  842,  844,  845,  848,  842,  846,  847,\n    842,  844,  845,  848,  847,  846,  847,  850,  849,  851,  845,  850,\n    844,  853,  846,  849,\n\n    851,  854,  0,    852,  842,  844,  845,  848,  0,    846,  847,  850,\n    855,  852,  0,    856,  859,  853,  850,  849,  851,  854,  850,  852,\n    853,  897,  0,    857,  854,  856,  852,  858,  855,  858,  0,    856,\n    859,  862,  850,  855,  852,  857,  856,  859,  853,  861,  862,  857,\n    854,  898,  852,  858,  897,  860,  857,  860,  856,  862,  858,  855,\n    858,  861,  856,  859,  862,  861,  864,  863,  857,  867,  864,  865,\n    861,  862,  857,  860,  898,  0,    858,  866,  860,  866,  860,  863,\n    862,  867,  865,  863,  861,  867,  864,  865,  861,  864,  863,  868,\n    867,  864,  865,  866,\n\n    869,  870,  860,  869,  872,  899,  866,  0,    866,  871,  863,  900,\n    867,  865,  863,  868,  867,  864,  865,  873,  869,  870,  868,  874,\n    872,  871,  866,  869,  870,  871,  869,  872,  899,  874,  875,  876,\n    871,  901,  900,  873,  902,  904,  868,  874,  905,  906,  873,  869,\n    870,  907,  874,  872,  871,  908,  875,  876,  871,  909,  910,  911,\n    874,  875,  876,  912,  901,  913,  873,  902,  904,  914,  874,  905,\n    906,  915,  911,  917,  907,  920,  921,  922,  908,  875,  876,  923,\n    909,  910,  911,  924,  925,  927,  912,  928,  913,  929,  931,  932,\n    914,  933,  934,  935,\n\n    915,  911,  917,  941,  920,  921,  922,  943,  944,  946,  923,  947,\n    949,  951,  924,  925,  927,  952,  928,  953,  929,  931,  932,  954,\n    933,  934,  935,  955,  956,  959,  941,  960,  961,  962,  943,  944,\n    946,  963,  947,  949,  951,  965,  966,  967,  952,  968,  953,  969,\n    970,  971,  954,  972,  973,  974,  955,  956,  959,  975,  960,  961,\n    962,  976,  977,  978,  963,  980,  981,  982,  965,  966,  967,  984,\n    968,  985,  969,  970,  971,  986,  972,  973,  974,  987,  989,  990,\n    975,  991,  992,  993,  976,  977,  978,  995,  980,  981,  982,  994,\n    1104, 998,  984,  996,\n\n    985,  993,  996,  990,  986,  991,  992,  993,  987,  989,  990,  995,\n    991,  992,  993,  994,  994,  998,  995,  996,  0,    999,  994,  1104,\n    998,  1000, 996,  997,  993,  996,  990,  1002, 991,  992,  993,  1003,\n    997,  0,    995,  1001, 1001, 999,  994,  994,  998,  1000, 996,  997,\n    999,  0,    1003, 1002, 1000, 1106, 997,  1003, 1004, 0,    1002, 1108,\n    1001, 1007, 1003, 997,  1005, 1004, 1001, 1001, 999,  1006, 1008, 1007,\n    1000, 1006, 997,  1009, 1004, 1003, 1002, 1005, 1106, 1007, 1003, 1004,\n    1005, 1010, 1108, 1001, 1007, 1006, 1008, 1005, 1004, 0,    1010, 1009,\n    1006, 1008, 1007, 1015,\n\n    1006, 1109, 1009, 1004, 1012, 1010, 1005, 1014, 1007, 1011, 1016, 1005,\n    1010, 1011, 1012, 1110, 1006, 1008, 1013, 1015, 1014, 1010, 1009, 0,\n    1012, 1013, 1015, 1014, 1109, 1019, 1016, 1012, 1010, 1011, 1014, 1017,\n    1011, 1016, 1013, 1017, 1011, 1012, 1110, 0,    1019, 1013, 1015, 1014,\n    1021, 1019, 1018, 1012, 1013, 1018, 1014, 1017, 1019, 1016, 1020, 1022,\n    1011, 0,    1017, 1111, 1113, 1013, 1017, 1020, 1021, 1023, 1018, 1019,\n    1024, 1024, 1114, 1021, 1019, 1018, 1020, 1022, 1018, 0,    1017, 1025,\n    1023, 1020, 1022, 1024, 1026, 1023, 1111, 1113, 0,    1024, 1020, 1021,\n    1023, 1018, 1025, 1024,\n\n    1024, 1114, 1026, 1025, 1029, 1020, 1022, 1031, 1026, 0,    1025, 1023,\n    1032, 1027, 1024, 1026, 1023, 1027, 1034, 1028, 1024, 1028, 1034, 1030,\n    1029, 1025, 1116, 1031, 0,    1026, 1025, 1029, 1032, 1027, 1031, 1026,\n    1030, 1033, 0,    1032, 1027, 1028, 1034, 1030, 1027, 1034, 1028, 1036,\n    1028, 1034, 1030, 1029, 1038, 1116, 1031, 1033, 1039, 1033, 1035, 1032,\n    1027, 1036, 1040, 1030, 1033, 1035, 1040, 1036, 1028, 1034, 1030, 1037,\n    1038, 1037, 1036, 1041, 1039, 1042, 1035, 1038, 0,    1043, 1033, 1039,\n    1033, 1035, 1040, 1046, 1036, 1040, 1041, 1037, 1035, 1040, 1036, 1041,\n    1044, 1042, 1037, 1038,\n\n    1037, 1043, 1041, 1039, 1042, 1035, 1045, 1046, 1043, 1049, 1045, 1044,\n    1047, 1040, 1046, 1050, 1044, 1041, 1037, 0,    1048, 1051, 1041, 1044,\n    1042, 1052, 1047, 1048, 1043, 1049, 1045, 1053, 1047, 1045, 1046, 1050,\n    1049, 1045, 1044, 1047, 1048, 1051, 1050, 1044, 1054, 1052, 1055, 1048,\n    1051, 1117, 1058, 1053, 1052, 1047, 1048, 0,    1049, 1045, 1053, 1047,\n    1057, 1056, 1050, 1061, 1054, 1056, 1055, 1048, 1051, 1057, 1058, 1054,\n    1052, 1055, 1060, 1063, 1117, 1058, 1053, 1059, 1057, 1118, 1059, 1061,\n    1062, 1056, 0,    1057, 1056, 1060, 1061, 1054, 1056, 1055, 1060, 1063,\n    1057, 1058, 1062, 1059,\n\n    1064, 1060, 1063, 1065, 1062, 0,    1059, 1057, 1118, 1059, 1061, 1062,\n    1056, 1066, 1067, 1067, 1060, 1066, 1065, 1068, 1064, 1060, 1063, 1065,\n    0,    1062, 1059, 1064, 1070, 0,    1065, 1062, 1068, 1071, 1072, 1067,\n    1069, 1066, 1073, 1068, 1066, 1067, 1067, 1119, 1066, 1065, 1068, 1064,\n    1070, 1069, 1065, 1074, 1073, 1071, 1072, 1070, 1069, 1077, 1073, 1068,\n    1071, 1072, 1067, 1069, 1066, 1073, 1068, 1075, 1076, 1075, 1119, 1074,\n    1076, 1120, 0,    1070, 1069, 1077, 1074, 1073, 1071, 1072, 1078, 1069,\n    1077, 1073, 1078, 1079, 1076, 1075, 1081, 1081, 1122, 0,    1075, 1076,\n    1075, 1079, 1074, 1076,\n\n    1120, 1080, 1083, 1083, 1077, 1080, 1078, 1079, 0,    1078, 1125, 1081,\n    0,    1078, 1079, 1076, 1075, 1081, 1081, 1122, 1082, 1129, 1084, 1083,\n    1079, 1080, 1084, 0,    1080, 1083, 1083, 1085, 1080, 1078, 1079, 1082,\n    0,    1125, 1081, 1088, 1082, 1086, 0,    1088, 1087, 1085, 1084, 1082,\n    1129, 1084, 1083, 1085, 1080, 1084, 1086, 1089, 1090, 1092, 1085, 1087,\n    1090, 1086, 1082, 1088, 1087, 1091, 1088, 1082, 1086, 1093, 1088, 1087,\n    1085, 1084, 1091, 1089, 1130, 1092, 1085, 1095, 1090, 1086, 1089, 1090,\n    1092, 1091, 1087, 1090, 1086, 1093, 1088, 1087, 1091, 1094, 1094, 1096,\n    1093, 1097, 1101, 1095,\n\n    0,    1091, 1089, 1130, 1092, 1097, 1095, 1090, 1131, 1098, 0,    1133,\n    1091, 1134, 1094, 1096, 1093, 1097, 1101, 0,    1094, 1094, 1096, 1098,\n    1097, 1101, 1095, 1099, 1102, 1098, 0,    1099, 1097, 1100, 1136, 1131,\n    1098, 1100, 1133, 1137, 1134, 1094, 1096, 1142, 1097, 1101, 1102, 1144,\n    1102, 1146, 1098, 1099, 1147, 1148, 1099, 1102, 1098, 1100, 1099, 1151,\n    1100, 1136, 1152, 1153, 1100, 1156, 1137, 1157, 1159, 1160, 1142, 1161,\n    1162, 1102, 1144, 1102, 1146, 1163, 1099, 1147, 1148, 1165, 1166, 1167,\n    1100, 1168, 1151, 1169, 1173, 1152, 1153, 1175, 1156, 1176, 1157, 1159,\n    1160, 1177, 1161, 1162,\n\n    1178, 1179, 1180, 1186, 1163, 1187, 1189, 0,    1165, 1166, 1167, 1190,\n    1168, 0,    1169, 1173, 1191, 1192, 1175, 1192, 1176, 1193, 1195, 1276,\n    1177, 1194, 1189, 1178, 1179, 1180, 1186, 1190, 1187, 1189, 1194, 1196,\n    1191, 1197, 1190, 1192, 1198, 1193, 1195, 1191, 1192, 1194, 1192, 0,\n    1193, 1195, 1276, 1197, 1194, 1189, 1199, 1196, 1199, 1197, 1190, 1201,\n    1198, 1194, 1196, 1191, 1197, 1202, 1192, 1198, 1193, 1195, 1200, 1204,\n    1194, 1204, 1203, 1206, 1199, 1200, 1197, 1201, 1202, 1199, 1196, 1199,\n    1197, 1202, 1201, 1198, 1203, 0,    1200, 1281, 1202, 1204, 1203, 1206,\n    1205, 1200, 1204, 1207,\n\n    1204, 1203, 1206, 1199, 1200, 1208, 1201, 1202, 1208, 1209, 1210, 1205,\n    1202, 1212, 1213, 1203, 1205, 1200, 1281, 1207, 1204, 1203, 1206, 1205,\n    1214, 1211, 1207, 1211, 1208, 1209, 1210, 0,    1208, 1212, 1213, 1208,\n    1209, 1210, 1205, 1215, 1212, 1213, 1217, 1205, 1214, 1216, 1207, 1211,\n    1218, 1216, 1221, 1214, 1211, 1284, 1211, 1208, 1209, 1210, 1219, 1215,\n    1212, 1213, 1217, 1285, 1220, 1216, 1215, 1219, 1218, 1217, 1221, 1214,\n    1216, 1223, 1211, 1218, 1216, 1221, 1219, 1220, 1284, 1224, 1225, 1222,\n    1220, 1219, 1215, 1222, 1223, 1217, 1285, 1220, 1216, 1223, 1219, 1218,\n    1226, 1221, 1227, 1287,\n\n    1223, 1224, 1225, 1222, 1228, 1219, 1220, 1229, 1224, 1225, 1222, 1220,\n    1230, 1230, 1222, 1223, 1226, 1231, 1227, 1228, 1223, 1232, 1232, 1226,\n    1228, 1227, 1287, 1229, 1224, 1225, 1222, 1228, 1234, 1230, 1229, 1235,\n    0,    1231, 1236, 1230, 1230, 0,    1232, 1226, 1231, 1227, 1228, 1240,\n    1232, 1232, 1233, 1228, 1234, 1288, 1229, 1235, 1289, 0,    1236, 1234,\n    1230, 1237, 1235, 1233, 1231, 1236, 1241, 1240, 1237, 1232, 1233, 1238,\n    1239, 1238, 1240, 0,    1239, 1233, 0,    1234, 1288, 1237, 1235, 1289,\n    1244, 1236, 1241, 1242, 1237, 1246, 1233, 1238, 1247, 1241, 1240, 1237,\n    1239, 1233, 1238, 1239,\n\n    1238, 1243, 1242, 1239, 1244, 1243, 1245, 1242, 1237, 1246, 1245, 1244,\n    1247, 1241, 1242, 0,    1246, 0,    1238, 1247, 1249, 1243, 1248, 1239,\n    1250, 1251, 1245, 0,    1243, 1242, 0,    1244, 1243, 1245, 1242, 0,\n    1246, 1245, 1291, 1247, 1249, 1248, 1248, 1256, 1250, 1251, 1255, 1249,\n    1243, 1248, 0,    1250, 1251, 1245, 1252, 1253, 1252, 1253, 1254, 1257,\n    1255, 0,    1254, 1256, 1295, 1291, 1255, 1249, 1248, 1248, 1256, 1250,\n    1251, 1255, 1258, 1296, 1252, 1253, 1254, 1257, 1260, 1252, 1253, 1252,\n    1253, 1254, 1257, 1255, 1259, 1254, 1256, 1295, 1261, 1255, 1258, 1259,\n    1261, 1267, 1264, 0,\n\n    1260, 1258, 1296, 1252, 1253, 1254, 1257, 1260, 1259, 1262, 1263, 1264,\n    1263, 1262, 1265, 1259, 1261, 1267, 1264, 1261, 0,    1258, 1259, 1261,\n    1267, 1264, 1268, 1260, 1269, 1265, 1266, 1266, 1263, 1262, 1265, 1259,\n    1262, 1263, 1264, 1263, 1262, 1265, 1270, 1261, 1267, 1264, 1268, 1271,\n    1269, 1297, 1272, 1266, 1274, 1268, 1301, 1269, 1265, 1266, 1266, 1263,\n    1262, 1265, 1270, 1272, 1273, 1304, 1305, 1271, 1306, 1270, 1272, 1273,\n    1274, 1268, 1271, 1269, 1297, 1272, 1266, 1274, 1307, 1301, 1313, 1314,\n    1273, 1315, 1318, 1319, 1320, 1270, 1272, 1273, 1304, 1305, 1271, 1306,\n    1322, 1272, 1273, 1274,\n\n    1323, 1326, 1328, 0,    1327, 1329, 1330, 1307, 0,    1313, 1314, 1273,\n    1315, 1318, 1319, 1320, 1331, 1327, 1333, 1332, 1334, 1326, 1328, 1322,\n    1327, 1329, 1330, 1323, 1326, 1328, 1335, 1327, 1329, 1330, 1332, 1337,\n    1331, 0,    1333, 1332, 1334, 0,    1380, 1331, 1327, 1333, 1332, 1334,\n    1326, 1328, 1335, 1327, 1329, 1330, 1336, 1337, 1339, 1335, 1336, 1338,\n    1338, 1332, 1337, 1331, 1340, 1333, 1332, 1334, 1341, 1380, 1343, 0,\n    1342, 1344, 1345, 0,    1339, 1335, 1336, 1340, 1338, 1336, 1337, 1339,\n    1340, 1336, 1338, 1338, 1341, 1342, 1343, 1340, 1342, 1344, 1345, 1341,\n    0,    1343, 1347, 1342,\n\n    1344, 1345, 1348, 1339, 1346, 1336, 1340, 1338, 1349, 0,    1350, 1340,\n    1351, 1346, 1384, 1341, 1342, 1343, 1347, 1342, 1344, 1345, 1348, 1353,\n    1346, 1347, 1354, 1385, 1349, 1348, 1350, 1346, 1351, 0,    1352, 1349,\n    1352, 1350, 1356, 1351, 1346, 1384, 1357, 1353, 1359, 1347, 1354, 1355,\n    0,    1348, 1353, 1346, 1357, 1354, 1385, 1349, 1352, 1350, 1356, 1351,\n    1355, 1352, 1357, 1352, 1359, 1356, 1358, 1355, 1360, 1357, 1353, 1359,\n    1361, 1354, 1355, 1358, 1362, 1363, 0,    1357, 0,    1367, 0,    1352,\n    1386, 1356, 1358, 1355, 1360, 1357, 1364, 1359, 1361, 1358, 1355, 1360,\n    1362, 1363, 1366, 1361,\n\n    1365, 1367, 1358, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1364, 1386,\n    0,    1358, 0,    1360, 0,    1364, 1366, 1361, 1365, 1388, 1369, 1362,\n    1363, 1366, 1371, 1365, 1367, 1368, 1370, 1372, 1364, 1365, 1366, 1369,\n    1368, 1364, 1370, 1373, 1374, 1371, 1369, 1375, 1376, 1366, 1371, 1365,\n    1388, 1369, 1370, 1372, 1390, 1371, 1391, 1392, 1368, 1370, 1372, 1373,\n    1374, 1395, 1369, 1375, 1376, 1370, 1373, 1374, 1371, 1369, 1375, 1376,\n    1396, 1371, 1397, 1398, 1400, 1370, 1372, 1390, 1401, 1391, 1392, 0,\n    1402, 1403, 1373, 1374, 1395, 1405, 1375, 1376, 0,    1404, 1406, 1407,\n    0,    1408, 0,    1396,\n\n    1401, 1397, 1398, 1400, 1402, 1403, 1411, 1401, 1404, 1405, 1413, 1402,\n    1403, 1404, 1406, 1407, 1405, 1408, 1410, 1410, 1404, 1406, 1407, 1409,\n    1408, 1409, 1411, 1401, 1417, 0,    1413, 1402, 1403, 1411, 1412, 1404,\n    1405, 1413, 1414, 1410, 1404, 1406, 1407, 1409, 1408, 1410, 1410, 1415,\n    1417, 1412, 1409, 1414, 1409, 1411, 1412, 1417, 1415, 1413, 1414, 1418,\n    1416, 1412, 1416, 0,    1420, 1414, 1410, 1415, 1425, 0,    1409, 1430,\n    1436, 1419, 1415, 1417, 1412, 1423, 1414, 1418, 1416, 1412, 0,    1415,\n    1420, 1414, 1418, 1416, 1419, 1416, 1421, 1420, 1422, 1419, 1415, 1425,\n    1422, 1423, 1430, 1436,\n\n    1419, 1421, 0,    0,    1423, 1438, 1418, 1416, 1424, 1424, 1421, 1420,\n    1422, 1439, 1440, 1419, 0,    1421, 1441, 1422, 1419, 0,    1442, 1422,\n    1423, 1438, 1444, 1445, 1421, 1424, 1443, 1446, 1438, 1439, 1440, 1424,\n    1424, 1421, 1441, 1422, 1439, 1440, 1442, 1447, 1443, 1441, 1444, 1445,\n    1448, 1442, 1443, 1446, 1438, 1444, 1445, 0,    1424, 1443, 1446, 1450,\n    1439, 1440, 1449, 1447, 1453, 1441, 0,    1454, 1448, 1442, 1447, 1443,\n    1449, 1444, 1445, 1448, 1455, 1443, 1446, 1450, 1458, 0,    1449, 0,\n    1456, 0,    1450, 1454, 0,    1449, 1447, 1453, 0,    1456, 1454, 1448,\n    1455, 0,    0,    1449,\n\n    1458, 0,    0,    1455, 1456, 0,    1450, 1458, 0,    1449, 0,    1456,\n    0,    0,    1454, 0,    0,    0,    0,    0,    1456, 0,    0,    1455,\n    0,    0,    0,    1458, 0,    0,    0,    1456, 1460, 1460, 1460, 1460,\n    1460, 1461, 0,    0,    1461, 1461, 1463, 1463, 1463, 0,    1463, 1464,\n    0,    1464, 1464, 1464, 1465, 0,    1465, 1465, 1465, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459,\n\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459,\n    1459};\n\n/* The intent behind this definition is that it'll catch\n * any uses of REJECT which flex missed.\n */\n#define REJECT reject_used_but_not_detected\n#define yymore() yymore_used_but_not_detected\n#define YY_MORE_ADJ 0\n#define YY_RESTORE_YY_MORE_OFFSET\n#line 1 \"flex_lexer.l\"\n/**\n * lexer\n *\n *\n */\n/***************************\n ** Section 1: Definitions\n ***************************/\n#line 12 \"flex_lexer.l\"\n\n#include <stdio.h>\n\n#include <sstream>\n\n#include \"bison_parser.h\"\n\n#define TOKEN(name) \\\n  { return SQL_##name; }\n\nstatic thread_local std::stringstream strbuf;\nchar *substr(const char *source, int from, int to);\n#line 2462 \"flex_lexer.cpp\"\n\n/***************************\n ** Section 2: Rules\n ***************************/\n/* Define the output files */\n/* Make reentrant */\n/* performance tweeks */\n/* other flags */\n/* %option nodefault */\n\n/***************************\n ** Section 3: Rules\n ***************************/\n#line 2476 \"flex_lexer.cpp\"\n\n#define INITIAL 0\n#define singlequotedstring 1\n#define COMMENT 2\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\n/* Holds the entire state of the reentrant scanner. */\nstruct yyguts_t {\n  /* User-defined. Not touched by flex. */\n  YY_EXTRA_TYPE yyextra_r;\n\n  /* The rest are the same as the globals declared in the non-reentrant scanner.\n   */\n  FILE *yyin_r, *yyout_r;\n  size_t yy_buffer_stack_top;       /**< index of top of stack. */\n  size_t yy_buffer_stack_max;       /**< capacity of stack. */\n  YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */\n  char yy_hold_char;\n  int yy_n_chars;\n  int yyleng_r;\n  char *yy_c_buf_p;\n  int yy_init;\n  int yy_start;\n  int yy_did_buffer_switch_on_eof;\n  int yy_start_stack_ptr;\n  int yy_start_stack_depth;\n  int *yy_start_stack;\n  yy_state_type yy_last_accepting_state;\n  char *yy_last_accepting_cpos;\n\n  int yylineno_r;\n  int yy_flex_debug_r;\n\n  char *yytext_r;\n  int yy_more_flag;\n  int yy_more_len;\n\n  YYSTYPE *yylval_r;\n\n  YYLTYPE *yylloc_r;\n\n}; /* end struct yyguts_t */\n\nstatic int yy_init_globals(yyscan_t yyscanner);\n\n/* This must go here because YYSTYPE and YYLTYPE are included\n * from bison output in section 1.*/\n#define yylval yyg->yylval_r\n\n#define yylloc yyg->yylloc_r\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner);\n#else\nstatic int input(yyscan_t yyscanner);\n#endif\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Copy whatever the last rule matched to the standard output. */\n#ifndef ECHO\n/* This used to be an fputs(), but since the string might contain NUL's,\n * we now use fwrite().\n */\n#define ECHO                                        \\\n  do {                                              \\\n    if (fwrite(yytext, (size_t)yyleng, 1, yyout)) { \\\n    }                                               \\\n  } while (0)\n#endif\n\n/* Gets input and stuffs it into \"buf\".  number of characters read, or YY_NULL,\n * is returned in \"result\".\n */\n#ifndef YY_INPUT\n#define YY_INPUT(buf, result, max_size)                                     \\\n  if (YY_CURRENT_BUFFER_LVALUE->yy_is_interactive) {                        \\\n    int c = '*';                                                            \\\n    int n;                                                                  \\\n    for (n = 0; n < max_size && (c = getc(yyin)) != EOF && c != '\\n'; ++n)  \\\n      buf[n] = (char)c;                                                     \\\n    if (c == '\\n') buf[n++] = (char)c;                                      \\\n    if (c == EOF && ferror(yyin))                                           \\\n      YY_FATAL_ERROR(\"input in flex scanner failed\");                       \\\n    result = n;                                                             \\\n  } else {                                                                  \\\n    errno = 0;                                                              \\\n    while ((result = (int)fread(buf, 1, (yy_size_t)max_size, yyin)) == 0 && \\\n           ferror(yyin)) {                                                  \\\n      if (errno != EINTR) {                                                 \\\n        YY_FATAL_ERROR(\"input in flex scanner failed\");                     \\\n        break;                                                              \\\n      }                                                                     \\\n      errno = 0;                                                            \\\n      clearerr(yyin);                                                       \\\n    }                                                                       \\\n  }\n\n#endif\n\n/* No semi-colon after return; correct usage is to write \"yyterminate();\" -\n * we don't want an extra ';' after the \"return\" because that will cause\n * some compilers to complain about unreachable statements.\n */\n#ifndef yyterminate\n#define yyterminate() return YY_NULL\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Report a fatal error. */\n#ifndef YY_FATAL_ERROR\n#define YY_FATAL_ERROR(msg) yy_fatal_error(msg, yyscanner)\n#endif\n\n/* end tables serialization structures and prototypes */\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* Code executed at the beginning of each rule, after yytext and yyleng\n * have been set up.\n */\n#ifndef YY_USER_ACTION\n#define YY_USER_ACTION\n#endif\n\n/* Code executed at the end of each rule. */\n#ifndef YY_BREAK\n#define YY_BREAK /*LINTED*/ break;\n#endif\n\n#define YY_RULE_SETUP YY_USER_ACTION\n\n/** The main scanner function which does all the work.\n */\nYY_DECL {\n  yy_state_type yy_current_state;\n  char *yy_cp, *yy_bp;\n  int yy_act;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yylval = yylval_param;\n\n  yylloc = yylloc_param;\n\n  if (!yyg->yy_init) {\n    yyg->yy_init = 1;\n\n#ifdef YY_USER_INIT\n    YY_USER_INIT;\n#endif\n\n    if (!yyg->yy_start) yyg->yy_start = 1; /* first start state */\n\n    if (!yyin) yyin = stdin;\n\n    if (!yyout) yyout = stdout;\n\n    if (!YY_CURRENT_BUFFER) {\n      yyensure_buffer_stack(yyscanner);\n      YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n    }\n\n    yy_load_buffer_state(yyscanner);\n  }\n\n  {\n#line 56 \"flex_lexer.l\"\n\n#line 2763 \"flex_lexer.cpp\"\n\n    while (/*CONSTCOND*/ 1) /* loops until end-of-file is reached */\n    {\n      yy_cp = yyg->yy_c_buf_p;\n\n      /* Support of yytext. */\n      *yy_cp = yyg->yy_hold_char;\n\n      /* yy_bp points to the position in yy_ch_buf of the start of\n       * the current run.\n       */\n      yy_bp = yy_cp;\n\n      yy_current_state = yyg->yy_start;\n    yy_match:\n      do {\n        YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];\n        if (yy_accept[yy_current_state]) {\n          yyg->yy_last_accepting_state = yy_current_state;\n          yyg->yy_last_accepting_cpos = yy_cp;\n        }\n        while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n          yy_current_state = (int)yy_def[yy_current_state];\n          if (yy_current_state >= 1460) yy_c = yy_meta[yy_c];\n        }\n        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n        ++yy_cp;\n      } while (yy_current_state != 1459);\n      yy_cp = yyg->yy_last_accepting_cpos;\n      yy_current_state = yyg->yy_last_accepting_state;\n\n    yy_find_action:\n      yy_act = yy_accept[yy_current_state];\n\n      YY_DO_BEFORE_ACTION;\n\n    do_action: /* This label is used only to access EOF actions. */\n\n      switch (yy_act) { /* beginning of action switch */\n        case 0:         /* must back up */\n          /* undo the effects of YY_DO_BEFORE_ACTION */\n          *yy_cp = yyg->yy_hold_char;\n          yy_cp = yyg->yy_last_accepting_cpos;\n          yy_current_state = yyg->yy_last_accepting_state;\n          goto yy_find_action;\n\n        case 1:\n          YY_RULE_SETUP\n#line 58 \"flex_lexer.l\"\n          BEGIN(COMMENT);\n          YY_BREAK\n        case 2:\n          YY_RULE_SETUP\n#line 59 \"flex_lexer.l\"\n              /* skipping comment content until a end of line is read */;\n          YY_BREAK\n        case 3:\n          /* rule 3 can match eol */\n          YY_RULE_SETUP\n#line 60 \"flex_lexer.l\"\n          BEGIN(INITIAL);\n          YY_BREAK\n        case 4:\n          /* rule 4 can match eol */\n          YY_RULE_SETUP\n#line 62 \"flex_lexer.l\"\n              /* skip whitespace */;\n          YY_BREAK\n        case 5:\n          YY_RULE_SETUP\n#line 64 \"flex_lexer.l\"\n          TOKEN(DEALLOCATE)\n          YY_BREAK\n        case 6:\n          YY_RULE_SETUP\n#line 65 \"flex_lexer.l\"\n          TOKEN(PARAMETERS)\n          YY_BREAK\n        case 7:\n          YY_RULE_SETUP\n#line 66 \"flex_lexer.l\"\n          TOKEN(INTERSECT)\n          YY_BREAK\n        case 8:\n          YY_RULE_SETUP\n#line 67 \"flex_lexer.l\"\n          TOKEN(TEMPORARY)\n          YY_BREAK\n        case 9:\n          YY_RULE_SETUP\n#line 68 \"flex_lexer.l\"\n          TOKEN(TIMESTAMP)\n          YY_BREAK\n        case 10:\n          YY_RULE_SETUP\n#line 69 \"flex_lexer.l\"\n          TOKEN(DESCRIBE)\n          YY_BREAK\n        case 11:\n          YY_RULE_SETUP\n#line 70 \"flex_lexer.l\"\n          TOKEN(DISTINCT)\n          YY_BREAK\n        case 12:\n          YY_RULE_SETUP\n#line 71 \"flex_lexer.l\"\n          TOKEN(NVARCHAR)\n          YY_BREAK\n        case 13:\n          YY_RULE_SETUP\n#line 72 \"flex_lexer.l\"\n          TOKEN(RESTRICT)\n          YY_BREAK\n        case 14:\n          YY_RULE_SETUP\n#line 73 \"flex_lexer.l\"\n          TOKEN(TRUNCATE)\n          YY_BREAK\n        case 15:\n          YY_RULE_SETUP\n#line 74 \"flex_lexer.l\"\n          TOKEN(ANALYZE)\n          YY_BREAK\n        case 16:\n          YY_RULE_SETUP\n#line 75 \"flex_lexer.l\"\n          TOKEN(BETWEEN)\n          YY_BREAK\n        case 17:\n          YY_RULE_SETUP\n#line 76 \"flex_lexer.l\"\n          TOKEN(CASCADE)\n          YY_BREAK\n        case 18:\n          YY_RULE_SETUP\n#line 77 \"flex_lexer.l\"\n          TOKEN(COLUMNS)\n          YY_BREAK\n        case 19:\n          YY_RULE_SETUP\n#line 78 \"flex_lexer.l\"\n          TOKEN(CONTROL)\n          YY_BREAK\n        case 20:\n          YY_RULE_SETUP\n#line 79 \"flex_lexer.l\"\n          TOKEN(DEFAULT)\n          YY_BREAK\n        case 21:\n          YY_RULE_SETUP\n#line 80 \"flex_lexer.l\"\n          TOKEN(EXECUTE)\n          YY_BREAK\n        case 22:\n          YY_RULE_SETUP\n#line 81 \"flex_lexer.l\"\n          TOKEN(EXPLAIN)\n          YY_BREAK\n        case 23:\n          YY_RULE_SETUP\n#line 82 \"flex_lexer.l\"\n          TOKEN(INTEGER)\n          YY_BREAK\n        case 24:\n          YY_RULE_SETUP\n#line 83 \"flex_lexer.l\"\n          TOKEN(NATURAL)\n          YY_BREAK\n        case 25:\n          YY_RULE_SETUP\n#line 84 \"flex_lexer.l\"\n          TOKEN(PREPARE)\n          YY_BREAK\n        case 26:\n          YY_RULE_SETUP\n#line 85 \"flex_lexer.l\"\n          TOKEN(PRIMARY)\n          YY_BREAK\n        case 27:\n          YY_RULE_SETUP\n#line 86 \"flex_lexer.l\"\n          TOKEN(SCHEMAS)\n          YY_BREAK\n        case 28:\n          YY_RULE_SETUP\n#line 87 \"flex_lexer.l\"\n          TOKEN(SPATIAL)\n          YY_BREAK\n        case 29:\n          YY_RULE_SETUP\n#line 88 \"flex_lexer.l\"\n          TOKEN(VARCHAR)\n          YY_BREAK\n        case 30:\n          YY_RULE_SETUP\n#line 89 \"flex_lexer.l\"\n          TOKEN(VIRTUAL)\n          YY_BREAK\n        case 31:\n          YY_RULE_SETUP\n#line 90 \"flex_lexer.l\"\n          TOKEN(BEFORE)\n          YY_BREAK\n        case 32:\n          YY_RULE_SETUP\n#line 91 \"flex_lexer.l\"\n          TOKEN(COLUMN)\n          YY_BREAK\n        case 33:\n          YY_RULE_SETUP\n#line 92 \"flex_lexer.l\"\n          TOKEN(CREATE)\n          YY_BREAK\n        case 34:\n          YY_RULE_SETUP\n#line 93 \"flex_lexer.l\"\n          TOKEN(DELETE)\n          YY_BREAK\n        case 35:\n          YY_RULE_SETUP\n#line 94 \"flex_lexer.l\"\n          TOKEN(DIRECT)\n          YY_BREAK\n        case 36:\n          YY_RULE_SETUP\n#line 95 \"flex_lexer.l\"\n          TOKEN(DOUBLE)\n          YY_BREAK\n        case 37:\n          YY_RULE_SETUP\n#line 96 \"flex_lexer.l\"\n          TOKEN(ESCAPE)\n          YY_BREAK\n        case 38:\n          YY_RULE_SETUP\n#line 97 \"flex_lexer.l\"\n          TOKEN(EXCEPT)\n          YY_BREAK\n        case 39:\n          YY_RULE_SETUP\n#line 98 \"flex_lexer.l\"\n          TOKEN(EXISTS)\n          YY_BREAK\n        case 40:\n          YY_RULE_SETUP\n#line 99 \"flex_lexer.l\"\n          TOKEN(EXTRACT)\n          YY_BREAK\n        case 41:\n          YY_RULE_SETUP\n#line 100 \"flex_lexer.l\"\n          TOKEN(GLOBAL)\n          YY_BREAK\n        case 42:\n          YY_RULE_SETUP\n#line 101 \"flex_lexer.l\"\n          TOKEN(HAVING)\n          YY_BREAK\n        case 43:\n          YY_RULE_SETUP\n#line 102 \"flex_lexer.l\"\n          TOKEN(IMPORT)\n          YY_BREAK\n        case 44:\n          YY_RULE_SETUP\n#line 103 \"flex_lexer.l\"\n          TOKEN(INSERT)\n          YY_BREAK\n        case 45:\n          YY_RULE_SETUP\n#line 104 \"flex_lexer.l\"\n          TOKEN(ISNULL)\n          YY_BREAK\n        case 46:\n          YY_RULE_SETUP\n#line 105 \"flex_lexer.l\"\n          TOKEN(OFFSET)\n          YY_BREAK\n        case 47:\n          YY_RULE_SETUP\n#line 106 \"flex_lexer.l\"\n          TOKEN(RENAME)\n          YY_BREAK\n        case 48:\n          YY_RULE_SETUP\n#line 107 \"flex_lexer.l\"\n          TOKEN(SCHEMA)\n          YY_BREAK\n        case 49:\n          YY_RULE_SETUP\n#line 108 \"flex_lexer.l\"\n          TOKEN(SELECT)\n          YY_BREAK\n        case 50:\n          YY_RULE_SETUP\n#line 109 \"flex_lexer.l\"\n          TOKEN(SORTED)\n          YY_BREAK\n        case 51:\n          YY_RULE_SETUP\n#line 110 \"flex_lexer.l\"\n          TOKEN(TABLES)\n          YY_BREAK\n        case 52:\n          YY_RULE_SETUP\n#line 111 \"flex_lexer.l\"\n          TOKEN(UNIQUE)\n          YY_BREAK\n        case 53:\n          YY_RULE_SETUP\n#line 112 \"flex_lexer.l\"\n          TOKEN(UNLOAD)\n          YY_BREAK\n        case 54:\n          YY_RULE_SETUP\n#line 113 \"flex_lexer.l\"\n          TOKEN(UPDATE)\n          YY_BREAK\n        case 55:\n          YY_RULE_SETUP\n#line 114 \"flex_lexer.l\"\n          TOKEN(VALUES)\n          YY_BREAK\n        case 56:\n          YY_RULE_SETUP\n#line 115 \"flex_lexer.l\"\n          TOKEN(AFTER)\n          YY_BREAK\n        case 57:\n          YY_RULE_SETUP\n#line 116 \"flex_lexer.l\"\n          TOKEN(ALTER)\n          YY_BREAK\n        case 58:\n          YY_RULE_SETUP\n#line 117 \"flex_lexer.l\"\n          TOKEN(ARRAY)\n          YY_BREAK\n        case 59:\n          YY_RULE_SETUP\n#line 118 \"flex_lexer.l\"\n          TOKEN(CROSS)\n          YY_BREAK\n        case 60:\n          YY_RULE_SETUP\n#line 119 \"flex_lexer.l\"\n          TOKEN(DELTA)\n          YY_BREAK\n        case 61:\n          YY_RULE_SETUP\n#line 120 \"flex_lexer.l\"\n          TOKEN(FLOAT)\n          YY_BREAK\n        case 62:\n          YY_RULE_SETUP\n#line 121 \"flex_lexer.l\"\n          TOKEN(GROUP)\n          YY_BREAK\n        case 63:\n          YY_RULE_SETUP\n#line 122 \"flex_lexer.l\"\n          TOKEN(INDEX)\n          YY_BREAK\n        case 64:\n          YY_RULE_SETUP\n#line 123 \"flex_lexer.l\"\n          TOKEN(INNER)\n          YY_BREAK\n        case 65:\n          YY_RULE_SETUP\n#line 124 \"flex_lexer.l\"\n          TOKEN(LIMIT)\n          YY_BREAK\n        case 66:\n          YY_RULE_SETUP\n#line 125 \"flex_lexer.l\"\n          TOKEN(LOCAL)\n          YY_BREAK\n        case 67:\n          YY_RULE_SETUP\n#line 126 \"flex_lexer.l\"\n          TOKEN(MERGE)\n          YY_BREAK\n        case 68:\n          YY_RULE_SETUP\n#line 127 \"flex_lexer.l\"\n          TOKEN(MINUS)\n          YY_BREAK\n        case 69:\n          YY_RULE_SETUP\n#line 128 \"flex_lexer.l\"\n          TOKEN(ORDER)\n          YY_BREAK\n        case 70:\n          YY_RULE_SETUP\n#line 129 \"flex_lexer.l\"\n          TOKEN(OUTER)\n          YY_BREAK\n        case 71:\n          YY_RULE_SETUP\n#line 130 \"flex_lexer.l\"\n          TOKEN(RIGHT)\n          YY_BREAK\n        case 72:\n          YY_RULE_SETUP\n#line 131 \"flex_lexer.l\"\n          TOKEN(TABLE)\n          YY_BREAK\n        case 73:\n          YY_RULE_SETUP\n#line 132 \"flex_lexer.l\"\n          TOKEN(UNION)\n          YY_BREAK\n        case 74:\n          YY_RULE_SETUP\n#line 133 \"flex_lexer.l\"\n          TOKEN(USING)\n          YY_BREAK\n        case 75:\n          YY_RULE_SETUP\n#line 134 \"flex_lexer.l\"\n          TOKEN(WHERE)\n          YY_BREAK\n        case 76:\n          YY_RULE_SETUP\n#line 135 \"flex_lexer.l\"\n          TOKEN(CALL)\n          YY_BREAK\n        case 77:\n          YY_RULE_SETUP\n#line 136 \"flex_lexer.l\"\n          TOKEN(CASE)\n          YY_BREAK\n        case 78:\n          YY_RULE_SETUP\n#line 137 \"flex_lexer.l\"\n          TOKEN(CHAR)\n          YY_BREAK\n        case 79:\n          YY_RULE_SETUP\n#line 138 \"flex_lexer.l\"\n          TOKEN(DATE)\n          YY_BREAK\n        case 80:\n          YY_RULE_SETUP\n#line 139 \"flex_lexer.l\"\n          TOKEN(DESC)\n          YY_BREAK\n        case 81:\n          YY_RULE_SETUP\n#line 140 \"flex_lexer.l\"\n          TOKEN(DROP)\n          YY_BREAK\n        case 82:\n          YY_RULE_SETUP\n#line 141 \"flex_lexer.l\"\n          TOKEN(ELSE)\n          YY_BREAK\n        case 83:\n          YY_RULE_SETUP\n#line 142 \"flex_lexer.l\"\n          TOKEN(FILE)\n          YY_BREAK\n        case 84:\n          YY_RULE_SETUP\n#line 143 \"flex_lexer.l\"\n          TOKEN(FROM)\n          YY_BREAK\n        case 85:\n          YY_RULE_SETUP\n#line 144 \"flex_lexer.l\"\n          TOKEN(FULL)\n          YY_BREAK\n        case 86:\n          YY_RULE_SETUP\n#line 145 \"flex_lexer.l\"\n          TOKEN(HASH)\n          YY_BREAK\n        case 87:\n          YY_RULE_SETUP\n#line 146 \"flex_lexer.l\"\n          TOKEN(HINT)\n          YY_BREAK\n        case 88:\n          YY_RULE_SETUP\n#line 147 \"flex_lexer.l\"\n          TOKEN(INTO)\n          YY_BREAK\n        case 89:\n          YY_RULE_SETUP\n#line 148 \"flex_lexer.l\"\n          TOKEN(JOIN)\n          YY_BREAK\n        case 90:\n          YY_RULE_SETUP\n#line 149 \"flex_lexer.l\"\n          TOKEN(LEFT)\n          YY_BREAK\n        case 91:\n          YY_RULE_SETUP\n#line 150 \"flex_lexer.l\"\n          TOKEN(LIKE)\n          YY_BREAK\n        case 92:\n          YY_RULE_SETUP\n#line 151 \"flex_lexer.l\"\n          TOKEN(ILIKE)\n          YY_BREAK\n        case 93:\n          YY_RULE_SETUP\n#line 152 \"flex_lexer.l\"\n          TOKEN(LOAD)\n          YY_BREAK\n        case 94:\n          YY_RULE_SETUP\n#line 153 \"flex_lexer.l\"\n          TOKEN(LONG)\n          YY_BREAK\n        case 95:\n          YY_RULE_SETUP\n#line 154 \"flex_lexer.l\"\n          TOKEN(NULL)\n          YY_BREAK\n        case 96:\n          YY_RULE_SETUP\n#line 155 \"flex_lexer.l\"\n          TOKEN(PLAN)\n          YY_BREAK\n        case 97:\n          YY_RULE_SETUP\n#line 156 \"flex_lexer.l\"\n          TOKEN(SHOW)\n          YY_BREAK\n        case 98:\n          YY_RULE_SETUP\n#line 157 \"flex_lexer.l\"\n          TOKEN(TEXT)\n          YY_BREAK\n        case 99:\n          YY_RULE_SETUP\n#line 158 \"flex_lexer.l\"\n          TOKEN(THEN)\n          YY_BREAK\n        case 100:\n          YY_RULE_SETUP\n#line 159 \"flex_lexer.l\"\n          TOKEN(TIME)\n          YY_BREAK\n        case 101:\n          YY_RULE_SETUP\n#line 160 \"flex_lexer.l\"\n          TOKEN(VIEW)\n          YY_BREAK\n        case 102:\n          YY_RULE_SETUP\n#line 161 \"flex_lexer.l\"\n          TOKEN(WHEN)\n          YY_BREAK\n        case 103:\n          YY_RULE_SETUP\n#line 162 \"flex_lexer.l\"\n          TOKEN(WITH)\n          YY_BREAK\n        case 104:\n          YY_RULE_SETUP\n#line 163 \"flex_lexer.l\"\n          TOKEN(ADD)\n          YY_BREAK\n        case 105:\n          YY_RULE_SETUP\n#line 164 \"flex_lexer.l\"\n          TOKEN(ALL)\n          YY_BREAK\n        case 106:\n          YY_RULE_SETUP\n#line 165 \"flex_lexer.l\"\n          TOKEN(AND)\n          YY_BREAK\n        case 107:\n          YY_RULE_SETUP\n#line 166 \"flex_lexer.l\"\n          TOKEN(ASC)\n          YY_BREAK\n        case 108:\n          YY_RULE_SETUP\n#line 167 \"flex_lexer.l\"\n          TOKEN(CSV)\n          YY_BREAK\n        case 109:\n          YY_RULE_SETUP\n#line 168 \"flex_lexer.l\"\n          TOKEN(END)\n          YY_BREAK\n        case 110:\n          YY_RULE_SETUP\n#line 169 \"flex_lexer.l\"\n          TOKEN(FOR)\n          YY_BREAK\n        case 111:\n          YY_RULE_SETUP\n#line 170 \"flex_lexer.l\"\n          TOKEN(INT)\n          YY_BREAK\n        case 112:\n          YY_RULE_SETUP\n#line 171 \"flex_lexer.l\"\n          TOKEN(KEY)\n          YY_BREAK\n        case 113:\n          YY_RULE_SETUP\n#line 172 \"flex_lexer.l\"\n          TOKEN(NOT)\n          YY_BREAK\n        case 114:\n          YY_RULE_SETUP\n#line 173 \"flex_lexer.l\"\n          TOKEN(OFF)\n          YY_BREAK\n        case 115:\n          YY_RULE_SETUP\n#line 174 \"flex_lexer.l\"\n          TOKEN(SET)\n          YY_BREAK\n        case 116:\n          YY_RULE_SETUP\n#line 175 \"flex_lexer.l\"\n          TOKEN(TBL)\n          YY_BREAK\n        case 117:\n          YY_RULE_SETUP\n#line 176 \"flex_lexer.l\"\n          TOKEN(TOP)\n          YY_BREAK\n        case 118:\n          YY_RULE_SETUP\n#line 177 \"flex_lexer.l\"\n          TOKEN(AS)\n          YY_BREAK\n        case 119:\n          YY_RULE_SETUP\n#line 178 \"flex_lexer.l\"\n          TOKEN(BY)\n          YY_BREAK\n        case 120:\n          YY_RULE_SETUP\n#line 179 \"flex_lexer.l\"\n          TOKEN(IF)\n          YY_BREAK\n        case 121:\n          YY_RULE_SETUP\n#line 180 \"flex_lexer.l\"\n          TOKEN(IN)\n          YY_BREAK\n        case 122:\n          YY_RULE_SETUP\n#line 181 \"flex_lexer.l\"\n          TOKEN(IS)\n          YY_BREAK\n        case 123:\n          YY_RULE_SETUP\n#line 182 \"flex_lexer.l\"\n          TOKEN(OF)\n          YY_BREAK\n        case 124:\n          YY_RULE_SETUP\n#line 183 \"flex_lexer.l\"\n          TOKEN(ON)\n          YY_BREAK\n        case 125:\n          YY_RULE_SETUP\n#line 184 \"flex_lexer.l\"\n          TOKEN(OR)\n          YY_BREAK\n        case 126:\n          YY_RULE_SETUP\n#line 185 \"flex_lexer.l\"\n          TOKEN(TO)\n          YY_BREAK\n        case 127:\n          YY_RULE_SETUP\n#line 186 \"flex_lexer.l\"\n          TOKEN(SECOND)\n          YY_BREAK\n        case 128:\n          YY_RULE_SETUP\n#line 187 \"flex_lexer.l\"\n          TOKEN(MINUTE)\n          YY_BREAK\n        case 129:\n          YY_RULE_SETUP\n#line 188 \"flex_lexer.l\"\n          TOKEN(HOUR)\n          YY_BREAK\n        case 130:\n          YY_RULE_SETUP\n#line 189 \"flex_lexer.l\"\n          TOKEN(DAY)\n          YY_BREAK\n        case 131:\n          YY_RULE_SETUP\n#line 190 \"flex_lexer.l\"\n          TOKEN(MONTH)\n          YY_BREAK\n        case 132:\n          YY_RULE_SETUP\n#line 191 \"flex_lexer.l\"\n          TOKEN(YEAR)\n          YY_BREAK\n        case 133:\n          YY_RULE_SETUP\n#line 193 \"flex_lexer.l\"\n          TOKEN(INDEXED)\n          YY_BREAK\n        case 134:\n          YY_RULE_SETUP\n#line 194 \"flex_lexer.l\"\n          TOKEN(PRAGMA)\n          YY_BREAK\n        case 135:\n          YY_RULE_SETUP\n#line 195 \"flex_lexer.l\"\n          TOKEN(REINDEX)\n          YY_BREAK\n        case 136:\n          YY_RULE_SETUP\n#line 196 \"flex_lexer.l\"\n          TOKEN(GENERATED)\n          YY_BREAK\n        case 137:\n          YY_RULE_SETUP\n#line 197 \"flex_lexer.l\"\n          TOKEN(ALWAYS)\n          YY_BREAK\n        case 138:\n          YY_RULE_SETUP\n#line 198 \"flex_lexer.l\"\n          TOKEN(CHECK)\n          YY_BREAK\n        case 139:\n          YY_RULE_SETUP\n#line 199 \"flex_lexer.l\"\n          TOKEN(CONFLICT)\n          YY_BREAK\n        case 140:\n          YY_RULE_SETUP\n#line 200 \"flex_lexer.l\"\n          TOKEN(IGNORE)\n          YY_BREAK\n        case 141:\n          YY_RULE_SETUP\n#line 201 \"flex_lexer.l\"\n          TOKEN(REPLACE)\n          YY_BREAK\n        case 142:\n          YY_RULE_SETUP\n#line 202 \"flex_lexer.l\"\n          TOKEN(ROLLBACK)\n          YY_BREAK\n        case 143:\n          YY_RULE_SETUP\n#line 203 \"flex_lexer.l\"\n          TOKEN(ABORT)\n          YY_BREAK\n        case 144:\n          YY_RULE_SETUP\n#line 204 \"flex_lexer.l\"\n          TOKEN(FAIL)\n          YY_BREAK\n        case 145:\n          YY_RULE_SETUP\n#line 205 \"flex_lexer.l\"\n          TOKEN(AUTOINCR)\n          YY_BREAK\n        case 146:\n          YY_RULE_SETUP\n#line 206 \"flex_lexer.l\"\n          TOKEN(BEGIN)\n          YY_BREAK\n        case 147:\n          YY_RULE_SETUP\n#line 207 \"flex_lexer.l\"\n          TOKEN(TRIGGER)\n          YY_BREAK\n        case 148:\n          YY_RULE_SETUP\n#line 208 \"flex_lexer.l\"\n          TOKEN(TEMP)\n          YY_BREAK\n        case 149:\n          YY_RULE_SETUP\n#line 209 \"flex_lexer.l\"\n          TOKEN(INSTEAD)\n          YY_BREAK\n        case 150:\n          YY_RULE_SETUP\n#line 210 \"flex_lexer.l\"\n          TOKEN(EACH)\n          YY_BREAK\n        case 151:\n          YY_RULE_SETUP\n#line 211 \"flex_lexer.l\"\n          TOKEN(ROW)\n          YY_BREAK\n        case 152:\n          YY_RULE_SETUP\n#line 212 \"flex_lexer.l\"\n          TOKEN(OVER)\n          YY_BREAK\n        case 153:\n          YY_RULE_SETUP\n#line 213 \"flex_lexer.l\"\n          TOKEN(FILTER)\n          YY_BREAK\n        case 154:\n          YY_RULE_SETUP\n#line 214 \"flex_lexer.l\"\n          TOKEN(CURRENT)\n          YY_BREAK\n        case 155:\n          YY_RULE_SETUP\n#line 215 \"flex_lexer.l\"\n          TOKEN(EXCLUDE)\n          YY_BREAK\n        case 156:\n          YY_RULE_SETUP\n#line 216 \"flex_lexer.l\"\n          TOKEN(FOLLOWING)\n          YY_BREAK\n        case 157:\n          YY_RULE_SETUP\n#line 217 \"flex_lexer.l\"\n          TOKEN(GROUPS)\n          YY_BREAK\n        case 158:\n          YY_RULE_SETUP\n#line 218 \"flex_lexer.l\"\n          TOKEN(NO)\n          YY_BREAK\n        case 159:\n          YY_RULE_SETUP\n#line 219 \"flex_lexer.l\"\n          TOKEN(OTHERS)\n          YY_BREAK\n        case 160:\n          YY_RULE_SETUP\n#line 220 \"flex_lexer.l\"\n          TOKEN(PRECEDING)\n          YY_BREAK\n        case 161:\n          YY_RULE_SETUP\n#line 221 \"flex_lexer.l\"\n          TOKEN(RANGE)\n          YY_BREAK\n        case 162:\n          YY_RULE_SETUP\n#line 222 \"flex_lexer.l\"\n          TOKEN(ROWS)\n          YY_BREAK\n        case 163:\n          YY_RULE_SETUP\n#line 223 \"flex_lexer.l\"\n          TOKEN(TIES)\n          YY_BREAK\n        case 164:\n          YY_RULE_SETUP\n#line 224 \"flex_lexer.l\"\n          TOKEN(UNBOUNDED)\n          YY_BREAK\n        case 165:\n          YY_RULE_SETUP\n#line 225 \"flex_lexer.l\"\n          TOKEN(WINDOW)\n          YY_BREAK\n        case 166:\n          YY_RULE_SETUP\n#line 226 \"flex_lexer.l\"\n          TOKEN(PARTITION)\n          YY_BREAK\n        case 167:\n          YY_RULE_SETUP\n#line 227 \"flex_lexer.l\"\n          TOKEN(ATTACH)\n          YY_BREAK\n        case 168:\n          YY_RULE_SETUP\n#line 228 \"flex_lexer.l\"\n          TOKEN(DETACH)\n          YY_BREAK\n        case 169:\n          YY_RULE_SETUP\n#line 229 \"flex_lexer.l\"\n          TOKEN(DATABASE)\n          YY_BREAK\n        case 170:\n          YY_RULE_SETUP\n#line 230 \"flex_lexer.l\"\n          TOKEN(CAST)\n          YY_BREAK\n        case 171:\n          YY_RULE_SETUP\n#line 231 \"flex_lexer.l\"\n          TOKEN(SAVEPOINT)\n          YY_BREAK\n        case 172:\n          YY_RULE_SETUP\n#line 232 \"flex_lexer.l\"\n          TOKEN(RELEASE)\n          YY_BREAK\n        case 173:\n          YY_RULE_SETUP\n#line 234 \"flex_lexer.l\"\n          TOKEN(VACUUM)\n          YY_BREAK\n        case 174:\n          YY_RULE_SETUP\n#line 235 \"flex_lexer.l\"\n          TOKEN(TRANSACTION)\n          YY_BREAK\n        case 175:\n          YY_RULE_SETUP\n#line 236 \"flex_lexer.l\"\n          TOKEN(DEFFERED)\n          YY_BREAK\n        case 176:\n          YY_RULE_SETUP\n#line 237 \"flex_lexer.l\"\n          TOKEN(EXCLUSIVE)\n          YY_BREAK\n        case 177:\n          YY_RULE_SETUP\n#line 238 \"flex_lexer.l\"\n          TOKEN(IMEDIATE)\n          YY_BREAK\n        case 178:\n          YY_RULE_SETUP\n#line 239 \"flex_lexer.l\"\n          TOKEN(COMMIT)\n          YY_BREAK\n        case 179:\n          YY_RULE_SETUP\n#line 240 \"flex_lexer.l\"\n          TOKEN(GLOB)\n          YY_BREAK\n        case 180:\n          YY_RULE_SETUP\n#line 241 \"flex_lexer.l\"\n          TOKEN(MATCH)\n          YY_BREAK\n        case 181:\n          YY_RULE_SETUP\n#line 242 \"flex_lexer.l\"\n          TOKEN(REGEX)\n          YY_BREAK\n        case 182:\n          YY_RULE_SETUP\n#line 243 \"flex_lexer.l\"\n          TOKEN(NOTHING)\n          YY_BREAK\n        case 183:\n          YY_RULE_SETUP\n#line 244 \"flex_lexer.l\"\n          TOKEN(NULLS)\n          YY_BREAK\n        case 184:\n          YY_RULE_SETUP\n#line 245 \"flex_lexer.l\"\n          TOKEN(LAST)\n          YY_BREAK\n        case 185:\n          YY_RULE_SETUP\n#line 246 \"flex_lexer.l\"\n          TOKEN(FIRST)\n          YY_BREAK\n        case 186:\n          YY_RULE_SETUP\n#line 247 \"flex_lexer.l\"\n          TOKEN(DO)\n          YY_BREAK\n        case 187:\n          YY_RULE_SETUP\n#line 248 \"flex_lexer.l\"\n          TOKEN(COLLATE)\n          YY_BREAK\n        case 188:\n          YY_RULE_SETUP\n#line 251 \"flex_lexer.l\"\n          {\n            yylval->ival = 1;\n            return SQL_INTVAL;\n          }\n          YY_BREAK\n        case 189:\n          YY_RULE_SETUP\n#line 255 \"flex_lexer.l\"\n          {\n            yylval->ival = 0;\n            return SQL_INTVAL;\n          }\n          YY_BREAK\n        /* Allow =/== see https://sqlite.org/lang_expr.html#collateop */\n        case 190:\n          YY_RULE_SETUP\n#line 260 \"flex_lexer.l\"\n          TOKEN(EQUALS)\n          YY_BREAK\n        case 191:\n          YY_RULE_SETUP\n#line 261 \"flex_lexer.l\"\n          TOKEN(NOTEQUALS)\n          YY_BREAK\n        case 192:\n          YY_RULE_SETUP\n#line 262 \"flex_lexer.l\"\n          TOKEN(NOTEQUALS)\n          YY_BREAK\n        case 193:\n          YY_RULE_SETUP\n#line 263 \"flex_lexer.l\"\n          TOKEN(LESSEQ)\n          YY_BREAK\n        case 194:\n          YY_RULE_SETUP\n#line 264 \"flex_lexer.l\"\n          TOKEN(GREATEREQ)\n          YY_BREAK\n        case 195:\n          YY_RULE_SETUP\n#line 265 \"flex_lexer.l\"\n          TOKEN(CONCAT)\n          YY_BREAK\n        case 196:\n          YY_RULE_SETUP\n#line 267 \"flex_lexer.l\"\n          {\n            return yytext[0];\n          }\n          YY_BREAK\n        case 197:\n#line 270 \"flex_lexer.l\"\n        case 198:\n          YY_RULE_SETUP\n#line 270 \"flex_lexer.l\"\n          {\n            yylval->fval = atof(yytext);\n            return SQL_FLOATVAL;\n          }\n          YY_BREAK\n        case 199:\n          YY_RULE_SETUP\n#line 275 \"flex_lexer.l\"\n          {\n            yylval->ival = atol(yytext);\n            return SQL_INTVAL;\n          }\n          YY_BREAK\n        case 200:\n          YY_RULE_SETUP\n#line 280 \"flex_lexer.l\"\n          {\n            // Crop the leading and trailing quote char\n            yylval->sval = substr(yytext, 1, strlen(yytext) - 1);\n            return SQL_IDENTIFIER;\n          }\n          YY_BREAK\n        case 201:\n          YY_RULE_SETUP\n#line 286 \"flex_lexer.l\"\n          {\n            yylval->sval = strdup(yytext);\n            return SQL_IDENTIFIER;\n          }\n          YY_BREAK\n        case 202:\n          YY_RULE_SETUP\n#line 291 \"flex_lexer.l\"\n          {\n            BEGIN singlequotedstring;\n            strbuf = std::stringstream{};\n          }\n          YY_BREAK\n        case 203:\n          YY_RULE_SETUP\n#line 292 \"flex_lexer.l\"\n          {\n            strbuf << '\\'';\n          }\n          YY_BREAK\n        case 204:\n          /* rule 204 can match eol */\n          YY_RULE_SETUP\n#line 293 \"flex_lexer.l\"\n          {\n            strbuf << yytext;\n          }\n          YY_BREAK\n        case 205:\n          YY_RULE_SETUP\n#line 294 \"flex_lexer.l\"\n          {\n            BEGIN 0;\n            yylval->sval = strdup(strbuf.str().c_str());\n            return SQL_STRING;\n          }\n          YY_BREAK\n        case YY_STATE_EOF(singlequotedstring):\n#line 295 \"flex_lexer.l\"\n        { /*fprintf(stdout, \"[SQL-Lexer-Error] Unterminated string\\n\"); */\n          return 0;\n        }\n          YY_BREAK\n        case 206:\n          YY_RULE_SETUP\n#line 297 \"flex_lexer.l\"\n          { /*fprintf(stdout, \"[SQL-Lexer-Error] Unknown Character: %c\\n\",\n               yytext[0]); */\n            return 0;\n          }\n          YY_BREAK\n        case 207:\n          YY_RULE_SETUP\n#line 300 \"flex_lexer.l\"\n          ECHO;\n          YY_BREAK\n#line 3875 \"flex_lexer.cpp\"\n        case YY_STATE_EOF(INITIAL):\n        case YY_STATE_EOF(COMMENT):\n          yyterminate();\n\n        case YY_END_OF_BUFFER: {\n          /* Amount of text matched not including the EOB char. */\n          int yy_amount_of_matched_text = (int)(yy_cp - yyg->yytext_ptr) - 1;\n\n          /* Undo the effects of YY_DO_BEFORE_ACTION. */\n          *yy_cp = yyg->yy_hold_char;\n          YY_RESTORE_YY_MORE_OFFSET\n\n          if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW) {\n            /* We're scanning a new file or input source.  It's\n             * possible that this happened because the user\n             * just pointed yyin at a new source and called\n             * yylex().  If so, then we have to assure\n             * consistency between YY_CURRENT_BUFFER and our\n             * globals.  Here is the right place to do so, because\n             * this is the first action (other than possibly a\n             * back-up) that will match for the new input source.\n             */\n            yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n            YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;\n            YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;\n          }\n\n          /* Note that here we test for yy_c_buf_p \"<=\" to the position\n           * of the first EOB in the buffer, since yy_c_buf_p will\n           * already have been incremented past the NUL character\n           * (since all states make transitions on EOB to the\n           * end-of-buffer state).  Contrast this with the test\n           * in input().\n           */\n          if (yyg->yy_c_buf_p <=\n              &YY_CURRENT_BUFFER_LVALUE\n                   ->yy_ch_buf[yyg->yy_n_chars]) { /* This was really a NUL. */\n            yy_state_type yy_next_state;\n\n            yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n            yy_current_state = yy_get_previous_state(yyscanner);\n\n            /* Okay, we're now positioned to make the NUL\n             * transition.  We couldn't have\n             * yy_get_previous_state() go ahead and do it\n             * for us because it doesn't know how to deal\n             * with the possibility of jamming (and we don't\n             * want to build jamming into it because then it\n             * will run more slowly).\n             */\n\n            yy_next_state = yy_try_NUL_trans(yy_current_state, yyscanner);\n\n            yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n\n            if (yy_next_state) {\n              /* Consume the NUL. */\n              yy_cp = ++yyg->yy_c_buf_p;\n              yy_current_state = yy_next_state;\n              goto yy_match;\n            }\n\n            else {\n              yy_cp = yyg->yy_last_accepting_cpos;\n              yy_current_state = yyg->yy_last_accepting_state;\n              goto yy_find_action;\n            }\n          }\n\n          else\n            switch (yy_get_next_buffer(yyscanner)) {\n              case EOB_ACT_END_OF_FILE: {\n                yyg->yy_did_buffer_switch_on_eof = 0;\n\n                if (yywrap(yyscanner)) {\n                  /* Note: because we've taken care in\n                   * yy_get_next_buffer() to have set up\n                   * yytext, we can now set up\n                   * yy_c_buf_p so that if some total\n                   * hoser (like flex itself) wants to\n                   * call the scanner after we return the\n                   * YY_NULL, it'll still work - another\n                   * YY_NULL will get returned.\n                   */\n                  yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;\n\n                  yy_act = YY_STATE_EOF(YY_START);\n                  goto do_action;\n                }\n\n                else {\n                  if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n                }\n                break;\n              }\n\n              case EOB_ACT_CONTINUE_SCAN:\n                yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_match;\n\n              case EOB_ACT_LAST_MATCH:\n                yyg->yy_c_buf_p =\n                    &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];\n\n                yy_current_state = yy_get_previous_state(yyscanner);\n\n                yy_cp = yyg->yy_c_buf_p;\n                yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;\n                goto yy_find_action;\n            }\n          break;\n        }\n\n        default:\n          YY_FATAL_ERROR(\"fatal flex scanner internal error--no action found\");\n      } /* end of action switch */\n    }   /* end of scanning one token */\n  }     /* end of user's declarations */\n} /* end of yylex */\n\n/* yy_get_next_buffer - try to read in a new buffer\n *\n * Returns a code representing an action:\n *\tEOB_ACT_LAST_MATCH -\n *\tEOB_ACT_CONTINUE_SCAN - continue scanning from current position\n *\tEOB_ACT_END_OF_FILE - end of file\n */\nstatic int yy_get_next_buffer(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;\n  char *source = yyg->yytext_ptr;\n  int number_to_move, i;\n  int ret_val;\n\n  if (yyg->yy_c_buf_p >\n      &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1])\n    YY_FATAL_ERROR(\"fatal flex scanner internal error--end of buffer missed\");\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer ==\n      0) { /* Don't try to fill the buffer, so this is an EOF. */\n    if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) {\n      /* We matched a single character, the EOB, so\n       * treat this as a final EOF.\n       */\n      return EOB_ACT_END_OF_FILE;\n    }\n\n    else {\n      /* We matched some text prior to the EOB, first\n       * process it.\n       */\n      return EOB_ACT_LAST_MATCH;\n    }\n  }\n\n  /* Try to read more data. */\n\n  /* First move last chars to start of buffer. */\n  number_to_move = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr - 1);\n\n  for (i = 0; i < number_to_move; ++i) *(dest++) = *(source++);\n\n  if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING)\n    /* don't do the read, it's not guaranteed to return an EOF,\n     * just force an EOF\n     */\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;\n\n  else {\n    int num_to_read =\n        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n\n    while (num_to_read <= 0) { /* Not enough room in the buffer - grow it. */\n\n      /* just a shorter name for the current buffer */\n      YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;\n\n      int yy_c_buf_p_offset = (int)(yyg->yy_c_buf_p - b->yy_ch_buf);\n\n      if (b->yy_is_our_buffer) {\n        int new_size = b->yy_buf_size * 2;\n\n        if (new_size <= 0)\n          b->yy_buf_size += b->yy_buf_size / 8;\n        else\n          b->yy_buf_size *= 2;\n\n        b->yy_ch_buf = (char *)\n            /* Include room in for 2 EOB chars. */\n            yyrealloc((void *)b->yy_ch_buf, (yy_size_t)(b->yy_buf_size + 2),\n                      yyscanner);\n      } else\n        /* Can't grow it, we don't own it. */\n        b->yy_ch_buf = NULL;\n\n      if (!b->yy_ch_buf)\n        YY_FATAL_ERROR(\"fatal error - scanner input buffer overflow\");\n\n      yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];\n\n      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;\n    }\n\n    if (num_to_read > YY_READ_BUF_SIZE) num_to_read = YY_READ_BUF_SIZE;\n\n    /* Read in more data. */\n    YY_INPUT((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),\n             yyg->yy_n_chars, num_to_read);\n\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  if (yyg->yy_n_chars == 0) {\n    if (number_to_move == YY_MORE_ADJ) {\n      ret_val = EOB_ACT_END_OF_FILE;\n      yyrestart(yyin, yyscanner);\n    }\n\n    else {\n      ret_val = EOB_ACT_LAST_MATCH;\n      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING;\n    }\n  }\n\n  else\n    ret_val = EOB_ACT_CONTINUE_SCAN;\n\n  if ((yyg->yy_n_chars + number_to_move) >\n      YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {\n    /* Extend the array by 50%, plus the number we really need. */\n    int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);\n    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf =\n        (char *)yyrealloc((void *)YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,\n                          (yy_size_t)new_size, yyscanner);\n    if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf)\n      YY_FATAL_ERROR(\"out of dynamic memory in yy_get_next_buffer()\");\n    /* \"- 2\" to take care of EOB's */\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int)(new_size - 2);\n  }\n\n  yyg->yy_n_chars += number_to_move;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;\n  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] =\n      YY_END_OF_BUFFER_CHAR;\n\n  yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];\n\n  return ret_val;\n}\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\nstatic yy_state_type yy_get_previous_state(yyscan_t yyscanner) {\n  yy_state_type yy_current_state;\n  char *yy_cp;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_current_state = yyg->yy_start;\n\n  for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p;\n       ++yy_cp) {\n    YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);\n    if (yy_accept[yy_current_state]) {\n      yyg->yy_last_accepting_state = yy_current_state;\n      yyg->yy_last_accepting_cpos = yy_cp;\n    }\n    while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n      yy_current_state = (int)yy_def[yy_current_state];\n      if (yy_current_state >= 1460) yy_c = yy_meta[yy_c];\n    }\n    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  }\n\n  return yy_current_state;\n}\n\n/* yy_try_NUL_trans - try to make a transition on the NUL character\n *\n * synopsis\n *\tnext_state = yy_try_NUL_trans( current_state );\n */\nstatic yy_state_type yy_try_NUL_trans(yy_state_type yy_current_state,\n                                      yyscan_t yyscanner) {\n  int yy_is_jam;\n  struct yyguts_t *yyg = (struct yyguts_t *)\n      yyscanner; /* This var may be unused depending upon options. */\n  char *yy_cp = yyg->yy_c_buf_p;\n\n  YY_CHAR yy_c = 1;\n  if (yy_accept[yy_current_state]) {\n    yyg->yy_last_accepting_state = yy_current_state;\n    yyg->yy_last_accepting_cpos = yy_cp;\n  }\n  while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) {\n    yy_current_state = (int)yy_def[yy_current_state];\n    if (yy_current_state >= 1460) yy_c = yy_meta[yy_c];\n  }\n  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];\n  yy_is_jam = (yy_current_state == 1459);\n\n  (void)yyg;\n  return yy_is_jam ? 0 : yy_current_state;\n}\n\n#ifndef YY_NO_UNPUT\n\n#endif\n\n#ifndef YY_NO_INPUT\n#ifdef __cplusplus\nstatic int yyinput(yyscan_t yyscanner)\n#else\nstatic int input(yyscan_t yyscanner)\n#endif\n\n{\n  int c;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  *yyg->yy_c_buf_p = yyg->yy_hold_char;\n\n  if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) {\n    /* yy_c_buf_p now points to the character we want to return.\n     * If this occurs *before* the EOB characters, then it's a\n     * valid NUL; if not, then we've hit the end of the buffer.\n     */\n    if (yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars])\n      /* This was really a NUL. */\n      *yyg->yy_c_buf_p = '\\0';\n\n    else { /* need more input */\n      int offset = (int)(yyg->yy_c_buf_p - yyg->yytext_ptr);\n      ++yyg->yy_c_buf_p;\n\n      switch (yy_get_next_buffer(yyscanner)) {\n        case EOB_ACT_LAST_MATCH:\n          /* This happens because yy_g_n_b()\n           * sees that we've accumulated a\n           * token and flags that we need to\n           * try matching the token before\n           * proceeding.  But for input(),\n           * there's no matching to consider.\n           * So convert the EOB_ACT_LAST_MATCH\n           * to EOB_ACT_END_OF_FILE.\n           */\n\n          /* Reset buffer status. */\n          yyrestart(yyin, yyscanner);\n\n          /*FALLTHROUGH*/\n\n        case EOB_ACT_END_OF_FILE: {\n          if (yywrap(yyscanner)) return 0;\n\n          if (!yyg->yy_did_buffer_switch_on_eof) YY_NEW_FILE;\n#ifdef __cplusplus\n          return yyinput(yyscanner);\n#else\n          return input(yyscanner);\n#endif\n        }\n\n        case EOB_ACT_CONTINUE_SCAN:\n          yyg->yy_c_buf_p = yyg->yytext_ptr + offset;\n          break;\n      }\n    }\n  }\n\n  c = *(unsigned char *)yyg->yy_c_buf_p; /* cast for 8-bit char's */\n  *yyg->yy_c_buf_p = '\\0';               /* preserve yytext */\n  yyg->yy_hold_char = *++yyg->yy_c_buf_p;\n\n  return c;\n}\n#endif /* ifndef YY_NO_INPUT */\n\n/** Immediately switch to a different input stream.\n * @param input_file A readable stream.\n * @param yyscanner The scanner object.\n * @note This function does not reset the start condition to @c INITIAL .\n */\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) {\n    yyensure_buffer_stack(yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin, YY_BUF_SIZE, yyscanner);\n  }\n\n  yy_init_buffer(YY_CURRENT_BUFFER, input_file, yyscanner);\n  yy_load_buffer_state(yyscanner);\n}\n\n/** Switch to a different input buffer.\n * @param new_buffer The new input buffer.\n * @param yyscanner The scanner object.\n */\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* TODO. We should be able to replace this entire function body\n   * with\n   *\t\tyypop_buffer_state();\n   *\t\tyypush_buffer_state(new_buffer);\n   */\n  yyensure_buffer_stack(yyscanner);\n  if (YY_CURRENT_BUFFER == new_buffer) return;\n\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n  yy_load_buffer_state(yyscanner);\n\n  /* We don't actually know whether we did this switch during\n   * EOF (yywrap()) processing, but the only time this flag\n   * is looked at is after yywrap() is called, so it's safe\n   * to go ahead and always set it.\n   */\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\nstatic void yy_load_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;\n  yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;\n  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;\n  yyg->yy_hold_char = *yyg->yy_c_buf_p;\n}\n\n/** Allocate and initialize an input buffer state.\n * @param file A readable stream.\n * @param size The character buffer size in bytes. When in doubt, use @c\n * YY_BUF_SIZE.\n * @param yyscanner The scanner object.\n * @return the allocated buffer state.\n */\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_buf_size = size;\n\n  /* yy_ch_buf has to be 2 characters longer than the size given because\n   * we need to put in 2 end-of-buffer characters.\n   */\n  b->yy_ch_buf = (char *)yyalloc((yy_size_t)(b->yy_buf_size + 2), yyscanner);\n  if (!b->yy_ch_buf)\n    YY_FATAL_ERROR(\"out of dynamic memory in yy_create_buffer()\");\n\n  b->yy_is_our_buffer = 1;\n\n  yy_init_buffer(b, file, yyscanner);\n\n  return b;\n}\n\n/** Destroy the buffer.\n * @param b a buffer created with yy_create_buffer()\n * @param yyscanner The scanner object.\n */\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!b) return;\n\n  if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */\n    YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE)0;\n\n  if (b->yy_is_our_buffer) yyfree((void *)b->yy_ch_buf, yyscanner);\n\n  yyfree((void *)b, yyscanner);\n}\n\n/* Initializes or reinitializes a buffer.\n * This function is sometimes called more than once on the same buffer,\n * such as during a yyrestart() or at EOF.\n */\nstatic void yy_init_buffer(YY_BUFFER_STATE b, FILE *file, yyscan_t yyscanner)\n\n{\n  int oerrno = errno;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  yy_flush_buffer(b, yyscanner);\n\n  b->yy_input_file = file;\n  b->yy_fill_buffer = 1;\n\n  /* If b is the current buffer, then yy_init_buffer was _probably_\n   * called from yyrestart() or through yy_get_next_buffer.\n   * In that case, we don't want to reset the lineno or column.\n   */\n  if (b != YY_CURRENT_BUFFER) {\n    b->yy_bs_lineno = 1;\n    b->yy_bs_column = 0;\n  }\n\n  b->yy_is_interactive = 0;\n\n  errno = oerrno;\n}\n\n/** Discard all buffered characters. On the next scan, YY_INPUT will be called.\n * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.\n * @param yyscanner The scanner object.\n */\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!b) return;\n\n  b->yy_n_chars = 0;\n\n  /* We always need two end-of-buffer characters.  The first causes\n   * a transition to the end-of-buffer state.  The second causes\n   * a jam in that state.\n   */\n  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;\n  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;\n\n  b->yy_buf_pos = &b->yy_ch_buf[0];\n\n  b->yy_at_bol = 1;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  if (b == YY_CURRENT_BUFFER) yy_load_buffer_state(yyscanner);\n}\n\n/** Pushes the new state onto the stack. The new state becomes\n *  the current state. This function will allocate the stack\n *  if necessary.\n *  @param new_buffer The new state.\n *  @param yyscanner The scanner object.\n */\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (new_buffer == NULL) return;\n\n  yyensure_buffer_stack(yyscanner);\n\n  /* This block is copied from yy_switch_to_buffer. */\n  if (YY_CURRENT_BUFFER) {\n    /* Flush out information for old buffer. */\n    *yyg->yy_c_buf_p = yyg->yy_hold_char;\n    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;\n    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;\n  }\n\n  /* Only push if top exists. Otherwise, replace top. */\n  if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++;\n  YY_CURRENT_BUFFER_LVALUE = new_buffer;\n\n  /* copied from yy_switch_to_buffer. */\n  yy_load_buffer_state(yyscanner);\n  yyg->yy_did_buffer_switch_on_eof = 1;\n}\n\n/** Removes and deletes the top of the stack, if present.\n *  The next element becomes the new top.\n *  @param yyscanner The scanner object.\n */\nvoid yypop_buffer_state(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  if (!YY_CURRENT_BUFFER) return;\n\n  yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n  YY_CURRENT_BUFFER_LVALUE = NULL;\n  if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top;\n\n  if (YY_CURRENT_BUFFER) {\n    yy_load_buffer_state(yyscanner);\n    yyg->yy_did_buffer_switch_on_eof = 1;\n  }\n}\n\n/* Allocates the stack if it does not exist.\n *  Guarantees space for at least one push.\n */\nstatic void yyensure_buffer_stack(yyscan_t yyscanner) {\n  yy_size_t num_to_alloc;\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!yyg->yy_buffer_stack) {\n    /* First allocation is just for 2 elements, since we don't know if this\n     * scanner will even need a stack. We use 2 instead of 1 to avoid an\n     * immediate realloc on the next call.\n     */\n    num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyalloc(\n        num_to_alloc * sizeof(struct yy_buffer_state *), yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    memset(yyg->yy_buffer_stack, 0,\n           num_to_alloc * sizeof(struct yy_buffer_state *));\n\n    yyg->yy_buffer_stack_max = num_to_alloc;\n    yyg->yy_buffer_stack_top = 0;\n    return;\n  }\n\n  if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) {\n    /* Increase the buffer to prepare for a possible push. */\n    yy_size_t grow_size = 8 /* arbitrary grow size */;\n\n    num_to_alloc = yyg->yy_buffer_stack_max + grow_size;\n    yyg->yy_buffer_stack = (struct yy_buffer_state **)yyrealloc(\n        yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state *),\n        yyscanner);\n    if (!yyg->yy_buffer_stack)\n      YY_FATAL_ERROR(\"out of dynamic memory in yyensure_buffer_stack()\");\n\n    /* zero only the new slots.*/\n    memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0,\n           grow_size * sizeof(struct yy_buffer_state *));\n    yyg->yy_buffer_stack_max = num_to_alloc;\n  }\n}\n\n/** Setup the input buffer state to scan directly from a user-specified\n * character buffer.\n * @param base the character buffer\n * @param size the size in bytes of the character buffer\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n\n  if (size < 2 || base[size - 2] != YY_END_OF_BUFFER_CHAR ||\n      base[size - 1] != YY_END_OF_BUFFER_CHAR)\n    /* They forgot to leave room for the EOB's. */\n    return NULL;\n\n  b = (YY_BUFFER_STATE)yyalloc(sizeof(struct yy_buffer_state), yyscanner);\n  if (!b) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_buffer()\");\n\n  b->yy_buf_size = (int)(size - 2); /* \"- 2\" to take care of EOB's */\n  b->yy_buf_pos = b->yy_ch_buf = base;\n  b->yy_is_our_buffer = 0;\n  b->yy_input_file = NULL;\n  b->yy_n_chars = b->yy_buf_size;\n  b->yy_is_interactive = 0;\n  b->yy_at_bol = 1;\n  b->yy_fill_buffer = 0;\n  b->yy_buffer_status = YY_BUFFER_NEW;\n\n  yy_switch_to_buffer(b, yyscanner);\n\n  return b;\n}\n\n/** Setup the input buffer state to scan a string. The next call to yylex() will\n * scan from a @e copy of @a str.\n * @param yystr a NUL-terminated string to scan\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n * @note If you want to scan bytes that may contain NUL values, then use\n *       yy_scan_bytes() instead.\n */\nYY_BUFFER_STATE yy_scan_string(const char *yystr, yyscan_t yyscanner) {\n  return yy_scan_bytes(yystr, (int)strlen(yystr), yyscanner);\n}\n\n/** Setup the input buffer state to scan the given bytes. The next call to\n * yylex() will scan from a @e copy of @a bytes.\n * @param yybytes the byte buffer to scan\n * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.\n * @param yyscanner The scanner object.\n * @return the newly allocated buffer state object.\n */\nYY_BUFFER_STATE yy_scan_bytes(const char *yybytes, int _yybytes_len,\n                              yyscan_t yyscanner) {\n  YY_BUFFER_STATE b;\n  char *buf;\n  yy_size_t n;\n  int i;\n\n  /* Get memory for full buffer, including space for trailing EOB's. */\n  n = (yy_size_t)(_yybytes_len + 2);\n  buf = (char *)yyalloc(n, yyscanner);\n  if (!buf) YY_FATAL_ERROR(\"out of dynamic memory in yy_scan_bytes()\");\n\n  for (i = 0; i < _yybytes_len; ++i) buf[i] = yybytes[i];\n\n  buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR;\n\n  b = yy_scan_buffer(buf, n, yyscanner);\n  if (!b) YY_FATAL_ERROR(\"bad buffer in yy_scan_bytes()\");\n\n  /* It's okay to grow etc. this buffer, and we should throw it\n   * away when we're done.\n   */\n  b->yy_is_our_buffer = 1;\n\n  return b;\n}\n\n#ifndef YY_EXIT_FAILURE\n#define YY_EXIT_FAILURE 2\n#endif\n\nstatic void yynoreturn yy_fatal_error(const char *msg, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  fprintf(stderr, \"%s\\n\", msg);\n  exit(YY_EXIT_FAILURE);\n}\n\n/* Redefine yyless() so it works in section 3 code. */\n\n#undef yyless\n#define yyless(n)                                \\\n  do {                                           \\\n    /* Undo effects of setting up yytext. */     \\\n    int yyless_macro_arg = (n);                  \\\n    YY_LESS_LINENO(yyless_macro_arg);            \\\n    yytext[yyleng] = yyg->yy_hold_char;          \\\n    yyg->yy_c_buf_p = yytext + yyless_macro_arg; \\\n    yyg->yy_hold_char = *yyg->yy_c_buf_p;        \\\n    *yyg->yy_c_buf_p = '\\0';                     \\\n    yyleng = yyless_macro_arg;                   \\\n  } while (0)\n\n/* Accessor  methods (get/set functions) to struct members. */\n\n/** Get the user-defined data for this scanner.\n * @param yyscanner The scanner object.\n */\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyextra;\n}\n\n/** Get the current line number.\n * @param yyscanner The scanner object.\n */\nint yyget_lineno(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yylineno;\n}\n\n/** Get the current column number.\n * @param yyscanner The scanner object.\n */\nint yyget_column(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  if (!YY_CURRENT_BUFFER) return 0;\n\n  return yycolumn;\n}\n\n/** Get the input stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_in(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyin;\n}\n\n/** Get the output stream.\n * @param yyscanner The scanner object.\n */\nFILE *yyget_out(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyout;\n}\n\n/** Get the length of the current token.\n * @param yyscanner The scanner object.\n */\nint yyget_leng(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yyleng;\n}\n\n/** Get the current token.\n * @param yyscanner The scanner object.\n */\n\nchar *yyget_text(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yytext;\n}\n\n/** Set the user-defined data. This data is never touched by the scanner.\n * @param user_defined The data to be associated with this scanner.\n * @param yyscanner The scanner object.\n */\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyextra = user_defined;\n}\n\n/** Set the current line number.\n * @param _line_number line number\n * @param yyscanner The scanner object.\n */\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* lineno is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_lineno called with no buffer\");\n\n  yylineno = _line_number;\n}\n\n/** Set the current column.\n * @param _column_no column number\n * @param yyscanner The scanner object.\n */\nvoid yyset_column(int _column_no, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* column is only valid if an input buffer exists. */\n  if (!YY_CURRENT_BUFFER) YY_FATAL_ERROR(\"yyset_column called with no buffer\");\n\n  yycolumn = _column_no;\n}\n\n/** Set the input stream. This does not discard the current\n * input buffer.\n * @param _in_str A readable stream.\n * @param yyscanner The scanner object.\n * @see yy_switch_to_buffer\n */\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyin = _in_str;\n}\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yyout = _out_str;\n}\n\nint yyget_debug(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yy_flex_debug;\n}\n\nvoid yyset_debug(int _bdebug, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yy_flex_debug = _bdebug;\n}\n\n/* Accessor methods for yylval and yylloc */\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylval;\n}\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylval = yylval_param;\n}\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  return yylloc;\n}\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  yylloc = yylloc_param;\n}\n\n/* User-visible API */\n\n/* yylex_init is special because it creates the scanner itself, so it is\n * the ONLY reentrant function that doesn't take the scanner as the last\n * argument. That's why we explicitly handle the declaration, instead of using\n * our macros.\n */\nint yylex_init(yyscan_t *ptr_yy_globals) {\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), NULL);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for\n   * releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\n/* yylex_init_extra has the same functionality as yylex_init, but follows the\n * convention of taking the scanner as the last argument. Note however, that\n * this is a *pointer* to a scanner, as it will be allocated by this call (and\n * is the reason, too, why this function also must handle its own declaration).\n * The user defined value in the first argument will be available to yyalloc in\n * the yyextra field.\n */\nint yylex_init_extra(YY_EXTRA_TYPE yy_user_defined, yyscan_t *ptr_yy_globals) {\n  struct yyguts_t dummy_yyguts;\n\n  yyset_extra(yy_user_defined, &dummy_yyguts);\n\n  if (ptr_yy_globals == NULL) {\n    errno = EINVAL;\n    return 1;\n  }\n\n  *ptr_yy_globals = (yyscan_t)yyalloc(sizeof(struct yyguts_t), &dummy_yyguts);\n\n  if (*ptr_yy_globals == NULL) {\n    errno = ENOMEM;\n    return 1;\n  }\n\n  /* By setting to 0xAA, we expose bugs in\n  yy_init_globals. Leave at 0x00 for releases. */\n  memset(*ptr_yy_globals, 0x00, sizeof(struct yyguts_t));\n\n  yyset_extra(yy_user_defined, *ptr_yy_globals);\n\n  return yy_init_globals(*ptr_yy_globals);\n}\n\nstatic int yy_init_globals(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  /* Initialization is the same as for the non-reentrant scanner.\n   * This function is called from yylex_destroy(), so don't allocate here.\n   */\n\n  yyg->yy_buffer_stack = NULL;\n  yyg->yy_buffer_stack_top = 0;\n  yyg->yy_buffer_stack_max = 0;\n  yyg->yy_c_buf_p = NULL;\n  yyg->yy_init = 0;\n  yyg->yy_start = 0;\n\n  yyg->yy_start_stack_ptr = 0;\n  yyg->yy_start_stack_depth = 0;\n  yyg->yy_start_stack = NULL;\n\n/* Defined in main.c */\n#ifdef YY_STDINIT\n  yyin = stdin;\n  yyout = stdout;\n#else\n  yyin = NULL;\n  yyout = NULL;\n#endif\n\n  /* For future reference: Set errno on error, since we are called by\n   * yylex_init()\n   */\n  return 0;\n}\n\n/* yylex_destroy is for both reentrant and non-reentrant scanners. */\nint yylex_destroy(yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n\n  /* Pop the buffer stack, destroying each element. */\n  while (YY_CURRENT_BUFFER) {\n    yy_delete_buffer(YY_CURRENT_BUFFER, yyscanner);\n    YY_CURRENT_BUFFER_LVALUE = NULL;\n    yypop_buffer_state(yyscanner);\n  }\n\n  /* Destroy the stack itself. */\n  yyfree(yyg->yy_buffer_stack, yyscanner);\n  yyg->yy_buffer_stack = NULL;\n\n  /* Destroy the start condition stack. */\n  yyfree(yyg->yy_start_stack, yyscanner);\n  yyg->yy_start_stack = NULL;\n\n  /* Reset the globals. This is important in a non-reentrant scanner so the next\n   * time yylex() is called, initialization will occur. */\n  yy_init_globals(yyscanner);\n\n  /* Destroy the main struct (reentrant only). */\n  yyfree(yyscanner, yyscanner);\n  yyscanner = NULL;\n  return 0;\n}\n\n/*\n * Internal utility routines.\n */\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *s1, const char *s2, int n,\n                            yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  int i;\n  for (i = 0; i < n; ++i) s1[i] = s2[i];\n}\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *s, yyscan_t yyscanner) {\n  int n;\n  for (n = 0; s[n]; ++n)\n    ;\n\n  return n;\n}\n#endif\n\nvoid *yyalloc(yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  return malloc(size);\n}\n\nvoid *yyrealloc(void *ptr, yy_size_t size, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n\n  /* The cast to (char *) in the following accommodates both\n   * implementations that use char* generic pointers, and those\n   * that use void* generic pointers.  It works with the latter\n   * because both ANSI C and C++ allow castless assignment from\n   * any pointer type to void*, and deal with argument conversions\n   * as though doing an assignment.\n   */\n  return realloc(ptr, size);\n}\n\nvoid yyfree(void *ptr, yyscan_t yyscanner) {\n  struct yyguts_t *yyg = (struct yyguts_t *)yyscanner;\n  (void)yyg;\n  free((char *)ptr); /* see yyrealloc() for (char *) cast */\n}\n\n#define YYTABLES_NAME \"yytables\"\n\n#line 300 \"flex_lexer.l\"\n\n/***************************\n ** Section 3: User code\n ***************************/\n\nchar *substr(const char *source, int from, int to) {\n  int len = to - from;\n  char *copy = (char *)malloc(len + 1);\n  ;\n  strncpy(copy, source + from, len);\n  copy[len] = '\\0';\n  return copy;\n}\n\nint yyerror(const char *msg) {\n  fprintf(stdout, \"[SQL-Lexer-Error] %s\\n\", msg);\n  return 0;\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/flex_lexer.h",
    "content": "#ifndef hsql_HEADER_H\n#define hsql_HEADER_H 1\n#define hsql_IN_HEADER 1\n\n#line 6 \"flex_lexer.h\"\n\n#line 8 \"flex_lexer.h\"\n\n#define YY_INT_ALIGNED short int\n\n/* A lexical scanner generated by flex */\n\n#define FLEX_SCANNER\n#define YY_FLEX_MAJOR_VERSION 2\n#define YY_FLEX_MINOR_VERSION 6\n#define YY_FLEX_SUBMINOR_VERSION 4\n#if YY_FLEX_SUBMINOR_VERSION > 0\n#define FLEX_BETA\n#endif\n\n#ifdef yy_create_buffer\n#define hsql__create_buffer_ALREADY_DEFINED\n#else\n#define yy_create_buffer hsql__create_buffer\n#endif\n\n#ifdef yy_delete_buffer\n#define hsql__delete_buffer_ALREADY_DEFINED\n#else\n#define yy_delete_buffer hsql__delete_buffer\n#endif\n\n#ifdef yy_scan_buffer\n#define hsql__scan_buffer_ALREADY_DEFINED\n#else\n#define yy_scan_buffer hsql__scan_buffer\n#endif\n\n#ifdef yy_scan_string\n#define hsql__scan_string_ALREADY_DEFINED\n#else\n#define yy_scan_string hsql__scan_string\n#endif\n\n#ifdef yy_scan_bytes\n#define hsql__scan_bytes_ALREADY_DEFINED\n#else\n#define yy_scan_bytes hsql__scan_bytes\n#endif\n\n#ifdef yy_init_buffer\n#define hsql__init_buffer_ALREADY_DEFINED\n#else\n#define yy_init_buffer hsql__init_buffer\n#endif\n\n#ifdef yy_flush_buffer\n#define hsql__flush_buffer_ALREADY_DEFINED\n#else\n#define yy_flush_buffer hsql__flush_buffer\n#endif\n\n#ifdef yy_load_buffer_state\n#define hsql__load_buffer_state_ALREADY_DEFINED\n#else\n#define yy_load_buffer_state hsql__load_buffer_state\n#endif\n\n#ifdef yy_switch_to_buffer\n#define hsql__switch_to_buffer_ALREADY_DEFINED\n#else\n#define yy_switch_to_buffer hsql__switch_to_buffer\n#endif\n\n#ifdef yypush_buffer_state\n#define hsql_push_buffer_state_ALREADY_DEFINED\n#else\n#define yypush_buffer_state hsql_push_buffer_state\n#endif\n\n#ifdef yypop_buffer_state\n#define hsql_pop_buffer_state_ALREADY_DEFINED\n#else\n#define yypop_buffer_state hsql_pop_buffer_state\n#endif\n\n#ifdef yyensure_buffer_stack\n#define hsql_ensure_buffer_stack_ALREADY_DEFINED\n#else\n#define yyensure_buffer_stack hsql_ensure_buffer_stack\n#endif\n\n#ifdef yylex\n#define hsql_lex_ALREADY_DEFINED\n#else\n#define yylex hsql_lex\n#endif\n\n#ifdef yyrestart\n#define hsql_restart_ALREADY_DEFINED\n#else\n#define yyrestart hsql_restart\n#endif\n\n#ifdef yylex_init\n#define hsql_lex_init_ALREADY_DEFINED\n#else\n#define yylex_init hsql_lex_init\n#endif\n\n#ifdef yylex_init_extra\n#define hsql_lex_init_extra_ALREADY_DEFINED\n#else\n#define yylex_init_extra hsql_lex_init_extra\n#endif\n\n#ifdef yylex_destroy\n#define hsql_lex_destroy_ALREADY_DEFINED\n#else\n#define yylex_destroy hsql_lex_destroy\n#endif\n\n#ifdef yyget_debug\n#define hsql_get_debug_ALREADY_DEFINED\n#else\n#define yyget_debug hsql_get_debug\n#endif\n\n#ifdef yyset_debug\n#define hsql_set_debug_ALREADY_DEFINED\n#else\n#define yyset_debug hsql_set_debug\n#endif\n\n#ifdef yyget_extra\n#define hsql_get_extra_ALREADY_DEFINED\n#else\n#define yyget_extra hsql_get_extra\n#endif\n\n#ifdef yyset_extra\n#define hsql_set_extra_ALREADY_DEFINED\n#else\n#define yyset_extra hsql_set_extra\n#endif\n\n#ifdef yyget_in\n#define hsql_get_in_ALREADY_DEFINED\n#else\n#define yyget_in hsql_get_in\n#endif\n\n#ifdef yyset_in\n#define hsql_set_in_ALREADY_DEFINED\n#else\n#define yyset_in hsql_set_in\n#endif\n\n#ifdef yyget_out\n#define hsql_get_out_ALREADY_DEFINED\n#else\n#define yyget_out hsql_get_out\n#endif\n\n#ifdef yyset_out\n#define hsql_set_out_ALREADY_DEFINED\n#else\n#define yyset_out hsql_set_out\n#endif\n\n#ifdef yyget_leng\n#define hsql_get_leng_ALREADY_DEFINED\n#else\n#define yyget_leng hsql_get_leng\n#endif\n\n#ifdef yyget_text\n#define hsql_get_text_ALREADY_DEFINED\n#else\n#define yyget_text hsql_get_text\n#endif\n\n#ifdef yyget_lineno\n#define hsql_get_lineno_ALREADY_DEFINED\n#else\n#define yyget_lineno hsql_get_lineno\n#endif\n\n#ifdef yyset_lineno\n#define hsql_set_lineno_ALREADY_DEFINED\n#else\n#define yyset_lineno hsql_set_lineno\n#endif\n\n#ifdef yyget_column\n#define hsql_get_column_ALREADY_DEFINED\n#else\n#define yyget_column hsql_get_column\n#endif\n\n#ifdef yyset_column\n#define hsql_set_column_ALREADY_DEFINED\n#else\n#define yyset_column hsql_set_column\n#endif\n\n#ifdef yywrap\n#define hsql_wrap_ALREADY_DEFINED\n#else\n#define yywrap hsql_wrap\n#endif\n\n#ifdef yyget_lval\n#define hsql_get_lval_ALREADY_DEFINED\n#else\n#define yyget_lval hsql_get_lval\n#endif\n\n#ifdef yyset_lval\n#define hsql_set_lval_ALREADY_DEFINED\n#else\n#define yyset_lval hsql_set_lval\n#endif\n\n#ifdef yyget_lloc\n#define hsql_get_lloc_ALREADY_DEFINED\n#else\n#define yyget_lloc hsql_get_lloc\n#endif\n\n#ifdef yyset_lloc\n#define hsql_set_lloc_ALREADY_DEFINED\n#else\n#define yyset_lloc hsql_set_lloc\n#endif\n\n#ifdef yyalloc\n#define hsql_alloc_ALREADY_DEFINED\n#else\n#define yyalloc hsql_alloc\n#endif\n\n#ifdef yyrealloc\n#define hsql_realloc_ALREADY_DEFINED\n#else\n#define yyrealloc hsql_realloc\n#endif\n\n#ifdef yyfree\n#define hsql_free_ALREADY_DEFINED\n#else\n#define yyfree hsql_free\n#endif\n\n/* First, we deal with  platform-specific or compiler-specific issues. */\n\n/* begin standard C headers. */\n#include <errno.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/* end standard C headers. */\n\n/* flex integer type definitions */\n\n#ifndef FLEXINT_H\n#define FLEXINT_H\n\n/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */\n\n#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n\n/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,\n * if you want the limit (max/min) macros for int types.\n */\n#ifndef __STDC_LIMIT_MACROS\n#define __STDC_LIMIT_MACROS 1\n#endif\n\n#include <inttypes.h>\ntypedef int8_t flex_int8_t;\ntypedef uint8_t flex_uint8_t;\ntypedef int16_t flex_int16_t;\ntypedef uint16_t flex_uint16_t;\ntypedef int32_t flex_int32_t;\ntypedef uint32_t flex_uint32_t;\n#else\ntypedef signed char flex_int8_t;\ntypedef short int flex_int16_t;\ntypedef int flex_int32_t;\ntypedef unsigned char flex_uint8_t;\ntypedef unsigned short int flex_uint16_t;\ntypedef unsigned int flex_uint32_t;\n\n/* Limits of integral types. */\n#ifndef INT8_MIN\n#define INT8_MIN (-128)\n#endif\n#ifndef INT16_MIN\n#define INT16_MIN (-32767 - 1)\n#endif\n#ifndef INT32_MIN\n#define INT32_MIN (-2147483647 - 1)\n#endif\n#ifndef INT8_MAX\n#define INT8_MAX (127)\n#endif\n#ifndef INT16_MAX\n#define INT16_MAX (32767)\n#endif\n#ifndef INT32_MAX\n#define INT32_MAX (2147483647)\n#endif\n#ifndef UINT8_MAX\n#define UINT8_MAX (255U)\n#endif\n#ifndef UINT16_MAX\n#define UINT16_MAX (65535U)\n#endif\n#ifndef UINT32_MAX\n#define UINT32_MAX (4294967295U)\n#endif\n\n#ifndef SIZE_MAX\n#define SIZE_MAX (~(size_t)0)\n#endif\n\n#endif /* ! C99 */\n\n#endif /* ! FLEXINT_H */\n\n/* begin standard C++ headers. */\n\n/* TODO: this is always defined, so inline it */\n#define yyconst const\n\n#if defined(__GNUC__) && __GNUC__ >= 3\n#define yynoreturn __attribute__((__noreturn__))\n#else\n#define yynoreturn\n#endif\n\n/* An opaque pointer. */\n#ifndef YY_TYPEDEF_YY_SCANNER_T\n#define YY_TYPEDEF_YY_SCANNER_T\ntypedef void *yyscan_t;\n#endif\n\n/* For convenience, these vars (plus the bison vars far below)\n   are macros in the reentrant scanner. */\n#define yyin yyg->yyin_r\n#define yyout yyg->yyout_r\n#define yyextra yyg->yyextra_r\n#define yyleng yyg->yyleng_r\n#define yytext yyg->yytext_r\n#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)\n#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)\n#define yy_flex_debug yyg->yy_flex_debug_r\n\n/* Size of default input buffer. */\n#ifndef YY_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k.\n * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.\n * Ditto for the __ia64__ case accordingly.\n */\n#define YY_BUF_SIZE 32768\n#else\n#define YY_BUF_SIZE 16384\n#endif /* __ia64__ */\n#endif\n\n#ifndef YY_TYPEDEF_YY_BUFFER_STATE\n#define YY_TYPEDEF_YY_BUFFER_STATE\ntypedef struct yy_buffer_state *YY_BUFFER_STATE;\n#endif\n\n#ifndef YY_TYPEDEF_YY_SIZE_T\n#define YY_TYPEDEF_YY_SIZE_T\ntypedef size_t yy_size_t;\n#endif\n\n#ifndef YY_STRUCT_YY_BUFFER_STATE\n#define YY_STRUCT_YY_BUFFER_STATE\nstruct yy_buffer_state {\n  FILE *yy_input_file;\n\n  char *yy_ch_buf;  /* input buffer */\n  char *yy_buf_pos; /* current position in input buffer */\n\n  /* Size of input buffer in bytes, not including room for EOB\n   * characters.\n   */\n  int yy_buf_size;\n\n  /* Number of characters read into yy_ch_buf, not including EOB\n   * characters.\n   */\n  int yy_n_chars;\n\n  /* Whether we \"own\" the buffer - i.e., we know we created it,\n   * and can realloc() it to grow it, and should free() it to\n   * delete it.\n   */\n  int yy_is_our_buffer;\n\n  /* Whether this is an \"interactive\" input source; if so, and\n   * if we're using stdio for input, then we want to use getc()\n   * instead of fread(), to make sure we stop fetching input after\n   * each newline.\n   */\n  int yy_is_interactive;\n\n  /* Whether we're considered to be at the beginning of a line.\n   * If so, '^' rules will be active on the next match, otherwise\n   * not.\n   */\n  int yy_at_bol;\n\n  int yy_bs_lineno; /**< The line count. */\n  int yy_bs_column; /**< The column count. */\n\n  /* Whether to try to fill the input buffer when we reach the\n   * end of it.\n   */\n  int yy_fill_buffer;\n\n  int yy_buffer_status;\n};\n#endif /* !YY_STRUCT_YY_BUFFER_STATE */\n\nvoid yyrestart(FILE *input_file, yyscan_t yyscanner);\nvoid yy_switch_to_buffer(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_create_buffer(FILE *file, int size, yyscan_t yyscanner);\nvoid yy_delete_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yy_flush_buffer(YY_BUFFER_STATE b, yyscan_t yyscanner);\nvoid yypush_buffer_state(YY_BUFFER_STATE new_buffer, yyscan_t yyscanner);\nvoid yypop_buffer_state(yyscan_t yyscanner);\n\nYY_BUFFER_STATE yy_scan_buffer(char *base, yy_size_t size, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_string(const char *yy_str, yyscan_t yyscanner);\nYY_BUFFER_STATE yy_scan_bytes(const char *bytes, int len, yyscan_t yyscanner);\n\nvoid *yyalloc(yy_size_t, yyscan_t yyscanner);\nvoid *yyrealloc(void *, yy_size_t, yyscan_t yyscanner);\nvoid yyfree(void *, yyscan_t yyscanner);\n\n/* Begin user sect3 */\n\n#define hsql_wrap(yyscanner) (/*CONSTCOND*/ 1)\n#define YY_SKIP_YYWRAP\n\n#define yytext_ptr yytext_r\n\n#ifdef YY_HEADER_EXPORT_START_CONDITIONS\n#define INITIAL 0\n#define singlequotedstring 1\n#define COMMENT 2\n\n#endif\n\n#ifndef YY_NO_UNISTD_H\n/* Special case for \"unistd.h\", since it is non-ANSI. We include it way\n * down here because we want the user's section 1 to have been scanned first.\n * The user has a chance to override it with an option.\n */\n#include <unistd.h>\n#endif\n\n#ifndef YY_EXTRA_TYPE\n#define YY_EXTRA_TYPE void *\n#endif\n\nint yylex_init(yyscan_t *scanner);\n\nint yylex_init_extra(YY_EXTRA_TYPE user_defined, yyscan_t *scanner);\n\n/* Accessor methods to globals.\n   These are made visible to non-reentrant scanners for convenience. */\n\nint yylex_destroy(yyscan_t yyscanner);\n\nint yyget_debug(yyscan_t yyscanner);\n\nvoid yyset_debug(int debug_flag, yyscan_t yyscanner);\n\nYY_EXTRA_TYPE yyget_extra(yyscan_t yyscanner);\n\nvoid yyset_extra(YY_EXTRA_TYPE user_defined, yyscan_t yyscanner);\n\nFILE *yyget_in(yyscan_t yyscanner);\n\nvoid yyset_in(FILE *_in_str, yyscan_t yyscanner);\n\nFILE *yyget_out(yyscan_t yyscanner);\n\nvoid yyset_out(FILE *_out_str, yyscan_t yyscanner);\n\nint yyget_leng(yyscan_t yyscanner);\n\nchar *yyget_text(yyscan_t yyscanner);\n\nint yyget_lineno(yyscan_t yyscanner);\n\nvoid yyset_lineno(int _line_number, yyscan_t yyscanner);\n\nint yyget_column(yyscan_t yyscanner);\n\nvoid yyset_column(int _column_no, yyscan_t yyscanner);\n\nYYSTYPE *yyget_lval(yyscan_t yyscanner);\n\nvoid yyset_lval(YYSTYPE *yylval_param, yyscan_t yyscanner);\n\nYYLTYPE *yyget_lloc(yyscan_t yyscanner);\n\nvoid yyset_lloc(YYLTYPE *yylloc_param, yyscan_t yyscanner);\n\n/* Macros after this point can all be overridden by user definitions in\n * section 1.\n */\n\n#ifndef YY_SKIP_YYWRAP\n#ifdef __cplusplus\nextern \"C\" int yywrap(yyscan_t yyscanner);\n#else\nextern int yywrap(yyscan_t yyscanner);\n#endif\n#endif\n\n#ifndef yytext_ptr\nstatic void yy_flex_strncpy(char *, const char *, int, yyscan_t yyscanner);\n#endif\n\n#ifdef YY_NEED_STRLEN\nstatic int yy_flex_strlen(const char *, yyscan_t yyscanner);\n#endif\n\n#ifndef YY_NO_INPUT\n\n#endif\n\n/* Amount of stuff to slurp up with each read. */\n#ifndef YY_READ_BUF_SIZE\n#ifdef __ia64__\n/* On IA-64, the buffer size is 16k, not 8k */\n#define YY_READ_BUF_SIZE 16384\n#else\n#define YY_READ_BUF_SIZE 8192\n#endif /* __ia64__ */\n#endif\n\n/* Number of entries by which start-condition stack grows. */\n#ifndef YY_START_STACK_INCR\n#define YY_START_STACK_INCR 25\n#endif\n\n/* Default declaration of generated scanner - a define so the user can\n * easily add parameters.\n */\n#ifndef YY_DECL\n#define YY_DECL_IS_OURS 1\n\nextern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,\n                 yyscan_t yyscanner);\n\n#define YY_DECL \\\n  int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, yyscan_t yyscanner)\n#endif /* !YY_DECL */\n\n/* yy_get_previous_state - get the state just before the EOB char was reached */\n\n#undef YY_NEW_FILE\n#undef YY_FLUSH_BUFFER\n#undef yy_set_bol\n#undef yy_new_buffer\n#undef yy_set_interactive\n#undef YY_DO_BEFORE_ACTION\n\n#ifdef YY_DECL_IS_OURS\n#undef YY_DECL_IS_OURS\n#undef YY_DECL\n#endif\n\n#ifndef hsql__create_buffer_ALREADY_DEFINED\n#undef yy_create_buffer\n#endif\n#ifndef hsql__delete_buffer_ALREADY_DEFINED\n#undef yy_delete_buffer\n#endif\n#ifndef hsql__scan_buffer_ALREADY_DEFINED\n#undef yy_scan_buffer\n#endif\n#ifndef hsql__scan_string_ALREADY_DEFINED\n#undef yy_scan_string\n#endif\n#ifndef hsql__scan_bytes_ALREADY_DEFINED\n#undef yy_scan_bytes\n#endif\n#ifndef hsql__init_buffer_ALREADY_DEFINED\n#undef yy_init_buffer\n#endif\n#ifndef hsql__flush_buffer_ALREADY_DEFINED\n#undef yy_flush_buffer\n#endif\n#ifndef hsql__load_buffer_state_ALREADY_DEFINED\n#undef yy_load_buffer_state\n#endif\n#ifndef hsql__switch_to_buffer_ALREADY_DEFINED\n#undef yy_switch_to_buffer\n#endif\n#ifndef hsql_push_buffer_state_ALREADY_DEFINED\n#undef yypush_buffer_state\n#endif\n#ifndef hsql_pop_buffer_state_ALREADY_DEFINED\n#undef yypop_buffer_state\n#endif\n#ifndef hsql_ensure_buffer_stack_ALREADY_DEFINED\n#undef yyensure_buffer_stack\n#endif\n#ifndef hsql_lex_ALREADY_DEFINED\n#undef yylex\n#endif\n#ifndef hsql_restart_ALREADY_DEFINED\n#undef yyrestart\n#endif\n#ifndef hsql_lex_init_ALREADY_DEFINED\n#undef yylex_init\n#endif\n#ifndef hsql_lex_init_extra_ALREADY_DEFINED\n#undef yylex_init_extra\n#endif\n#ifndef hsql_lex_destroy_ALREADY_DEFINED\n#undef yylex_destroy\n#endif\n#ifndef hsql_get_debug_ALREADY_DEFINED\n#undef yyget_debug\n#endif\n#ifndef hsql_set_debug_ALREADY_DEFINED\n#undef yyset_debug\n#endif\n#ifndef hsql_get_extra_ALREADY_DEFINED\n#undef yyget_extra\n#endif\n#ifndef hsql_set_extra_ALREADY_DEFINED\n#undef yyset_extra\n#endif\n#ifndef hsql_get_in_ALREADY_DEFINED\n#undef yyget_in\n#endif\n#ifndef hsql_set_in_ALREADY_DEFINED\n#undef yyset_in\n#endif\n#ifndef hsql_get_out_ALREADY_DEFINED\n#undef yyget_out\n#endif\n#ifndef hsql_set_out_ALREADY_DEFINED\n#undef yyset_out\n#endif\n#ifndef hsql_get_leng_ALREADY_DEFINED\n#undef yyget_leng\n#endif\n#ifndef hsql_get_text_ALREADY_DEFINED\n#undef yyget_text\n#endif\n#ifndef hsql_get_lineno_ALREADY_DEFINED\n#undef yyget_lineno\n#endif\n#ifndef hsql_set_lineno_ALREADY_DEFINED\n#undef yyset_lineno\n#endif\n#ifndef hsql_get_column_ALREADY_DEFINED\n#undef yyget_column\n#endif\n#ifndef hsql_set_column_ALREADY_DEFINED\n#undef yyset_column\n#endif\n#ifndef hsql_wrap_ALREADY_DEFINED\n#undef yywrap\n#endif\n#ifndef hsql_get_lval_ALREADY_DEFINED\n#undef yyget_lval\n#endif\n#ifndef hsql_set_lval_ALREADY_DEFINED\n#undef yyset_lval\n#endif\n#ifndef hsql_get_lloc_ALREADY_DEFINED\n#undef yyget_lloc\n#endif\n#ifndef hsql_set_lloc_ALREADY_DEFINED\n#undef yyset_lloc\n#endif\n#ifndef hsql_alloc_ALREADY_DEFINED\n#undef yyalloc\n#endif\n#ifndef hsql_realloc_ALREADY_DEFINED\n#undef yyrealloc\n#endif\n#ifndef hsql_free_ALREADY_DEFINED\n#undef yyfree\n#endif\n#ifndef hsql_text_ALREADY_DEFINED\n#undef yytext\n#endif\n#ifndef hsql_leng_ALREADY_DEFINED\n#undef yyleng\n#endif\n#ifndef hsql_in_ALREADY_DEFINED\n#undef yyin\n#endif\n#ifndef hsql_out_ALREADY_DEFINED\n#undef yyout\n#endif\n#ifndef hsql__flex_debug_ALREADY_DEFINED\n#undef yy_flex_debug\n#endif\n#ifndef hsql_lineno_ALREADY_DEFINED\n#undef yylineno\n#endif\n#ifndef hsql_tables_fload_ALREADY_DEFINED\n#undef yytables_fload\n#endif\n#ifndef hsql_tables_destroy_ALREADY_DEFINED\n#undef yytables_destroy\n#endif\n#ifndef hsql_TABLES_NAME_ALREADY_DEFINED\n#undef yyTABLES_NAME\n#endif\n\n#line 300 \"flex_lexer.l\"\n\n#line 737 \"flex_lexer.h\"\n#undef hsql_IN_HEADER\n#endif /* hsql_HEADER_H */\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/flex_lexer.l",
    "content": "/**\n * lexer\n *\n *\n */\n\n/***************************\n ** Section 1: Definitions\n ***************************/\n% {\n#include <stdio.h>\n\n#include <sstream>\n\n#include \"bison_parser.h\"\n\n#define TOKEN(name) \\\n  { return SQL_##name; }\n\n  static thread_local std::stringstream strbuf;\n  char* substr(const char* source, int from, int to);\n  %\n}\n%\n        x singlequotedstring\n\n        /***************************\n         ** Section 2: Rules\n         ***************************/\n\n        /* Define the output files */\n        % option header -\n    file = \"flex_lexer.h\" % option outfile =\n               \"flex_lexer.cpp\"\n\n                   /* Make reentrant */\n                   % option reentrant % option bison -\n               bridge\n\n                   /* performance tweeks */\n                   % option never -\n               interactive %\n                   option batch\n\n                   /* other flags */\n                   % option noyywrap % option nounput % option warn %\n                   option case -insensitive % option prefix =\n                   \"hsql_\" % option bison - locations\n                                                /* %option nodefault */\n\n                                                % s COMMENT\n\n                                                /***************************\n                                                 ** Section 3: Rules\n                                                 ***************************/\n                                                % %\n\n                                                --BEGIN(COMMENT);\n<COMMENT>[^\\n]* /* skipping comment content until a end of line is read */;\n<COMMENT>\\n BEGIN(INITIAL);\n\n[ \\t\\n] + /* skip whitespace */;\n\nDEALLOCATE TOKEN(DEALLOCATE)\nPARAMETERS TOKEN(PARAMETERS)\nINTERSECT\nTOKEN(INTERSECT) TEMPORARY TOKEN(TEMPORARY)\nTIMESTAMP\nTOKEN(TIMESTAMP) DESCRIBE TOKEN(DESCRIBE)\nDISTINCT TOKEN(DISTINCT)\nNVARCHAR\nTOKEN(NVARCHAR) RESTRICT TOKEN(RESTRICT)\nTRUNCATE TOKEN(TRUNCATE)\nANALYZE\nTOKEN(ANALYZE) BETWEEN TOKEN(BETWEEN)\nCASCADE TOKEN(CASCADE)\nCOLUMNS\nTOKEN(COLUMNS) CONTROL TOKEN(CONTROL)\nDEFAULT TOKEN(DEFAULT)\nEXECUTE\nTOKEN(EXECUTE) EXPLAIN TOKEN(EXPLAIN)\nINTEGER TOKEN(INTEGER)\nNATURAL\nTOKEN(NATURAL) PREPARE TOKEN(PREPARE)\nPRIMARY TOKEN(PRIMARY)\nSCHEMAS\nTOKEN(SCHEMAS) SPATIAL TOKEN(SPATIAL)\nVARCHAR TOKEN(VARCHAR)\nVIRTUAL\nTOKEN(VIRTUAL) BEFORE TOKEN(BEFORE)\nCOLUMN TOKEN(COLUMN)\nCREATE\nTOKEN(CREATE) DELETE TOKEN(DELETE)\nDIRECT TOKEN(DIRECT)\nDOUBLE\nTOKEN(DOUBLE) ESCAPE TOKEN(ESCAPE)\nEXCEPT TOKEN(EXCEPT)\nEXISTS\nTOKEN(EXISTS) EXTRACT TOKEN(EXTRACT)\nGLOBAL TOKEN(GLOBAL)\nHAVING\nTOKEN(HAVING) IMPORT TOKEN(IMPORT)\nINSERT TOKEN(INSERT)\nISNULL\nTOKEN(ISNULL) OFFSET TOKEN(OFFSET)\nRENAME TOKEN(RENAME)\nSCHEMA\nTOKEN(SCHEMA) SELECT TOKEN(SELECT)\nSORTED TOKEN(SORTED)\nTABLES\nTOKEN(TABLES) UNIQUE TOKEN(UNIQUE)\nUNLOAD TOKEN(UNLOAD)\nUPDATE\nTOKEN(UPDATE) VALUES TOKEN(VALUES)\nAFTER TOKEN(AFTER)\nALTER\nTOKEN(ALTER) ARRAY TOKEN(ARRAY)\nCROSS TOKEN(CROSS)\nDELTA TOKEN(DELTA)\nFLOAT\nTOKEN(FLOAT) GROUP TOKEN(GROUP)\nINDEX TOKEN(INDEX)\nINNER TOKEN(INNER)\nLIMIT\nTOKEN(LIMIT) LOCAL TOKEN(LOCAL)\nMERGE TOKEN(MERGE)\nMINUS TOKEN(MINUS)\nORDER\nTOKEN(ORDER) OUTER TOKEN(OUTER)\nRIGHT TOKEN(RIGHT)\nTABLE TOKEN(TABLE)\nUNION\nTOKEN(UNION) USING TOKEN(USING)\nWHERE TOKEN(WHERE)\nCALL TOKEN(CALL)\nCASE TOKEN(CASE)\nCHAR TOKEN(CHAR)\nDATE TOKEN(DATE)\nDESC TOKEN(DESC)\nDROP TOKEN(DROP)\nELSE TOKEN(ELSE)\nFILE TOKEN(FILE)\nFROM TOKEN(FROM)\nFULL TOKEN(FULL)\nHASH TOKEN(HASH)\nHINT TOKEN(HINT)\nINTO TOKEN(INTO)\nJOIN TOKEN(JOIN)\nLEFT TOKEN(LEFT)\nLIKE TOKEN(LIKE)\nILIKE TOKEN(ILIKE)\nLOAD TOKEN(LOAD)\nLONG TOKEN(LONG)\nNULL TOKEN(NULL)\nPLAN TOKEN(PLAN)\nSHOW TOKEN(SHOW)\nTEXT TOKEN(TEXT)\nTHEN TOKEN(THEN)\nTIME TOKEN(TIME)\nVIEW TOKEN(VIEW)\nWHEN TOKEN(WHEN)\nWITH TOKEN(WITH)\nADD TOKEN(ADD)\nALL TOKEN(ALL)\nAND TOKEN(AND)\nASC TOKEN(ASC)\nCSV TOKEN(CSV)\nEND TOKEN(END)\nFOR TOKEN(FOR)\nINT TOKEN(INT)\nKEY TOKEN(KEY)\nNOT TOKEN(NOT)\nOFF TOKEN(OFF)\nSET TOKEN(SET)\nTBL TOKEN(TBL)\nTOP TOKEN(TOP)\nAS TOKEN(AS)\nBY TOKEN(BY)\nIF TOKEN(IF)\nIN TOKEN(IN)\nIS TOKEN(IS)\nOF TOKEN(OF)\nON TOKEN(ON)\nOR TOKEN(OR)\nTO TOKEN(TO)\nSECOND TOKEN(SECOND)\nMINUTE TOKEN(MINUTE)\nHOUR TOKEN(HOUR)\nDAY TOKEN(DAY)\nMONTH TOKEN(MONTH)\nYEAR TOKEN(YEAR)\n\nINDEXED TOKEN(INDEXED)\nPRAGMA TOKEN(PRAGMA)\nREINDEX\nTOKEN(REINDEX) GENERATED TOKEN(GENERATED)\nALWAYS TOKEN(ALWAYS)\nCHECK\nTOKEN(CHECK) CONFLICT TOKEN(CONFLICT)\nIGNORE TOKEN(IGNORE)\nREPLACE\nTOKEN(REPLACE) ROLLBACK TOKEN(ROLLBACK)\nABORT TOKEN(ABORT)\nFAIL TOKEN(FAIL)\nAUTOINCR TOKEN(AUTOINCR)\nBEGIN TOKEN(BEGIN)\nTRIGGER\nTOKEN(TRIGGER) TEMP TOKEN(TEMP)\nINSTEAD TOKEN(INSTEAD)\nEACH TOKEN(EACH)\nROW TOKEN(ROW)\nOVER TOKEN(OVER)\nFILTER TOKEN(FILTER)\nCURRENT\nTOKEN(CURRENT) EXCLUDE TOKEN(EXCLUDE)\nFOLLOWING TOKEN(FOLLOWING)\nGROUPS\nTOKEN(GROUPS) NO TOKEN(NO)\nOTHERS TOKEN(OTHERS)\nPRECEDING\nTOKEN(PRECEDING) RANGE TOKEN(RANGE)\nROWS TOKEN(ROWS)\nTIES TOKEN(TIES)\nUNBOUNDED TOKEN(UNBOUNDED)\nWINDOW TOKEN(WINDOW)\nPARTITION\nTOKEN(PARTITION) ATTACH TOKEN(ATTACH)\nDETACH TOKEN(DETACH)\nDATABASE\nTOKEN(DATABASE) CAST TOKEN(CAST)\nSAVEPOINT TOKEN(SAVEPOINT)\nRELEASE\nTOKEN(RELEASE)\n\nVACUUM TOKEN(VACUUM)\nTRANSACTION TOKEN(TRANSACTION)\nDEFFERED\nTOKEN(DEFFERED) EXCLUSIVE TOKEN(EXCLUSIVE)\nIMEDIATE TOKEN(IMEDIATE)\nCOMMIT\nTOKEN(COMMIT) GLOB TOKEN(GLOB)\nMATCH TOKEN(MATCH)\nREGEX TOKEN(REGEX)\nNOTHING\nTOKEN(NOTHING) NULLS TOKEN(NULLS)\nLAST TOKEN(LAST)\nFIRST TOKEN(FIRST)\nDO TOKEN(DO)\nCOLLATE TOKEN(COLLATE)\n\n    TRUE {\n  yylval->ival = 1;\n  return SQL_INTVAL;\n}\nFALSE {\n  yylval->ival = 0;\n  return SQL_INTVAL;\n}\n/* Allow =/== see https://sqlite.org/lang_expr.html#collateop */\n\"==\"\t\tTOKEN(EQUALS)\n\"!=\" \t\tTOKEN(NOTEQUALS)\n\"<>\" \t\tTOKEN(NOTEQUALS)\n\"<=\"\t\tTOKEN(LESSEQ)\n\">=\"\t\tTOKEN(GREATEREQ)\n\"||\"\t\tTOKEN(CONCAT)\n\n[-+*/(){},.;<>=^%:?[\\]|]\t{\n  return yytext[0];\n}\n\n-?[0-9]+\".\"[0-9]* |\n\".\"[0-9]*\t{\n\tyylval->fval = atof(yytext);\n\treturn SQL_FLOATVAL;\n}\n\n-?[0-9]+\t{\n  yylval->ival = atol(yytext);\n  return SQL_INTVAL;\n}\n\n\\\"[^\\\"\\n]+\\\" {\n    // Crop the leading and trailing quote char\n    yylval->sval = substr(yytext, 1, strlen(yytext) - 1);\nreturn SQL_IDENTIFIER;\n}\n\n[A - Za - z][A - Za - z0 - 9_] *\n{\n  yylval->sval = strdup(yytext);\n  return SQL_IDENTIFIER;\n}\n\n\\'                          { BEGIN singlequotedstring; strbuf = std::stringstream{}; } < singlequotedstring >\\'\\'    { strbuf << '\\'';\n}\n<singlequotedstring>[^']*   { strbuf << yytext; }\n<singlequotedstring>\\'      { BEGIN 0; yylval->sval = strdup(strbuf.str().c_str()); return SQL_STRING; }\n<singlequotedstring><<EOF>> {  /*fprintf(stdout, \"[SQL-Lexer-Error] Unterminated string\\n\"); */\n  return 0; }\n\n. { /*fprintf(stdout, \"[SQL-Lexer-Error] Unknown Character: %c\\n\", yytext[0]); */\n  return 0; }\n\n\n%%\n/***************************\n ** Section 3: User code\n ***************************/\n\nchar* substr(const char* source, int from, int to) {\n  int len = to - from;\n  char* copy = (char*)malloc(len + 1);\n  ;\n  strncpy(copy, source + from, len);\n  copy[len] = '\\0';\n  return copy;\n}\n\nint yyerror(const char *msg) {\n  fprintf(stdout, \"[SQL-Lexer-Error] %s\\n\", msg);\n  return 0;\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/parser/parser_typedef.h",
    "content": "#ifndef __PARSER_TYPEDEF_H__\n#define __PARSER_TYPEDEF_H__\n\n#include <vector>\n\n#ifndef YYtypeDEF_YY_SCANNER_T\n#define YYtypeDEF_YY_SCANNER_T\ntypedef void* yyscan_t;\n#endif\n\n#define YYSTYPE HSQL_STYPE\n#define YYLTYPE HSQL_LTYPE\n\nstruct HSQL_CUST_LTYPE {\n  int first_line;\n  int first_column;\n  int last_line;\n  int last_column;\n\n  int total_column;\n\n  // Length of the string in the SQL query string\n  int string_length;\n\n  // Parameters.\n  // int param_id;\n  std::vector<void*> param_list;\n};\n\n#define HSQL_LTYPE HSQL_CUST_LTYPE\n#define HSQL_LTYPE_IS_DECLARED 1\n\n#endif"
  },
  {
    "path": "srcs/internal/sqlite/sqlite.cc",
    "content": "#include \"sqlite.h\"\n\n#include <string>\n#include <vector>\n\n#include \"ast.h\"\n#include \"define.h\"\n#include \"mutator.h\"\n#include \"utils.h\"\n\nSQLiteDB *create_sqlite() { return new SQLiteDB; }\nSQLiteDB::SQLiteDB() { mutator_ = std::make_unique<Mutator>(); }\n\nbool SQLiteDB::initialize(YAML::Node config) {\n  const std::string init_lib_path = config[\"init_lib\"].as<std::string>();\n  std::cerr << \"Init path\" << init_lib_path << std::endl;\n  const std::string pragma_path = config[\"pragma\"].as<std::string>();\n  std::cerr << \"pragma path\" << pragma_path << std::endl;\n  std::vector<std::string> file_list =\n      get_all_files_in_dir(init_lib_path.c_str());\n  for (auto &f : file_list) {\n    std::cerr << \"init lib: \" << f << \", status \";\n    mutator_->init(f, \"\", pragma_path);\n  }\n  return true;\n}\n\nbool SQLiteDB::save_interesting_query(const std::string &query) {\n  if (Program *program = parser(query)) {\n    std::vector<IR *> ir_set;\n    IR *ir = program->translate(ir_set);\n    ir_set.clear();\n    string strip_sql = mutator_->extract_struct(ir);\n    // string strip_sql = ir->to_string();\n    auto p_strip_sql = parser(strip_sql);\n    if (p_strip_sql) {\n      auto root_ir = p_strip_sql->translate(ir_set);\n      p_strip_sql->deep_delete();\n      // mutator_->add_ir_to_library(root_ir);\n      mutator_->add_to_library(root_ir);\n      deep_delete(root_ir);\n    }\n    return true;\n  }\n  return false;\n}\n\nsize_t SQLiteDB::validate_all(const std::vector<IR *> &ir_set) {\n  for (IR *ir : ir_set) {\n    std::string validated_ir = mutator_->validate(ir);\n    if (validated_ir.empty()) {\n      continue;\n    }\n    validated_test_cases_.push(std::move(validated_ir));\n  }\n  return validated_test_cases_.size();\n}\n\nbool SQLiteDB::has_mutated_test_cases() {\n  return !validated_test_cases_.empty();\n}\n\nsize_t SQLiteDB::mutate(const std::string &query) {\n  std::vector<IR *> ir_set, mutated_tree;\n  Program *program_root = parser(query.c_str());\n  if (program_root == nullptr) {\n    return 0;\n  }\n\n  // TODO: Remove this uncessary try.\n  // Or we will have exception from the parser?\n  try {\n    program_root->translate(ir_set);\n  } catch (...) {\n    for (auto ir : ir_set) {\n      delete ir;\n    }\n    program_root->deep_delete();\n  }\n  program_root->deep_delete();\n\n  mutated_tree = mutator_->mutate_all(ir_set);\n  deep_delete(ir_set[ir_set.size() - 1]);\n\n  size_t validated_ir_size = validate_all(mutated_tree);\n  for (auto ir : mutated_tree) {\n    deep_delete(ir);\n  }\n\n  // std::cerr << \"validated ir size: \" << validated_ir_size << std::endl;\n\n  return validated_ir_size;\n}\n\nstd::string SQLiteDB::get_next_mutated_query() {\n  auto result = validated_test_cases_.top();\n  validated_test_cases_.pop();\n  return result;\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/sqlite.h",
    "content": "#ifndef __SQLITE_H_H_H__\n#define __SQLITE_H_H_H__\n#include <memory>\n#include <stack>\n#include <string>\n\n#include \"db.h\"\n\nclass Mutator;\nclass IR;\nclass SQLiteDB : public DataBase {\n public:\n  // Set up the database.\n  SQLiteDB();\n  virtual bool initialize(YAML::Node config);\n  virtual size_t mutate(const std::string &);\n  virtual bool save_interesting_query(const std::string &);\n  // Return an new query to test. The `buffer` should be unmanaged,\n  virtual std::string get_next_mutated_query();\n  virtual bool has_mutated_test_cases();\n  // Clean up the enviroment, e.g., drop all the databases.\n  virtual bool clean_up() { return true; }\n\n private:\n  size_t validate_all(const std::vector<IR *> &ir_set);\n  std::unique_ptr<Mutator> mutator_;\n  std::stack<std::string> validated_test_cases_;\n};\n\nSQLiteDB *create_sqlite();\n#endif\n"
  },
  {
    "path": "srcs/internal/sqlite/srcs/ast.cpp",
    "content": "#include \"../include/ast.h\"\n\n#include <cassert>\n#include <cstdio>\n#include <iostream>\n#include <vector>\n\n#include \"../include/mutator.h\"\n#include \"../include/utils.h\"\n\nstatic string s_table_name;\n\nstring IR::to_string() {\n  string res;\n\n  if (type_ == kColumnName && str_val_ == \"*\") return str_val_;\n  if (type_ == kFilePath || type_ == kPrepareTargetQuery ||\n      type_ == kStringLiteral || type_ == kIdentifier ||\n      type_ == kOptOrderType || type_ == kColumnType || type_ == kSetType ||\n      type_ == kOptJoinType || type_ == kOptDistinct || type_ == kNullLiteral)\n    return str_val_;\n  if (type_ == kIntLiteral) return std::to_string(int_val_);\n  if (type_ == kFloatLiteral || type_ == kconst_float)\n    return std::to_string(f_val_);\n  if (type_ == kconst_str) return str_val_;\n  if (type_ == kconst_int) return std::to_string(int_val_);\n\n  if (!str_val_.empty()) return str_val_;\n\n  if (op_ != NULL) res += op_->prefix_ + \" \";\n  if (left_ != NULL) res += left_->to_string() + \" \";\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  if (right_ != NULL) res += right_->to_string() + \" \";\n  if (op_ != NULL) res += op_->suffix_;\n\n  trim_string(res);\n  return res;\n}\n\nIR *ShowStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(1)\n  IR *tmp = SAFETRANSLATE(table_name_);\n  res = new IR(kShowStatement, OPSTART(\"SHOW COLUMNS\"), tmp);\n  CASEEND\n  CASESTART(0)\n  res = new IR(kShowStatement, OPSTART(\"SHOW TABLES\"));\n  CASEEND\n  CASESTART(2)\n  IR *tmp = SAFETRANSLATE(table_name_);\n  res = new IR(kShowStatement, OPSTART(\"DESCRIBE\"), tmp);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *TableName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  IR *tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kTableName, OP0(), tmp1);\n  CASEEND\n  CASESTART(1)\n  IR *tmp1 = SAFETRANSLATE(database_name_);\n  IR *tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kTableName, OPMID(\".\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *DropStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  IR *tmp1 = SAFETRANSLATE(opt_exists_);\n  IR *tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kDropStatement, OPSTART(\"DROP TABLE\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  IR *tmp1 = SAFETRANSLATE(opt_exists_);\n  IR *tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kDropStatement, OPSTART(\"DROP VIEW\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  IR *tmp1 = SAFETRANSLATE(id_);\n  res = new IR(kDropStatement, OPSTART(\"DEALLOCATE PREPARE\"), tmp1);\n  CASEEND\n  CASESTART(3)\n  auto opt_exist = SAFETRANSLATE(opt_exists_);\n  auto schema_name = SAFETRANSLATE(schema_name_);\n  auto trigger_name = SAFETRANSLATE(trigger_name_);\n  res = new IR(kUnknown, OPMID(\".\"), schema_name, trigger_name);\n  PUSH(res);\n  res = new IR(kDropStatement, OP1(\"DROP TRIGGER\"), opt_exist, res);\n  CASEEND\n  CASESTART(4)\n  auto opt_exist = SAFETRANSLATE(opt_exists_);\n  auto trigger_name = SAFETRANSLATE(trigger_name_);\n  res = new IR(kDropStatement, OP1(\"DROP TRIGGER\"), opt_exist, trigger_name);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptExists::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptExists, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *Node::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nIR *Opt::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nIR *OptString::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nIR *Program::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(statement_list_);\n  auto tmp = SAFETRANSLATE(opt_semicolon_);\n  res = new IR(kProgram, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *StatementList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kStatementList, v_statement_list_, \";\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *Statement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(preparable_statement_);\n  auto tmp = SAFETRANSLATE(optional_hints_);\n  res = new IR(kStatement, OP0(), res, tmp);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(prepare_statement_);\n  auto tmp = SAFETRANSLATE(optional_hints_);\n  res = new IR(kStatement, OP0(), res, tmp);\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(show_statement_);\n  res = new IR(kStatement, OP0(), res);\n  CASEEND\n  CASESTART(3)\n  res = SAFETRANSLATE(cmd_);\n  res = new IR(kStatement, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptionalHints::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(hint_list_);\n  res = new IR(kOptionalHints, OP3(\"WITH HINT\", \"(\", \")\"), NULL, res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptionalHints, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *PrepareStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(id_);\n  auto tmp = SAFETRANSLATE(prep_target_que_);\n  res = new IR(kPrepareStatement, OP2(\"PREPARE\", \"FROM\"), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *PreparableStatement::translate(vector<IR *> &v_ir_collector) {\n  return NULL;\n}\n\nIR *Hint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(id_);\n  auto tmp = SAFETRANSLATE(literal_list_);\n  res = new IR(kHint, OP3(\"\", \"(\", \")\"), res, tmp);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kHint, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *HintList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kHintList, v_hint_list_, \",\");\n\n  TRANSLATEEND\n}\n\nIR *PrepareTargetQuery::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kPrepareTargetQuery, prep_target_que_);\n\n  TRANSLATEEND\n}\n\nIR *SelectStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(select_with_paren_);\n  res = new IR(kSelectStatement, OP0(), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kSelectStatement, OP0(), tmp1, tmp2);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_with_clause_);\n  auto tmp2 = SAFETRANSLATE(select_with_paren_);\n  auto tmp3 = SAFETRANSLATE(set_operator_);\n  auto tmp4 = SAFETRANSLATE(select_paren_or_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_order_);\n  IR *tmp6 = NULL;\n  if (opt_limit_ != NULL) tmp6 = SAFETRANSLATE(opt_limit_);\n\n  res = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp3);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp4);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp5);\n  if (opt_limit_ != NULL) {\n    PUSH(res);\n    res = new IR(kSelectStatement, OP0(), res, tmp6);\n  }\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *ImportStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  auto tmp1 = SAFETRANSLATE(import_file_type_);\n  auto tmp2 = SAFETRANSLATE(file_path_);\n  auto tmp3 = SAFETRANSLATE(table_name_);\n\n  res = new IR(kUnknown, OP2(\"IMPORT FROM\", \"FILE\"), tmp1, tmp2);\n  PUSH(res);\n  res = new IR(kImportStatement, OPMID(\"INTO\"), res, tmp3);\n  TRANSLATEEND\n}\n\nIR *CreateStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(tmp);\n  auto tmp3 = SAFETRANSLATE(file_path_);\n  res =\n      new IR(kCreateStatement, OP2(\"CREATE TABLE\", \"FROM TBL FILE\"), tmp, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(tmp);\n  auto tmp3 = SAFETRANSLATE(column_def_comma_list_);\n  res = new IR(kCreateStatement, OP3(\"CREATE TABLE\", \"(\", \")\"), tmp, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(tmp);\n  auto tmp3 = SAFETRANSLATE(select_statement_);\n  res = new IR(kCreateStatement, OP2(\"CREATE TABLE\", \"AS\"), tmp, tmp3);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  auto tmp = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(tmp);\n  auto tmp3 = SAFETRANSLATE(opt_column_list_);\n  auto tmp4 = new IR(kUnknown, OP0(), tmp, tmp3);\n  PUSH(tmp4);\n  auto tmp5 = SAFETRANSLATE(select_statement_);\n  res = new IR(kCreateStatement, OP2(\"CREATE VIEW\", \"AS\"), tmp4, tmp5);\n  CASEEND\n  CASESTART(4)\n  auto tmp1 = SAFETRANSLATE(opt_unique_);\n  auto tmp2 = SAFETRANSLATE(opt_not_exists_);\n  res = new IR(kUnknown, OP2(\"CREATE\", \"INDEX\"), tmp1, tmp2);\n  PUSH(res);\n  auto tmp3 = SAFETRANSLATE(index_name_);\n  res = new IR(kUnknown, OP0(), res, tmp3);\n  PUSH(res);\n  auto tmp4 = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OPMID(\"ON\"), res, tmp4);\n  PUSH(res);\n  auto tmp5 = SAFETRANSLATE(ident_commalist_);\n  res = new IR(kCreateStatement, OP3(\"\", \"(\", \")\"), res, tmp5);\n  PUSH(res);\n  auto tmp6 = SAFETRANSLATE(opt_where_);\n  res = new IR(kCreateStatement, OP0(), res, tmp6);\n  CASEEND\n  CASESTART(5)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OP1(\"CREATE VIRTUAL TABLE\"), tmp1, tmp2);\n  PUSH(res);\n  auto tmp3 = SAFETRANSLATE(module_name_);\n  res = new IR(kCreateStatement, OPMID(\"USING\"), res, tmp3);\n  CASEEND\n  CASESTART(6)\n  auto tmp1 = SAFETRANSLATE(opt_not_exists_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OP1(\"CREATE VIRTUAL TABLE\"), tmp1, tmp2);\n  PUSH(res);\n  auto tmp3 = SAFETRANSLATE(module_name_);\n  res = new IR(kCreateStatement, OPMID(\"USING\"), res, tmp3);\n  PUSH(res);\n  auto tmp4 = SAFETRANSLATE(column_def_comma_list_);\n  res = new IR(kCreateStatement, OP3(\"\", \"(\", \")\"), res, tmp4);\n  CASEEND\n  CASESTART(7)\n  auto tmp1 = SAFETRANSLATE(trigger_declare_);\n  auto tmp2 = SAFETRANSLATE(trigger_cmd_list_);\n  res = new IR(kCreateStatement, OP3(\"CREATE\", \"BEGIN\", \"END\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *InsertStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(insert_type_);\n  auto tmp = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OPMID(\"INTO\"), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_column_list_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(super_list_);\n  tmp = new IR(kUnknown, OP0(), tmp);\n  PUSH(tmp);\n  res = new IR(kInsertStatement, OPMID(\"VALUES\"), res, tmp);\n  PUSH(tmp);\n\n  tmp = SAFETRANSLATE(opt_upsert_clause_);\n  res = new IR(kInsertStatement, OP0(), res, tmp);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(insert_type_);\n  auto tmp = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OPMID(\"INTO\"), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_column_list_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kInsertStatement, OP0(), res, tmp);\n  PUSH(tmp);\n\n  tmp = SAFETRANSLATE(opt_upsert_clause_);\n  res = new IR(kInsertStatement, OP0(), res, tmp);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *InsertType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kInsertType, str_val_);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kInsertType, str_val_);\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(resolve_type_);\n  res = new IR(kInsertType, OP1(\"INSERT OR\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid InsertType::deep_delete() {\n  SAFEDELETE(resolve_type_);\n  delete this;\n}\n\nIR *DeleteStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  IR *tmp1 = SAFETRANSLATE(table_name_);\n  IR *tmp2 = SAFETRANSLATE(opt_where_);\n  res = new IR(kDeleteStatement, OPSTART(\"DELETE FROM\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  IR *tmp1 = SAFETRANSLATE(table_name_);\n  res = new IR(kDeleteStatement, OPSTART(\"TRUNCATE\"), tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *UpdateStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(table_ref_name_no_alias_);\n  auto tmp = SAFETRANSLATE(update_clause_comma_list_);\n  res = new IR(kUpdateStatement, OP2(\"UPDATE\", \"SET\"), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_where_);\n  res = new IR(kUpdateStatement, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *ExecuteStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto id = SAFETRANSLATE(id_);\n  res = new IR(kExecuteStatement, OPSTART(\"EXECUTE\"), id);\n  CASEEND\n  CASESTART(1)\n  auto id = SAFETRANSLATE(id_);\n  auto tmp = SAFETRANSLATE(opt_literal_list_);\n  res = new IR(kExecuteStatement, OP3(\"EXECUTE\", \"(\", \")\"), id, tmp);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *ImportFileType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kImportFileType, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *FilePath::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kFilePath, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *OptNotExists::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptNotExists, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *ColumnDefCommaList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kColumnDefCommaList, v_column_def_comma_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *ColumnDef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(id_);\n  auto tmp = SAFETRANSLATE(column_type_);\n  res = new IR(kColumnDef, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_column_arglist_);\n  res = new IR(kColumnDef, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *ColumnType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kColumnType, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *OptColumnNullable::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptColumnNullable, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *OptColumnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(ident_comma_list_);\n  res = new IR(kOptColumnList, OP3(\"(\", \"\", \")\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnList, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *UpdateClauseCommalist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kUpdateClauseCommalist, v_update_clause_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *UpdateClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(id_);\n  auto tmp2 = SAFETRANSLATE(expr_);\n  res = new IR(kUpdateClause, OPMID(\"=\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nIR *SelectWithParen::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kSelectWithParen, OP3(\"(\", \"\", \")\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(select_with_paren_);\n  res = new IR(kSelectWithParen, OP3(\"(\", \"\", \")\"), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *SelectParenOrClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(select_with_paren_);\n  res = new IR(kSelectParenOrClause, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(select_clause_);\n  res = new IR(kSelectParenOrClause, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *SelectNoParen::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(select_clause_);\n  auto tmp = SAFETRANSLATE(opt_order_);\n  res = new IR(kSelectNoParen, OP0(), res, tmp);\n\n  if (opt_limit_ != NULL) {\n    PUSH(res);\n    tmp = SAFETRANSLATE(opt_limit_);\n    res = new IR(kSelectNoParen, OP0(), res, tmp);\n  }\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(select_clause_);\n  auto tmp = SAFETRANSLATE(set_operator_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(select_paren_or_clause_);\n  res = new IR(kSelectNoParen, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_order_);\n  res = new IR(kSelectNoParen, OP0(), res, tmp);\n\n  if (opt_limit_ != NULL) {\n    PUSH(res);\n    tmp = SAFETRANSLATE(opt_limit_);\n    res = new IR(kSelectNoParen, OP0(), res, tmp);\n  }\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *SetOperator::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(set_type_);\n  auto tmp = SAFETRANSLATE(opt_all_);\n  res = new IR(kSetOperator, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *SetType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kSetType, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *OptAll::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptAll, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *SelectClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(opt_top_);\n  auto tmp2 = SAFETRANSLATE(opt_distinct_);\n  auto tmp3 = SAFETRANSLATE(select_list_);\n  auto tmp4 = SAFETRANSLATE(opt_from_clause_);\n  auto tmp5 = SAFETRANSLATE(opt_where_);\n  auto tmp6 = SAFETRANSLATE(opt_group_);\n\n  res = new IR(kUnknown, OPSTART(\"SELECT\"), tmp1, tmp2);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp3);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp4);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp5);\n  PUSH(res);\n  res = new IR(kSelectClause, OP0(), res, tmp6);\n  if (sub_type_ == 1) {\n    PUSH(res);\n    auto tmp = SAFETRANSLATE(window_clause_);\n    res = new IR(kSelectClause, OP0(), res, tmp);\n  }\n  TRANSLATEEND\n}\n\nIR *OptDistinct::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptDistinct, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *SelectList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(expr_list_);\n  res = new IR(kSelectList, OP0(), res);\n\n  TRANSLATEEND\n}\n\nIR *FromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(table_ref_);\n  res = new IR(kFromClause, OPSTART(\"FROM\"), res);\n\n  TRANSLATEEND\n}\n\nIR *OptFromClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(from_clause_);\n  res = new IR(kOptFromClause, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFromClause, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptWhere::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  IR *tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kOptWhere, OPSTART(\"WHERE\"), tmp1);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWhere, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *OptGroup::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(expr_list_);\n  auto tmp2 = SAFETRANSLATE(opt_having_);\n  res = new IR(kOptGroup, OPSTART(\"GROUP BY\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptGroup, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptHaving::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kOptHaving, OP1(\"HAVING\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptHaving, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptOrder::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(order_list_);\n  res = new IR(kOptOrder, OP1(\"ORDER BY\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOrder, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OrderList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kOrderList, v_order_desc_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *OrderDesc::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(expr_);\n  auto tmp = SAFETRANSLATE(opt_order_type_);\n\n  res = new IR(kOrderDesc, OP0(), res, tmp);\n  PUSH(res);\n\n  tmp = SAFETRANSLATE(opt_null_);\n  res = new IR(kOrderDesc, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *OptOrderType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptOrderType, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *OptTop::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(int_literal_);\n  res = new IR(kOptTop, OPSTART(\"TOP\"), tmp);\n  CASEEND\n\n  CASESTART(1)\n  res = new IR(kOptTop, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptLimit::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(expr1_);\n  res = new IR(kOptLimit, OPSTART(\"LIMIT\"), tmp);\n  CASEEND\n  CASESTART(1)\n  auto tmp = SAFETRANSLATE(expr1_);\n  res = new IR(kOptLimit, OPSTART(\"OFFSET\"), tmp);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(expr1_);\n  auto tmp2 = SAFETRANSLATE(expr2_);\n  res = new IR(kOptLimit, OP2(\"LIMIT\", \"OFFSET\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(3)\n  res = new IR(kOptLimit, \"LIMIT ALL\");\n  CASEEND\n  CASESTART(4)\n  auto tmp = SAFETRANSLATE(expr1_);\n  res = new IR(kOptLimit, OPSTART(\"LIMIT ALL OFFSET\"), tmp);\n  CASEEND\n  CASESTART(5)\n  res = new IR(kOptLimit, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *ExprList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kExprList, v_expr_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *LiteralList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kLiteralList, v_literal_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *OptLiteralList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(literal_list_);\n  res = new IR(kOptLiteralList, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptLiteralList, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *ExprAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(expr_);\n  auto tmp = SAFETRANSLATE(opt_alias_);\n\n  res = new IR(kExprAlias, OP0(), res, tmp);\n\n  TRANSLATEEND\n}\n\nIR *Expr::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nIR *Operand::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kOperand, OP2(\"(\", \")\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kOperand, OP0(), res);\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kOperand, OP2(\"(\", \")\"), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *BetweenExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(operand2_);\n  auto tmp2 = SAFETRANSLATE(operand3_);\n  res = new IR(kUnknown, OPMID(\"AND\"), tmp1, tmp2);\n  PUSH(res);\n\n  auto tmp3 = SAFETRANSLATE(operand1_);\n  res = new IR(kBetweenExpr, OPMID(\"BETWEEN\"), tmp3, res);\n\n  TRANSLATEEND\n}\nIR *LogicExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(expr1_);\n  auto tmp2 = SAFETRANSLATE(expr2_);\n\n  res = new IR(kLogicExpr, OPMID(operator_), tmp1, tmp2);\n  TRANSLATEEND\n}\n\nIR *ExistsExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kOperand, OP2(\"(\", \")\"), res);\n  PUSH(res);\n  res = new IR(kExistsExpr, OP1(\"EXISTS\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kUnknown, OP2(\"(\", \")\"), res);\n  PUSH(res);\n  res = new IR(kExistsExpr, OP1(\"EXISTS\"), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *InExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(expr_list_);\n  auto tmp3 = new IR(kUnknown, OP3(\"(\", \"\", \")\"), tmp2);\n  res = new IR(kInExpr, OPMID(\"IN\"), tmp1, tmp3);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(expr_list_);\n  auto tmp3 = new IR(kUnknown, OP3(\"(\", \"\", \")\"), tmp2);\n  res = new IR(kInExpr, OPMID(\"NOT IN\"), tmp1, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(select_no_paren_);\n  auto tmp3 = new IR(kUnknown, OP3(\"(\", \"\", \")\"), tmp2);\n  res = new IR(kInExpr, OPMID(\"IN\"), tmp1, tmp3);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(select_no_paren_);\n  auto tmp3 = new IR(kUnknown, OP3(\"(\", \"\", \")\"), tmp2);\n  res = new IR(kInExpr, OPMID(\"IN\"), tmp1, tmp3);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *ArrayIndex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(operand_);\n  auto tmp2 = SAFETRANSLATE(int_literal_);\n  res = new IR(kArrayIndex, OP3(\"\", \"[\", \"]\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nIR *ScalarExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(column_name_);\n  res = new IR(kScalarExpr, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(literal_);\n  res = new IR(kScalarExpr, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *UnaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(operand_);\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kUnaryExpr, OP1(\"-\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kUnaryExpr, OP1(\"NOT\"), res);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kUnaryExpr, OPMID(\"ISNULL\"), res);\n  CASEEND\n  CASESTART(3)\n  res = new IR(kUnaryExpr, OPMID(\"IS NULL\"), res);\n  CASEEND\n  CASESTART(4)\n  res = new IR(kUnaryExpr, OPMID(\"IS NOT NULL\"), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *BinaryExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(comp_expr_);\n  res = new IR(kBinaryExpr, OP0(), tmp);\n  CASEEND\n\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(operand1_);\n  auto tmp2 = SAFETRANSLATE(operand2_);\n  res = new IR(kBinaryExpr, OPMID(operator_), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *CompExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  auto tmp1 = SAFETRANSLATE(operand1_);\n  auto tmp2 = SAFETRANSLATE(operand2_);\n  res = new IR(kCompExpr, OPMID(operator_), tmp1, tmp2);\n  TRANSLATEEND\n}\nIR *CaseExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(case_expr_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"\", \"END\"), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(case_expr_);\n  auto tmp2 = SAFETRANSLATE(case_list_);\n  auto tmp3 = SAFETRANSLATE(else_expr_);\n  res = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(res);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"ELSE\", \"END\"), res, tmp3);\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(case_list_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"\", \"END\"), res);\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(case_list_);\n  auto tmp2 = SAFETRANSLATE(else_expr_);\n  res = new IR(kCaseExpr, OP3(\"CASE\", \"ELSE\", \"END\"), tmp1, tmp2);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *FunctionExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kFunctionExpr, OPEND(\"()\"), res);\n  PUSH(res);\n  auto tmp1 = SAFETRANSLATE(opt_filter_clause_);\n  res = new IR(kFunctionExpr, OP0(), res, tmp1);\n  PUSH(res);\n  tmp1 = SAFETRANSLATE(opt_over_clause_);\n  res = new IR(kFunctionExpr, OP0(), res, tmp1);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(id_);\n  auto tmp = SAFETRANSLATE(opt_distinct_);\n  auto tmp2 = SAFETRANSLATE(expr_list_);\n\n  auto tmp_res = new IR(kExprList, OP3(\"(\", \"\", \")\"), tmp, tmp2);\n  PUSH(tmp_res);\n  res = new IR(kFunctionExpr, OP0(), res, tmp_res);\n  PUSH(res);\n  auto tmp1 = SAFETRANSLATE(opt_filter_clause_);\n  res = new IR(kFunctionExpr, OP0(), res, tmp1);\n  PUSH(res);\n  tmp1 = SAFETRANSLATE(opt_over_clause_);\n  res = new IR(kFunctionExpr, OP0(), res, tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *ExtractExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(datetime_field_);\n  IR *expr = SAFETRANSLATE(expr_);\n  res = new IR(kUnknown, OP3(\"(\", \"FROM\", \")\"), res, expr);\n  PUSH(res);\n  res = new IR(kExtractExpr, OPSTART(\"EXTRACT\"), res);\n\n  TRANSLATEEND\n}\n\nIR *ArrayExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(expr_list_);\n  res = new IR(kArrayExpr, OP3(\"ARRAY\", \"[\", \"]\"), NULL, res);\n\n  TRANSLATEEND\n}\n\nIR *CaseClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(when_expr_);\n  auto tmp2 = SAFETRANSLATE(then_expr_);\n  res = new IR(kCaseClause, OP2(\"WHEN\", \"THEN\"), tmp1, tmp2);\n\n  TRANSLATEEND\n}\nIR *CaseList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kCaseList, v_case_list_, \" \");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *DatetimeField::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kDatetimeField, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *ColumnName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(identifier1_);\n  res = new IR(kColumnName, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(identifier1_);\n  IR *tmp = SAFETRANSLATE(identifier2_);\n  res->id_type_ = id_whatever;\n  tmp->id_type_ = id_whatever;\n  res = new IR(kColumnName, OPMID(\".\"), res, tmp);\n  res->id_type_ = id_column_name;\n  CASEEND\n  CASESTART(2)\n  res = new IR(kColumnName, string(\"*\"));\n  CASEEND\n  CASESTART(3)\n  res = SAFETRANSLATE(identifier1_);\n  res->id_type_ = id_whatever;\n  IR *tmp = new IR(kconst_str, string(\"*\"));\n  PUSH(tmp);\n  res = new IR(kColumnName, OPMID(\".\"), res, tmp);\n  res->id_type_ = id_column_name;\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *Literal::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  assert(0);\n  TRANSLATEEND\n}\n\nIR *StringLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kStringLiteral, \"'\" + str_val_ + \"'\");\n\n  TRANSLATEEND\n}\n\nIR *BoolLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kBoolLiteral, b_val_);\n\n  TRANSLATEEND\n}\n\nIR *NumLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kFloatLiteral, f_val_);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(int_literal_);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *IntLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kIntLiteral, int_val_);\n\n  TRANSLATEEND\n}\n\nIR *NullLiteral::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kNullLiteral, string(\"NULL\"));\n\n  TRANSLATEEND\n}\n\nIR *ParamExpr::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nIR *Identifier::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kIdentifier, id_, id_type_);\n\n  TRANSLATEEND\n}\n\nIR *TableRefCommaList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kTableRefCommaList, v_table_ref_comma_list_, \",\");\n\n  TRANSLATEEND\n}\n\nIR *TableRefAtomic::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(nonjoin_table_ref_atomic_);\n  res = new IR(kTableRefAtomic, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(join_clause_);\n  res = new IR(kTableRefAtomic, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *NonjoinTableRefAtomic::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(table_ref_name_);\n  res = new IR(kNonjoinTableRefAtomic, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(select_statement_);\n  IR *tmp1 = SAFETRANSLATE(opt_table_alias_);\n  res = new IR(kNonjoinTableRefAtomic, OP2(\"(\", \")\"), res, tmp1);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *TableRefName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp1 = SAFETRANSLATE(table_name_);\n  auto tmp2 = SAFETRANSLATE(opt_table_alias_);\n  res = new IR(kTableRefName, OP0(), tmp1, tmp2);\n\n  TRANSLATEEND\n}\n\nIR *TableRefNameNoAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(table_name_);\n  res = new IR(kTableRefNameNoAlias, OP0(), res);\n\n  TRANSLATEEND\n}\n\nIR *TableAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(alias_);\n  res = new IR(kTableAlias, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  IR *id = SAFETRANSLATE(id_);\n  IR *tmp = SAFETRANSLATE(ident_comma_list_);\n  res = new IR(kTableAlias, OP3(\"AS\", \"(\", \")\"), id, tmp);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptTableAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(table_alias_);\n  res = new IR(kOptTableAlias, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTableAlias, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *Alias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kAlias, OPSTART(\"AS\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kAlias, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptAlias::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(alias_);\n  res = new IR(kOptAlias, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptAlias, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *WithClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(with_description_list_);\n  res = new IR(kWithClause, OPSTART(\"WITH\"), res);\n\n  TRANSLATEEND\n}\n\nIR *OptWithClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(with_clause_);\n  res = new IR(kOptWithClause, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWithClause, \"\");\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *WithDescriptionList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kWithDescriptionList, v_with_description_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nIR *WithDescription::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  IR *id = SAFETRANSLATE(id_);\n  IR *tmp = SAFETRANSLATE(select_with_paren_);\n  res = new IR(kWithDescription, OPMID(\"AS\"), id, tmp);\n\n  TRANSLATEEND\n}\n\nIR *JoinClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  IR *tmp = SAFETRANSLATE(table_ref_atomic1_);\n  IR *tmp2 = SAFETRANSLATE(nonjoin_table_ref_atomic_);\n  res = new IR(kJoinClause, OPMID(\"NATURAL JOIN\"), tmp, tmp2);\n  CASEEND\n  CASESTART(1)\n  IR *tmp = SAFETRANSLATE(table_ref_atomic1_);\n  IR *tmp2 = SAFETRANSLATE(opt_join_type_);\n  res = new IR(kUnknown, OP0(), tmp, tmp2);\n  PUSH(res);\n\n  IR *tmp3 = SAFETRANSLATE(table_ref_atomic2_);\n  res = new IR(kUnknown, OPMID(\"JOIN\"), res, tmp3);\n  PUSH(res);\n\n  IR *tmp4 = SAFETRANSLATE(join_condition_);\n  res = new IR(kJoinClause, OPMID(\"ON\"), res, tmp4);\n  CASEEND\n  CASESTART(2)\n  IR *tmp = SAFETRANSLATE(table_ref_atomic1_);\n  IR *tmp2 = SAFETRANSLATE(opt_join_type_);\n  res = new IR(kUnknown, OP0(), tmp, tmp2);\n  PUSH(res);\n\n  IR *tmp3 = SAFETRANSLATE(table_ref_atomic2_);\n  res = new IR(kUnknown, OPMID(\"JOIN\"), res, tmp3);\n  PUSH(res);\n\n  IR *tmp4 = SAFETRANSLATE(column_name_);\n  IR *tmp5 = new IR(kUnknown, OP3(\"(\", \"\", \")\"), tmp4);\n  PUSH(res);\n  res = new IR(kJoinClause, OP3(\"\", \"USING\", \"\"), res, tmp5);\n  CASEEND\n  CASESTART(3)\n  IR *tmp = SAFETRANSLATE(table_ref_atomic1_);\n  IR *tmp2 = SAFETRANSLATE(opt_join_type_);\n  res = new IR(kUnknown, OP0(), tmp, tmp2);\n  PUSH(res);\n\n  IR *tmp3 = SAFETRANSLATE(table_ref_atomic2_);\n  res = new IR(kJoinClause, OPMID(\"JOIN\"), res, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *OptJoinType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptJoinType, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *JoinCondition::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kJoinCondition, OP0(), res);\n\n  TRANSLATEEND\n}\n\nIR *OptSemicolon::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptSemicolon, str_val_);\n\n  TRANSLATEEND\n}\n\nIR *IdentCommaList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kIdentCommaList, v_iden_comma_list_, \",\")\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid Opt::deep_delete() { delete this; }\n\nvoid OptString::deep_delete() { delete this; }\n\nvoid Program::deep_delete() {\n  SAFEDELETE(statement_list_);\n  SAFEDELETE(opt_semicolon_);\n  delete this;\n}\n\nvoid StatementList::deep_delete() {\n  SAFEDELETELIST(v_statement_list_);\n  delete this;\n}\n\nvoid Statement::deep_delete() {\n  SAFEDELETE(optional_hints_);\n  SAFEDELETE(preparable_statement_);\n  SAFEDELETE(prepare_statement_);\n  SAFEDELETE(show_statement_);\n  SAFEDELETE(cmd_);\n  delete this;\n}\n\nvoid OptionalHints::deep_delete() {\n  SAFEDELETE(hint_list_);\n  delete this;\n}\n\nvoid PrepareStatement::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(prep_target_que_);\n  delete this;\n}\n\nvoid PreparableStatement::deep_delete() { delete this; }\n\nvoid ShowStatement::deep_delete() {\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nvoid Hint::deep_delete() {\n  SAFEDELETE(literal_list_);\n  SAFEDELETE(id_);\n  delete this;\n}\n\nvoid HintList::deep_delete() {\n  SAFEDELETELIST(v_hint_list_);\n  delete this;\n}\n\nvoid PrepareTargetQuery::deep_delete() { delete this; }\n\nvoid SelectStatement::deep_delete() {\n  SAFEDELETE(opt_with_clause_);\n  SAFEDELETE(select_with_paren_);\n  SAFEDELETE(select_no_paren_);\n  SAFEDELETE(set_operator_);\n  SAFEDELETE(select_paren_or_clause_);\n  SAFEDELETE(opt_order_);\n  SAFEDELETE(opt_limit_);\n  delete this;\n}\n\nvoid ImportStatement::deep_delete() {\n  SAFEDELETE(import_file_type_);\n  SAFEDELETE(file_path_);\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nvoid CreateStatement::deep_delete() {\n  SAFEDELETE(opt_not_exists_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(file_path_);\n  SAFEDELETE(column_def_comma_list_);\n  SAFEDELETE(select_statement_);\n  SAFEDELETE(opt_column_list_);\n  SAFEDELETE(opt_unique_);\n  SAFEDELETE(index_name_);\n  SAFEDELETE(ident_commalist_);\n  SAFEDELETE(opt_where_);\n  SAFEDELETE(module_name_);\n  SAFEDELETE(trigger_declare_);\n  SAFEDELETE(trigger_cmd_list_);\n  delete this;\n}\n\nvoid InsertStatement::deep_delete() {\n  SAFEDELETE(insert_type_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_column_list_);\n  SAFEDELETE(super_list_);\n  SAFEDELETE(select_no_paren_);\n  SAFEDELETE(opt_upsert_clause_);\n  delete this;\n}\n\nvoid DeleteStatement::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_where_);\n  delete this;\n}\n\nvoid UpdateStatement::deep_delete() {\n  SAFEDELETE(table_ref_name_no_alias_);\n  SAFEDELETE(update_clause_comma_list_);\n  SAFEDELETE(opt_where_);\n  delete this;\n}\n\nvoid DropStatement::deep_delete() {\n  SAFEDELETE(opt_exists_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(id_);\n  SAFEDELETE(schema_name_);\n  SAFEDELETE(trigger_name_);\n  delete this;\n}\n\nvoid ExecuteStatement::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(opt_literal_list_);\n  delete this;\n}\n\nvoid ImportFileType::deep_delete() { delete this; }\n\nvoid FilePath::deep_delete() { delete this; }\n\nvoid OptNotExists::deep_delete() { delete this; }\n\nvoid ColumnDefCommaList::deep_delete() {\n  SAFEDELETELIST(v_column_def_comma_list_);\n  delete this;\n}\n\nvoid ColumnDef::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(column_type_);\n  SAFEDELETE(opt_column_arglist_);\n  delete this;\n}\n\nvoid ColumnType::deep_delete() { delete this; }\n\nvoid OptColumnNullable::deep_delete() { delete this; }\n\nvoid OptExists::deep_delete() { delete this; }\n\nvoid OptColumnList::deep_delete() {\n  SAFEDELETE(ident_comma_list_);\n  delete this;\n}\n\nvoid UpdateClauseCommalist::deep_delete() {\n  SAFEDELETELIST(v_update_clause_list_);\n  delete this;\n}\n\nvoid UpdateClause::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid SelectWithParen::deep_delete() {\n  SAFEDELETE(select_no_paren_);\n  SAFEDELETE(select_with_paren_);\n  delete this;\n}\n\nvoid SelectParenOrClause::deep_delete() {\n  SAFEDELETE(select_with_paren_);\n  SAFEDELETE(select_clause_);\n  delete this;\n}\n\nvoid SelectNoParen::deep_delete() {\n  SAFEDELETE(select_clause_);\n  SAFEDELETE(opt_order_);\n  SAFEDELETE(opt_limit_);\n  SAFEDELETE(set_operator_);\n  SAFEDELETE(select_paren_or_clause_);\n  delete this;\n}\n\nvoid SetOperator::deep_delete() {\n  SAFEDELETE(set_type_);\n  SAFEDELETE(opt_all_);\n  delete this;\n}\n\nvoid SetType::deep_delete() { delete this; }\n\nvoid OptAll::deep_delete() { delete this; }\n\nvoid SelectClause::deep_delete() {\n  SAFEDELETE(opt_top_);\n  SAFEDELETE(opt_distinct_);\n  SAFEDELETE(select_list_);\n  SAFEDELETE(opt_from_clause_);\n  SAFEDELETE(opt_where_);\n  SAFEDELETE(opt_group_);\n  SAFEDELETE(window_clause_);\n  delete this;\n}\n\nvoid OptDistinct::deep_delete() { delete this; }\n\nvoid SelectList::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n}\n\nvoid FromClause::deep_delete() {\n  SAFEDELETE(table_ref_);\n  delete this;\n}\n\nvoid OptFromClause::deep_delete() {\n  SAFEDELETE(from_clause_);\n  delete this;\n}\n\nvoid OptWhere::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid OptGroup::deep_delete() {\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_having_);\n  delete this;\n}\n\nvoid OptHaving::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid OptOrder::deep_delete() {\n  SAFEDELETE(order_list_);\n  delete this;\n}\n\nvoid OrderList::deep_delete() {\n  SAFEDELETELIST(v_order_desc_);\n  delete this;\n}\n\nvoid OrderDesc::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_type_);\n  SAFEDELETE(opt_null_);\n  delete this;\n}\n\nvoid OptOrderType::deep_delete() { delete this; }\n\nvoid OptTop::deep_delete() {\n  SAFEDELETE(int_literal_);\n  delete this;\n}\n\nvoid OptLimit::deep_delete() {\n  SAFEDELETE(expr1_);\n  SAFEDELETE(expr2_);\n  delete this;\n}\n\nvoid ExprList::deep_delete() {\n  SAFEDELETELIST(v_expr_list_);\n  delete this;\n}\n\nvoid LiteralList::deep_delete() {\n  SAFEDELETELIST(v_literal_list_);\n  delete this;\n}\n\nvoid OptLiteralList::deep_delete() {\n  SAFEDELETE(literal_list_);\n  delete this;\n}\n\nvoid Alias::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nvoid Expr::deep_delete() { delete this; }\n\nvoid ExprAlias::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_alias_);\n  delete this;\n}\n\nvoid Operand::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(select_no_paren_);\n\n  delete this;\n}\n\nvoid BetweenExpr::deep_delete() {\n  SAFEDELETE(operand1_);\n  SAFEDELETE(operand2_);\n  SAFEDELETE(operand3_);\n  delete this;\n}\n\nvoid LogicExpr::deep_delete() {\n  SAFEDELETE(expr1_);\n  SAFEDELETE(expr2_);\n  delete this;\n}\n\nvoid ExistsExpr::deep_delete() {\n  SAFEDELETE(select_no_paren_);\n  delete this;\n}\n\nvoid InExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(select_no_paren_);\n  delete this;\n}\n\nvoid ArrayIndex::deep_delete() {\n  SAFEDELETE(int_literal_);\n  SAFEDELETE(operand_);\n  delete this;\n}\n\nvoid ScalarExpr::deep_delete() {\n  SAFEDELETE(column_name_);\n  SAFEDELETE(literal_);\n  delete this;\n}\n\nvoid UnaryExpr::deep_delete() {\n  SAFEDELETE(operand_);\n  delete this;\n}\n\nvoid BinaryExpr::deep_delete() {\n  SAFEDELETE(operand2_);\n  SAFEDELETE(operand1_);\n  SAFEDELETE(comp_expr_);\n  delete this;\n}\n\nvoid CompExpr::deep_delete() {\n  SAFEDELETE(operand2_);\n  SAFEDELETE(operand1_);\n\n  delete this;\n}\n\nvoid CaseExpr::deep_delete() {\n  SAFEDELETE(case_expr_);\n  SAFEDELETE(else_expr_);\n  SAFEDELETE(case_list_);\n  delete this;\n}\n\nvoid FunctionExpr::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(opt_distinct_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_filter_clause_);\n  SAFEDELETE(opt_over_clause_);\n  delete this;\n}\n\nvoid ExtractExpr::deep_delete() {\n  SAFEDELETE(datetime_field_);\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid ArrayExpr::deep_delete() {\n  SAFEDELETE(expr_list_);\n  delete this;\n}\n\nvoid CaseClause::deep_delete() {\n  SAFEDELETE(when_expr_);\n  SAFEDELETE(then_expr_);\n  delete this;\n}\n\nvoid CaseList::deep_delete() {\n  SAFEDELETELIST(v_case_list_);\n  delete this;\n}\n\nvoid DatetimeField::deep_delete() { delete this; }\n\nvoid ColumnName::deep_delete() {\n  SAFEDELETE(identifier1_);\n  SAFEDELETE(identifier2_);\n  delete this;\n}\n\nvoid Literal::deep_delete() { delete this; }\n\nvoid StringLiteral::deep_delete() { delete this; }\n\nvoid BoolLiteral::deep_delete() { delete this; }\n\nvoid NumLiteral::deep_delete() {\n  SAFEDELETE(int_literal_);\n  delete this;\n}\n\nvoid IntLiteral::deep_delete() { delete this; }\n\nvoid NullLiteral::deep_delete() { delete this; }\n\nvoid ParamExpr::deep_delete() { delete this; }\n\nvoid Identifier::deep_delete() { delete this; }\n\nvoid TableRefCommaList::deep_delete() {\n  SAFEDELETELIST(v_table_ref_comma_list_);\n  delete this;\n}\n\nvoid TableRefAtomic::deep_delete() {\n  SAFEDELETE(nonjoin_table_ref_atomic_);\n  SAFEDELETE(join_clause_);\n  delete this;\n}\n\nvoid NonjoinTableRefAtomic::deep_delete() {\n  SAFEDELETE(table_ref_name_);\n  SAFEDELETE(select_statement_);\n  SAFEDELETE(opt_table_alias_);\n  delete this;\n}\n\nvoid TableRefName::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_table_alias_);\n  delete this;\n}\n\nvoid TableRefNameNoAlias::deep_delete() {\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nvoid TableName::deep_delete() {\n  SAFEDELETE(table_name_);\n  SAFEDELETE(database_name_);\n  delete this;\n}\n\nvoid TableAlias::deep_delete() {\n  SAFEDELETE(alias_);\n  SAFEDELETE(ident_comma_list_);\n  SAFEDELETE(id_);\n  delete this;\n}\n\nvoid OptTableAlias::deep_delete() {\n  SAFEDELETE(table_alias_);\n  delete this;\n}\n\nvoid OptAlias::deep_delete() {\n  SAFEDELETE(alias_);\n  delete this;\n}\n\nvoid WithClause::deep_delete() {\n  SAFEDELETE(with_description_list_);\n  delete this;\n}\n\nvoid OptWithClause::deep_delete() {\n  SAFEDELETE(with_clause_);\n  delete this;\n}\n\nvoid WithDescriptionList::deep_delete() {\n  SAFEDELETELIST(v_with_description_list_);\n  delete this;\n}\n\nvoid WithDescription::deep_delete() {\n  SAFEDELETE(select_with_paren_);\n  SAFEDELETE(id_);\n  delete this;\n}\n\nvoid JoinClause::deep_delete() {\n  SAFEDELETE(table_ref_atomic1_);\n  SAFEDELETE(nonjoin_table_ref_atomic_);\n  SAFEDELETE(opt_join_type_);\n  SAFEDELETE(table_ref_atomic2_);\n  SAFEDELETE(column_name_);\n  SAFEDELETE(join_condition_);\n  delete this;\n}\n\nvoid OptJoinType::deep_delete() { delete this; }\n\nvoid JoinCondition::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid OptSemicolon::deep_delete() { delete this; }\n\nvoid IdentCommaList::deep_delete() {\n  SAFEDELETELIST(v_iden_comma_list_);\n  delete this;\n}\n\nvoid Cmd::deep_delete() { delete this; }\n\nIR *Cmd::translate(vector<IR *> &v_ir_collector) { return NULL; }\n\nvoid CmdAttach::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(schema_name_);\n  delete this;\n}\n\nIR *CmdAttach::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  auto tmp = SAFETRANSLATE(schema_name_);\n  res = new IR(kCmdAttach, OP2(\"ATTACH\", \"AS\"), res, tmp);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(expr_);\n  auto tmp = SAFETRANSLATE(schema_name_);\n  res = new IR(kCmdAttach, OP2(\"ATTACH DATABASE\", \"AS\"), res, tmp);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *CmdReindex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kCmdReindex, \"REINDEX\");\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(table_name_);\n  res = new IR(kCmdReindex, OP1(\"REINDEX\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid CmdReindex::deep_delete() {\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nvoid CmdDetach::deep_delete() {\n  SAFEDELETE(schema_name_);\n  delete this;\n}\n\nIR *CmdDetach::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(schema_name_);\n  res = new IR(kCmdDetach, OP1(\"DETACH\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(schema_name_);\n  res = new IR(kCmdDetach, OP1(\"DETACH DATABASE\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid CmdAnalyze::deep_delete() {\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nIR *CmdAnalyze::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kCmdAnalyze, string(\"ANALYZE\"));\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(table_name_);\n  res = new IR(kCmdAnalyze, OP1(\"ANALYZE\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid CmdPragma::deep_delete() {\n  SAFEDELETE(pragma_key_);\n  SAFEDELETE(pragma_value_);\n  SAFEDELETE(table_name_);\n  delete this;\n}\n\nIR *CmdPragma::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto pk = SAFETRANSLATE(pragma_key_);\n  res = new IR(kCmdPragma, OPSTART(\"PRAGMA\"), pk);\n  CASEEND\n  CASESTART(1)\n  auto pk = SAFETRANSLATE(pragma_key_);\n  auto pv = SAFETRANSLATE(pragma_value_);\n  res = new IR(kCmdPragma, OP2(\"PRAGMA\", \"=\"), pk, pv);\n  CASEEND\n  CASESTART(2)\n  auto pk = SAFETRANSLATE(pragma_key_);\n  auto pv = SAFETRANSLATE(pragma_value_);\n  res = new IR(kCmdPragma, OP3(\"PRAGMA\", \"(\", \")\"), pk, pv);\n  CASEEND\n  CASESTART(3)\n  res = new IR(kCmdPragma, string(\"REINDEX\"));\n  CASEEND\n  CASESTART(4)\n  auto table_name = SAFETRANSLATE(table_name_);\n  res = new IR(kCmdPragma, OPSTART(\"REINDEX\"), table_name);\n  CASEEND\n  CASESTART(5)\n  res = new IR(kCmdPragma, string(\"ANALYZE\"));\n  CASEEND\n  CASESTART(6)\n  auto table_name = SAFETRANSLATE(table_name_);\n  res = new IR(kCmdPragma, OPSTART(\"ANALYZE\"), table_name);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid PragmaKey::deep_delete() {\n  SAFEDELETE(pragma_name_);\n  SAFEDELETE(schema_name_);\n  delete this;\n}\n\nIR *PragmaKey::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto pn = SAFETRANSLATE(pragma_name_);\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kPragmaKey, OP0(), pn);\n  CASEEND\n  CASESTART(1)\n  auto sn = SAFETRANSLATE(schema_name_);\n  res = new IR(kPragmaKey, OPMID(\".\"), sn, pn);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid PragmaValue::deep_delete() {\n  SAFEDELETE(num_literal_);\n  SAFEDELETE(string_literal_);\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *PragmaValue::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(num_literal_);\n  res = new IR(kPragmaValue, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(string_literal_);\n  res = new IR(kPragmaValue, OP0(), res);\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kPragmaValue, OP0(), res);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid PragmaName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *PragmaName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  auto name = SAFETRANSLATE(id_);\n  res = new IR(kPragmaName, OP0(), name);\n  TRANSLATEEND\n}\n\nvoid SchemaName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *SchemaName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  auto name = SAFETRANSLATE(id_);\n  res = new IR(kSchemaName, OP0(), name);\n  TRANSLATEEND\n}\n\nIR *OptColumnArglist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(column_arglist_);\n  res = new IR(kOptColumnArglist, OP0(), tmp);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumnArglist, \"\");\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptColumnArglist::deep_delete() {\n  SAFEDELETE(column_arglist_);\n  delete this;\n}\n\nIR *ColumnArglist::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kColumnArglist, v_column_arg_, \" \");\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid ColumnArglist::deep_delete() {\n  SAFEDELETELIST(v_column_arg_);\n  delete this;\n}\n\nIR *ColumnArg::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(opt_on_conflict_);\n  res = new IR(kColumnArg, OP1(\"NULL\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(opt_on_conflict_);\n  res = new IR(kColumnArg, OP1(\"NOT NULL\"), res);\n  CASEEND\n  CASESTART(2)\n  auto tmp = SAFETRANSLATE(opt_order_type_);\n  auto tmp1 = SAFETRANSLATE(opt_on_conflict_);\n  res = new IR(kColumnArg, OP1(\"PRIMARY KEY\"), tmp, tmp1);\n  PUSH(res);\n  tmp = SAFETRANSLATE(opt_autoinc_);\n  res = new IR(kColumnArg, OP0(), res, tmp);\n  CASEEND\n  CASESTART(3)\n  res = SAFETRANSLATE(opt_on_conflict_);\n  res = new IR(kColumnArg, OP1(\"UNIQUE\"), res);\n  CASEEND\n  CASESTART(4)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kColumnArg, OP2(\"GENERATED ALWAYS AS(\", \")\"), res);\n  CASEEND\n  CASESTART(5)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kColumnArg, OP2(\"AS(\", \")\"), res);\n  CASEEND\n  CASESTART(6)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kColumnArg, OP2(\"CHECK(\", \")\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid ColumnArg::deep_delete() {\n  SAFEDELETE(opt_on_conflict_);\n  SAFEDELETE(opt_order_type_);\n  SAFEDELETE(opt_autoinc_);\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nIR *OptOnConflict::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(resolve_type_);\n  res = new IR(kOptOnConflict, OP1(\"ON CONFLICT\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOnConflict, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptOnConflict::deep_delete() {\n  SAFEDELETE(resolve_type_);\n  delete this;\n}\n\nIR *ResolveType::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kResolveType, str_val_);\n  TRANSLATEEND\n}\n\nvoid ResolveType::deep_delete() { delete this; }\n\nIR *OptAutoinc::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kOptAutoinc, str_val_);\n  TRANSLATEEND\n}\n\nvoid OptAutoinc::deep_delete() { delete this; }\n\nIR *OptUnique::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kOptUnique, str_val_);\n  TRANSLATEEND\n}\n\nvoid OptUnique::deep_delete() { delete this; }\n\nIR *IndexName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(id_);\n  res = new IR(kIndexName, OP0(), res);\n  TRANSLATEEND\n}\n\nvoid IndexName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *TriggerDeclare::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(opt_tmp_);\n  auto tmp = SAFETRANSLATE(opt_not_exists_);\n  res = new IR(kUnknown, OPMID(\"TRIGGER\"), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(trigger_name_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(opt_trigger_time_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(trigger_event_);\n  res = new IR(kUnknown, OP0(), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(table_name_);\n  res = new IR(kTriggerDeclare, OPMID(\"ON\"), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(opt_for_each_);\n  res = new IR(kTriggerDeclare, OP0(), res, tmp);\n  PUSH(res);\n  tmp = SAFETRANSLATE(opt_when_);\n  res = new IR(kTriggerDeclare, OP0(), res, tmp);\n  TRANSLATEEND\n}\n\nvoid TriggerDeclare::deep_delete() {\n  SAFEDELETE(opt_tmp_);\n  SAFEDELETE(opt_not_exists_);\n  SAFEDELETE(trigger_name_);\n  SAFEDELETE(opt_trigger_time_);\n  SAFEDELETE(trigger_event_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(opt_for_each_);\n  SAFEDELETE(opt_when_);\n  delete this;\n}\n\nIR *OptTmp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kOptTmp, str_val_);\n  TRANSLATEEND\n}\n\nvoid OptTmp::deep_delete() { delete this; }\n\nIR *TriggerName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(id_);\n  res = new IR(kTriggerName, OP0(), res);\n  TRANSLATEEND\n}\n\nvoid TriggerName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *OptTriggerTime::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kOptTriggerTime, str_val_);\n  TRANSLATEEND\n}\n\nvoid OptTriggerTime::deep_delete() { delete this; }\n\nIR *TriggerEvent::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kTriggerEvent, string(\"DELETE\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kTriggerEvent, string(\"INSERT\"));\n  CASEEND\n  CASESTART(2)\n  res = SAFETRANSLATE(opt_of_column_list_);\n  res = new IR(kTriggerEvent, OP1(\"UPDATE\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid TriggerEvent::deep_delete() {\n  SAFEDELETE(opt_of_column_list_);\n  delete this;\n}\n\nIR *OptOfColumnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(ident_commalist_);\n  res = new IR(kOptOfColumnList, OP1(\"OF\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOfColumnList, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptOfColumnList::deep_delete() {\n  SAFEDELETE(ident_commalist_);\n  delete this;\n}\n\nIR *OptForEach::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kOptForEach, str_val_);\n  TRANSLATEEND\n}\n\nvoid OptForEach::deep_delete() { delete this; }\n\nIR *OptWhen::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kOptWhen, OP1(\"WHEN\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptWhen, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptWhen::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nIR *TriggerCmdList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  TRANSLATELIST(kTriggerCmdList, v_trigger_cmd_list_, \";\");\n  res->op_->suffix_ = \";\";\n  TRANSLATEENDNOPUSH\n}\n\nvoid TriggerCmdList::deep_delete() {\n  SAFEDELETELIST(v_trigger_cmd_list_);\n  delete this;\n}\n\nIR *TriggerCmd::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(stmt_);\n  TRANSLATEEND\n}\n\nvoid TriggerCmd::deep_delete() {\n  SAFEDELETE(stmt_);\n  delete this;\n}\n\nIR *ModuleName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(id_);\n  res = new IR(kModuleName, OP0(), res);\n  TRANSLATEEND\n}\n\nvoid ModuleName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *OptOverClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(window_);\n  res = new IR(kOptOverClause, OP2(\"OVER(\", \")\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kOptOverClause, OP1(\"OVER\"), res);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptOverClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptOverClause::deep_delete() {\n  SAFEDELETE(window_);\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *OptFilterClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kOptFilterClause, OP2(\"FILTER( WHEN\", \")\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFilterClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptFilterClause::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nIR *WindowClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATEEND\n}\n\nvoid WindowClause::deep_delete() {\n  SAFEDELETE(windowdefn_list_);\n  delete this;\n}\n\nIR *WindowDefnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  TRANSLATELIST(kWindowDefnList, v_windowdefn_list_, \",\");\n  TRANSLATEENDNOPUSH\n}\n\nvoid WindowDefnList::deep_delete() {\n  SAFEDELETELIST(v_windowdefn_list_);\n  delete this;\n}\n\nIR *WindowDefn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  auto id_ir = SAFETRANSLATE(id_);\n  auto win_ir = SAFETRANSLATE(window_);\n  auto tmp_ir = new IR(kUnknown, OP2(\"(\", \")\"), win_ir);\n  PUSH(tmp_ir);\n  res = new IR(kWindowDefn, OPMID(\"AS\"), id_ir, tmp_ir);\n  TRANSLATEEND\n}\n\nvoid WindowDefn::deep_delete() {\n  SAFEDELETE(id_);\n  SAFEDELETE(window_);\n  delete this;\n}\n\nIR *Window::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto windowname = SAFETRANSLATE(opt_base_window_name_);\n  auto opt_order = SAFETRANSLATE(opt_order_);\n  auto opt_frame = SAFETRANSLATE(opt_frame_);\n\n  SWITCHSTART\n  CASESTART(0)\n  auto expr_list = SAFETRANSLATE(expr_list_);\n  auto tmp = new IR(kUnknown, OPMID(\"PARTITION BY\"), windowname, expr_list);\n  PUSH(tmp);\n  tmp = new IR(kUnknown, OP0(), tmp, opt_order);\n  PUSH(tmp);\n  res = new IR(kWindow, OP0(), tmp, opt_frame);\n  CASEEND\n  CASESTART(1)\n  auto tmp = new IR(kUnknown, OP0(), windowname, opt_order);\n  PUSH(tmp);\n  res = new IR(kWindow, OP0(), tmp, opt_frame);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid Window::deep_delete() {\n  SAFEDELETE(opt_base_window_name_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_order_);\n  SAFEDELETE(opt_frame_);\n  delete this;\n}\n\nIR *OptBaseWindowName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(id_);\n  res = new IR(kOptBaseWindowName, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptBaseWindowName, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptBaseWindowName::deep_delete() {\n  SAFEDELETE(id_);\n  delete this;\n}\n\nIR *OptFrame::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto range_or_row = SAFETRANSLATE(range_or_rows_);\n  auto frame_bound_s = SAFETRANSLATE(frame_bound_s_);\n  auto opt_frame_exclude = SAFETRANSLATE(opt_frame_exclude_);\n  res = new IR(kUnknown, OP0(), range_or_row, frame_bound_s);\n  PUSH(res);\n  res = new IR(kOptFrame, OP0(), res, opt_frame_exclude);\n  CASEEND\n  CASESTART(1)\n  auto range_or_row = SAFETRANSLATE(range_or_rows_);\n  auto frame_bound_s = SAFETRANSLATE(frame_bound_s_);\n  auto opt_frame_exclude = SAFETRANSLATE(opt_frame_exclude_);\n  res = SAFETRANSLATE(frame_bound_e_);\n  res = new IR(kUnknown, OP2(\"BEWTEEN\", \"AND\"), frame_bound_s, res);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), range_or_row, res);\n  PUSH(res);\n  res = new IR(kOptFrame, OP0(), res, opt_frame_exclude);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptFrame, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptFrame::deep_delete() {\n  SAFEDELETE(range_or_rows_);\n  SAFEDELETE(frame_bound_e_);\n  SAFEDELETE(frame_bound_s_);\n  SAFEDELETE(opt_frame_exclude_);\n  delete this;\n}\n\nIR *RangeOrRows::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kRangeOrRows, str_val_);\n  TRANSLATEEND\n}\n\nvoid RangeOrRows::deep_delete() { delete this; }\n\nIR *FrameBoundS::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundS, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundS, string(\"UNBOUNDED PRECEDING\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid FrameBoundS::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n}\n\nIR *FrameBoundE::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(frame_bound_);\n  res = new IR(kFrameBoundE, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kFrameBoundE, string(\"UNBOUNDED FOLLOWING\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid FrameBoundE::deep_delete() {\n  SAFEDELETE(frame_bound_);\n  delete this;\n}\n\nIR *FrameBound::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OPEND(\"PRECEDING\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(expr_);\n  res = new IR(kFrameBound, OPEND(\"FOLLOWING\"), res);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kFrameBound, OP1(\"CURRENT ROW\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid FrameBound::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nIR *OptFrameExclude::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(frame_exclude_);\n  res = new IR(kOptFrameExclude, OP1(\"EXCLUDE\"), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptFrameExclude, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptFrameExclude::deep_delete() {\n  SAFEDELETE(frame_exclude_);\n  delete this;\n}\n\nIR *FrameExclude::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kFrameExclude, str_val_);\n  TRANSLATEEND\n}\n\nvoid FrameExclude::deep_delete() { delete this; }\n\nIR *SuperList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = SAFETRANSLATE(v_super_list_[0]);\n  res = new IR(kSuperList, OP2(\"(\", \")\"), res);\n  PUSH(res);\n  for (int i = 1; i < v_super_list_.size(); i++) {\n    auto tmp = SAFETRANSLATE(v_super_list_[i]);\n    res = new IR(kSuperList, OP3(\"\", \",(\", \")\"), res, tmp);\n    PUSH(res);\n  }\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid SuperList::deep_delete() {\n  SAFEDELETELIST(v_super_list_);\n  delete this;\n}\n\nIR *TableRef::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kTableRef, OP0(), tmp1, tmp2);\n  PUSH(res);\n\n  auto tmp3 = SAFETRANSLATE(opt_alias_);\n  res = new IR(kTableRef, OP0(), res, tmp3);\n  PUSH(res);\n\n  auto tmp4 = SAFETRANSLATE(opt_index_);\n  res = new IR(kTableRef, OP0(), res, tmp4);\n  PUSH(res);\n\n  auto tmp5 = SAFETRANSLATE(opt_on_);\n  res = new IR(kTableRef, OP0(), res, tmp5);\n  PUSH(res);\n\n  auto tmp6 = SAFETRANSLATE(opt_using_);\n  res = new IR(kTableRef, OP0(), res, tmp6);\n  CASEEND\n  CASESTART(1)\n  auto tmp1 = SAFETRANSLATE(table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_name_);\n  res = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(res);\n\n  auto tmp3 = SAFETRANSLATE(expr_list_);\n  res = new IR(kTableRef, OP0(), res, tmp3);\n  PUSH(res);\n\n  auto tmp4 = SAFETRANSLATE(opt_alias_);\n  res = new IR(kTableRef, OP0(), res, tmp4);\n  PUSH(res);\n\n  auto tmp5 = SAFETRANSLATE(opt_on_);\n  res = new IR(kTableRef, OP0(), res, tmp5);\n  PUSH(res);\n\n  auto tmp6 = SAFETRANSLATE(opt_using_);\n  res = new IR(kTableRef, OP0(), res, tmp6);\n  CASEEND\n  CASESTART(2)\n  auto tmp1 = SAFETRANSLATE(table_prefix_);\n  auto tmp2 = SAFETRANSLATE(select_no_paren_);\n  res = new IR(kTableRef, OP0(), tmp1, tmp2);\n  PUSH(res);\n\n  auto tmp3 = SAFETRANSLATE(opt_alias_);\n  res = new IR(kTableRef, OP0(), res, tmp3);\n  PUSH(res);\n\n  auto tmp4 = SAFETRANSLATE(opt_on_);\n  res = new IR(kTableRef, OP0(), res, tmp4);\n  PUSH(res);\n\n  auto tmp5 = SAFETRANSLATE(opt_using_);\n  res = new IR(kTableRef, OP0(), res, tmp5);\n\n  CASEEND\n  CASESTART(3)\n  auto tmp1 = SAFETRANSLATE(table_prefix_);\n  auto tmp2 = SAFETRANSLATE(table_ref_);\n  res = new IR(kTableRef, OP0(), tmp1, tmp2);\n  PUSH(res);\n\n  auto tmp3 = SAFETRANSLATE(opt_alias_);\n  res = new IR(kTableRef, OP0(), res, tmp3);\n  PUSH(res);\n\n  auto tmp4 = SAFETRANSLATE(opt_on_);\n  res = new IR(kTableRef, OP0(), res, tmp4);\n  PUSH(res);\n\n  auto tmp5 = SAFETRANSLATE(opt_using_);\n  res = new IR(kTableRef, OP0(), res, tmp5);\n\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *TablePrefix::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp1 = SAFETRANSLATE(table_ref_);\n  auto tmp2 = SAFETRANSLATE(join_op_);\n  res = new IR(kTablePrefix, OP0(), tmp1, tmp2);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kTablePrefix, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nIR *JoinOp::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kJoinOp, string(\",\"));\n  CASEEND\n  CASESTART(1)\n  res = new IR(kJoinOp, string(\"JOIN\"));\n  CASEEND\n  CASESTART(2)\n  auto tmp = SAFETRANSLATE(join_kw_);\n  res = new IR(kJoinOp, OPEND(\"JOIN\"), tmp);\n  CASEEND\n  CASESTART(3)\n  auto tmp = SAFETRANSLATE(join_kw_);\n  auto tmp2 = SAFETRANSLATE(id1_);\n  res = new IR(kJoinOp, OPEND(\"JOIN\"), tmp, tmp2);\n  CASEEND\n  CASESTART(4)\n  auto tmp = SAFETRANSLATE(join_kw_);\n  auto tmp1 = SAFETRANSLATE(id1_);\n  auto tmp2 = SAFETRANSLATE(id2_);\n  res = new IR(kUnknown, OP0(), tmp1, tmp2);\n  PUSH(res);\n  res = new IR(kJoinOp, OPEND(\"JOIN\"), tmp, res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *OptIndex::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(column_name_);\n  res = new IR(kOptIndex, OP1(\"INDEXED BY\"), tmp);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptIndex, string(\"NOT INDEXED\"));\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptIndex, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *OptOn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(expr_);\n  res = new IR(kOptOn, OP1(\"ON\"), tmp);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptOn, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *OptUsing::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp = SAFETRANSLATE(ident_commalist_);\n  res = new IR(kOptUsing, OP3(\"USING\", \"(\", \")\"), NULL, tmp);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptUsing, string(\"\"));\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nIR *JoinKw::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  res = new IR(kJoinKw, str_val_);\n  TRANSLATEEND\n}\n\nvoid TableRef::deep_delete() {\n  SAFEDELETE(opt_on_);\n  SAFEDELETE(opt_alias_);\n  SAFEDELETE(expr_list_);\n  SAFEDELETE(opt_using_);\n  SAFEDELETE(table_name_);\n  SAFEDELETE(table_prefix_);\n  SAFEDELETE(table_ref_);\n  SAFEDELETE(opt_index_);\n  SAFEDELETE(select_no_paren_);\n  delete this;\n}\n\nvoid TablePrefix::deep_delete() {\n  SAFEDELETE(table_ref_);\n  SAFEDELETE(join_op_);\n  delete this;\n}\n\nvoid JoinOp::deep_delete() {\n  SAFEDELETE(join_kw_);\n  SAFEDELETE(id1_);\n  SAFEDELETE(id2_);\n  delete this;\n}\n\nvoid OptIndex::deep_delete() {\n  SAFEDELETE(column_name_);\n  delete this;\n}\n\nvoid OptOn::deep_delete() {\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nvoid OptUsing::deep_delete() {\n  SAFEDELETE(ident_commalist_);\n  delete this;\n}\n\nvoid JoinKw::deep_delete() { delete this; }\n\nvoid CastExpr::deep_delete() {\n  SAFEDELETE(column_type_);\n  SAFEDELETE(expr_);\n  delete this;\n}\n\nIR *CastExpr::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp0 = SAFETRANSLATE(expr_);\n  auto tmp1 = SAFETRANSLATE(column_type_);\n  res = new IR(kUnknown, OP3(\"CAST (\", \"AS\", \")\"), tmp0, tmp1);\n\n  TRANSLATEEND\n}\n\nvoid AlterStatement::deep_delete() {\n  SAFEDELETE(table_name1_);\n  SAFEDELETE(table_name2_);\n  SAFEDELETE(column_def_);\n  SAFEDELETE(opt_column_);\n  SAFEDELETE(column_name1_);\n  SAFEDELETE(column_name2_);\n  delete this;\n}\n\nIR *AlterStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(table_name1_);\n  auto tmp1 = SAFETRANSLATE(table_name2_);\n  res = new IR(kAlterStatement, OP2(\"ALTER TABLE\", \"RENAME TO\"), tmp0, tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(table_name1_);\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_name1_);\n  auto tmp3 = SAFETRANSLATE(column_name2_);\n  res = new IR(kUnknown, OP2(\"ALTER TABLE\", \"RENAME\"), tmp0, tmp1);\n  PUSH(res);\n  res = new IR(kUnknown, OP0(), res, tmp2);\n  PUSH(res);\n  res = new IR(kAlterStatement, OPMID(\"TO\"), res, tmp3);\n  CASEEND\n  CASESTART(2)\n  auto tmp0 = SAFETRANSLATE(table_name1_);\n  auto tmp1 = SAFETRANSLATE(opt_column_);\n  auto tmp2 = SAFETRANSLATE(column_def_);\n  res = new IR(kUnknown, OP2(\"ALTER TABLE\", \"ADD\"), tmp0, tmp1);\n  PUSH(res);\n  res = new IR(kAlterStatement, OP0(), res, tmp2);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid OptColumn::deep_delete() { delete this; }\n\nIR *OptColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptColumn, str_val_);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptColumn, str_val_);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CmdRelease::deep_delete() {\n  SAFEDELETE(savepoint_name_);\n\n  delete this;\n}\n\nIR *CmdRelease::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(savepoint_name_);\n  res = new IR(kCmdRelease, OP1(\"RELEASE SAVEPOINT\"), res);\n  CASEEND\n  CASESTART(1)\n  res = SAFETRANSLATE(savepoint_name_);\n  res = new IR(kCmdRelease, OP1(\"RELEASE\"), res);\n  CASEEND\n  SWITCHEND\n  TRANSLATEEND\n}\n\nvoid SavepointName::deep_delete() {\n  SAFEDELETE(id_);\n\n  delete this;\n}\n\nIR *SavepointName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = SAFETRANSLATE(id_);\n  res = new IR(kSavepointName, OP0(), res);\n\n  TRANSLATEEND\n}\n\nvoid VacuumStatement::deep_delete() {\n  SAFEDELETE(opt_schema_name_);\n  SAFEDELETE(file_path_);\n\n  delete (this);\n}\n\nIR *VacuumStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(opt_schema_name_);\n  auto tmp1 = SAFETRANSLATE(file_path_);\n  res = new IR(kVacuumStatement, OP2(\"VACUUM\", \"INTO\"), tmp0, tmp1);\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(opt_schema_name_);\n  res = new IR(kVacuumStatement, OP1(\"VACUUM\"), tmp0);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptSchemaName::deep_delete() {\n  SAFEDELETE(schema_name_);\n\n  delete this;\n}\n\nIR *OptSchemaName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(schema_name_);\n  res = new IR(kOptSchemaName, OP0(), tmp0);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptSchemaName, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid RollbackStatement::deep_delete() {\n  SAFEDELETE(opt_transaction_);\n  SAFEDELETE(opt_to_savepoint_);\n\n  delete this;\n}\n\nIR *RollbackStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  auto tmp1 = SAFETRANSLATE(opt_to_savepoint_);\n  res = new IR(kRollbackStatement, OP1(\"ROLLBACK\"), tmp0, tmp1);\n\n  TRANSLATEEND\n}\n\nvoid OptTransaction::deep_delete() { delete this; }\n\nIR *OptTransaction::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kOptTransaction, str_val_);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptTransaction, str_val_);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid OptToSavepoint::deep_delete() {\n  SAFEDELETE(savepoint_name_);\n\n  delete this;\n}\n\nIR *OptToSavepoint::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(savepoint_name_);\n  res = new IR(kOptToSavepoint, OP1(\"TO\"), tmp0);\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(savepoint_name_);\n  res = new IR(kOptToSavepoint, OP1(\"TO SAVEPOINT\"), tmp0);\n  CASEEND\n  CASESTART(2)\n  res = new IR(kOptToSavepoint, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid BeginStatement::deep_delete() {\n  SAFEDELETE(opt_transaction_);\n\n  delete this;\n}\n\nIR *BeginStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kBeginStatement, OP1(\"BEGIN\"), tmp0);\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kBeginStatement, OP1(\"BEGIN DEFFERED\"), tmp0);\n  CASEEND\n  CASESTART(2)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kBeginStatement, OP1(\"BEGIN IMEDIATE\"), tmp0);\n  CASEEND\n  CASESTART(3)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kBeginStatement, OP1(\"BEGIN EXCLUSIVE\"), tmp0);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid CommitStatement::deep_delete() {\n  SAFEDELETE(opt_transaction_);\n\n  delete this;\n}\n\nIR *CommitStatement::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kCommitStatement, OP1(\"COMMIT\"), tmp0);\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(opt_transaction_);\n  res = new IR(kCommitStatement, OP1(\"END\"), tmp0);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid UpsertClause::deep_delete() {\n  SAFEDELETE(assign_list_);\n  SAFEDELETE(indexed_column_list_);\n  SAFEDELETE(opt_where1_);\n  SAFEDELETE(opt_where2_);\n\n  delete this;\n}\n\nIR *UpsertClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = new IR(kUpsertClause, OPSTART(\"ON CONFLICT DO NOTHING\"));\n  CASEEND\n  CASESTART(1)\n  auto tmp0 = SAFETRANSLATE(assign_list_);\n  auto tmp1 = SAFETRANSLATE(opt_where1_);\n  res = new IR(kUpsertClause, OP1(\"ON CONFLICT DO UPDATE SET\"), tmp0, tmp1);\n  CASEEND\n  CASESTART(2)\n  auto tmp0 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp1 = SAFETRANSLATE(opt_where1_);\n  res = new IR(kUpsertClause, OP2(\"ON CONFLICT (\", \")\"), tmp0, tmp1);\n  CASEEND\n  CASESTART(3)\n  auto tmp0 = SAFETRANSLATE(indexed_column_list_);\n  auto tmp1 = SAFETRANSLATE(opt_where1_);\n  auto tmp2 = SAFETRANSLATE(assign_list_);\n  auto tmp3 = SAFETRANSLATE(opt_where2_);\n  res = new IR(kUpsertClause, OP2(\"ON CONFLICT (\", \")\"), tmp0, tmp1);\n  PUSH(res);\n  res = new IR(kUpsertClause, OPMID(\"DO UPDATE SET\"), res, tmp2);\n  PUSH(res);\n  res = new IR(kUpsertClause, OP0(), res, tmp3);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid IndexedColumnList::deep_delete() {\n  SAFEDELETELIST(v_indexed_column_list_);\n\n  delete this;\n}\n\nIR *IndexedColumnList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kIndexedColumnList, v_indexed_column_list_, \",\")\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid IndexedColumn::deep_delete() {\n  SAFEDELETE(opt_collate_);\n  SAFEDELETE(expr_);\n  SAFEDELETE(opt_order_type_);\n\n  delete this;\n}\n\nIR *IndexedColumn::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp0 = SAFETRANSLATE(expr_);\n  auto tmp1 = SAFETRANSLATE(opt_collate_);\n  auto tmp2 = SAFETRANSLATE(opt_order_type_);\n  res = new IR(kIndexedColumn, OP0(), tmp0, tmp1);\n  PUSH(res);\n  res = new IR(kIndexedColumn, OP0(), res, tmp2);\n\n  TRANSLATEEND\n}\n\nvoid OptCollate::deep_delete() {\n  SAFEDELETE(collation_name_);\n\n  delete this;\n}\n\nIR *OptCollate::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  auto tmp0 = SAFETRANSLATE(collation_name_);\n  res = new IR(kOptCollate, OP1(\"COLLATE\"), tmp0);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptCollate, str_val_);\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n\nvoid AssignList::deep_delete() {\n  SAFEDELETELIST(v_assign_list_);\n\n  delete this;\n}\n\nIR *AssignList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kAssignList, v_assign_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid OptNull::deep_delete() { delete this; }\n\nIR *OptNull::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  res = new IR(kOptNull, str_val_);\n\n  TRANSLATEEND\n}\n\nvoid AssignClause::deep_delete() {\n  SAFEDELETE(expr_);\n  SAFEDELETE(column_name_list_);\n\n  delete this;\n}\n\nIR *AssignClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto tmp0 = SAFETRANSLATE(column_name_list_);\n  auto tmp1 = SAFETRANSLATE(expr_);\n  res = new IR(kAssignClause, OP1(\"=\"), tmp0, tmp1);\n\n  TRANSLATEEND\n}\n\nvoid ColumnNameList::deep_delete() {\n  SAFEDELETELIST(v_column_name_list_);\n\n  delete this;\n}\n\nIR *ColumnNameList::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  TRANSLATELIST(kColumnNameList, v_column_name_list_, \",\");\n\n  TRANSLATEENDNOPUSH\n}\n\nvoid CollationName::deep_delete() {\n  SAFEDELETE(id_);\n\n  delete this;\n}\n\nIR *CollationName::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  auto name = SAFETRANSLATE(id_);\n  res = new IR(kCollationName, OP0(), name);\n\n  TRANSLATEEND\n}\n\nvoid OptUpsertClause::deep_delete() {\n  SAFEDELETE(upsert_clause_);\n\n  delete this;\n}\n\nIR *OptUpsertClause::translate(vector<IR *> &v_ir_collector) {\n  TRANSLATESTART\n\n  SWITCHSTART\n  CASESTART(0)\n  res = SAFETRANSLATE(upsert_clause_);\n  res = new IR(kOptUpsertClause, OP0(), res);\n  CASEEND\n  CASESTART(1)\n  res = new IR(kOptUpsertClause, string(\"\"));\n  CASEEND\n  SWITCHEND\n\n  TRANSLATEEND\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/srcs/mutator.cpp",
    "content": "#include \"../include/mutator.h\"\n\n#include <assert.h>\n\n#include <algorithm>\n#include <cfloat>\n#include <climits>\n#include <cstdio>\n#include <deque>\n#include <fstream>\n\n#include \"../include/ast.h\"\n#include \"../include/define.h\"\n#include \"../include/utils.h\"\n#define _NON_REPLACE_\n\nusing namespace std;\n\nvector<string> Mutator::common_string_libary;\nvector<unsigned long> Mutator::value_libary;\nmap<string, vector<string>> Mutator::m_tables;\nvector<string> Mutator::v_table_names;\n\nIR *Mutator::deep_copy_with_record(const IR *root, const IR *record) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_)\n    left = deep_copy_with_record(\n        root->left_, record);  // do you have a second version for deep_copy\n                               // that accept only one argument?\n  if (root->right_)\n    right = deep_copy_with_record(root->right_,\n                                  record);  // no I forget to update here\n\n  if (root->op_ != NULL)\n    copy_res = new IR(\n        root->type_,\n        OP3(root->op_->prefix_, root->op_->middle_, root->op_->suffix_), left,\n        right, root->f_val_, root->str_val_, root->name_, root->mutated_times_);\n  else\n    copy_res = new IR(root->type_, NULL, left, right, root->f_val_,\n                      root->str_val_, root->name_, root->mutated_times_);\n\n  copy_res->id_type_ = root->id_type_;\n\n  if (root == record && record != NULL) {\n    this->record_ = copy_res;\n  }\n\n  return copy_res;\n}\n\nbool Mutator::check_node_num(IR *root, unsigned int limit) {\n  auto v_statements = extract_statement(root);\n  bool is_good = true;\n\n  if (v_statements.size() > 5) {\n    is_good = false;\n\n  } else\n    for (auto stmt : v_statements) {\n      if (calc_node(stmt) > limit) {\n        is_good = false;\n        break;\n      }\n    }\n\n  return is_good;\n}\n\nvector<IR *> Mutator::mutate_all(vector<IR *> &v_ir_collector) {\n  vector<IR *> res;\n  set<unsigned long> res_hash;\n  IR *root = v_ir_collector[v_ir_collector.size() - 1];\n\n  for (auto ir : v_ir_collector) {\n    if (ir == root || ir->type_ == kProgram) continue;\n    vector<IR *> v_mutated_ir = mutate(ir);\n\n    for (auto i : v_mutated_ir) {\n      IR *new_ir_tree = deep_copy_with_record(root, ir);\n      replace(new_ir_tree, this->record_, i);\n\n      if (!check_node_num(new_ir_tree, 100)) {\n        deep_delete(new_ir_tree);\n        continue;\n      }\n\n      string tmp = extract_struct(new_ir_tree);\n      unsigned tmp_hash = hash(tmp);\n      if (res_hash.find(tmp_hash) != res_hash.end()) {\n        deep_delete(new_ir_tree);\n        continue;\n      }\n\n      res_hash.insert(tmp_hash);\n      res.push_back(new_ir_tree);\n    }\n  }\n\n  return res;\n}\n\nvoid Mutator::init(string f_testcase, string f_common_string, string pragma) {\n  ifstream input_test(f_testcase);\n  string line;\n\n  // init lib from multiple sql\n  while (getline(input_test, line)) {\n    auto p = parser(line);\n    if (p == NULL) continue;\n\n    vector<IR *> v_ir;\n    auto res = p->translate(v_ir);\n    p->deep_delete();\n    p = NULL;\n    string strip_sql = extract_struct(res);\n    deep_delete(res);\n    p = parser(strip_sql);\n\n    if (p == NULL) continue;\n\n    res = p->translate(v_ir);\n    p->deep_delete();\n    p = NULL;\n    add_to_library(res);\n    deep_delete(res);\n    ;\n  }\n\n  // init utils::m_tables\n  vector<string> v_tmp = {\"haha1\", \"haha2\", \"haha3\"};\n  v_table_names.insert(v_table_names.end(), v_tmp.begin(), v_tmp.end());\n  m_tables[\"haha1\"] = {\"ducking_column0_1\", \"ducking_column1_1\",\n                       \"ducking_column2_1\"};\n  m_tables[\"haha2\"] = {\"ducking_column0_2\", \"ducking_column1_2\",\n                       \"ducking_column2_2\"};\n  m_tables[\"haha3\"] = {\"ducking_column0_3\", \"ducking_column1_3\",\n                       \"ducking_column2_3\"};\n\n  // init value_libary\n  vector<unsigned long> value_lib_init = {0,\n                                          (unsigned long)LONG_MAX,\n                                          (unsigned long)ULONG_MAX,\n                                          (unsigned long)CHAR_BIT,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MAX,\n                                          (unsigned long)UCHAR_MAX,\n                                          (unsigned long)CHAR_MIN,\n                                          (unsigned long)CHAR_MAX,\n                                          (unsigned long)MB_LEN_MAX,\n                                          (unsigned long)SHRT_MIN,\n                                          (unsigned long)INT_MIN,\n                                          (unsigned long)INT_MAX,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)SCHAR_MIN,\n                                          (unsigned long)UINT_MAX,\n                                          (unsigned long)FLT_MAX,\n                                          (unsigned long)DBL_MAX,\n                                          (unsigned long)LDBL_MAX,\n                                          (unsigned long)FLT_MIN,\n                                          (unsigned long)DBL_MIN,\n                                          (unsigned long)LDBL_MIN};\n\n  value_libary.insert(value_libary.begin(), value_lib_init.begin(),\n                      value_lib_init.end());\n\n  // init common_string_libary\n  common_string_libary.push_back(\"DO_NOT_BE_EMPTY\");\n  if (f_common_string != \"\") {\n    ifstream input_string(f_common_string);\n    string s;\n\n    while (getline(input_string, s)) {\n      common_string_libary.push_back(s);\n    }\n  }\n  string_libary.push_back(\"x\");\n  string_libary.push_back(\"v0\");\n  string_libary.push_back(\"v1\");\n\n  ifstream input_pragma(pragma);\n  assert(input_pragma.is_open());\n  string s;\n  cout << \"[duck]start init pragma\" << endl;\n  while (getline(input_pragma, s)) {\n    if (s.empty()) continue;\n\n    auto pos = s.find('=');\n    if (pos == string::npos) continue;\n    string k = s.substr(0, pos - 1);\n    string v = s.substr(pos + 2);\n    if (find(cmds_.begin(), cmds_.end(), k) == cmds_.end()) {\n      cmds_.push_back(k);\n      cout << \"Pushing: \" << s << std::endl;\n    }\n    m_cmd_value_lib_[k].push_back(v);\n  }\n\n  assert(!cmds_.empty());\n  relationmap[id_column_name] = id_top_table_name;\n  relationmap[id_table_name] = id_top_table_name;\n  relationmap[id_index_name] = id_top_table_name;\n  relationmap[id_create_column_name] = id_create_table_name;\n  relationmap[id_pragma_value] = id_pragma_name;\n  cross_map[id_top_table_name] = id_create_table_name;\n  return;\n}\n\nvector<IR *> Mutator::mutate(IR *input) {\n  vector<IR *> res;\n\n  if (!lucky_enough_to_be_mutated(input->mutated_times_)) {\n    return res;  // return a empty set if the IR is not mutated\n  }\n\n  res.push_back(strategy_delete(input));\n  res.push_back(strategy_insert(input));\n  res.push_back(strategy_replace(input));\n\n  // may do some simple filter for res, like removing some duplicated cases\n\n  input->mutated_times_ += res.size();\n  for (auto i : res) {\n    if (i == NULL) continue;\n    i->mutated_times_ = input->mutated_times_;\n  }\n  return res;\n}\n\nbool Mutator::replace(IR *root, IR *old_ir, IR *new_ir) {\n  auto parent_ir = locate_parent(root, old_ir);\n  if (parent_ir == NULL) return false;\n  if (parent_ir->left_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->left_ = new_ir;\n    return true;\n  } else if (parent_ir->right_ == old_ir) {\n    deep_delete(old_ir);\n    parent_ir->right_ = new_ir;\n    return true;\n  }\n\n  return false;\n}\n\nIR *Mutator::locate_parent(IR *root, IR *old_ir) {\n  if (root->left_ == old_ir || root->right_ == old_ir) return root;\n\n  if (root->left_ != NULL)\n    if (auto res = locate_parent(root->left_, old_ir)) return res;\n  if (root->right_ != NULL)\n    if (auto res = locate_parent(root->right_, old_ir)) return res;\n\n  return NULL;\n}\n\nstring Mutator::validate(IR *root) {\n  if (root == NULL) return \"\";\n  try {\n    string sql_str = root->to_string();\n    auto parsed_ir = parser(sql_str);\n    if (parsed_ir == NULL) return \"\";\n    parsed_ir->deep_delete();\n\n    reset_counter();\n    vector<IR *> ordered_ir;\n    auto graph =\n        build_dependency_graph(root, relationmap, cross_map, ordered_ir);\n    fix_graph(graph, root, ordered_ir);\n    return fix(root);\n  } catch (...) {\n    // invalid sql , skip\n  }\n  return \"\";\n}\n\nstatic void collect_ir(IR *root, set<IDTYPE> &type_to_fix,\n                       vector<IR *> &ir_to_fix) {\n  auto idtype = root->id_type_;\n\n  if (root->left_) {\n    collect_ir(root->left_, type_to_fix, ir_to_fix);\n  }\n\n  if (type_to_fix.find(idtype) != type_to_fix.end()) {\n    ir_to_fix.push_back(root);\n  }\n\n  if (root->right_) {\n    collect_ir(root->right_, type_to_fix, ir_to_fix);\n  }\n}\n\nstatic IR *search_mapped_ir(IR *ir, IDTYPE idtype) {\n  vector<IR *> to_search;\n  vector<IR *> backup;\n  to_search.push_back(ir);\n  while (!to_search.empty()) {\n    for (auto i : to_search) {\n      if (i->id_type_ == idtype) {\n        return i;\n      }\n      if (i->left_) {\n        backup.push_back(i->left_);\n      }\n      if (i->right_) {\n        backup.push_back(i->right_);\n      }\n    }\n    to_search = move(backup);\n    backup.clear();\n  }\n  return NULL;\n}\n\nvoid cross_stmt_map(map<IR *, set<IR *>> &graph, vector<IR *> &ir_to_fix,\n                    map<IDTYPE, IDTYPE> &cross_map) {\n  for (auto m : cross_map) {\n    vector<IR *> value;\n    vector<IR *> key;\n\n    for (auto &k : graph) {\n      if (k.first->id_type_ == m.first) {\n        key.push_back(k.first);\n      }\n    }\n\n    for (auto &k : ir_to_fix) {\n      if (k->id_type_ == m.second) {\n        value.push_back(k);\n      }\n    }\n\n    if (key.empty()) return;\n    for (auto val : value) {\n      graph[key[get_rand_int(key.size())]].insert(val);\n    }\n  }\n}\n\nvoid toptable_map(map<IR *, set<IR *>> &graph, vector<IR *> &ir_to_fix,\n                  vector<IR *> &toptable) {\n  vector<IR *> tablename;\n  for (auto ir : ir_to_fix) {\n    if (ir->id_type_ == id_table_name) {\n      tablename.push_back(ir);\n    } else if (ir->id_type_ == id_top_table_name) {\n      toptable.push_back(ir);\n    }\n  }\n  if (toptable.empty()) return;\n  for (auto k : tablename) {\n    auto r = get_rand_int(toptable.size());\n    graph[toptable[r]].insert(k);\n  }\n}\n\nvector<IR *> Mutator::extract_statement(IR *root) {\n  vector<IR *> res;\n  deque<IR *> bfs = {root};\n\n  while (bfs.empty() != true) {\n    auto node = bfs.front();\n    bfs.pop_front();\n\n    if (node->type_ == kStatement) res.push_back(node);\n    if (node->left_) bfs.push_back(node->left_);\n    if (node->right_) bfs.push_back(node->right_);\n  }\n\n  return res;\n}\n\nvector<IR *> Mutator::cut_subquery(IR *program, map<IR **, IR *> &m_save) {\n  vector<IR *> res;\n  vector<IR *> v_statements;\n  deque<IR *> dfs = {program};\n\n  while (dfs.empty() != true) {\n    auto node = dfs.front();\n    dfs.pop_front();\n\n    if (node->type_ == kStatement) v_statements.push_back(node);\n    if (node->left_) dfs.push_back(node->left_);\n    if (node->right_) dfs.push_back(node->right_);\n  }\n\n  reverse(v_statements.begin(), v_statements.end());\n  for (auto &stmt : v_statements) {\n    deque<IR *> q_bfs = {stmt};\n    res.push_back(stmt);\n\n    while (!q_bfs.empty()) {\n      auto cur = q_bfs.front();\n      q_bfs.pop_front();\n\n      if (cur->left_) {\n        q_bfs.push_back(cur->left_);\n        if (cur->left_->type_ == kSelectNoParen) {\n          res.push_back(cur->left_);\n          m_save[&cur->left_] = cur->left_;\n          cur->left_ = NULL;\n        }\n      }\n\n      if (cur->right_) {\n        q_bfs.push_back(cur->right_);\n        if (cur->right_->type_ == kSelectNoParen) {\n          res.push_back(cur->right_);\n          m_save[&cur->right_] = cur->right_;\n          cur->right_ = NULL;\n        }\n      }\n    }\n  }\n  return res;\n}\n\nbool Mutator::fix_back(map<IR **, IR *> &m_save) {\n  for (auto &i : m_save) {\n    if (*(i.first) != NULL) return false;\n    *(i.first) = i.second;\n  }\n\n  return true;\n}\n\nmap<IR *, set<IR *>> Mutator::build_dependency_graph(\n    IR *root, map<IDTYPE, IDTYPE> &relationmap, map<IDTYPE, IDTYPE> &cross_map,\n    vector<IR *> &ordered_ir) {\n  map<IR *, set<IR *>> graph;\n  set<IDTYPE> type_to_fix;\n  map<IR **, IR *> m_save;\n  for (auto &iter : relationmap) {\n    type_to_fix.insert(iter.first);\n    type_to_fix.insert(iter.second);\n  }\n\n  auto ir_list = cut_subquery(root, m_save);\n\n  for (auto stmt : ir_list) {\n    vector<IR *> ir_to_fix;\n    collect_ir(stmt, type_to_fix, ir_to_fix);\n    for (auto ii : ir_to_fix) {\n      ordered_ir.push_back(ii);\n    }\n    cross_stmt_map(graph, ir_to_fix, cross_map);\n    vector<IR *> v_top_table;\n    toptable_map(graph, ir_to_fix, v_top_table);\n    for (auto ir : ir_to_fix) {\n      auto idtype = ir->id_type_;\n      graph[ir].empty();\n      if (relationmap.find(idtype) == relationmap.end()) {\n        continue;\n      }\n\n      auto curptr = ir;\n      bool flag = false;\n      while (true) {\n        auto pptr = locate_parent(stmt, curptr);\n        if (pptr == NULL) break;\n        while (pptr->left_ == NULL || pptr->right_ == NULL) {\n          curptr = pptr;\n          pptr = locate_parent(stmt, curptr);\n          if (pptr == NULL) {\n            flag = true;\n            break;\n          }\n        }\n        if (flag) break;\n\n        auto to_search_child = pptr->left_;\n        if (pptr->left_ == curptr) {\n          to_search_child = pptr->right_;\n        }\n\n        auto match_ir = search_mapped_ir(to_search_child, relationmap[idtype]);\n        if (match_ir != NULL) {\n          if (ir->type_ == kColumnName && ir->left_ != NULL) {\n            if (v_top_table.size() > 0)\n              match_ir = v_top_table[get_rand_int(v_top_table.size())];\n            graph[match_ir].insert(ir->left_);\n            if (ir->right_) {\n              graph[match_ir].insert(ir->right_);\n              ir->left_->id_type_ = id_table_name;\n              ir->right_->id_type_ = id_column_name;\n              ir->id_type_ = id_whatever;\n            }\n          } else\n            graph[match_ir].insert(ir);\n          break;\n        }\n        curptr = pptr;\n      }\n    }\n  }\n\n  fix_back(m_save);\n  return graph;\n}\n\nIR *Mutator::strategy_delete(IR *cur) {\n  assert(cur);\n  MUTATESTART\n\n  DOLEFT\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  res->left_ = NULL;\n\n  DORIGHT\n  res = deep_copy(cur);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->right_ = NULL;\n\n  DOBOTH\n  res = deep_copy(cur);\n  if (res->left_ != NULL) deep_delete(res->left_);\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->left_ = res->right_ = NULL;\n\n  MUTATEEND\n}\n\nIR *Mutator::strategy_insert(IR *cur) {\n  assert(cur);\n\n  auto res = deep_copy(cur);\n\n  if (cur->type_ == kStatementList) {\n    int size = left_lib[kStatementList].size();\n    auto new_right = deep_copy(left_lib[kStatementList][get_rand_int(size)]);\n    auto new_res = new IR(kStatementList, OPMID(\";\"), res, new_right);\n    return new_res;\n  }\n\n  if (res->right_ == NULL && res->left_ != NULL) {\n    auto left_type = res->left_->type_;\n    auto left_lib_size = left_lib[left_type].size();\n    if (left_lib_size != 0) {\n      auto new_right =\n          deep_copy(left_lib[left_type][get_rand_int(left_lib_size)]);\n      res->right_ = new_right;\n      return res;\n    }\n  } else if (res->right_ != NULL && res->left_ == NULL) {\n    auto right_type = res->right_->type_;\n    auto right_lib_size = right_lib[right_type].size();\n    if (right_lib_size != 0) {\n      auto new_left =\n          deep_copy(right_lib[right_type][get_rand_int(right_lib_size)]);\n      res->left_ = new_left;\n      return res;\n    }\n  }\n\n  int lib_size = ir_libary_2D_[res->type_].size();\n  if (lib_size == 0) {\n    deep_delete(res);\n    return NULL;\n  }\n\n  auto save = res;\n  res = deep_copy(ir_libary_2D_[res->type_][get_rand_int(lib_size)]);\n  deep_delete(save);\n\n  return res;\n}\n\nIR *Mutator::strategy_replace(IR *cur) {\n  assert(cur);\n\n  MUTATESTART\n\n  DOLEFT\n  res = deep_copy(cur);\n\n  auto new_node = get_from_libary_2D(res->left_);\n\n  if (new_node != NULL) {\n    new_node = deep_copy(new_node);\n    if (res->left_ != NULL) {\n      new_node->id_type_ = res->left_->id_type_;\n    }\n  }\n  if (res->left_ != NULL) deep_delete(res->left_);\n  res->left_ = new_node;\n\n  DORIGHT\n  res = deep_copy(cur);\n\n  auto new_node = get_from_libary_2D(res->right_);\n  if (new_node != NULL) {\n    new_node = deep_copy(new_node);\n    if (res->right_ != NULL) {\n      new_node->id_type_ = res->right_->id_type_;\n    }\n  }\n  if (res->right_ != NULL) deep_delete(res->right_);\n  res->right_ = new_node;\n\n  DOBOTH\n  res = deep_copy(cur);\n\n  auto new_left = get_from_libary_2D(res->left_);\n  auto new_right = get_from_libary_2D(res->right_);\n\n  if (new_left != NULL) {\n    new_left = deep_copy(new_left);\n    if (res->left_ != NULL) {\n      new_left->id_type_ = res->left_->id_type_;\n    }\n  }\n\n  if (new_right != NULL) {\n    new_right = deep_copy(new_right);\n    if (res->right_ != NULL) {\n      new_right->id_type_ = res->right_->id_type_;\n    }\n  }\n\n  if (res->left_) deep_delete(res->left_);\n  if (res->right_) deep_delete(res->right_);\n  res->left_ = new_left;\n  res->right_ = new_right;\n\n  MUTATEEND\n\n  return res;\n}\n\nbool Mutator::lucky_enough_to_be_mutated(unsigned int mutated_times) {\n  if (get_rand_int(mutated_times + 1) < LUCKY_NUMBER) {\n    return true;\n  }\n  return false;\n}\n\nIR *Mutator::get_from_libary_2D(IR *ir) {\n  static IR *empty_str = new IR(kStringLiteral, \"\");\n\n  if (!ir) return NULL;\n\n  auto &i = ir_libary_2D_[ir->type_];\n  if (i.size() == 0) return empty_str;\n  return i[get_rand_int(i.size())];\n}\n\nIR *Mutator::get_from_libary_3D(IR *ir) {\n  NODETYPE left_type = kEmpty, right_type = kEmpty;\n  if (ir->left_) {\n    left_type = ir->left_->type_;\n  }\n  if (ir->right_) {\n    right_type = ir->right_->type_;\n  }\n  auto &i = ir_libary_3D_[left_type][right_type];\n  if (i.size() == 0) return new IR(kStringLiteral, \"\");\n  return i[get_rand_int(i.size())];\n}\n\nstring Mutator::get_a_string() {\n  unsigned com_size = common_string_libary.size();\n  unsigned lib_size = string_libary.size();\n  unsigned double_lib_size = lib_size * 2;\n\n  unsigned rand_int = get_rand_int(double_lib_size + com_size);\n  if (rand_int < double_lib_size) {\n    return string_libary[rand_int >> 1];\n  } else {\n    rand_int -= double_lib_size;\n    return common_string_libary[rand_int];\n  }\n}\n\nunsigned long Mutator::get_a_val() {\n  if (value_libary.size() == 0) return 0xdeadbeef;\n  return value_libary[get_rand_int(value_libary.size())];\n}\n\nunsigned long Mutator::get_library_size() {\n  unsigned long res = 0;\n\n  for (auto &i : ir_libary_2D_) {\n    res += i.second.size();\n  }\n\n  for (auto &i : ir_libary_3D_) {\n    for (auto &j : i.second) {\n      res += j.second.size();\n    }\n  }\n\n  for (auto &i : left_lib) {\n    res += i.second.size();\n  }\n\n  for (auto &i : right_lib) {\n    res += i.second.size();\n  }\n\n  return res;\n}\n\n#ifdef _NON_REPLACE_\nvoid Mutator::add_to_library(IR *ir) {\n#else\nvoid Mutator::add_to_library_core(IR *ir) {\n#endif\n  NODETYPE p_type = ir->type_;\n  unsigned long p_hash = hash(ir->to_string());\n  if (ir_libary_2D_hash_[p_type].find(p_hash) !=\n      ir_libary_2D_hash_[p_type].end()) {\n    return;\n  }\n  IR *ir_copy = deep_copy(ir);\n  add_to_library_core(ir_copy);\n}\n\n#ifdef _NON_REPLACE_\nvoid Mutator::add_to_library_core(IR *ir) {\n#else\nvoid Mutator::add_to_library(IR *ir) {\n#endif\n\n  string p_str = ir->to_string();\n  unsigned long p_hash = hash(p_str);\n  NODETYPE p_type = ir->type_;\n  NODETYPE left_type = kEmpty, right_type = kEmpty;\n\n  // update library_2D\n  if (ir_libary_2D_hash_[p_type].find(p_hash) !=\n      ir_libary_2D_hash_[p_type].end()) {\n    return;\n  }\n\n  ir_libary_2D_hash_[p_type].insert(p_hash);\n\n#ifdef _NON_REPLACE_\n  ir_libary_2D_[p_type].push_back(ir);\n#else\n  ir_libary_2D_[p_type].push_back(deep_copy(ir));\n#endif\n\n  if (ir->left_) {\n    left_type = ir->left_->type_;\n#ifdef _NON_REPLACE_\n    add_to_library_core(ir->left_);\n#else\n    add_to_library(ir->left_);\n#endif\n  }\n  if (ir->right_) {\n    right_type = ir->right_->type_;\n#ifdef _NON_REPLACE_\n    add_to_library_core(ir->right_);\n#else\n    add_to_library(ir->right_);\n#endif\n  }\n\n  // update right_lib, left_lib\n  if (ir->right_ && ir->left_) {\n#ifdef _NON_REPLACE_\n    right_lib[right_type].push_back(ir->left_);\n    left_lib[left_type].push_back(ir->right_);\n#else\n    right_lib[right_type].push_back(deep_copy(ir->left_));\n    left_lib[left_type].push_back(deep_copy(ir->right_));\n#endif\n  }\n\n  // update library_3D\n  set<unsigned long> &hash_map = ir_libary_3D_hash_[left_type][right_type];\n  if (hash_map.find(p_hash) != hash_map.end()) {\n    return;\n  }\n\n  ir_libary_3D_hash_[left_type][right_type].insert(p_hash);\n\n#ifdef _NON_REPLACE_\n  ir_libary_3D_[left_type][right_type].push_back(ir);\n#else\n  ir_libary_3D_[left_type][right_type].push_back(deep_copy(ir));\n#endif\n\n  return;\n}\n\nunsigned long Mutator::hash(string sql) {\n  return ducking_hash(sql.c_str(), sql.size());\n}\n\nunsigned long Mutator::hash(IR *root) { return this->hash(root->to_string()); }\n\nvoid Mutator::debug(IR *root) {\n  cout << get_string_by_type(root->type_) << endl;\n  if (root->left_) debug(root->left_);\n  if (root->right_) debug(root->right_);\n}\n\nMutator::~Mutator() {\n  cout << \"HERE\" << endl;\n  // delete ir_libary_3D_\n  for (auto &i : ir_libary_3D_) {\n    for (auto &j : i.second) {\n      for (auto &ir : j.second) {\n        deep_delete(ir);\n      }\n    }\n  }\n\n  // delete ir_libary_2D_\n  for (auto &i : ir_libary_2D_) {\n    for (auto &ir : i.second) {\n      deep_delete(ir);\n    }\n  }\n\n  // delete left_lib\n  for (auto &i : left_lib) {\n    for (auto &ir : i.second) {\n      deep_delete(ir);\n    }\n  }\n\n  // delete right_lib\n  for (auto &i : right_lib) {\n    for (auto &ir : i.second) {\n      deep_delete(ir);\n    }\n  }\n}\n\nvoid Mutator::fix_one(map<IR *, set<IR *>> &graph, IR *fixed_key,\n                      set<IR *> &visited) {\n  if (fixed_key->id_type_ == id_create_table_name) {\n    string tablename = fixed_key->str_val_;\n    auto &colums = m_tables[tablename];\n    for (auto &val : graph[fixed_key]) {\n      if (val->id_type_ == id_create_column_name) {\n        string new_column = gen_id_name();\n        colums.push_back(new_column);\n        val->str_val_ = new_column;\n        visited.insert(val);\n      } else if (val->id_type_ == id_top_table_name) {\n        val->str_val_ = tablename;\n        visited.insert(val);\n        fix_one(graph, val, visited);\n      }\n    }\n  } else if (fixed_key->id_type_ == id_top_table_name) {\n    string tablename = fixed_key->str_val_;\n    auto &colums = m_tables[tablename];\n\n    for (auto &val : graph[fixed_key]) {\n      if (val->id_type_ == id_column_name) {\n        val->str_val_ = vector_rand_ele(colums);\n        visited.insert(val);\n      } else if (val->id_type_ == id_table_name) {\n        val->str_val_ = tablename;\n        visited.insert(val);\n      } else if (val->id_type_ == id_index_name) {\n        string new_index = gen_id_name();\n        val->str_val_ = new_index;\n        m_tables[new_index] = m_tables[tablename];\n        v_table_names.push_back(new_index);\n      }\n    }\n  }\n}\n\nvoid Mutator::fix_graph(map<IR *, set<IR *>> &graph, IR *root,\n                        vector<IR *> &ordered_ir) {\n  set<IR *> visited;\n\n  reset_database();\n  for (auto ir : ordered_ir) {\n    auto iter = make_pair(ir, graph[ir]);\n\n    if (visited.find(iter.first) != visited.end()) {\n      continue;\n    }\n    visited.insert(iter.first);\n    if (iter.second.empty()) {\n      if (iter.first->id_type_ == id_column_name) {\n        string tablename = vector_rand_ele(v_table_names);\n        auto &colums = m_tables[tablename];\n        iter.first->str_val_ = vector_rand_ele(colums);\n        continue;\n      }\n    }\n    if (iter.first->id_type_ == id_create_table_name ||\n        iter.first->id_type_ == id_top_table_name) {\n      if (iter.first->id_type_ == id_create_table_name) {\n        string new_table_name = gen_id_name();\n        v_table_names.push_back(new_table_name);\n        iter.first->str_val_ = new_table_name;\n      } else {\n        iter.first->str_val_ = vector_rand_ele(v_table_names);\n      }\n      fix_one(graph, iter.first, visited);\n    }\n  }\n}\n\n/* tranverse ir in the order: _right ==> root ==> left_ */\nstring Mutator::fix(IR *root) {\n  string res;\n  auto *right_ = root->right_, *left_ = root->left_;\n  auto *op_ = root->op_;\n  auto type_ = root->type_;\n  auto str_val_ = root->str_val_;\n  auto f_val_ = root->f_val_;\n  auto int_val_ = root->int_val_;\n  auto id_type_ = root->id_type_;\n\n  string tmp_right;\n  if (right_ != NULL) tmp_right = fix(right_);\n\n  if (type_ == kIdentifier &&\n      (id_type_ == id_database_name || id_type_ == id_schema_name)) {\n    if (get_rand_int(2) == 1)\n      return string(\"main\");\n    else\n      return string(\"temp\");\n  }\n\n  if (type_ == kCmdPragma) {\n    string res = \"PRAGMA \";\n    int lib_size = cmds_.size();\n    string &key = cmds_[get_rand_int(lib_size)];\n    res += key;\n\n    int value_size = m_cmd_value_lib_[key].size();\n    string value = m_cmd_value_lib_[key][get_rand_int(value_size)];\n    if (!value.compare(\"_int_\")) {\n      value = string(\"=\") +\n              to_string(value_libary[get_rand_int(value_libary.size())]);\n    } else if (!value.compare(\"_empty_\")) {\n      value = \"\";\n    } else if (!value.compare(\"_boolean_\")) {\n      if (get_rand_int(2) == 0)\n        value = \"=false\";\n      else\n        value = \"=true\";\n    } else {\n      value = \"=\" + value;\n    }\n    if (!value.empty()) res += value + \";\";\n    return res;\n  }\n\n  if (type_ == kFilePath || type_ == kPrepareTargetQuery ||\n      type_ == kOptOrderType || type_ == kColumnType || type_ == kSetType ||\n      type_ == kOptJoinType || type_ == kOptDistinct || type_ == kNullLiteral)\n    return str_val_;\n  if (type_ == kStringLiteral) {\n    auto s = string_libary[get_rand_int(string_libary.size())];\n    return \"'\" + s + \"'\";\n  }\n  if (type_ == kIntLiteral)\n    return std::to_string(value_libary[get_rand_int(value_libary.size())]);\n  if (type_ == kFloatLiteral || type_ == kconst_float)\n    return std::to_string(\n        float(value_libary[get_rand_int(value_libary.size())]) + 0.1);\n  if (type_ == kconst_str)\n    return string_libary[get_rand_int(string_libary.size())];\n  ;\n  if (type_ == kconst_int)\n    return std::to_string(value_libary[get_rand_int(value_libary.size())]);\n\n  if (!str_val_.empty()) return str_val_;\n\n  if (op_ != NULL) res += op_->prefix_ + \" \";\n  if (left_ != NULL) res += fix(left_) + \" \";\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  if (right_ != NULL) res += tmp_right + \" \";\n  if (op_ != NULL) res += op_->suffix_;\n\n  trim_string(res);\n  return res;\n}\n\nunsigned int Mutator::calc_node(IR *root) {\n  unsigned int res = 0;\n  if (root->left_) res += calc_node(root->left_);\n  if (root->right_) res += calc_node(root->right_);\n\n  return res + 1;\n}\n\nstring Mutator::extract_struct2(IR *root) {\n  static int counter = 0;\n  string res;\n  auto *right_ = root->right_, *left_ = root->left_;\n  auto *op_ = root->op_;\n  auto type_ = root->type_;\n  auto str_val_ = root->str_val_;\n\n  if (type_ == kColumnName && str_val_ == \"*\") return str_val_;\n  if (type_ == kOptOrderType || type_ == kNullLiteral || type_ == kColumnType ||\n      type_ == kSetType || type_ == kOptJoinType || type_ == kOptDistinct)\n    return str_val_;\n  if (root->id_type_ != id_whatever && root->id_type_ != id_module_name) {\n    return \"x\" + to_string(counter++);\n  }\n  if (type_ == kPrepareTargetQuery || type_ == kStringLiteral) {\n    string str_val = str_val_;\n    str_val.erase(std::remove(str_val.begin(), str_val.end(), '\\''),\n                  str_val.end());\n    str_val.erase(std::remove(str_val.begin(), str_val.end(), '\"'),\n                  str_val.end());\n    string magic_string = magic_string_generator(str_val);\n    unsigned long h = hash(magic_string);\n    if (string_libary_hash_.find(h) == string_libary_hash_.end()) {\n      string_libary.push_back(magic_string);\n      string_libary_hash_.insert(h);\n    }\n    return \"'y'\";\n  }\n  if (type_ == kIntLiteral) {\n    value_libary.push_back(root->int_val_);\n    return \"10\";\n  }\n  if (type_ == kFloatLiteral || type_ == kconst_float) {\n    value_libary.push_back((unsigned long)root->f_val_);\n    return \"0.1\";\n  }\n  if (type_ == kconst_int) {\n    value_libary.push_back(root->int_val_);\n    return \"11\";\n  }\n  if (type_ == kFilePath) return \"'file_name'\";\n\n  if (!str_val_.empty()) return str_val_;\n  if (op_ != NULL) res += op_->prefix_ + \" \";\n  if (left_ != NULL) res += extract_struct2(left_) + \" \";\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  if (right_ != NULL) res += extract_struct2(right_) + \" \";\n  if (op_ != NULL) res += op_->suffix_;\n\n  trim_string(res);\n  return res;\n}\n\nstring Mutator::extract_struct(IR *root) {\n  static int counter = 0;\n  string res;\n  auto *right_ = root->right_, *left_ = root->left_;\n  auto *op_ = root->op_;\n  auto type_ = root->type_;\n  auto str_val_ = root->str_val_;\n\n  if (type_ == kColumnName && str_val_ == \"*\") return str_val_;\n  if (type_ == kOptOrderType || type_ == kNullLiteral || type_ == kColumnType ||\n      type_ == kSetType || type_ == kOptJoinType || type_ == kOptDistinct)\n    return str_val_;\n  if (root->id_type_ != id_whatever && root->id_type_ != id_module_name) {\n    return \"x\";\n  }\n  if (type_ == kPrepareTargetQuery || type_ == kStringLiteral) {\n    string str_val = str_val_;\n    str_val.erase(std::remove(str_val.begin(), str_val.end(), '\\''),\n                  str_val.end());\n    str_val.erase(std::remove(str_val.begin(), str_val.end(), '\"'),\n                  str_val.end());\n    string magic_string = magic_string_generator(str_val);\n    unsigned long h = hash(magic_string);\n    if (string_libary_hash_.find(h) == string_libary_hash_.end()) {\n      string_libary.push_back(magic_string);\n      string_libary_hash_.insert(h);\n    }\n    return \"'y'\";\n  }\n  if (type_ == kIntLiteral) {\n    value_libary.push_back(root->int_val_);\n    return \"10\";\n  }\n  if (type_ == kFloatLiteral || type_ == kconst_float) {\n    value_libary.push_back((unsigned long)root->f_val_);\n    return \"0.1\";\n  }\n  if (type_ == kconst_int) {\n    value_libary.push_back(root->int_val_);\n    return \"11\";\n  }\n  if (type_ == kFilePath) return \"'file_name'\";\n\n  if (!str_val_.empty()) return str_val_;\n  if (op_ != NULL) res += op_->prefix_ + \" \";\n  if (left_ != NULL) res += extract_struct(left_) + \" \";\n  if (op_ != NULL) res += op_->middle_ + \" \";\n  if (right_ != NULL) res += extract_struct(right_) + \" \";\n  if (op_ != NULL) res += op_->suffix_;\n\n  trim_string(res);\n  return res;\n}\n\nvoid Mutator::add_new_table(IR *root, string &table_name) {\n  if (root->left_ != NULL) add_new_table(root->left_, table_name);\n\n  if (root->right_ != NULL) add_new_table(root->right_, table_name);\n\n  // add to table_name_lib_\n  if (root->type_ == kTableName) {\n    if (root->operand_num_ == 1) {\n      table_name = root->left_->str_val_;\n    } else if (root->operand_num_ == 2) {\n      table_name = root->left_->str_val_ + \".\" + root->right_->str_val_;\n    }\n  }\n\n  // add to column_name_lib_\n  if (root->type_ == kColumnDef) {\n    auto tmp = root->left_;\n    if (tmp->type_ == kIdentifier) {\n      if (!table_name.empty() && !tmp->str_val_.empty())\n        ;\n      m_tables[table_name].push_back(tmp->str_val_);\n      if (find(v_table_names.begin(), v_table_names.end(), table_name) !=\n          v_table_names.end())\n        v_table_names.push_back(table_name);\n    }\n  }\n}\n\nvoid Mutator::reset_database() {\n  m_tables.clear();\n  v_table_names.clear();\n}\n\nint Mutator::try_fix(char *buf, int len, char *&new_buf, int &new_len) {\n  string sql(buf);\n  auto ast = parser(sql);\n\n  new_buf = buf;\n  new_len = len;\n  if (ast == NULL) return 0;\n\n  vector<IR *> v_ir;\n  auto ir_root = ast->translate(v_ir);\n  ast->deep_delete();\n\n  if (ir_root == NULL) return 0;\n  auto fixed = validate(ir_root);\n  deep_delete(ir_root);\n  if (fixed.empty()) return 0;\n\n  char *sfixed = (char *)malloc(fixed.size() + 1);\n  memcpy(sfixed, fixed.c_str(), fixed.size());\n  sfixed[fixed.size()] = 0;\n\n  new_buf = sfixed;\n  new_len = fixed.size();\n\n  return 1;\n}\n"
  },
  {
    "path": "srcs/internal/sqlite/srcs/utils.cpp",
    "content": "#include \"../include/utils.h\"\n\nstring get_string_by_type(IRTYPE type) {\n#define DECLARE_CASE(classname) \\\n  if (type == k##classname) return #classname;\n\n  ALLCLASS(DECLARE_CASE);\n#undef DECLARE_CASE\n\n  return \"\";\n}\n\nstring magic_string_generator(string &s) {\n  unsigned int i = get_rand_int(100);\n  if (i < 80) return s;\n  return \"**%s**\";\n}\n\nvoid print_v_ir(vector<IR *> &v_ir_collector) {\n  for (auto ir : v_ir_collector) {\n    if (ir->operand_num_ == 0) {\n      if (ir->type_ == kconst_int)\n        cout << ir->name_ << \" = .int.\" << ir->int_val_ << endl;\n      else if (ir->type_ == kconst_float)\n        cout << ir->name_ << \" = .float.\" << ir->f_val_ << endl;\n      else if (ir->type_ == kBoolLiteral)\n        cout << ir->name_ << \" = .bool.\" << ir->b_val_ << endl;\n      else\n        cout << ir->name_ << \" = .str.\" << ir->str_val_ << endl;\n\n    } else if (ir->operand_num_ == 1) {\n      string res = \"\";\n      if (ir->op_ != NULL) {\n        res += ir->op_->prefix_ + \" \";\n        res += ir->left_->name_ + \" \";\n        res += ir->op_->middle_ + \" \";\n        res += ir->op_->suffix_ + \" \";\n      }\n      cout << ir->name_ << \" = \" << res << endl;\n    } else if (ir->operand_num_ == 2) {\n      string res = \"\";\n      if (ir->op_ != NULL) {\n        res += ir->op_->prefix_ + \" \";\n        res += ir->left_->name_ + \" \";\n        res += ir->op_->middle_ + \" \";\n        res += ir->right_->name_ + \" \";\n        res += ir->op_->suffix_ + \" \";\n      }\n      cout << ir->name_ << \" = \" << res << endl;\n    }\n  }\n\n  return;\n}\n\nvoid print_ir(IR *ir) {\n  if (ir->left_ != NULL) print_ir(ir->left_);\n  if (ir->right_ != NULL) print_ir(ir->right_);\n\n  if (ir->operand_num_ == 0) {\n    if (ir->type_ == kconst_int)\n      cout << ir->name_ << \" = .int.\" << ir->int_val_ << endl;\n    else if (ir->type_ == kconst_float)\n      cout << ir->name_ << \" = .float.\" << ir->f_val_ << endl;\n    else if (ir->type_ == kBoolLiteral)\n      cout << ir->name_ << \" = .bool.\" << ir->b_val_ << endl;\n    else\n      cout << ir->name_ << \" = .str.\" << ir->str_val_ << endl;\n  } else if (ir->operand_num_ == 1) {\n    string res = \"\";\n    if (ir->op_ != NULL) {\n      res += ir->op_->prefix_ + \" \";\n      res += ir->left_->name_ + \" \";\n      res += ir->op_->middle_ + \" \";\n      res += ir->op_->suffix_ + \" \";\n    }\n    cout << ir->name_ << \" = \" << res << endl;\n  } else if (ir->operand_num_ == 2) {\n    string res = \"\";\n    if (ir->op_ != NULL) {\n      res += ir->op_->prefix_ + \" \";\n      res += ir->left_->name_ + \" \";\n      res += ir->op_->middle_ + \" \";\n      res += ir->right_->name_ + \" \";\n      res += ir->op_->suffix_ + \" \";\n    }\n    cout << ir->name_ << \" = \" << res << endl;\n  }\n\n  return;\n}\n\nProgram *parser(string sql) {\n  yyscan_t scanner;\n  YY_BUFFER_STATE state;\n  Program *p = new Program();\n\n  if (hsql_lex_init(&scanner)) {\n    return NULL;\n  }\n  state = hsql__scan_string(sql.c_str(), scanner);\n\n  int ret = hsql_parse(p, scanner);\n\n  hsql__delete_buffer(state, scanner);\n  hsql_lex_destroy(scanner);\n  if (ret != 0) {\n    p->deep_delete();\n    return NULL;\n  }\n\n  return p;\n}\n\ntypedef unsigned long uint64_t;\n\nuint64_t ducking_hash(const void *key, int len) {\n  const uint64_t m = 0xc6a4a7935bd1e995;\n  const int r = 47;\n  uint64_t h = 0xdeadbeefdeadbeef ^ (len * m);\n\n  const uint64_t *data = (const uint64_t *)key;\n  const uint64_t *end = data + (len / 8);\n\n  while (data != end) {\n    uint64_t k = *data++;\n\n    k *= m;\n    k ^= k >> r;\n    k *= m;\n\n    h ^= k;\n    h *= m;\n  }\n\n  const unsigned char *data2 = (const unsigned char *)data;\n\n  switch (len & 7) {\n    case 7:\n      h ^= uint64_t(data2[6]) << 48;\n    case 6:\n      h ^= uint64_t(data2[5]) << 40;\n    case 5:\n      h ^= uint64_t(data2[4]) << 32;\n    case 4:\n      h ^= uint64_t(data2[3]) << 24;\n    case 3:\n      h ^= uint64_t(data2[2]) << 16;\n    case 2:\n      h ^= uint64_t(data2[1]) << 8;\n    case 1:\n      h ^= uint64_t(data2[0]);\n      h *= m;\n  };\n\n  h ^= h >> r;\n  h *= m;\n  h ^= h >> r;\n\n  return h;\n}\n\nvoid trim_string(string &res) {\n  int count = 0;\n  int idx = 0;\n  bool expect_space = false;\n  for (int i = 0, sz = res.size(); i < sz; i++) {\n    if (res[i] == ' ') {\n      if (expect_space == false) {\n        continue;\n      } else {\n        expect_space = false;\n        res[idx++] = res[i];\n        count++;\n      }\n    } else {\n      expect_space = true;\n      res[idx++] = res[i];\n      count++;\n    }\n  }\n  res.resize(count);\n}\n\nvector<string> get_all_files_in_dir(const char *dir_name, bool absolute) {\n  vector<string> file_list;\n  // check the parameter !\n  if (NULL == dir_name) {\n    cout << \" dir_name is null ! \" << endl;\n    return file_list;\n  }\n\n  // check if dir_name is a valid dir\n  struct stat s;\n  lstat(dir_name, &s);\n  if (!S_ISDIR(s.st_mode)) {\n    cout << \"dir_name is not a valid directory !\" << endl;\n    return file_list;\n  }\n\n  struct dirent *filename;  // return value for readdir()\n  DIR *dir;                 // return value for opendir()\n  dir = opendir(dir_name);\n  if (NULL == dir) {\n    cout << \"Can not open dir \" << dir_name << endl;\n    return file_list;\n  }\n  cout << \"Successfully opened the dir !\" << endl;\n\n  /* read all the files in the dir ~ */\n  while ((filename = readdir(dir)) != NULL) {\n    // get rid of \".\" and \"..\"\n    if (strcmp(filename->d_name, \".\") == 0 ||\n        strcmp(filename->d_name, \"..\") == 0)\n      continue;\n    cout << filename->d_name << endl;\n    if (absolute) {\n      file_list.push_back(string(dir_name) + \"/\" + string(filename->d_name));\n    } else {\n      file_list.push_back(string(filename->d_name));\n    }\n  }\n  closedir(dir);\n  return file_list;\n}\n\nIR *deep_copy(const IR *root) {\n  IR *left = NULL, *right = NULL, *copy_res;\n\n  if (root->left_)\n    left = deep_copy(root->left_);  // do you have a second version for\n                                    // deep_copy that accept only one argument?\n  if (root->right_)\n    right = deep_copy(root->right_);  // no I forget to update here\n\n  if (root->op_ != NULL)\n    copy_res = new IR(\n        root->type_,\n        OP3(root->op_->prefix_, root->op_->middle_, root->op_->suffix_), left,\n        right, root->f_val_, root->str_val_, root->name_, root->mutated_times_);\n  else\n    copy_res = new IR(root->type_, NULL, left, right, root->f_val_,\n                      root->str_val_, root->name_, root->mutated_times_);\n\n  copy_res->id_type_ = root->id_type_;\n\n  return copy_res;\n}\n\nvoid deep_delete(IR *root) {\n  if (root->left_) deep_delete(root->left_);\n  if (root->right_) deep_delete(root->right_);\n\n  if (root->op_) delete root->op_;\n\n  delete root;\n}\n"
  },
  {
    "path": "srcs/utils/config_validate.cc",
    "content": "#include \"config_validate.h\"\n\n#include <sys/stat.h>\n#include <sys/types.h>\n\n#include <iostream>\n#include <string>\n#include <string_view>\n\n#include \"absl/strings/str_format.h\"\n\nnamespace {\nconstexpr std::string_view kSupportedDB[] = {\"sqlite\", \"mysql\", \"postgresql\",\n                                             \"mariadb\"};\n};\n\nnamespace utils {\n\nbool path_exist(std::string_view path) {\n  struct stat sb;\n  return stat(path.data(), &sb) == 0;\n}\nbool validate_db_config(const YAML::Node& config) {\n  if (!config[\"required\"] || !config[\"db\"]) {\n    std::cerr\n        << \"You should set the `required` field and `db` for validity checks.\"\n        << std::endl;\n    return false;\n  }\n\n  if (!config[\"required\"].IsSequence()) {\n    std::cerr << \"The `required` field should be a list.\" << std::endl;\n    return false;\n  }\n\n  if (config[\"should_exist\"]) {\n    if (!config[\"should_exist\"].IsSequence()) {\n      return false;\n    }\n    for (std::size_t i = 0; i < config[\"should_exist\"].size(); i++) {\n      std::string key_should_exist =\n          config[\"should_exist\"].as<YAML::Node>()[i].as<std::string>();\n      if (!config[key_should_exist]) {\n        std::cerr << key_should_exist\n                  << \" is set in `should_exist` but is not a valid key!\\n\";\n      }\n      std::string file_should_exist =\n          config[key_should_exist].as<std::string>();\n      if (!path_exist(file_should_exist)) {\n        std::cerr << file_should_exist << \" doesn't exist!\\n\";\n        return false;\n      }\n    }\n  }\n\n  for (std::size_t i = 0; i < config[\"required\"].size(); i++) {\n    std::string required_key =\n        config[\"required\"].as<YAML::Node>()[i].as<std::string>();\n    if (!config[required_key]) {\n      std::cerr << absl::StrFormat(\"The required field %s is not set.\\n\",\n                                   required_key);\n      return false;\n    }\n  }\n\n  bool supported = false;\n  for (auto db : kSupportedDB) {\n    if (config[\"db\"].as<std::string>() == db) {\n      supported = true;\n      break;\n    }\n  }\n\n  if (!supported) {\n    std::cerr << absl::StrFormat(\"%s is not supported by Squirrel yet.\\n\",\n                                 config[\"db\"].as<std::string>());\n  }\n\n  return supported;\n}\n};  // namespace utils\n"
  },
  {
    "path": "srcs/utils/config_validate.h",
    "content": "#ifndef __UTILS_CONFIG_VALIDATE__\n#define __UTILS_CONFIG_VALIDATE__\n#include <string_view>\n\n#include \"yaml-cpp/yaml.h\"\nnamespace utils {\n\n// Check whether the configuration is Ok.\nbool validate_db_config(const YAML::Node&);\nbool path_exist(std::string_view);\n};  // namespace utils\n\n#endif  //__UTILS_CONFIG_VALIDATE__\n"
  },
  {
    "path": "tests/CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 3.14)\nproject(Squirrel)\n\nset(CMAKE_CXX_STANDARD 17)\n\ninclude(FetchContent)\nFetchContent_Declare(\n  googletest\n  URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip\n)\n# For Windows : Prevent overriding the parent project's compiler/linker settings\nset(gtest_force_shared_crt\n    ON\n    CACHE BOOL \"\" FORCE)\nFetchContent_MakeAvailable(googletest)\n\nenable_testing()\nadd_executable(\n  db_config_test\n  db_config_test.cc\n)\n\ntarget_link_libraries(\n  db_config_test\n  GTest::gtest_main\n  yaml-cpp\n  config_validator\n)\n\ninclude(GoogleTest)\ngtest_discover_tests(db_config_test)\n\n"
  },
  {
    "path": "tests/db_config_test.cc",
    "content": "#include <gtest/gtest.h>\n#include \"yaml-cpp/yaml.h\"\n#include \"config_validate.h\"\n\nTEST(ConfigValidatorTest, DBTypeNotSupported) {\n  const char* kConfig = R\"V0G0N(\n  init_lib: x\n  pragma: x\n  db: sqlite3\n  )V0G0N\";\n  \n  YAML::Node config = YAML::Load(kConfig);\n  EXPECT_FALSE(utils::validate_db_config(config)) << kConfig;\n}\n\nTEST(ConfigValidatorTest, RequiredNotSet) {\n  const char* kConfig = R\"V0G0N(\n  init_lib: x\n  pragma: x\n  db: sqlite\n  )V0G0N\";\n\n  YAML::Node config = YAML::Load(kConfig);\n  EXPECT_FALSE(utils::validate_db_config(config));\n}\n\nTEST(ConfigValidatorTest, EveryRequiredKeywordShouldBeSet) {\n  const char* kConfig = R\"V0G0N(\n  required: [\"init_lib\", \"pragma\", \"db\"]\n  pragma: x\n  db: sqlite\n  )V0G0N\";\n\n  YAML::Node config = YAML::Load(kConfig);\n  EXPECT_FALSE(utils::validate_db_config(config));\n}\n\nTEST(ConfigValidatorTest, MissingFilesInShoulExistIsNotAllowed) {\n  const char* kConfig = R\"V0G0N(\n  required: [\"init_lib\", \"pragma\", \"db\"]\n  should_exist: [\"pragma\"]\n  pragma: \"/file/not/exist\"\n  init_lib: x\n  db: sqlite\n  )V0G0N\";\n\n  YAML::Node config = YAML::Load(kConfig);\n  EXPECT_FALSE(utils::validate_db_config(config));\n}\n\nTEST(ConfigValidatorTest, CorrectlyConfiguredFileReturnTrue) {\n  const char* kConfig = R\"V0G0N(\n  required: [\"init_lib\", \"pragma\", \"db\"]\n  should_exist: [\"pragma\", \"init_lib\"]\n  pragma: \"/bin/sh\"\n  init_lib: \"/bin\"\n  db: sqlite\n  )V0G0N\";\n\n  YAML::Node config = YAML::Load(kConfig);\n  EXPECT_TRUE(utils::validate_db_config(config));\n}\n"
  }
]