MCPcopy
hub / github.com/pingcap/tidb / ShowCreateDatabase

Function ShowCreateDatabase

dumpling/export/sql.go:64–85  ·  view source on GitHub ↗

ShowCreateDatabase constructs the create database SQL for a specified database returns (createDatabaseSQL, error)

(tctx *tcontext.Context, db *BaseConn, database string)

Source from the content-addressed store, hash-verified

62// ShowCreateDatabase constructs the create database SQL for a specified database
63// returns (createDatabaseSQL, error)
64func ShowCreateDatabase(tctx *tcontext.Context, db *BaseConn, database string) (string, error) {
65 var oneRow [2]string
66 handleOneRow := func(rows *sql.Rows) error {
67 return rows.Scan(&oneRow[0], &oneRow[1])
68 }
69 query := fmt.Sprintf("SHOW CREATE DATABASE `%s`", escapeString(database))
70 err := db.QuerySQL(tctx, handleOneRow, func() {
71 oneRow[0], oneRow[1] = "", ""
72 }, query)
73 if multiErrs := multierr.Errors(err); len(multiErrs) > 0 {
74 for _, multiErr := range multiErrs {
75 if mysqlErr, ok := errors.Cause(multiErr).(*mysql.MySQLError); ok {
76 // Falling back to simple create statement for MemSQL/SingleStore, because of this:
77 // ERROR 1706 (HY000): Feature 'SHOW CREATE DATABASE' is not supported by MemSQL.
78 if strings.Contains(mysqlErr.Error(), "SHOW CREATE DATABASE") {
79 return fmt.Sprintf("CREATE DATABASE `%s`", escapeString(database)), nil
80 }
81 }
82 }
83 }
84 return oneRow[1], err
85}
86
87// ShowCreateTable constructs the create table SQL for a specified table
88// returns (createTableSQL, error)

Callers 1

dumpDatabasesMethod · 0.85

Calls 7

QuerySQLMethod · 0.80
CauseMethod · 0.80
escapeStringFunction · 0.70
ScanMethod · 0.65
ErrorsMethod · 0.65
ContainsMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected