sqlspec 0.36.0__cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ac8f31065839703b4e70__mypyc.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/__init__.py +140 -0
- sqlspec/__main__.py +12 -0
- sqlspec/__metadata__.py +14 -0
- sqlspec/_serialization.py +315 -0
- sqlspec/_typing.py +700 -0
- sqlspec/adapters/__init__.py +0 -0
- sqlspec/adapters/adbc/__init__.py +5 -0
- sqlspec/adapters/adbc/_typing.py +82 -0
- sqlspec/adapters/adbc/adk/__init__.py +5 -0
- sqlspec/adapters/adbc/adk/store.py +1273 -0
- sqlspec/adapters/adbc/config.py +295 -0
- sqlspec/adapters/adbc/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/adbc/core.py +735 -0
- sqlspec/adapters/adbc/data_dictionary.py +334 -0
- sqlspec/adapters/adbc/driver.py +529 -0
- sqlspec/adapters/adbc/events/__init__.py +5 -0
- sqlspec/adapters/adbc/events/store.py +285 -0
- sqlspec/adapters/adbc/litestar/__init__.py +5 -0
- sqlspec/adapters/adbc/litestar/store.py +502 -0
- sqlspec/adapters/adbc/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/adbc/type_converter.py +140 -0
- sqlspec/adapters/aiosqlite/__init__.py +25 -0
- sqlspec/adapters/aiosqlite/_typing.py +82 -0
- sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/adk/store.py +818 -0
- sqlspec/adapters/aiosqlite/config.py +334 -0
- sqlspec/adapters/aiosqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/aiosqlite/core.py +315 -0
- sqlspec/adapters/aiosqlite/data_dictionary.py +208 -0
- sqlspec/adapters/aiosqlite/driver.py +313 -0
- sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/events/store.py +20 -0
- sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
- sqlspec/adapters/aiosqlite/pool.py +533 -0
- sqlspec/adapters/asyncmy/__init__.py +21 -0
- sqlspec/adapters/asyncmy/_typing.py +87 -0
- sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
- sqlspec/adapters/asyncmy/adk/store.py +703 -0
- sqlspec/adapters/asyncmy/config.py +302 -0
- sqlspec/adapters/asyncmy/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/asyncmy/core.py +360 -0
- sqlspec/adapters/asyncmy/data_dictionary.py +124 -0
- sqlspec/adapters/asyncmy/driver.py +383 -0
- sqlspec/adapters/asyncmy/events/__init__.py +5 -0
- sqlspec/adapters/asyncmy/events/store.py +104 -0
- sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncmy/litestar/store.py +296 -0
- sqlspec/adapters/asyncpg/__init__.py +19 -0
- sqlspec/adapters/asyncpg/_typing.py +88 -0
- sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
- sqlspec/adapters/asyncpg/adk/store.py +748 -0
- sqlspec/adapters/asyncpg/config.py +569 -0
- sqlspec/adapters/asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/asyncpg/core.py +367 -0
- sqlspec/adapters/asyncpg/data_dictionary.py +162 -0
- sqlspec/adapters/asyncpg/driver.py +487 -0
- sqlspec/adapters/asyncpg/events/__init__.py +6 -0
- sqlspec/adapters/asyncpg/events/backend.py +286 -0
- sqlspec/adapters/asyncpg/events/store.py +40 -0
- sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncpg/litestar/store.py +251 -0
- sqlspec/adapters/bigquery/__init__.py +14 -0
- sqlspec/adapters/bigquery/_typing.py +86 -0
- sqlspec/adapters/bigquery/adk/__init__.py +5 -0
- sqlspec/adapters/bigquery/adk/store.py +827 -0
- sqlspec/adapters/bigquery/config.py +353 -0
- sqlspec/adapters/bigquery/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/bigquery/core.py +715 -0
- sqlspec/adapters/bigquery/data_dictionary.py +128 -0
- sqlspec/adapters/bigquery/driver.py +548 -0
- sqlspec/adapters/bigquery/events/__init__.py +5 -0
- sqlspec/adapters/bigquery/events/store.py +139 -0
- sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
- sqlspec/adapters/bigquery/litestar/store.py +325 -0
- sqlspec/adapters/bigquery/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/bigquery/type_converter.py +107 -0
- sqlspec/adapters/cockroach_asyncpg/__init__.py +24 -0
- sqlspec/adapters/cockroach_asyncpg/_typing.py +72 -0
- sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/adk/store.py +410 -0
- sqlspec/adapters/cockroach_asyncpg/config.py +238 -0
- sqlspec/adapters/cockroach_asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
- sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +107 -0
- sqlspec/adapters/cockroach_asyncpg/driver.py +144 -0
- sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
- sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
- sqlspec/adapters/cockroach_psycopg/__init__.py +38 -0
- sqlspec/adapters/cockroach_psycopg/_typing.py +129 -0
- sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
- sqlspec/adapters/cockroach_psycopg/adk/store.py +868 -0
- sqlspec/adapters/cockroach_psycopg/config.py +484 -0
- sqlspec/adapters/cockroach_psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/cockroach_psycopg/core.py +63 -0
- sqlspec/adapters/cockroach_psycopg/data_dictionary.py +215 -0
- sqlspec/adapters/cockroach_psycopg/driver.py +284 -0
- sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
- sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
- sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
- sqlspec/adapters/cockroach_psycopg/litestar/store.py +325 -0
- sqlspec/adapters/duckdb/__init__.py +25 -0
- sqlspec/adapters/duckdb/_typing.py +81 -0
- sqlspec/adapters/duckdb/adk/__init__.py +14 -0
- sqlspec/adapters/duckdb/adk/store.py +850 -0
- sqlspec/adapters/duckdb/config.py +463 -0
- sqlspec/adapters/duckdb/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/duckdb/core.py +257 -0
- sqlspec/adapters/duckdb/data_dictionary.py +140 -0
- sqlspec/adapters/duckdb/driver.py +430 -0
- sqlspec/adapters/duckdb/events/__init__.py +5 -0
- sqlspec/adapters/duckdb/events/store.py +57 -0
- sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
- sqlspec/adapters/duckdb/litestar/store.py +330 -0
- sqlspec/adapters/duckdb/pool.py +293 -0
- sqlspec/adapters/duckdb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/duckdb/type_converter.py +118 -0
- sqlspec/adapters/mock/__init__.py +72 -0
- sqlspec/adapters/mock/_typing.py +147 -0
- sqlspec/adapters/mock/config.py +483 -0
- sqlspec/adapters/mock/core.py +319 -0
- sqlspec/adapters/mock/data_dictionary.py +366 -0
- sqlspec/adapters/mock/driver.py +721 -0
- sqlspec/adapters/mysqlconnector/__init__.py +36 -0
- sqlspec/adapters/mysqlconnector/_typing.py +141 -0
- sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
- sqlspec/adapters/mysqlconnector/adk/store.py +1060 -0
- sqlspec/adapters/mysqlconnector/config.py +394 -0
- sqlspec/adapters/mysqlconnector/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/mysqlconnector/core.py +303 -0
- sqlspec/adapters/mysqlconnector/data_dictionary.py +235 -0
- sqlspec/adapters/mysqlconnector/driver.py +483 -0
- sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
- sqlspec/adapters/mysqlconnector/events/store.py +98 -0
- sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
- sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
- sqlspec/adapters/oracledb/__init__.py +60 -0
- sqlspec/adapters/oracledb/_numpy_handlers.py +141 -0
- sqlspec/adapters/oracledb/_typing.py +182 -0
- sqlspec/adapters/oracledb/_uuid_handlers.py +166 -0
- sqlspec/adapters/oracledb/adk/__init__.py +10 -0
- sqlspec/adapters/oracledb/adk/store.py +2369 -0
- sqlspec/adapters/oracledb/config.py +550 -0
- sqlspec/adapters/oracledb/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/oracledb/core.py +543 -0
- sqlspec/adapters/oracledb/data_dictionary.py +536 -0
- sqlspec/adapters/oracledb/driver.py +1229 -0
- sqlspec/adapters/oracledb/events/__init__.py +16 -0
- sqlspec/adapters/oracledb/events/backend.py +347 -0
- sqlspec/adapters/oracledb/events/store.py +420 -0
- sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
- sqlspec/adapters/oracledb/litestar/store.py +781 -0
- sqlspec/adapters/oracledb/migrations.py +535 -0
- sqlspec/adapters/oracledb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/oracledb/type_converter.py +211 -0
- sqlspec/adapters/psqlpy/__init__.py +17 -0
- sqlspec/adapters/psqlpy/_typing.py +79 -0
- sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
- sqlspec/adapters/psqlpy/adk/store.py +766 -0
- sqlspec/adapters/psqlpy/config.py +304 -0
- sqlspec/adapters/psqlpy/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psqlpy/core.py +480 -0
- sqlspec/adapters/psqlpy/data_dictionary.py +126 -0
- sqlspec/adapters/psqlpy/driver.py +438 -0
- sqlspec/adapters/psqlpy/events/__init__.py +6 -0
- sqlspec/adapters/psqlpy/events/backend.py +310 -0
- sqlspec/adapters/psqlpy/events/store.py +20 -0
- sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
- sqlspec/adapters/psqlpy/litestar/store.py +270 -0
- sqlspec/adapters/psqlpy/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psqlpy/type_converter.py +113 -0
- sqlspec/adapters/psycopg/__init__.py +32 -0
- sqlspec/adapters/psycopg/_typing.py +164 -0
- sqlspec/adapters/psycopg/adk/__init__.py +10 -0
- sqlspec/adapters/psycopg/adk/store.py +1387 -0
- sqlspec/adapters/psycopg/config.py +576 -0
- sqlspec/adapters/psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psycopg/core.py +450 -0
- sqlspec/adapters/psycopg/data_dictionary.py +289 -0
- sqlspec/adapters/psycopg/driver.py +975 -0
- sqlspec/adapters/psycopg/events/__init__.py +20 -0
- sqlspec/adapters/psycopg/events/backend.py +458 -0
- sqlspec/adapters/psycopg/events/store.py +42 -0
- sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
- sqlspec/adapters/psycopg/litestar/store.py +552 -0
- sqlspec/adapters/psycopg/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psycopg/type_converter.py +93 -0
- sqlspec/adapters/pymysql/__init__.py +21 -0
- sqlspec/adapters/pymysql/_typing.py +71 -0
- sqlspec/adapters/pymysql/adk/__init__.py +5 -0
- sqlspec/adapters/pymysql/adk/store.py +540 -0
- sqlspec/adapters/pymysql/config.py +195 -0
- sqlspec/adapters/pymysql/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/pymysql/core.py +299 -0
- sqlspec/adapters/pymysql/data_dictionary.py +122 -0
- sqlspec/adapters/pymysql/driver.py +259 -0
- sqlspec/adapters/pymysql/events/__init__.py +5 -0
- sqlspec/adapters/pymysql/events/store.py +50 -0
- sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
- sqlspec/adapters/pymysql/litestar/store.py +232 -0
- sqlspec/adapters/pymysql/pool.py +137 -0
- sqlspec/adapters/spanner/__init__.py +40 -0
- sqlspec/adapters/spanner/_typing.py +86 -0
- sqlspec/adapters/spanner/adk/__init__.py +5 -0
- sqlspec/adapters/spanner/adk/store.py +732 -0
- sqlspec/adapters/spanner/config.py +352 -0
- sqlspec/adapters/spanner/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/spanner/core.py +188 -0
- sqlspec/adapters/spanner/data_dictionary.py +120 -0
- sqlspec/adapters/spanner/dialect/__init__.py +6 -0
- sqlspec/adapters/spanner/dialect/_spangres.py +57 -0
- sqlspec/adapters/spanner/dialect/_spanner.py +130 -0
- sqlspec/adapters/spanner/driver.py +373 -0
- sqlspec/adapters/spanner/events/__init__.py +5 -0
- sqlspec/adapters/spanner/events/store.py +187 -0
- sqlspec/adapters/spanner/litestar/__init__.py +5 -0
- sqlspec/adapters/spanner/litestar/store.py +291 -0
- sqlspec/adapters/spanner/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/spanner/type_converter.py +331 -0
- sqlspec/adapters/sqlite/__init__.py +19 -0
- sqlspec/adapters/sqlite/_typing.py +80 -0
- sqlspec/adapters/sqlite/adk/__init__.py +5 -0
- sqlspec/adapters/sqlite/adk/store.py +958 -0
- sqlspec/adapters/sqlite/config.py +280 -0
- sqlspec/adapters/sqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/sqlite/core.py +312 -0
- sqlspec/adapters/sqlite/data_dictionary.py +202 -0
- sqlspec/adapters/sqlite/driver.py +359 -0
- sqlspec/adapters/sqlite/events/__init__.py +5 -0
- sqlspec/adapters/sqlite/events/store.py +20 -0
- sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/sqlite/litestar/store.py +316 -0
- sqlspec/adapters/sqlite/pool.py +198 -0
- sqlspec/adapters/sqlite/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/sqlite/type_converter.py +114 -0
- sqlspec/base.py +747 -0
- sqlspec/builder/__init__.py +179 -0
- sqlspec/builder/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_base.py +1022 -0
- sqlspec/builder/_column.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_column.py +521 -0
- sqlspec/builder/_ddl.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_ddl.py +1642 -0
- sqlspec/builder/_delete.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_delete.py +95 -0
- sqlspec/builder/_dml.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_dml.py +365 -0
- sqlspec/builder/_explain.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_explain.py +579 -0
- sqlspec/builder/_expression_wrappers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_expression_wrappers.py +46 -0
- sqlspec/builder/_factory.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_factory.py +1697 -0
- sqlspec/builder/_insert.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_insert.py +328 -0
- sqlspec/builder/_join.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_join.py +499 -0
- sqlspec/builder/_merge.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_merge.py +821 -0
- sqlspec/builder/_parsing_utils.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_parsing_utils.py +297 -0
- sqlspec/builder/_select.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_select.py +1660 -0
- sqlspec/builder/_temporal.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_temporal.py +139 -0
- sqlspec/builder/_update.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_update.py +173 -0
- sqlspec/builder/_vector_expressions.py +267 -0
- sqlspec/cli.py +911 -0
- sqlspec/config.py +1755 -0
- sqlspec/core/__init__.py +374 -0
- sqlspec/core/_correlation.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/_correlation.py +176 -0
- sqlspec/core/cache.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/cache.py +1069 -0
- sqlspec/core/compiler.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/compiler.py +954 -0
- sqlspec/core/explain.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/explain.py +275 -0
- sqlspec/core/filters.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/filters.py +952 -0
- sqlspec/core/hashing.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/hashing.py +262 -0
- sqlspec/core/metrics.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/metrics.py +83 -0
- sqlspec/core/parameters/__init__.py +71 -0
- sqlspec/core/parameters/_alignment.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_alignment.py +270 -0
- sqlspec/core/parameters/_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_converter.py +543 -0
- sqlspec/core/parameters/_processor.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_processor.py +505 -0
- sqlspec/core/parameters/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_registry.py +206 -0
- sqlspec/core/parameters/_transformers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_transformers.py +292 -0
- sqlspec/core/parameters/_types.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_types.py +499 -0
- sqlspec/core/parameters/_validator.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_validator.py +180 -0
- sqlspec/core/pipeline.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/pipeline.py +319 -0
- sqlspec/core/query_modifiers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/query_modifiers.py +437 -0
- sqlspec/core/result/__init__.py +23 -0
- sqlspec/core/result/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/result/_base.py +1121 -0
- sqlspec/core/result/_io.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/result/_io.py +28 -0
- sqlspec/core/splitter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/splitter.py +966 -0
- sqlspec/core/stack.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/stack.py +163 -0
- sqlspec/core/statement.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/statement.py +1503 -0
- sqlspec/core/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/type_converter.py +339 -0
- sqlspec/data_dictionary/__init__.py +22 -0
- sqlspec/data_dictionary/_loader.py +123 -0
- sqlspec/data_dictionary/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/_registry.py +74 -0
- sqlspec/data_dictionary/_types.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/_types.py +121 -0
- sqlspec/data_dictionary/dialects/__init__.py +21 -0
- sqlspec/data_dictionary/dialects/bigquery.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/bigquery.py +49 -0
- sqlspec/data_dictionary/dialects/cockroachdb.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/cockroachdb.py +43 -0
- sqlspec/data_dictionary/dialects/duckdb.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/duckdb.py +47 -0
- sqlspec/data_dictionary/dialects/mysql.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/mysql.py +42 -0
- sqlspec/data_dictionary/dialects/oracle.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/oracle.py +34 -0
- sqlspec/data_dictionary/dialects/postgres.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/postgres.py +46 -0
- sqlspec/data_dictionary/dialects/spanner.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/spanner.py +37 -0
- sqlspec/data_dictionary/dialects/sqlite.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/sqlite.py +42 -0
- sqlspec/data_dictionary/sql/.gitkeep +0 -0
- sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
- sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
- sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
- sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
- sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
- sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
- sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
- sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
- sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
- sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
- sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
- sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
- sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
- sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
- sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
- sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
- sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
- sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
- sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
- sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
- sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
- sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
- sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
- sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
- sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
- sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
- sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
- sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
- sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
- sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
- sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
- sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
- sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
- sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
- sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
- sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
- sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
- sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
- sqlspec/driver/__init__.py +32 -0
- sqlspec/driver/_async.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_async.py +1737 -0
- sqlspec/driver/_common.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_common.py +1478 -0
- sqlspec/driver/_sql_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_sql_helpers.py +148 -0
- sqlspec/driver/_storage_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_storage_helpers.py +144 -0
- sqlspec/driver/_sync.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_sync.py +1710 -0
- sqlspec/exceptions.py +338 -0
- sqlspec/extensions/__init__.py +0 -0
- sqlspec/extensions/adk/__init__.py +70 -0
- sqlspec/extensions/adk/_types.py +51 -0
- sqlspec/extensions/adk/converters.py +172 -0
- sqlspec/extensions/adk/memory/__init__.py +69 -0
- sqlspec/extensions/adk/memory/_types.py +30 -0
- sqlspec/extensions/adk/memory/converters.py +149 -0
- sqlspec/extensions/adk/memory/service.py +217 -0
- sqlspec/extensions/adk/memory/store.py +569 -0
- sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +246 -0
- sqlspec/extensions/adk/migrations/__init__.py +0 -0
- sqlspec/extensions/adk/service.py +225 -0
- sqlspec/extensions/adk/store.py +567 -0
- sqlspec/extensions/events/__init__.py +51 -0
- sqlspec/extensions/events/_channel.py +703 -0
- sqlspec/extensions/events/_hints.py +45 -0
- sqlspec/extensions/events/_models.py +23 -0
- sqlspec/extensions/events/_payload.py +69 -0
- sqlspec/extensions/events/_protocols.py +134 -0
- sqlspec/extensions/events/_queue.py +461 -0
- sqlspec/extensions/events/_store.py +209 -0
- sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
- sqlspec/extensions/events/migrations/__init__.py +3 -0
- sqlspec/extensions/fastapi/__init__.py +19 -0
- sqlspec/extensions/fastapi/extension.py +351 -0
- sqlspec/extensions/fastapi/providers.py +607 -0
- sqlspec/extensions/flask/__init__.py +37 -0
- sqlspec/extensions/flask/_state.py +76 -0
- sqlspec/extensions/flask/_utils.py +71 -0
- sqlspec/extensions/flask/extension.py +519 -0
- sqlspec/extensions/litestar/__init__.py +28 -0
- sqlspec/extensions/litestar/_utils.py +52 -0
- sqlspec/extensions/litestar/channels.py +165 -0
- sqlspec/extensions/litestar/cli.py +102 -0
- sqlspec/extensions/litestar/config.py +90 -0
- sqlspec/extensions/litestar/handlers.py +316 -0
- sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
- sqlspec/extensions/litestar/migrations/__init__.py +3 -0
- sqlspec/extensions/litestar/plugin.py +671 -0
- sqlspec/extensions/litestar/providers.py +526 -0
- sqlspec/extensions/litestar/store.py +296 -0
- sqlspec/extensions/otel/__init__.py +58 -0
- sqlspec/extensions/prometheus/__init__.py +113 -0
- sqlspec/extensions/starlette/__init__.py +19 -0
- sqlspec/extensions/starlette/_state.py +30 -0
- sqlspec/extensions/starlette/_utils.py +96 -0
- sqlspec/extensions/starlette/extension.py +346 -0
- sqlspec/extensions/starlette/middleware.py +235 -0
- sqlspec/loader.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/loader.py +702 -0
- sqlspec/migrations/__init__.py +36 -0
- sqlspec/migrations/base.py +731 -0
- sqlspec/migrations/commands.py +1232 -0
- sqlspec/migrations/context.py +157 -0
- sqlspec/migrations/fix.py +204 -0
- sqlspec/migrations/loaders.py +443 -0
- sqlspec/migrations/runner.py +1172 -0
- sqlspec/migrations/templates.py +234 -0
- sqlspec/migrations/tracker.py +611 -0
- sqlspec/migrations/utils.py +256 -0
- sqlspec/migrations/validation.py +207 -0
- sqlspec/migrations/version.py +446 -0
- sqlspec/observability/__init__.py +55 -0
- sqlspec/observability/_common.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_common.py +77 -0
- sqlspec/observability/_config.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_config.py +348 -0
- sqlspec/observability/_diagnostics.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_diagnostics.py +74 -0
- sqlspec/observability/_dispatcher.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_dispatcher.py +152 -0
- sqlspec/observability/_formatters/__init__.py +13 -0
- sqlspec/observability/_formatters/_aws.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_aws.py +102 -0
- sqlspec/observability/_formatters/_azure.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_azure.py +96 -0
- sqlspec/observability/_formatters/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_base.py +57 -0
- sqlspec/observability/_formatters/_gcp.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_gcp.py +131 -0
- sqlspec/observability/_formatting.py +58 -0
- sqlspec/observability/_observer.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_observer.py +357 -0
- sqlspec/observability/_runtime.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_runtime.py +420 -0
- sqlspec/observability/_sampling.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_sampling.py +188 -0
- sqlspec/observability/_spans.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_spans.py +161 -0
- sqlspec/protocols.py +916 -0
- sqlspec/py.typed +0 -0
- sqlspec/storage/__init__.py +48 -0
- sqlspec/storage/_utils.py +104 -0
- sqlspec/storage/backends/__init__.py +1 -0
- sqlspec/storage/backends/base.py +253 -0
- sqlspec/storage/backends/fsspec.py +529 -0
- sqlspec/storage/backends/local.py +441 -0
- sqlspec/storage/backends/obstore.py +916 -0
- sqlspec/storage/errors.py +104 -0
- sqlspec/storage/pipeline.py +582 -0
- sqlspec/storage/registry.py +301 -0
- sqlspec/typing.py +395 -0
- sqlspec/utils/__init__.py +7 -0
- sqlspec/utils/arrow_helpers.py +318 -0
- sqlspec/utils/config_tools.py +332 -0
- sqlspec/utils/correlation.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/correlation.py +134 -0
- sqlspec/utils/deprecation.py +190 -0
- sqlspec/utils/fixtures.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/fixtures.py +258 -0
- sqlspec/utils/logging.py +222 -0
- sqlspec/utils/module_loader.py +306 -0
- sqlspec/utils/portal.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/portal.py +375 -0
- sqlspec/utils/schema.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/schema.py +485 -0
- sqlspec/utils/serializers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/serializers.py +408 -0
- sqlspec/utils/singleton.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/singleton.py +41 -0
- sqlspec/utils/sync_tools.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/sync_tools.py +311 -0
- sqlspec/utils/text.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/text.py +108 -0
- sqlspec/utils/type_converters.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/type_converters.py +128 -0
- sqlspec/utils/type_guards.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/type_guards.py +1360 -0
- sqlspec/utils/uuids.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/uuids.py +225 -0
- sqlspec-0.36.0.dist-info/METADATA +205 -0
- sqlspec-0.36.0.dist-info/RECORD +531 -0
- sqlspec-0.36.0.dist-info/WHEEL +7 -0
- sqlspec-0.36.0.dist-info/entry_points.txt +2 -0
- sqlspec-0.36.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"""ADBC event queue store with multi-dialect support.
|
|
2
|
+
|
|
3
|
+
ADBC supports the following database backends:
|
|
4
|
+
- PostgreSQL (adbc_driver_postgresql)
|
|
5
|
+
- SQLite (adbc_driver_sqlite)
|
|
6
|
+
- DuckDB (adbc_driver_duckdb)
|
|
7
|
+
- Snowflake (adbc_driver_snowflake)
|
|
8
|
+
- BigQuery (adbc_driver_bigquery)
|
|
9
|
+
- FlightSQL (adbc_driver_flightsql)
|
|
10
|
+
|
|
11
|
+
For unsupported databases (Oracle, Spanner, MySQL), use their native adapters instead.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import logging
|
|
15
|
+
from typing import TYPE_CHECKING, Final
|
|
16
|
+
|
|
17
|
+
from sqlspec.extensions.events import BaseEventQueueStore
|
|
18
|
+
from sqlspec.utils.logging import get_logger, log_with_context
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from sqlspec.adapters.adbc.config import AdbcConfig
|
|
22
|
+
|
|
23
|
+
__all__ = ("AdbcEventQueueStore",)
|
|
24
|
+
|
|
25
|
+
logger = get_logger("sqlspec.adapters.adbc.events.store")
|
|
26
|
+
|
|
27
|
+
DIALECT_POSTGRESQL: Final = "postgres"
|
|
28
|
+
DIALECT_SQLITE: Final = "sqlite"
|
|
29
|
+
DIALECT_DUCKDB: Final = "duckdb"
|
|
30
|
+
DIALECT_BIGQUERY: Final = "bigquery"
|
|
31
|
+
DIALECT_SNOWFLAKE: Final = "snowflake"
|
|
32
|
+
DIALECT_FLIGHTSQL: Final = "flightsql"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class AdbcEventQueueStore(BaseEventQueueStore["AdbcConfig"]):
|
|
36
|
+
"""Event queue store for ADBC with multi-dialect support.
|
|
37
|
+
|
|
38
|
+
ADBC supports multiple database backends, so this store dynamically
|
|
39
|
+
generates DDL appropriate for the detected dialect. Each dialect
|
|
40
|
+
produces different column types and table structures.
|
|
41
|
+
|
|
42
|
+
Dialect detection is performed once on first access and cached for the
|
|
43
|
+
lifetime of the store instance (database type never changes).
|
|
44
|
+
|
|
45
|
+
Supported dialects:
|
|
46
|
+
- PostgreSQL: JSONB columns, TIMESTAMPTZ, partial indexes
|
|
47
|
+
- SQLite: TEXT columns, TIMESTAMP (default fallback)
|
|
48
|
+
- DuckDB: JSON columns, TIMESTAMP
|
|
49
|
+
- BigQuery: JSON/STRING columns, CLUSTER BY (no indexes)
|
|
50
|
+
- Snowflake: VARIANT columns, no indexes supported
|
|
51
|
+
- FlightSQL: Uses SQLite-compatible types (TEXT, TIMESTAMP)
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
config: AdbcConfig with extension_config["events"] settings.
|
|
55
|
+
|
|
56
|
+
Notes:
|
|
57
|
+
Configuration is read from config.extension_config["events"]:
|
|
58
|
+
- queue_table: Table name (default: "sqlspec_event_queue")
|
|
59
|
+
|
|
60
|
+
Example:
|
|
61
|
+
from sqlspec.adapters.adbc import AdbcConfig
|
|
62
|
+
from sqlspec.adapters.adbc.events import AdbcEventQueueStore
|
|
63
|
+
|
|
64
|
+
config = AdbcConfig(
|
|
65
|
+
connection_config={"driver_name": "postgres", "uri": "postgresql://..."},
|
|
66
|
+
extension_config={"events": {"queue_table": "my_events"}}
|
|
67
|
+
)
|
|
68
|
+
store = AdbcEventQueueStore(config)
|
|
69
|
+
for stmt in store.create_statements():
|
|
70
|
+
driver.execute_script(stmt)
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
__slots__ = ("_dialect",)
|
|
74
|
+
|
|
75
|
+
def __init__(self, config: "AdbcConfig") -> None:
|
|
76
|
+
"""Initialize ADBC event queue store.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
config: AdbcConfig instance.
|
|
80
|
+
"""
|
|
81
|
+
super().__init__(config)
|
|
82
|
+
self._dialect: str | None = None
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def dialect(self) -> str:
|
|
86
|
+
"""Return the detected database dialect (cached after first access)."""
|
|
87
|
+
if self._dialect is None:
|
|
88
|
+
self._dialect = self._detect_dialect_from_config()
|
|
89
|
+
return self._dialect
|
|
90
|
+
|
|
91
|
+
def _detect_dialect_from_config(self) -> str:
|
|
92
|
+
"""Detect ADBC driver dialect from connection config.
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
Dialect identifier for DDL generation.
|
|
96
|
+
|
|
97
|
+
Notes:
|
|
98
|
+
Called once on first dialect property access. Inspects driver_name
|
|
99
|
+
and uri from connection_config, then falls back to statement_config
|
|
100
|
+
dialect if available.
|
|
101
|
+
"""
|
|
102
|
+
connection_config = self._config.connection_config
|
|
103
|
+
driver_name = connection_config.get("driver_name", "")
|
|
104
|
+
uri = connection_config.get("uri", "")
|
|
105
|
+
|
|
106
|
+
driver_lower = str(driver_name).lower() if driver_name else ""
|
|
107
|
+
uri_lower = str(uri).lower() if uri else ""
|
|
108
|
+
|
|
109
|
+
if "postgres" in driver_lower or uri_lower.startswith(("postgres://", "postgresql://")):
|
|
110
|
+
return DIALECT_POSTGRESQL
|
|
111
|
+
if "duckdb" in driver_lower or uri_lower.startswith("duckdb://"):
|
|
112
|
+
return DIALECT_DUCKDB
|
|
113
|
+
if (
|
|
114
|
+
"gizmosql" in driver_lower
|
|
115
|
+
or "gizmo" in driver_lower
|
|
116
|
+
or uri_lower.startswith(("gizmosql://", "gizmo://", "grpc+tls://"))
|
|
117
|
+
):
|
|
118
|
+
return DIALECT_DUCKDB
|
|
119
|
+
if "bigquery" in driver_lower or uri_lower.startswith("bigquery://"):
|
|
120
|
+
return DIALECT_BIGQUERY
|
|
121
|
+
if "snowflake" in driver_lower or uri_lower.startswith("snowflake://"):
|
|
122
|
+
return DIALECT_SNOWFLAKE
|
|
123
|
+
if "flightsql" in driver_lower or "grpc" in driver_lower or uri_lower.startswith("grpc://"):
|
|
124
|
+
return DIALECT_FLIGHTSQL
|
|
125
|
+
if "sqlite" in driver_lower or uri_lower.startswith("sqlite://"):
|
|
126
|
+
return DIALECT_SQLITE
|
|
127
|
+
|
|
128
|
+
statement_config = self._config.statement_config
|
|
129
|
+
if statement_config and statement_config.dialect is not None:
|
|
130
|
+
dialect_str = str(statement_config.dialect).lower()
|
|
131
|
+
if dialect_str in {DIALECT_POSTGRESQL, DIALECT_SQLITE, DIALECT_DUCKDB, DIALECT_BIGQUERY, DIALECT_SNOWFLAKE}:
|
|
132
|
+
return dialect_str
|
|
133
|
+
|
|
134
|
+
log_with_context(
|
|
135
|
+
logger,
|
|
136
|
+
logging.DEBUG,
|
|
137
|
+
"events.queue.dialect.fallback",
|
|
138
|
+
adapter_name="adbc",
|
|
139
|
+
driver_name=driver_lower,
|
|
140
|
+
uri=uri_lower,
|
|
141
|
+
dialect=DIALECT_SQLITE,
|
|
142
|
+
)
|
|
143
|
+
return DIALECT_SQLITE
|
|
144
|
+
|
|
145
|
+
def _column_types(self) -> "tuple[str, str, str]":
|
|
146
|
+
"""Return payload, metadata, and timestamp column types for the dialect."""
|
|
147
|
+
dialect = self.dialect
|
|
148
|
+
|
|
149
|
+
if dialect == DIALECT_POSTGRESQL:
|
|
150
|
+
return "JSONB", "JSONB", "TIMESTAMPTZ"
|
|
151
|
+
if dialect == DIALECT_DUCKDB:
|
|
152
|
+
return "JSON", "JSON", "TIMESTAMP"
|
|
153
|
+
if dialect == DIALECT_BIGQUERY:
|
|
154
|
+
return "JSON", "JSON", "TIMESTAMP"
|
|
155
|
+
if dialect == DIALECT_SNOWFLAKE:
|
|
156
|
+
return "VARIANT", "VARIANT", "TIMESTAMP_TZ"
|
|
157
|
+
|
|
158
|
+
return "TEXT", "TEXT", "TIMESTAMP"
|
|
159
|
+
|
|
160
|
+
def _build_create_table_sql(self) -> str:
|
|
161
|
+
"""Build dialect-specific CREATE TABLE SQL."""
|
|
162
|
+
dialect = self.dialect
|
|
163
|
+
|
|
164
|
+
if dialect == DIALECT_BIGQUERY:
|
|
165
|
+
return (
|
|
166
|
+
f"CREATE TABLE IF NOT EXISTS {self.table_name} ("
|
|
167
|
+
"event_id STRING NOT NULL,"
|
|
168
|
+
" channel STRING NOT NULL,"
|
|
169
|
+
" payload_json JSON NOT NULL,"
|
|
170
|
+
" metadata_json JSON,"
|
|
171
|
+
" status STRING NOT NULL DEFAULT 'pending',"
|
|
172
|
+
" available_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),"
|
|
173
|
+
" lease_expires_at TIMESTAMP,"
|
|
174
|
+
" attempts INT64 NOT NULL DEFAULT 0,"
|
|
175
|
+
" created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),"
|
|
176
|
+
" acknowledged_at TIMESTAMP"
|
|
177
|
+
") CLUSTER BY channel, status, available_at"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
if dialect == DIALECT_SNOWFLAKE:
|
|
181
|
+
return (
|
|
182
|
+
f"CREATE TABLE IF NOT EXISTS {self.table_name} ("
|
|
183
|
+
"event_id VARCHAR(64) NOT NULL PRIMARY KEY,"
|
|
184
|
+
" channel VARCHAR(128) NOT NULL,"
|
|
185
|
+
" payload_json VARIANT NOT NULL,"
|
|
186
|
+
" metadata_json VARIANT,"
|
|
187
|
+
" status VARCHAR(32) NOT NULL DEFAULT 'pending',"
|
|
188
|
+
" available_at TIMESTAMP_TZ NOT NULL DEFAULT CURRENT_TIMESTAMP(),"
|
|
189
|
+
" lease_expires_at TIMESTAMP_TZ,"
|
|
190
|
+
" attempts INTEGER NOT NULL DEFAULT 0,"
|
|
191
|
+
" created_at TIMESTAMP_TZ NOT NULL DEFAULT CURRENT_TIMESTAMP(),"
|
|
192
|
+
" acknowledged_at TIMESTAMP_TZ"
|
|
193
|
+
")"
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
if dialect == DIALECT_DUCKDB:
|
|
197
|
+
return (
|
|
198
|
+
f"CREATE TABLE IF NOT EXISTS {self.table_name} ("
|
|
199
|
+
"event_id VARCHAR(64) PRIMARY KEY,"
|
|
200
|
+
" channel VARCHAR(128) NOT NULL,"
|
|
201
|
+
" payload_json JSON NOT NULL,"
|
|
202
|
+
" metadata_json JSON,"
|
|
203
|
+
" status VARCHAR(32) NOT NULL DEFAULT 'pending',"
|
|
204
|
+
" available_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,"
|
|
205
|
+
" lease_expires_at TIMESTAMP,"
|
|
206
|
+
" attempts INTEGER NOT NULL DEFAULT 0,"
|
|
207
|
+
" created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,"
|
|
208
|
+
" acknowledged_at TIMESTAMP"
|
|
209
|
+
")"
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
if dialect == DIALECT_POSTGRESQL:
|
|
213
|
+
return (
|
|
214
|
+
f"CREATE TABLE IF NOT EXISTS {self.table_name} ("
|
|
215
|
+
"event_id VARCHAR(64) PRIMARY KEY,"
|
|
216
|
+
" channel VARCHAR(128) NOT NULL,"
|
|
217
|
+
" payload_json JSONB NOT NULL,"
|
|
218
|
+
" metadata_json JSONB,"
|
|
219
|
+
" status VARCHAR(32) NOT NULL DEFAULT 'pending',"
|
|
220
|
+
" available_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,"
|
|
221
|
+
" lease_expires_at TIMESTAMPTZ,"
|
|
222
|
+
" attempts INTEGER NOT NULL DEFAULT 0,"
|
|
223
|
+
" created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,"
|
|
224
|
+
" acknowledged_at TIMESTAMPTZ"
|
|
225
|
+
")"
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
return super()._build_create_table_sql()
|
|
229
|
+
|
|
230
|
+
def _build_index_sql(self) -> str | None:
|
|
231
|
+
"""Build dialect-specific index SQL."""
|
|
232
|
+
dialect = self.dialect
|
|
233
|
+
|
|
234
|
+
if dialect == DIALECT_BIGQUERY:
|
|
235
|
+
return None
|
|
236
|
+
if dialect == DIALECT_SNOWFLAKE:
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
if dialect == DIALECT_POSTGRESQL:
|
|
240
|
+
return (
|
|
241
|
+
f"CREATE INDEX IF NOT EXISTS {self._index_name()} "
|
|
242
|
+
f"ON {self.table_name}(channel, status, available_at) "
|
|
243
|
+
"WHERE status = 'pending'"
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
return super()._build_index_sql()
|
|
247
|
+
|
|
248
|
+
def _wrap_create_statement(self, statement: str, object_type: str) -> str:
|
|
249
|
+
"""Return statement unchanged since ADBC dialects support IF NOT EXISTS.
|
|
250
|
+
|
|
251
|
+
Args:
|
|
252
|
+
statement: The DDL statement.
|
|
253
|
+
object_type: Unused - ADBC dialects handle existence checks natively.
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
The statement unchanged.
|
|
257
|
+
"""
|
|
258
|
+
del object_type
|
|
259
|
+
return statement
|
|
260
|
+
|
|
261
|
+
def _wrap_drop_statement(self, statement: str) -> str:
|
|
262
|
+
"""Return statement unchanged since ADBC dialects support IF EXISTS."""
|
|
263
|
+
return statement
|
|
264
|
+
|
|
265
|
+
def create_statements(self) -> "list[str]":
|
|
266
|
+
"""Return DDL statements for table creation.
|
|
267
|
+
|
|
268
|
+
Returns separate statements for table and index to support
|
|
269
|
+
databases that require separate execution.
|
|
270
|
+
"""
|
|
271
|
+
statements = [self._build_create_table_sql()]
|
|
272
|
+
index_sql = self._build_index_sql()
|
|
273
|
+
if index_sql:
|
|
274
|
+
statements.append(index_sql)
|
|
275
|
+
return statements
|
|
276
|
+
|
|
277
|
+
def drop_statements(self) -> "list[str]":
|
|
278
|
+
"""Return drop statements in reverse dependency order."""
|
|
279
|
+
dialect = self.dialect
|
|
280
|
+
|
|
281
|
+
if dialect in {DIALECT_BIGQUERY, DIALECT_SNOWFLAKE}:
|
|
282
|
+
return [f"DROP TABLE IF EXISTS {self.table_name}"]
|
|
283
|
+
|
|
284
|
+
index_name = self._index_name()
|
|
285
|
+
return [f"DROP INDEX IF EXISTS {index_name}", f"DROP TABLE IF EXISTS {self.table_name}"]
|