Adapted from enginetests to skip known issues and pending fixes
(t *testing.T, harness enginetest.Harness)
| 1145 | tx := ctx.GetTransaction() |
| 1146 | duckTx := sess.TryGetTxn() |
| 1147 | require.NotNil(t, tx) |
| 1148 | require.NotNil(t, duckTx) |
| 1149 | return tx, duckTx |
| 1150 | } |
| 1151 | rollback := func(tx sql.Transaction) { |
| 1152 | require.NoError(t, sess.Rollback(ctx, tx)) |
| 1153 | ctx.SetIgnoreAutoCommit(false) |
| 1154 | ctx.SetTransaction(nil) |
| 1155 | require.Nil(t, ctx.GetTransaction()) |
| 1156 | require.Nil(t, sess.TryGetTxn()) |
| 1157 | } |
| 1158 | |
| 1159 | tx, duckTx := begin() |
| 1160 | rows, err := run("INSERT INTO returning_tx VALUES (1, 'Cat') RETURNING id, name") |
| 1161 | require.NoError(t, err) |
| 1162 | require.Equal(t, []sql.Row{{int32(1), "Cat"}}, rows) |
| 1163 | require.Same(t, tx, ctx.GetTransaction()) |
| 1164 | require.Same(t, duckTx, sess.TryGetTxn()) |
| 1165 | rollback(tx) |
| 1166 | |
| 1167 | tx, duckTx = begin() |
| 1168 | _, err = run("INSERT INTO returning_tx VALUES (2, NULL) RETURNING id, name") |
| 1169 | require.ErrorContains(t, err, "NOT NULL constraint failed") |
| 1170 | require.Same(t, tx, ctx.GetTransaction()) |
| 1171 | require.Same(t, duckTx, sess.TryGetTxn()) |
| 1172 | rollback(tx) |
| 1173 | |
| 1174 | rows, err = run("SELECT count(*) FROM returning_tx") |
| 1175 | require.NoError(t, err) |
| 1176 | require.Equal(t, []sql.Row{{int64(0)}}, rows) |
| 1177 | } |
| 1178 | |
| 1179 | func TestAlterTableCommentPreservesManagedMetadata(t *testing.T) { |
| 1180 | provider, err := catalog.NewDBProvider("", t.TempDir(), "myduck") |
| 1181 | require.NoError(t, err) |
| 1182 | t.Cleanup(func() { |
| 1183 | require.NoError(t, provider.Close()) |
| 1184 | }) |
| 1185 | |
| 1186 | h := harness.NewDuckHarness("comment-reopen", 1, 1, true, nil).WithProvider(provider) |
| 1187 | setupData := []setup.SetupScript{{ |
| 1188 | "CREATE DATABASE comment_reopen", |
| 1189 | "USE comment_reopen", |
| 1190 | `CREATE TABLE comment_meta ( |
| 1191 | id INT AUTO_INCREMENT PRIMARY KEY, |
| 1192 | required INT NOT NULL, |
| 1193 | source JSON, |
| 1194 | generated_v VECTOR(2) NOT NULL GENERATED ALWAYS AS (STRING_TO_VECTOR(source)) STORED, |
| 1195 | CONSTRAINT required_positive CHECK (required > 0) |
| 1196 | ) COMMENT='before'`, |
| 1197 | }} |
| 1198 | e, err := harness.NewEngine(t, h, provider, setupData, memory.NewStatsProv(), false) |
| 1199 | require.NoError(t, err) |
| 1200 | t.Cleanup(func() { |
| 1201 | require.NoError(t, e.Close()) |
| 1202 | }) |
| 1203 | |
| 1204 | ctx := enginetest.NewContext(h) |
no test coverage detected