MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestSQLQueryStopOnError

Function TestSQLQueryStopOnError

backend/tests/sql_stop_on_error_test.go:15–265  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13)
14
15func TestSQLQueryStopOnError(t *testing.T) {
16 tests := []struct {
17 name string
18 databaseName string
19 dbType storepb.Engine
20 environment string // Environment to create database in (defaults to prod if empty)
21 prepareStatements string
22 query string
23 wantResults int // Number of successful results before error
24 wantError bool
25 wantSyntaxError bool // Whether to expect syntax_error in detailed_error
26 wantPermissionDenied bool // Whether to expect permission_denied in detailed_error
27 }{
28 {
29 name: "MySQL - All statements succeed",
30 databaseName: "TestStopOnError1",
31 dbType: storepb.Engine_MYSQL,
32 prepareStatements: "CREATE TABLE tbl1(id INT PRIMARY KEY, name VARCHAR(64));",
33 query: "INSERT INTO tbl1 VALUES(1, 'Alice'); INSERT INTO tbl1 VALUES(2, 'Bob'); SELECT * FROM tbl1;",
34 wantResults: 3, // 2 inserts + 1 select
35 wantError: false,
36 },
37 {
38 name: "MySQL - Second statement fails",
39 databaseName: "TestStopOnError2",
40 dbType: storepb.Engine_MYSQL,
41 prepareStatements: "CREATE TABLE tbl2(id INT PRIMARY KEY, name VARCHAR(64));",
42 query: "INSERT INTO tbl2 VALUES(1, 'Alice'); INSERT INTO nonexistent VALUES(2, 'Bob'); INSERT INTO tbl2 VALUES(3, 'Charlie');",
43 wantResults: 2, // First insert succeeds + error result
44 wantError: true,
45 },
46 {
47 name: "MySQL - First statement fails",
48 databaseName: "TestStopOnError3",
49 dbType: storepb.Engine_MYSQL,
50 prepareStatements: "CREATE TABLE tbl3(id INT PRIMARY KEY, name VARCHAR(64));",
51 query: "INSERT INTO nonexistent VALUES(1, 'Alice'); INSERT INTO tbl3 VALUES(2, 'Bob');",
52 wantResults: 1, // Error result only
53 wantError: true,
54 },
55 {
56 name: "PostgreSQL - All statements succeed",
57 databaseName: "TestStopOnError4",
58 dbType: storepb.Engine_POSTGRES,
59 prepareStatements: "CREATE TABLE tbl4(id INT PRIMARY KEY, name VARCHAR(64));",
60 query: "INSERT INTO tbl4 VALUES(1, 'Alice'); INSERT INTO tbl4 VALUES(2, 'Bob'); SELECT * FROM tbl4;",
61 wantResults: 3,
62 wantError: false,
63 },
64 {
65 name: "PostgreSQL - Second statement fails",
66 databaseName: "TestStopOnError5",
67 dbType: storepb.Engine_POSTGRES,
68 prepareStatements: "CREATE TABLE tbl5(id INT PRIMARY KEY, name VARCHAR(64));",
69 query: "INSERT INTO tbl5 VALUES(1, 'Alice'); INSERT INTO nonexistent VALUES(2, 'Bob'); INSERT INTO tbl5 VALUES(3, 'Charlie');",
70 wantResults: 2, // First insert succeeds + error result
71 wantError: true,
72 },

Callers

nothing calls this directly

Calls 15

CloseMethod · 0.95
createDatabaseMethod · 0.95
changeDatabaseMethod · 0.95
GetSyntaxErrorMethod · 0.95
GetPermissionDeniedMethod · 0.95
getMySQLContainerFunction · 0.85
getPgContainerFunction · 0.85
generateRandomStringFunction · 0.85
CloseMethod · 0.65
CreateInstanceMethod · 0.65
GetDatabaseMethod · 0.65

Tested by

no test coverage detected