featurebase/sql3/planner/compilecreateview.go
Travis Turner a9b3fd2c4d Database isolation: Balancer (#2407)
* Database isolation: Balancer

Remove naive Balancer

remove debugging lines

Thread dax.Transaction through Controller

Change role to roleType

Swap out Balancer interface with new one

Standardize InvalidTransaction error

Add some interface comments

* Remove type.Worker; replace with type.Address

* Remove database validate from Queryer

This is already being handled in the `CreateTable()` method. Prior
to doing that validation, we were getting a panic, but that's no longer
the case.

* Remove dax.TableQualifier; replace with dax.QualifiedDatabaseID

* Update IDK test to create database

(cherry picked from commit d971cfc269)
2023-01-19 22:10:08 +00:00

64 lines
1.7 KiB
Go

// Copyright 2022 Molecula Corp. All rights reserved.
package planner
import (
"github.com/featurebasedb/featurebase/v3/sql3/parser"
"github.com/featurebasedb/featurebase/v3/sql3/planner/types"
)
// compileCreateViewStatement compiles a parser.CreateViewStatement AST into a PlanOperator
func (p *ExecutionPlanner) compileCreateViewStatement(stmt *parser.CreateViewStatement) (types.PlanOperator, error) {
viewName := parser.IdentName(stmt.Name)
view := &viewSystemObject{
name: viewName,
}
// compile select
_, err := p.compileSelectStatement(stmt.Select, true)
if err != nil {
return nil, err
}
view.statement = stmt.Select.String()
query := NewPlanOpQuery(p, NewPlanOpCreateView(p, stmt.IfNotExists.IsValid(), view), p.sql)
return query, nil
}
// compileAlterViewStatement compiles a parser.AlterViewStatement AST into a PlanOperator
func (p *ExecutionPlanner) compileAlterViewStatement(stmt *parser.AlterViewStatement) (types.PlanOperator, error) {
viewName := parser.IdentName(stmt.Name)
view := &viewSystemObject{
name: viewName,
}
// compile select
_, err := p.compileSelectStatement(stmt.Select, true)
if err != nil {
return nil, err
}
view.statement = stmt.Select.String()
query := NewPlanOpQuery(p, NewPlanOpAlterView(p, view), p.sql)
return query, nil
}
func (p *ExecutionPlanner) analyzeCreateViewStatement(stmt *parser.CreateViewStatement) error {
//analyze the select
_, err := p.analyzeSelectStatement(stmt.Select)
if err != nil {
return err
}
return nil
}
func (p *ExecutionPlanner) analyzeAlterViewStatement(stmt *parser.AlterViewStatement) error {
//analyze the select
_, err := p.analyzeSelectStatement(stmt.Select)
if err != nil {
return err
}
return nil
}