[parser] parser: implement Restore for TableToTable (#109)
This commit is contained in:
@ -714,7 +714,14 @@ type TableToTable struct {
|
||||
|
||||
// Restore implements Node interface.
|
||||
func (n *TableToTable) Restore(ctx *RestoreCtx) error {
|
||||
return errors.New("Not implemented")
|
||||
if err := n.OldTable.Restore(ctx); err != nil {
|
||||
return errors.Annotate(err, "An error occurred while restore TableToTable.OldTable")
|
||||
}
|
||||
ctx.WriteKeyWord(" TO ")
|
||||
if err := n.NewTable.Restore(ctx); err != nil {
|
||||
return errors.Annotate(err, "An error occurred while restore TableToTable.NewTable")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Accept implements Node Accept interface.
|
||||
|
||||
@ -118,6 +118,16 @@ func (ts *testDDLSuite) TestDDLIndexOption(c *C) {
|
||||
RunNodeRestoreTest(c, testCases, "CREATE INDEX idx ON t (a) %s", extractNodeFunc)
|
||||
}
|
||||
|
||||
func (ts *testDDLSuite) TestTableToTableRestore(c *C) {
|
||||
testCases := []NodeRestoreTestCase{
|
||||
{"t1 to t2", "`t1` TO `t2`"},
|
||||
}
|
||||
extractNodeFunc := func(node Node) Node {
|
||||
return node.(*RenameTableStmt).TableToTables[0]
|
||||
}
|
||||
RunNodeRestoreTest(c, testCases, "rename table %s", extractNodeFunc)
|
||||
}
|
||||
|
||||
func (ts *testDDLSuite) TestDDLReferenceDefRestore(c *C) {
|
||||
testCases := []NodeRestoreTestCase{
|
||||
{"REFERENCES parent(id) ON DELETE CASCADE ON UPDATE RESTRICT", "REFERENCES `parent`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT"},
|
||||
|
||||
Reference in New Issue
Block a user