|
15 | 15 | import sqlalchemy as sqla |
16 | 16 | from sqlalchemy.sql import and_, not_, or_ |
17 | 17 |
|
| 18 | +from tests.integration.conftest import trino_version |
18 | 19 | from tests.unit.conftest import sqlalchemy_version |
19 | 20 | from trino.sqlalchemy.datatype import JSON |
20 | 21 |
|
@@ -497,3 +498,24 @@ def test_get_view_names_raises(trino_connection): |
497 | 498 |
|
498 | 499 | with pytest.raises(sqla.exc.NoSuchTableError): |
499 | 500 | sqla.inspect(engine).get_view_names(None) |
| 501 | + |
| 502 | + |
| 503 | +@pytest.mark.parametrize('trino_connection', ['system'], indirect=True) |
| 504 | +@pytest.mark.skipif(trino_version() == '351', reason="version() not supported in older Trino versions") |
| 505 | +def test_version_is_lazy(trino_connection): |
| 506 | + _, conn = trino_connection |
| 507 | + result = conn.execute(sqla.text("SELECT 1")) |
| 508 | + result.fetchall() |
| 509 | + num_queries = _num_queries_containing_string(conn, "SELECT version()") |
| 510 | + assert num_queries == 0 |
| 511 | + version_info = conn.dialect.server_version_info |
| 512 | + assert isinstance(version_info, tuple) |
| 513 | + num_queries = _num_queries_containing_string(conn, "SELECT version()") |
| 514 | + assert num_queries == 1 |
| 515 | + |
| 516 | + |
| 517 | +def _num_queries_containing_string(connection, query_string): |
| 518 | + statement = sqla.text("select query from system.runtime.queries order by query_id desc offset 1 limit 1") |
| 519 | + result = connection.execute(statement) |
| 520 | + rows = result.fetchall() |
| 521 | + return len(list(filter(lambda rec: query_string in rec[0], rows))) |
0 commit comments