| 494 | } |
| 495 | |
| 496 | func TestIsSelect(t *testing.T) { |
| 497 | tests := []struct { |
| 498 | name string |
| 499 | query string |
| 500 | expected bool |
| 501 | }{ |
| 502 | { |
| 503 | name: "simple SELECT", |
| 504 | query: "SELECT * FROM users", |
| 505 | expected: true, |
| 506 | }, |
| 507 | { |
| 508 | name: "SELECT with WHERE clause", |
| 509 | query: "SELECT id, name FROM users WHERE age > 18", |
| 510 | expected: true, |
| 511 | }, |
| 512 | { |
| 513 | name: "SELECT lowercase", |
| 514 | query: "select * from users", |
| 515 | expected: true, |
| 516 | }, |
| 517 | { |
| 518 | name: "CTE with SELECT (starts with WITH)", |
| 519 | query: "WITH cte AS (SELECT * FROM users) SELECT * FROM cte", |
| 520 | expected: true, |
| 521 | }, |
| 522 | { |
| 523 | name: "INSERT statement", |
| 524 | query: "INSERT INTO test_table (id, name) VALUES (1, 'test')", |
| 525 | expected: false, |
| 526 | }, |
| 527 | { |
| 528 | name: "UPDATE statement", |
| 529 | query: "UPDATE test_table SET name = 'updated' WHERE id = 1", |
| 530 | expected: false, |
| 531 | }, |
| 532 | { |
| 533 | name: "DELETE statement", |
| 534 | query: "DELETE FROM test_table WHERE id = 1", |
| 535 | expected: false, |
| 536 | }, |
| 537 | { |
| 538 | name: "CREATE TABLE", |
| 539 | query: "CREATE TABLE test (id INT64, name STRING(100))", |
| 540 | expected: false, |
| 541 | }, |
| 542 | { |
| 543 | name: "DROP TABLE", |
| 544 | query: "DROP TABLE test", |
| 545 | expected: false, |
| 546 | }, |
| 547 | { |
| 548 | name: "ALTER TABLE", |
| 549 | query: "ALTER TABLE test ADD COLUMN age INT64", |
| 550 | expected: false, |
| 551 | }, |
| 552 | } |
| 553 | |