# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http:# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

{
  # Generated parser implementation class package and name
  package: "org.apache.drill.exec.planner.sql.parser.impl",
  class: "DrillParserImpl",

  # List of import statements.
  imports: [
    "org.apache.drill.exec.planner.sql.parser.*",
    "org.apache.calcite.util.*",
    "java.util.*"
  ]

  # List of keywords.
  keywords: [
    "DATABASES",
    "REPLACE",
    "SCHEMAS",
    "SHOW",
    "TABLES",
    "USE",
    "FILES"
  ]

  # List of methods for parsing custom SQL statements.
  statementParserMethods: [
    "SqlShowTables()",
    "SqlShowSchemas()",
    "SqlDescribeTable()",
    "SqlUseSchema()",
    "SqlCreateOrReplaceView()",
    "SqlDropView()",
    "SqlShowFiles()",
    "SqlCreateTable()"
  ]

  # List of methods for parsing custom literals.
  # Example: ParseJsonLiteral().
  literalParserMethods: [
  ]

  # List of methods for parsing custom data types.
  dataTypeParserMethods: [
  ]

  # List of files in @includes directory that have parser method
  # implementations for custom SQL statements, literals or types
  # given as part of "statementParserMethods", "literalParserMethods" or
  # "dataTypeParserMethods".
  implementationFiles: [
    "parserImpls.ftl"
  ]
  
  includeCompoundIdentifier: false,

  identifierMaxLength: 1024

}
