Commit eb0b1a5
feat: support transaction options in BEGIN statements (googleapis#550)
* feat: parse SET TRANSACTION statements
Parse SET TRANSACTION statements and translate these to SET LOCAL statements.
SET TRANSACTION may only be executed in a transaction block, and can only be
used for a specific, limited set of connection properties. The syntax is
specified by the SQL standard and PostgreSQL.
See also https://www.postgresql.org/docs/current/sql-set-transaction.html
This change only adds partial support. The following features will be added
in future changes:
1. SET TRANSACTION READ {WRITE | ONLY} is not picked up by the driver, as
the type of transaction is set directly when BeginTx is called. A
refactor of this transaction handling is needed to be able to pick up
SET TRANSACTION READ ONLY / SET TRANSACTION READ WRITE statements that
are executed after BeginTx has been called.
2. PostgreSQL allows multiple transaction modes to be set in a single
SET TRANSACTION statement. E.g. the following is allowed:
SET TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE
The current implementation only supports one transaction mode per
SET statement.
* feat: support multiple transaction options in one statement
* feat: support transaction options in BEGIN statements
Adds support for including transaction options in BEGIN statements, like:
```sql
BEGIN READ ONLY;
BEGIN READ WRITE;
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN READ WRITE, ISOLATION LEVEL SERIALIZABLE;
```
* chore: re-trigger checks1 parent 3e10324 commit eb0b1a5
File tree
4 files changed
+264
-28
lines changed- parser
4 files changed
+264
-28
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
230 | 230 | | |
231 | 231 | | |
232 | 232 | | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
233 | 245 | | |
234 | 246 | | |
235 | | - | |
236 | | - | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
237 | 250 | | |
238 | 251 | | |
239 | | - | |
240 | | - | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
241 | 255 | | |
242 | 256 | | |
243 | 257 | | |
244 | | - | |
245 | | - | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
246 | 261 | | |
247 | 262 | | |
248 | | - | |
| 263 | + | |
249 | 264 | | |
250 | 265 | | |
251 | | - | |
| 266 | + | |
252 | 267 | | |
253 | 268 | | |
254 | 269 | | |
255 | 270 | | |
256 | 271 | | |
257 | 272 | | |
258 | | - | |
| 273 | + | |
259 | 274 | | |
260 | | - | |
| 275 | + | |
261 | 276 | | |
262 | 277 | | |
263 | 278 | | |
264 | 279 | | |
265 | 280 | | |
266 | 281 | | |
267 | 282 | | |
268 | | - | |
| 283 | + | |
269 | 284 | | |
270 | 285 | | |
271 | | - | |
272 | | - | |
273 | | - | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
274 | 289 | | |
275 | 290 | | |
276 | | - | |
| 291 | + | |
277 | 292 | | |
278 | 293 | | |
279 | 294 | | |
280 | 295 | | |
281 | 296 | | |
282 | 297 | | |
283 | | - | |
| 298 | + | |
284 | 299 | | |
285 | 300 | | |
286 | | - | |
287 | | - | |
288 | | - | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
289 | 304 | | |
290 | 305 | | |
291 | | - | |
| 306 | + | |
292 | 307 | | |
293 | 308 | | |
294 | 309 | | |
295 | 310 | | |
296 | 311 | | |
297 | 312 | | |
298 | | - | |
| 313 | + | |
299 | 314 | | |
300 | 315 | | |
301 | | - | |
302 | | - | |
303 | | - | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
304 | 319 | | |
305 | 320 | | |
306 | 321 | | |
| |||
496 | 511 | | |
497 | 512 | | |
498 | 513 | | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
499 | 520 | | |
500 | 521 | | |
501 | 522 | | |
| |||
508 | 529 | | |
509 | 530 | | |
510 | 531 | | |
511 | | - | |
| 532 | + | |
512 | 533 | | |
513 | 534 | | |
514 | 535 | | |
| |||
531 | 552 | | |
532 | 553 | | |
533 | 554 | | |
534 | | - | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
535 | 560 | | |
| 561 | + | |
536 | 562 | | |
537 | 563 | | |
538 | 564 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
431 | 431 | | |
432 | 432 | | |
433 | 433 | | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
434 | 466 | | |
435 | 467 | | |
436 | 468 | | |
| |||
454 | 486 | | |
455 | 487 | | |
456 | 488 | | |
457 | | - | |
| 489 | + | |
458 | 490 | | |
459 | 491 | | |
460 | 492 | | |
| |||
506 | 538 | | |
507 | 539 | | |
508 | 540 | | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
509 | 591 | | |
510 | 592 | | |
511 | 593 | | |
| |||
541 | 623 | | |
542 | 624 | | |
543 | 625 | | |
544 | | - | |
| 626 | + | |
545 | 627 | | |
546 | 628 | | |
547 | 629 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
282 | 285 | | |
283 | 286 | | |
284 | 287 | | |
285 | 288 | | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
286 | 295 | | |
287 | 296 | | |
288 | 297 | | |
| |||
0 commit comments