diff --git a/sql3/parser/ast.go b/sql3/parser/ast.go index 149b1b760..586fc6ca4 100644 --- a/sql3/parser/ast.go +++ b/sql3/parser/ast.go @@ -1593,6 +1593,10 @@ func IdentName(ident *Ident) string { return ident.Name } +func CaseNeutralIdentName(ident *Ident) string { + return strings.ToLower(IdentName(ident)) +} + type Variable struct { NamePos Pos // variable position Name string // variable name diff --git a/sql3/planner/compilecreatetable.go b/sql3/planner/compilecreatetable.go index 2cbb77480..fbe8ac477 100644 --- a/sql3/planner/compilecreatetable.go +++ b/sql3/planner/compilecreatetable.go @@ -25,7 +25,7 @@ type createTableField struct { // compileCreateTableStatement compiles a CREATE TABLE statement into a // PlanOperator. func (p *ExecutionPlanner) compileCreateTableStatement(stmt *parser.CreateTableStatement) (_ types.PlanOperator, err error) { - tableName := parser.IdentName(stmt.Name) + tableName := parser.CaseNeutralIdentName(stmt.Name) failIfExists := !stmt.IfNotExists.IsValid() // apply table options @@ -50,7 +50,7 @@ func (p *ExecutionPlanner) compileCreateTableStatement(stmt *parser.CreateTableS var columns = []*createTableField{} for _, col := range stmt.Columns { - columnName := parser.IdentName(col.Name) + columnName := parser.CaseNeutralIdentName(col.Name) typeName := parser.IdentName(col.Type.Name) if strings.ToLower(columnName) == "_id" { @@ -77,7 +77,7 @@ func (p *ExecutionPlanner) compileCreateTableStatement(stmt *parser.CreateTableS // compiles a column def func (p *ExecutionPlanner) compileColumn(col *parser.ColumnDefinition) (*createTableField, error) { var err error - columnName := parser.IdentName(col.Name) + columnName := parser.CaseNeutralIdentName(col.Name) typeName := parser.IdentName(col.Type.Name) column := &createTableField{ diff --git a/sql3/planner/compiledroptable.go b/sql3/planner/compiledroptable.go index 96b9f7ee1..6879be2e5 100644 --- a/sql3/planner/compiledroptable.go +++ b/sql3/planner/compiledroptable.go @@ -15,7 +15,7 @@ import ( // compileDropTableStatement compiles a DROP TABLE statement into a // PlanOperator. func (p *ExecutionPlanner) compileDropTableStatement(stmt *parser.DropTableStatement) (_ types.PlanOperator, err error) { - tableName := parser.IdentName(stmt.Name) + tableName := parser.CaseNeutralIdentName(stmt.Name) tname := dax.TableName(tableName) tbl, err := p.schemaAPI.TableByName(context.Background(), tname) if err != nil {