MCPcopy Create free account
hub / github.com/pingcap/tidb / TestBuildSelectAllQuery

Function TestBuildSelectAllQuery

dumpling/export/sql_test.go:49–170  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

47)
48
49func TestBuildSelectAllQuery(t *testing.T) {
50 db, mock, err := sqlmock.New()
51 require.NoError(t, err)
52 defer func() {
53 require.NoError(t, db.Close())
54 }()
55
56 conn, err := db.Conn(context.Background())
57 require.NoError(t, err)
58
59 mockConf := defaultConfigForTest(t)
60 mockConf.SortByPk = true
61
62 // Test TiDB server.
63 mockConf.ServerInfo.ServerType = version.ServerTypeTiDB
64 tctx := tcontext.Background().WithLogger(appLogger)
65 baseConn := newBaseConn(conn, true, nil)
66
67 orderByClause, err := buildOrderByClause(tctx, mockConf, baseConn, database, table, true)
68 require.NoError(t, err)
69
70 mock.ExpectQuery("SHOW COLUMNS FROM").
71 WillReturnRows(sqlmock.NewRows([]string{"Field", "Type", "Null", "Key", "Default", "Extra"}).
72 AddRow("id", "int(11)", "NO", "PRI", nil, ""))
73
74 selectedField, _, err := buildSelectField(tctx, baseConn, database, table, false)
75 require.NoError(t, err)
76
77 q := buildSelectQuery(database, table, selectedField, "", "", orderByClause)
78 require.Equal(t, fmt.Sprintf("SELECT * FROM `%s`.`%s` ORDER BY `_tidb_rowid`", database, table), q)
79
80 mock.ExpectQuery(fmt.Sprintf("SHOW INDEX FROM `%s`.`%s`", database, table)).
81 WillReturnRows(sqlmock.NewRows(showIndexHeaders).
82 AddRow(table, 0, "PRIMARY", 1, "id", "A", 0, nil, nil, "", "BTREE", "", ""))
83
84 orderByClause, err = buildOrderByClause(tctx, mockConf, baseConn, database, table, false)
85 require.NoError(t, err)
86
87 mock.ExpectQuery("SHOW COLUMNS FROM").
88 WillReturnRows(sqlmock.NewRows([]string{"Field", "Type", "Null", "Key", "Default", "Extra"}).
89 AddRow("id", "int(11)", "NO", "PRI", nil, ""))
90
91 selectedField, _, err = buildSelectField(tctx, baseConn, database, table, false)
92 require.NoError(t, err)
93
94 q = buildSelectQuery(database, table, selectedField, "", "", orderByClause)
95 require.Equal(t, fmt.Sprintf("SELECT * FROM `%s`.`%s` ORDER BY `id`", database, table), q)
96 require.NoError(t, mock.ExpectationsWereMet())
97
98 // Test other servers.
99 otherServers := []version.ServerType{version.ServerTypeUnknown, version.ServerTypeMySQL, version.ServerTypeMariaDB}
100
101 // Test table with primary key.
102 for _, serverTp := range otherServers {
103 mockConf.ServerInfo.ServerType = serverTp
104 comment := fmt.Sprintf("server type: %s", serverTp)
105
106 mock.ExpectQuery(fmt.Sprintf("SHOW INDEX FROM `%s`.`%s`", database, table)).

Callers

nothing calls this directly

Calls 11

BackgroundFunction · 0.92
ServerTypeTypeAlias · 0.92
defaultConfigForTestFunction · 0.85
newBaseConnFunction · 0.85
buildOrderByClauseFunction · 0.85
buildSelectFieldFunction · 0.85
buildSelectQueryFunction · 0.85
WithLoggerMethod · 0.80
NewMethod · 0.65
CloseMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…