Cleanup whitespace in SQL query text
This commit is contained in:
parent
7320fda848
commit
1e1e42d1f1
|
@ -109,7 +109,7 @@ func (this *Applier) InitDBConnections() (err error) {
|
|||
|
||||
// validateAndReadTimeZone potentially reads server time-zone
|
||||
func (this *Applier) validateAndReadTimeZone() error {
|
||||
query := `select @@global.time_zone`
|
||||
query := `select /* gh-ost */ @@global.time_zone`
|
||||
if err := this.db.QueryRow(query).Scan(&this.migrationContext.ApplierTimeZone); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -393,14 +393,13 @@ func (this *Applier) WriteChangelog(hint, value string) (string, error) {
|
|||
explicitId = 3
|
||||
}
|
||||
query := fmt.Sprintf(`
|
||||
insert /* gh-ost */ into %s.%s
|
||||
(id, hint, value)
|
||||
values
|
||||
(NULLIF(?, 0), ?, ?)
|
||||
on duplicate key update
|
||||
last_update=NOW(),
|
||||
value=VALUES(value)
|
||||
`,
|
||||
insert /* gh-ost */ into %s.%s
|
||||
(id, hint, value)
|
||||
values
|
||||
(NULLIF(?, 0), ?, ?)
|
||||
on duplicate key update
|
||||
last_update=NOW(),
|
||||
value=VALUES(value)`,
|
||||
sql.EscapeName(this.migrationContext.DatabaseName),
|
||||
sql.EscapeName(this.migrationContext.GetChangelogTableName()),
|
||||
)
|
||||
|
@ -855,7 +854,7 @@ func (this *Applier) GetSessionLockName(sessionId int64) string {
|
|||
// ExpectUsedLock expects the special hint voluntary lock to exist on given session
|
||||
func (this *Applier) ExpectUsedLock(sessionId int64) error {
|
||||
var result int64
|
||||
query := `select is_used_lock(?)`
|
||||
query := `select /* gh-ost */ is_used_lock(?)`
|
||||
lockName := this.GetSessionLockName(sessionId)
|
||||
this.migrationContext.Log.Infof("Checking session lock: %s", lockName)
|
||||
if err := this.db.QueryRow(query, lockName).Scan(&result); err != nil || result != sessionId {
|
||||
|
@ -868,14 +867,13 @@ func (this *Applier) ExpectUsedLock(sessionId int64) error {
|
|||
func (this *Applier) ExpectProcess(sessionId int64, stateHint, infoHint string) error {
|
||||
found := false
|
||||
query := `
|
||||
select id
|
||||
select /* gh-ost */ id
|
||||
from information_schema.processlist
|
||||
where
|
||||
id != connection_id()
|
||||
and ? in (0, id)
|
||||
and state like concat('%', ?, '%')
|
||||
and info like concat('%', ?, '%')
|
||||
`
|
||||
where
|
||||
id != connection_id()
|
||||
and ? in (0, id)
|
||||
and state like concat('%', ?, '%')
|
||||
and info like concat('%', ?, '%')`
|
||||
err := sqlutils.QueryRowsMap(this.db, query, func(m sqlutils.RowMap) error {
|
||||
found = true
|
||||
return nil
|
||||
|
@ -913,10 +911,10 @@ func (this *Applier) CreateAtomicCutOverSentryTable() error {
|
|||
}
|
||||
tableName := this.migrationContext.GetOldTableName()
|
||||
|
||||
query := fmt.Sprintf(`create /* gh-ost */ table %s.%s (
|
||||
query := fmt.Sprintf(`
|
||||
create /* gh-ost */ table %s.%s (
|
||||
id int auto_increment primary key
|
||||
) engine=%s comment='%s'
|
||||
`,
|
||||
) engine=%s comment='%s'`,
|
||||
sql.EscapeName(this.migrationContext.DatabaseName),
|
||||
sql.EscapeName(tableName),
|
||||
this.migrationContext.TableEngine,
|
||||
|
@ -949,14 +947,14 @@ func (this *Applier) AtomicCutOverMagicLock(sessionIdChan chan int64, tableLocke
|
|||
}()
|
||||
|
||||
var sessionId int64
|
||||
if err := tx.QueryRow(`select connection_id()`).Scan(&sessionId); err != nil {
|
||||
if err := tx.QueryRow(`select /* gh-ost */ connection_id()`).Scan(&sessionId); err != nil {
|
||||
tableLocked <- err
|
||||
return err
|
||||
}
|
||||
sessionIdChan <- sessionId
|
||||
|
||||
lockResult := 0
|
||||
query := `select get_lock(?, 0)`
|
||||
query := `select /* gh-ost */ get_lock(?, 0)`
|
||||
lockName := this.GetSessionLockName(sessionId)
|
||||
this.migrationContext.Log.Infof("Grabbing voluntary lock: %s", lockName)
|
||||
if err := tx.QueryRow(query, lockName).Scan(&lockResult); err != nil || lockResult != 1 {
|
||||
|
@ -967,7 +965,7 @@ func (this *Applier) AtomicCutOverMagicLock(sessionIdChan chan int64, tableLocke
|
|||
|
||||
tableLockTimeoutSeconds := this.migrationContext.CutOverLockTimeoutSeconds * 2
|
||||
this.migrationContext.Log.Infof("Setting LOCK timeout as %d seconds", tableLockTimeoutSeconds)
|
||||
query = fmt.Sprintf(`set session lock_wait_timeout:=%d`, tableLockTimeoutSeconds)
|
||||
query = fmt.Sprintf(`set /* gh-ost */ session lock_wait_timeout:=%d`, tableLockTimeoutSeconds)
|
||||
if _, err := tx.Exec(query); err != nil {
|
||||
tableLocked <- err
|
||||
return err
|
||||
|
@ -1028,7 +1026,7 @@ func (this *Applier) AtomicCutOverMagicLock(sessionIdChan chan int64, tableLocke
|
|||
sql.EscapeName(this.migrationContext.DatabaseName),
|
||||
sql.EscapeName(this.migrationContext.GetOldTableName()),
|
||||
)
|
||||
query = `unlock tables`
|
||||
query = `unlock /* gh-ost */ tables`
|
||||
if _, err := tx.Exec(query); err != nil {
|
||||
tableUnlocked <- err
|
||||
return this.migrationContext.Log.Errore(err)
|
||||
|
@ -1050,13 +1048,13 @@ func (this *Applier) AtomicCutoverRename(sessionIdChan chan int64, tablesRenamed
|
|||
tablesRenamed <- fmt.Errorf("Unexpected error in AtomicCutoverRename(), injected to release blocking channel reads")
|
||||
}()
|
||||
var sessionId int64
|
||||
if err := tx.QueryRow(`select connection_id()`).Scan(&sessionId); err != nil {
|
||||
if err := tx.QueryRow(`select /* gh-ost */ connection_id()`).Scan(&sessionId); err != nil {
|
||||
return err
|
||||
}
|
||||
sessionIdChan <- sessionId
|
||||
|
||||
this.migrationContext.Log.Infof("Setting RENAME timeout as %d seconds", this.migrationContext.CutOverLockTimeoutSeconds)
|
||||
query := fmt.Sprintf(`set session lock_wait_timeout:=%d`, this.migrationContext.CutOverLockTimeoutSeconds)
|
||||
query := fmt.Sprintf(`set /* gh-ost */ session lock_wait_timeout:=%d`, this.migrationContext.CutOverLockTimeoutSeconds)
|
||||
if _, err := tx.Exec(query); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -1082,7 +1080,7 @@ func (this *Applier) AtomicCutoverRename(sessionIdChan chan int64, tablesRenamed
|
|||
}
|
||||
|
||||
func (this *Applier) ShowStatusVariable(variableName string) (result int64, err error) {
|
||||
query := fmt.Sprintf(`show global status like '%s'`, variableName)
|
||||
query := fmt.Sprintf(`show /* gh-ost */ global status like '%s'`, variableName)
|
||||
if err := this.db.QueryRow(query).Scan(&variableName, &result); err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
@ -1152,7 +1150,7 @@ func (this *Applier) ApplyDMLEventQueries(dmlEvents [](*binlog.BinlogDMLEvent))
|
|||
return err
|
||||
}
|
||||
|
||||
sessionQuery := "SET SESSION time_zone = '+00:00'"
|
||||
sessionQuery := "SET /* gh-ost */ SESSION time_zone = '+00:00'"
|
||||
sessionQuery = fmt.Sprintf("%s, %s", sessionQuery, this.generateSqlModeQuery())
|
||||
|
||||
if _, err := tx.Exec(sessionQuery); err != nil {
|
||||
|
|
|
@ -338,7 +338,7 @@ func (this *Inspector) applyBinlogFormat() error {
|
|||
|
||||
// validateBinlogs checks that binary log configuration is good to go
|
||||
func (this *Inspector) validateBinlogs() error {
|
||||
query := `select @@global.log_bin, @@global.binlog_format`
|
||||
query := `select /* gh-ost */ @@global.log_bin, @@global.binlog_format`
|
||||
var hasBinaryLogs bool
|
||||
if err := this.db.QueryRow(query).Scan(&hasBinaryLogs, &this.migrationContext.OriginalBinlogFormat); err != nil {
|
||||
return err
|
||||
|
@ -364,7 +364,7 @@ func (this *Inspector) validateBinlogs() error {
|
|||
}
|
||||
this.migrationContext.Log.Infof("%s has %s binlog_format. I will change it to ROW, and will NOT change it back, even in the event of failure.", this.connectionConfig.Key.String(), this.migrationContext.OriginalBinlogFormat)
|
||||
}
|
||||
query = `select @@global.binlog_row_image`
|
||||
query = `select /* gh-ost */ @@global.binlog_row_image`
|
||||
if err := this.db.QueryRow(query).Scan(&this.migrationContext.OriginalBinlogRowImage); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -379,7 +379,7 @@ func (this *Inspector) validateBinlogs() error {
|
|||
|
||||
// validateLogSlaveUpdates checks that binary log log_slave_updates is set. This test is not required when migrating on replica or when migrating directly on master
|
||||
func (this *Inspector) validateLogSlaveUpdates() error {
|
||||
query := `select @@global.log_slave_updates`
|
||||
query := `select /* gh-ost */ @@global.log_slave_updates`
|
||||
var logSlaveUpdates bool
|
||||
if err := this.db.QueryRow(query).Scan(&logSlaveUpdates); err != nil {
|
||||
return err
|
||||
|
@ -441,16 +441,15 @@ func (this *Inspector) validateTableForeignKeys(allowChildForeignKeys bool) erro
|
|||
return nil
|
||||
}
|
||||
query := `
|
||||
SELECT
|
||||
SELECT /* gh-ost */
|
||||
SUM(REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_SCHEMA=? AND TABLE_NAME=?) as num_child_side_fk,
|
||||
SUM(REFERENCED_TABLE_NAME IS NOT NULL AND REFERENCED_TABLE_SCHEMA=? AND REFERENCED_TABLE_NAME=?) as num_parent_side_fk
|
||||
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
||||
WHERE
|
||||
REFERENCED_TABLE_NAME IS NOT NULL
|
||||
AND ((TABLE_SCHEMA=? AND TABLE_NAME=?)
|
||||
OR (REFERENCED_TABLE_SCHEMA=? AND REFERENCED_TABLE_NAME=?)
|
||||
)
|
||||
`
|
||||
REFERENCED_TABLE_NAME IS NOT NULL
|
||||
AND ((TABLE_SCHEMA=? AND TABLE_NAME=?)
|
||||
OR (REFERENCED_TABLE_SCHEMA=? AND REFERENCED_TABLE_NAME=?)
|
||||
)`
|
||||
numParentForeignKeys := 0
|
||||
numChildForeignKeys := 0
|
||||
err := sqlutils.QueryRowsMap(this.db, query, func(m sqlutils.RowMap) error {
|
||||
|
@ -487,12 +486,11 @@ func (this *Inspector) validateTableForeignKeys(allowChildForeignKeys bool) erro
|
|||
// validateTableTriggers makes sure no triggers exist on the migrated table
|
||||
func (this *Inspector) validateTableTriggers() error {
|
||||
query := `
|
||||
SELECT COUNT(*) AS num_triggers
|
||||
SELECT /* gh-ost */ COUNT(*) AS num_triggers
|
||||
FROM INFORMATION_SCHEMA.TRIGGERS
|
||||
WHERE
|
||||
TRIGGER_SCHEMA=?
|
||||
AND EVENT_OBJECT_TABLE=?
|
||||
`
|
||||
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")
|
||||
|
@ -577,14 +575,12 @@ func (this *Inspector) CountTableRows(ctx context.Context) error {
|
|||
// applyColumnTypes
|
||||
func (this *Inspector) applyColumnTypes(databaseName, tableName string, columnsLists ...*sql.ColumnList) error {
|
||||
query := `
|
||||
select
|
||||
*
|
||||
from
|
||||
information_schema.columns
|
||||
where
|
||||
table_schema=?
|
||||
and table_name=?
|
||||
`
|
||||
select /* gh-ost */ *
|
||||
from
|
||||
information_schema.columns
|
||||
where
|
||||
table_schema=?
|
||||
and table_name=?`
|
||||
err := sqlutils.QueryRowsMap(this.db, query, func(m sqlutils.RowMap) error {
|
||||
columnName := m.GetString("COLUMN_NAME")
|
||||
columnType := m.GetString("COLUMN_TYPE")
|
||||
|
@ -633,14 +629,13 @@ func (this *Inspector) applyColumnTypes(databaseName, tableName string, columnsL
|
|||
// getAutoIncrementValue get's the original table's AUTO_INCREMENT value, if exists (0 value if not exists)
|
||||
func (this *Inspector) getAutoIncrementValue(tableName string) (autoIncrement uint64, err error) {
|
||||
query := `
|
||||
SELECT
|
||||
SELECT /* gh-ost */
|
||||
AUTO_INCREMENT
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE
|
||||
TABLES.TABLE_SCHEMA = ?
|
||||
AND TABLES.TABLE_NAME = ?
|
||||
AND AUTO_INCREMENT IS NOT NULL
|
||||
`
|
||||
AND AUTO_INCREMENT IS NOT NULL`
|
||||
err = sqlutils.QueryRowsMap(this.db, query, func(m sqlutils.RowMap) error {
|
||||
autoIncrement = m.GetUint64("AUTO_INCREMENT")
|
||||
return nil
|
||||
|
@ -652,62 +647,61 @@ func (this *Inspector) getAutoIncrementValue(tableName string) (autoIncrement ui
|
|||
// candidate for chunking
|
||||
func (this *Inspector) getCandidateUniqueKeys(tableName string) (uniqueKeys [](*sql.UniqueKey), err error) {
|
||||
query := `
|
||||
SELECT
|
||||
COLUMNS.TABLE_SCHEMA,
|
||||
COLUMNS.TABLE_NAME,
|
||||
COLUMNS.COLUMN_NAME,
|
||||
UNIQUES.INDEX_NAME,
|
||||
UNIQUES.COLUMN_NAMES,
|
||||
UNIQUES.COUNT_COLUMN_IN_INDEX,
|
||||
COLUMNS.DATA_TYPE,
|
||||
COLUMNS.CHARACTER_SET_NAME,
|
||||
LOCATE('auto_increment', EXTRA) > 0 as is_auto_increment,
|
||||
has_nullable
|
||||
FROM INFORMATION_SCHEMA.COLUMNS INNER JOIN (
|
||||
SELECT
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
INDEX_NAME,
|
||||
COUNT(*) AS COUNT_COLUMN_IN_INDEX,
|
||||
GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COLUMN_NAMES,
|
||||
SUBSTRING_INDEX(GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC), ',', 1) AS FIRST_COLUMN_NAME,
|
||||
SUM(NULLABLE='YES') > 0 AS has_nullable
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE
|
||||
NON_UNIQUE=0
|
||||
AND TABLE_SCHEMA = ?
|
||||
AND TABLE_NAME = ?
|
||||
GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME
|
||||
) AS UNIQUES
|
||||
ON (
|
||||
COLUMNS.COLUMN_NAME = UNIQUES.FIRST_COLUMN_NAME
|
||||
)
|
||||
WHERE
|
||||
COLUMNS.TABLE_SCHEMA = ?
|
||||
AND COLUMNS.TABLE_NAME = ?
|
||||
ORDER BY
|
||||
COLUMNS.TABLE_SCHEMA, COLUMNS.TABLE_NAME,
|
||||
CASE UNIQUES.INDEX_NAME
|
||||
WHEN 'PRIMARY' THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE has_nullable
|
||||
WHEN 0 THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE IFNULL(CHARACTER_SET_NAME, '')
|
||||
WHEN '' THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE DATA_TYPE
|
||||
WHEN 'tinyint' THEN 0
|
||||
WHEN 'smallint' THEN 1
|
||||
WHEN 'int' THEN 2
|
||||
WHEN 'bigint' THEN 3
|
||||
ELSE 100
|
||||
END,
|
||||
COUNT_COLUMN_IN_INDEX
|
||||
`
|
||||
SELECT /* gh-ost */
|
||||
COLUMNS.TABLE_SCHEMA,
|
||||
COLUMNS.TABLE_NAME,
|
||||
COLUMNS.COLUMN_NAME,
|
||||
UNIQUES.INDEX_NAME,
|
||||
UNIQUES.COLUMN_NAMES,
|
||||
UNIQUES.COUNT_COLUMN_IN_INDEX,
|
||||
COLUMNS.DATA_TYPE,
|
||||
COLUMNS.CHARACTER_SET_NAME,
|
||||
LOCATE('auto_increment', EXTRA) > 0 as is_auto_increment,
|
||||
has_nullable
|
||||
FROM INFORMATION_SCHEMA.COLUMNS INNER JOIN (
|
||||
SELECT
|
||||
TABLE_SCHEMA,
|
||||
TABLE_NAME,
|
||||
INDEX_NAME,
|
||||
COUNT(*) AS COUNT_COLUMN_IN_INDEX,
|
||||
GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COLUMN_NAMES,
|
||||
SUBSTRING_INDEX(GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC), ',', 1) AS FIRST_COLUMN_NAME,
|
||||
SUM(NULLABLE='YES') > 0 AS has_nullable
|
||||
FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE
|
||||
NON_UNIQUE=0
|
||||
AND TABLE_SCHEMA = ?
|
||||
AND TABLE_NAME = ?
|
||||
GROUP BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME
|
||||
) AS UNIQUES
|
||||
ON (
|
||||
COLUMNS.COLUMN_NAME = UNIQUES.FIRST_COLUMN_NAME
|
||||
)
|
||||
WHERE
|
||||
COLUMNS.TABLE_SCHEMA = ?
|
||||
AND COLUMNS.TABLE_NAME = ?
|
||||
ORDER BY
|
||||
COLUMNS.TABLE_SCHEMA, COLUMNS.TABLE_NAME,
|
||||
CASE UNIQUES.INDEX_NAME
|
||||
WHEN 'PRIMARY' THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE has_nullable
|
||||
WHEN 0 THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE IFNULL(CHARACTER_SET_NAME, '')
|
||||
WHEN '' THEN 0
|
||||
ELSE 1
|
||||
END,
|
||||
CASE DATA_TYPE
|
||||
WHEN 'tinyint' THEN 0
|
||||
WHEN 'smallint' THEN 1
|
||||
WHEN 'int' THEN 2
|
||||
WHEN 'bigint' THEN 3
|
||||
ELSE 100
|
||||
END,
|
||||
COUNT_COLUMN_IN_INDEX`
|
||||
err = sqlutils.QueryRowsMap(this.db, query, func(m sqlutils.RowMap) error {
|
||||
uniqueKey := &sql.UniqueKey{
|
||||
Name: m.GetString("INDEX_NAME"),
|
||||
|
@ -797,8 +791,9 @@ func (this *Inspector) showCreateTable(tableName string) (createTableStatement s
|
|||
// readChangelogState reads changelog hints
|
||||
func (this *Inspector) readChangelogState(hint string) (string, error) {
|
||||
query := fmt.Sprintf(`
|
||||
select hint, value from %s.%s where hint = ? and id <= 255
|
||||
`,
|
||||
select /* gh-ost */ hint, value from %s.%s
|
||||
where
|
||||
hint = ? and id <= 255`,
|
||||
sql.EscapeName(this.migrationContext.DatabaseName),
|
||||
sql.EscapeName(this.migrationContext.GetChangelogTableName()),
|
||||
)
|
||||
|
|
|
@ -222,11 +222,12 @@ func BuildRangeInsertQuery(databaseName, originalTableName, ghostTableName strin
|
|||
transactionalClause = "lock in share mode"
|
||||
}
|
||||
result = fmt.Sprintf(`
|
||||
insert /* gh-ost %s.%s */ ignore into %s.%s (%s)
|
||||
(select %s from %s.%s force index (%s)
|
||||
where (%s and %s) %s
|
||||
)
|
||||
`, databaseName, originalTableName, databaseName, ghostTableName, mappedSharedColumnsListing,
|
||||
insert /* gh-ost %s.%s */ ignore into %s.%s (%s) (
|
||||
select %s from %s.%s
|
||||
force index (%s)
|
||||
where (%s and %s) %s
|
||||
)`,
|
||||
databaseName, originalTableName, databaseName, ghostTableName, mappedSharedColumnsListing,
|
||||
sharedColumnsListing, databaseName, originalTableName, uniqueKey,
|
||||
rangeStartComparison, rangeEndComparison, transactionalClause)
|
||||
return result, explodedArgs, nil
|
||||
|
@ -274,16 +275,16 @@ func BuildUniqueKeyRangeEndPreparedQueryViaOffset(databaseName, tableName string
|
|||
}
|
||||
}
|
||||
result = fmt.Sprintf(`
|
||||
select /* gh-ost %s.%s %s */
|
||||
%s
|
||||
from
|
||||
%s.%s
|
||||
where %s and %s
|
||||
order by
|
||||
%s
|
||||
limit 1
|
||||
offset %d
|
||||
`, databaseName, tableName, hint,
|
||||
select /* gh-ost %s.%s %s */
|
||||
%s
|
||||
from
|
||||
%s.%s
|
||||
where %s and %s
|
||||
order by
|
||||
%s
|
||||
limit 1
|
||||
offset %d`,
|
||||
databaseName, tableName, hint,
|
||||
strings.Join(uniqueKeyColumnNames, ", "),
|
||||
databaseName, tableName,
|
||||
rangeStartComparison, rangeEndComparison,
|
||||
|
@ -329,21 +330,19 @@ func BuildUniqueKeyRangeEndPreparedQueryViaTemptable(databaseName, tableName str
|
|||
}
|
||||
}
|
||||
result = fmt.Sprintf(`
|
||||
select /* gh-ost %s.%s %s */ %s
|
||||
from (
|
||||
select
|
||||
%s
|
||||
from
|
||||
%s.%s
|
||||
where %s and %s
|
||||
order by
|
||||
%s
|
||||
limit %d
|
||||
) select_osc_chunk
|
||||
select /* gh-ost %s.%s %s */ %s from (
|
||||
select
|
||||
%s
|
||||
from
|
||||
%s.%s
|
||||
where %s and %s
|
||||
order by
|
||||
%s
|
||||
limit 1
|
||||
`, databaseName, tableName, hint, strings.Join(uniqueKeyColumnNames, ", "),
|
||||
limit %d) select_osc_chunk
|
||||
order by
|
||||
%s
|
||||
limit 1`,
|
||||
databaseName, tableName, hint, strings.Join(uniqueKeyColumnNames, ", "),
|
||||
strings.Join(uniqueKeyColumnNames, ", "), databaseName, tableName,
|
||||
rangeStartComparison, rangeEndComparison,
|
||||
strings.Join(uniqueKeyColumnAscending, ", "), chunkSize,
|
||||
|
@ -378,13 +377,12 @@ func buildUniqueKeyMinMaxValuesPreparedQuery(databaseName, tableName string, uni
|
|||
}
|
||||
}
|
||||
query := fmt.Sprintf(`
|
||||
select /* gh-ost %s.%s */ %s
|
||||
from
|
||||
%s.%s
|
||||
order by
|
||||
%s
|
||||
limit 1
|
||||
`, databaseName, tableName, strings.Join(uniqueKeyColumnNames, ", "),
|
||||
select /* gh-ost %s.%s */ %s from
|
||||
%s.%s
|
||||
order by
|
||||
%s
|
||||
limit 1`,
|
||||
databaseName, tableName, strings.Join(uniqueKeyColumnNames, ", "),
|
||||
databaseName, tableName,
|
||||
strings.Join(uniqueKeyColumnOrder, ", "),
|
||||
)
|
||||
|
@ -410,12 +408,11 @@ func BuildDMLDeleteQuery(databaseName, tableName string, tableColumns, uniqueKey
|
|||
return result, uniqueKeyArgs, err
|
||||
}
|
||||
result = fmt.Sprintf(`
|
||||
delete /* gh-ost %s.%s */
|
||||
from
|
||||
%s.%s
|
||||
where
|
||||
%s
|
||||
`, databaseName, tableName,
|
||||
delete /* gh-ost %s.%s */ from
|
||||
%s.%s
|
||||
where
|
||||
%s`,
|
||||
databaseName, tableName,
|
||||
databaseName, tableName,
|
||||
equalsComparison,
|
||||
)
|
||||
|
@ -448,12 +445,12 @@ func BuildDMLInsertQuery(databaseName, tableName string, tableColumns, sharedCol
|
|||
preparedValues := buildColumnsPreparedValues(mappedSharedColumns)
|
||||
|
||||
result = fmt.Sprintf(`
|
||||
replace /* gh-ost %s.%s */ into
|
||||
%s.%s
|
||||
(%s)
|
||||
values
|
||||
(%s)
|
||||
`, databaseName, tableName,
|
||||
replace /* gh-ost %s.%s */ into
|
||||
%s.%s
|
||||
(%s)
|
||||
values
|
||||
(%s)`,
|
||||
databaseName, tableName,
|
||||
databaseName, tableName,
|
||||
strings.Join(mappedSharedColumnNames, ", "),
|
||||
strings.Join(preparedValues, ", "),
|
||||
|
@ -505,13 +502,13 @@ func BuildDMLUpdateQuery(databaseName, tableName string, tableColumns, sharedCol
|
|||
return "", sharedArgs, uniqueKeyArgs, err
|
||||
}
|
||||
result = fmt.Sprintf(`
|
||||
update /* gh-ost %s.%s */
|
||||
%s.%s
|
||||
set
|
||||
%s
|
||||
where
|
||||
%s
|
||||
`, databaseName, tableName,
|
||||
update /* gh-ost %s.%s */
|
||||
%s.%s
|
||||
set
|
||||
%s
|
||||
where
|
||||
%s`,
|
||||
databaseName, tableName,
|
||||
databaseName, tableName,
|
||||
setClause,
|
||||
equalsComparison,
|
||||
|
|
Loading…
Reference in New Issue
Block a user