func (qre *QueryExecutor) execDDL() (*mproto.QueryResult, error) { ddlPlan := planbuilder.DDLParse(qre.query) if ddlPlan.Action == "" { return nil, NewTabletError(ErrFail, vtrpc.ErrorCode_BAD_INPUT, "DDL is not understood") } txid := qre.qe.txPool.Begin(qre.ctx) defer qre.qe.txPool.SafeCommit(qre.ctx, txid) // Stolen from Execute conn := qre.qe.txPool.Get(txid) defer conn.Recycle() result, err := qre.execSQL(conn, qre.query, false) if err != nil { return nil, err } if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. qre.qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { qre.qe.schemaInfo.CreateOrUpdateTable(qre.ctx, ddlPlan.NewName) } return result, nil }
func (qe *QueryEngine) execDDL(logStats *SQLQueryStats, ddl string) *mproto.QueryResult { ddlPlan := planbuilder.DDLParse(ddl) if ddlPlan.Action == "" { panic(NewTabletError(FAIL, "DDL is not understood")) } // Stolen from Begin conn := getOrPanic(qe.txPool) txid, err := qe.activeTxPool.SafeBegin(conn) if err != nil { conn.Recycle() panic(err) } // Stolen from Commit defer qe.activeTxPool.SafeCommit(txid) // Stolen from Execute conn = qe.activeTxPool.Get(txid) defer conn.Recycle() result, err := qe.executeSql(logStats, conn, ddl, false) if err != nil { panic(NewTabletErrorSql(FAIL, err)) } qe.schemaInfo.DropTable(ddlPlan.TableName) if ddlPlan.Action != sqlparser.AST_DROP { // CREATE, ALTER, RENAME qe.schemaInfo.CreateTable(ddlPlan.NewName) } return result }
func (qre *QueryExecutor) execDDL() (*sqltypes.Result, error) { ddlPlan := planbuilder.DDLParse(qre.query) if ddlPlan.Action == "" { return nil, NewTabletError(vtrpcpb.ErrorCode_BAD_INPUT, "DDL is not understood") } conn, err := qre.qe.txPool.LocalBegin(qre.ctx) if err != nil { return nil, err } defer qre.qe.txPool.LocalCommit(qre.ctx, conn) result, err := qre.execSQL(conn, qre.query, false) if err != nil { return nil, err } if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. qre.qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { qre.qe.schemaInfo.CreateOrUpdateTable(qre.ctx, ddlPlan.NewName) } return result, nil }
// InvalidateForDDL performs schema and rowcache changes for the ddl. func (qe *QueryEngine) InvalidateForDDL(ddlInvalidate *proto.DDLInvalidate) { ddlPlan := planbuilder.DDLParse(ddlInvalidate.DDL) if ddlPlan.Action == "" { panic(NewTabletError(FAIL, "DDL is not understood")) } qe.schemaInfo.DropTable(ddlPlan.TableName) if ddlPlan.Action != sqlparser.AST_DROP { // CREATE, ALTER, RENAME qe.schemaInfo.CreateTable(ddlPlan.NewName) } }
func (rci *RowcacheInvalidator) handleDDLEvent(ddl string) { ddlPlan := planbuilder.DDLParse(ddl) if ddlPlan.Action == "" { panic(NewTabletError(ErrFail, vtrpc.ErrorCode_BAD_INPUT, "DDL is not understood")) } if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. rci.qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { rci.qe.schemaInfo.CreateOrUpdateTable(context.Background(), ddlPlan.NewName) } }
func (rci *RowcacheInvalidator) handleDDLEvent(ddl string) { ddlPlan := planbuilder.DDLParse(ddl) if ddlPlan.Action == "" { panic(NewTabletError(FAIL, "DDL is not understood")) } if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. rci.qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { rci.qe.schemaInfo.CreateOrUpdateTable(ddlPlan.NewName) } }
// InvalidateForDDL performs schema and rowcache changes for the ddl. func (qe *QueryEngine) InvalidateForDDL(ddl string) { ddlPlan := planbuilder.DDLParse(ddl) if ddlPlan.Action == "" { panic(NewTabletError(FAIL, "DDL is not understood")) } if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { qe.schemaInfo.CreateOrUpdateTable(ddlPlan.NewName) } }
func (qre *QueryExecutor) execDDL() *mproto.QueryResult { ddlPlan := planbuilder.DDLParse(qre.query) if ddlPlan.Action == "" { panic(NewTabletError(FAIL, "DDL is not understood")) } txid := qre.qe.txPool.Begin() defer qre.qe.txPool.SafeCommit(txid) // Stolen from Execute conn := qre.qe.txPool.Get(txid) defer conn.Recycle() result := qre.execSQL(conn, qre.query, false) if ddlPlan.TableName != "" && ddlPlan.TableName != ddlPlan.NewName { // It's a drop or rename. qre.qe.schemaInfo.DropTable(ddlPlan.TableName) } if ddlPlan.NewName != "" { qre.qe.schemaInfo.CreateOrUpdateTable(ddlPlan.NewName) } return result }