Merge pull request #152 from github/validate-no-triggers
testing for trigger existence
This commit is contained in:
commit
5001e7303f
2
build.sh
2
build.sh
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
RELEASE_VERSION="1.0.8"
|
RELEASE_VERSION="1.0.9"
|
||||||
|
|
||||||
buildpath=/tmp/gh-ost
|
buildpath=/tmp/gh-ost
|
||||||
target=gh-ost
|
target=gh-ost
|
||||||
|
@ -69,6 +69,9 @@ func (this *Inspector) ValidateOriginalTable() (err error) {
|
|||||||
if err := this.validateTableForeignKeys(); err != nil {
|
if err := this.validateTableForeignKeys(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := this.validateTableTriggers(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err := this.estimateTableRowsViaExplain(); err != nil {
|
if err := this.estimateTableRowsViaExplain(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -342,6 +345,34 @@ func (this *Inspector) validateTableForeignKeys() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validateTableTriggers makes sure no triggers exist on the migrated table
|
||||||
|
func (this *Inspector) validateTableTriggers() error {
|
||||||
|
query := `
|
||||||
|
SELECT COUNT(*) AS num_triggers
|
||||||
|
FROM INFORMATION_SCHEMA.TRIGGERS
|
||||||
|
WHERE
|
||||||
|
TRIGGER_SCHEMA=?
|
||||||
|
AND EVENT_OBJECT_TABLE=?
|
||||||
|
`
|
||||||
|
numTriggers := 0
|
||||||
|
err := sqlutils.QueryRowsMap(this.db, query, func(rowMap sqlutils.RowMap) error {
|
||||||
|
numTriggers = rowMap.GetInt("num_triggers")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
this.migrationContext.DatabaseName,
|
||||||
|
this.migrationContext.OriginalTableName,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if numTriggers > 0 {
|
||||||
|
return log.Errorf("Found triggers on %s.%s. Triggers are not supported at this time. Bailing out", sql.EscapeName(this.migrationContext.DatabaseName), sql.EscapeName(this.migrationContext.OriginalTableName))
|
||||||
|
}
|
||||||
|
log.Debugf("Validated no triggers exist on table")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// estimateTableRowsViaExplain estimates number of rows on original table
|
// estimateTableRowsViaExplain estimates number of rows on original table
|
||||||
func (this *Inspector) estimateTableRowsViaExplain() error {
|
func (this *Inspector) estimateTableRowsViaExplain() error {
|
||||||
query := fmt.Sprintf(`explain select /* gh-ost */ * from %s.%s where 1=1`, sql.EscapeName(this.migrationContext.DatabaseName), sql.EscapeName(this.migrationContext.OriginalTableName))
|
query := fmt.Sprintf(`explain select /* gh-ost */ * from %s.%s where 1=1`, sql.EscapeName(this.migrationContext.DatabaseName), sql.EscapeName(this.migrationContext.OriginalTableName))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user