index SQL
SqlBase.g4
CREATE SINDEX (IF NOT EXISTS)? IDENTIFIER ON
tableIdentifier indexCols (USING indexType)?
partitionSpec? #oapCreateIndex
oapCreateIndex
SparkSqlParser.scala
/**
* Create an index. Create a [[CreateIndexCommand]] command.
*
* {{{
* CREATE OINDEX [IF NOT EXISTS] indexName ON tableName (col1 [ASC | DESC], col2, ...)
* [USING (BTREE | BITMAP)] [PARTITION (partcol1=val1, partcol2=val2 ...)]
* }}}
*/
override def visitOapCreateIndex(ctx: OapCreateIndexContext): LogicalPlan =
withOrigin(ctx) {
CreateIndexCommand(
ctx.IDENTIFIER.getText,
visitTableIdentifier(ctx.tableIdentifier()),
visitIndexCols(ctx.indexCols),
ctx.EXISTS != null, visitIndexType(ctx.indexType),
Option(ctx.partitionSpec).map(visitNonOptionalPartitionSpec))
}
CreateIndexCommand
indexPlans.scala
case class CreateIndexCommand(
indexName: String,
table: TableIdentifier,
indexColumns: Array[IndexColumn],
allowExists: Boolean,
indexType: OapIndexType,
partitionSpec: Option[TablePartitionSpec]) extends RunnableCommand with Logging {