[parser] parser: implement Restore for TableToTable (#109)

This commit is contained in:
Tony Han
2018-12-25 19:40:04 +08:00
committed by Ti Chi Robot
parent 433fd2d301
commit 31ac5d0e24
2 changed files with 18 additions and 1 deletions

View File

@ -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.

View File

@ -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"},