MCPcopy
hub / github.com/github/gh-ost / buildUniqueKeyMinMaxValuesPreparedQuery

Function buildUniqueKeyMinMaxValuesPreparedQuery

go/sql/builder.go:759–789  ·  view source on GitHub ↗
(databaseName, tableName string, uniqueKey *UniqueKey, order string)

Source from the content-addressed store, hash-verified

757}
758
759func buildUniqueKeyMinMaxValuesPreparedQuery(databaseName, tableName string, uniqueKey *UniqueKey, order string) (string, error) {
760 if uniqueKey.Columns.Len() == 0 {
761 return "", fmt.Errorf("got 0 columns in BuildUniqueKeyMinMaxValuesPreparedQuery")
762 }
763 databaseName = EscapeName(databaseName)
764 tableName = EscapeName(tableName)
765
766 uniqueKeyColumnNames := duplicateNames(uniqueKey.Columns.Names())
767 uniqueKeyColumnOrder := make([]string, len(uniqueKeyColumnNames))
768 for i, column := range uniqueKey.Columns.Columns() {
769 uniqueKeyColumnNames[i] = EscapeName(uniqueKeyColumnNames[i])
770 if column.Type == EnumColumnType {
771 uniqueKeyColumnOrder[i] = fmt.Sprintf("concat(%s) %s", uniqueKeyColumnNames[i], order)
772 } else {
773 uniqueKeyColumnOrder[i] = fmt.Sprintf("%s %s", uniqueKeyColumnNames[i], order)
774 }
775 }
776 query := fmt.Sprintf(`
777 select /* gh-ost %s.%s */ %s
778 from
779 %s.%s
780 force index (%s)
781 order by
782 %s
783 limit 1`,
784 databaseName, tableName, strings.Join(uniqueKeyColumnNames, ", "),
785 databaseName, tableName, uniqueKey.Name,
786 strings.Join(uniqueKeyColumnOrder, ", "),
787 )
788 return query, nil
789}
790
791// DMLDeleteQueryBuilder can build DELETE queries for DML events.
792// It holds the prepared query statement so it doesn't need to be recreated every time.

Calls 6

EscapeNameFunction · 0.85
duplicateNamesFunction · 0.85
NamesMethod · 0.80
ColumnsMethod · 0.80
ErrorfMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…