datajunction-server 0.0.1a67__tar.gz → 0.0.1a68.dev0__tar.gz
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.
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/PKG-INFO +1 -1
- datajunction_server-0.0.1a68.dev0/alembic/versions/2024_10_05_1707-f953dc7ec5a5_add_indexes_on_history.py +28 -0
- datajunction_server-0.0.1a68.dev0/alembic/versions/2024_10_05_1713-6b30d917f125_add_indexes_on_history2.py +28 -0
- datajunction_server-0.0.1a68.dev0/alembic/versions/2024_10_05_1720-90d6250dc394_add_indexes_on_nodes.py +29 -0
- datajunction_server-0.0.1a68.dev0/alembic/versions/2024_10_06_0447-1c13a84b41d6_add_indexes_on_node_namespace.py +28 -0
- datajunction_server-0.0.1a68.dev0/datajunction_server/__about__.py +4 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/helpers.py +1 -1
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/nodes.py +130 -5
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/build_v2.py +23 -10
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/nodes.py +2 -2
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/dimensionlink.py +2 -2
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/dag.py +59 -18
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/ast.py +5 -1
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/dimension_links_test.py +211 -5
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/nodes_test.py +108 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/examples.py +3 -1
- datajunction_server-0.0.1a67/datajunction_server/__about__.py +0 -4
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.coveragerc +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.env +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.env.integration +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.flake8 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.gitignore +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.isort.cfg +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.pre-commit-config.yaml +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/.pylintrc +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/Dockerfile +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/Makefile +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/README.md +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/README +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/env.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/script.py.mako +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2023_12_20_1829-724445d2b29d_initial_migration.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_01_08_2034-945d44abcd32_add_dimension_links.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_01_11_2032-c74b11566d82_add_column_order.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_01_18_2011-20f060b02772_switch_enum_values.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_01_23_0617-c9cef8864ecb_add_missing_table_attribute_to_source_.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_01_23_1655-a8e22109be24_availability_state_s_valid_through_ts_.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_02_22_0713-d61fb7e48cc3_cascade_deletes_to_dimension_links.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_04_30_1556-de7ec1c82fe0_add_query_requests.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_05_09_1420-9b1227ff17f4_update_backfill_spec.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_05_21_0012-57fc93ef6947_add_query_id_to_queryrequest.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_06_21_1301-640a814db2d8_add_collection_tables.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_07_12_0348-34171c92dd6d_set_user_username_to_be_unique.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic/versions/2024_08_18_0036-f3c9b40deb6f_add_create_by_to_nodes_node_revisions_.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/alembic.ini +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/access/authentication/whoami.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/attributes.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/catalogs.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/client.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/collection.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/cubes.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/data.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/dimensions.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/djsql.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/engines.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/catalogs.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/engines.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/main.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/resolvers/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/resolvers/nodes.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/availabilitystate.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/catalog_engine.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/column.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/materialization.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/metricmetadata.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/node.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/scalars/user.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/graphql/utils.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/health.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/history.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/logging.conf +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/main.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/materializations.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/measures.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/metrics.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/namespaces.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/sql.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/tags.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/users.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/config.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/constants.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/build.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/dimensions.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/dj_query.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/exceptions.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/construction/utils.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/attributetype.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/availabilitystate.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/backfill.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/base.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/catalog.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/collection.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/column.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/database.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/dimensionlink.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/engine.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/history.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/materialization.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/measure.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/metricmetadata.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/namespace.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/node.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/partition.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/queryrequest.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/tag.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/database/user.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/enum.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/errors.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/basic.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/github.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/google.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/http.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authentication/tokens.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/access/authorization.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/client.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/engines.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/materializations.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/namespaces.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/client_setup.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/create_cube.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/create_dimension.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/create_metric.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/create_transform.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/link_dimension.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/namespace_mapping.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/register_table.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/templates/set_column_attributes.j2 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/internal/validation.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/materialization/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/materialization/jobs/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/materialization/jobs/cube_materialization.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/materialization/jobs/job_types.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/materialization/jobs/materialization_job.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/access.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/attribute.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/base.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/catalog.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/collection.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/column.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/cube.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/database.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/engine.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/history.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/materialization.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/measure.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/metric.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/node.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/node_type.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/partition.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/query.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/sql.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/table.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/tag.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/models/user.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/naming.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/service_clients.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/functions.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/antlr4.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/exceptions.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseLexer.g4 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/SqlBaseParser.g4 +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.interp +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseLexer.tokens +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.interp +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParser.tokens +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserListener.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/backends/grammar/generated/SqlBaseParserVisitor.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/parsing/types.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/superset.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/transpilation.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/typing.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/utils.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/pdm.lock +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/pyproject.toml +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/requirements/docker.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/requirements/test.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/scripts/docs-snippets.js +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/scripts/docs-snippets.sh +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/scripts/generate-openapi.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/access_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/attributes_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/catalog_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/client_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/collections_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/cubes_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/data_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/dimensions_access_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/dimensions_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/djql_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/engine_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_cube.repairs_cube.namespace.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_cube.repairs_cube.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_dimension.repair_order.namespace.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_dimension.repair_order.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_metric.num_repair_orders.namespace.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_metric.num_repair_orders.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_transform.regional_level_agg.namespace.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/create_transform.regional_level_agg.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/dimension_links.repair_orders.namespace.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/dimension_links.repair_orders.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/include_client_setup.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/notebook.create_cube.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/notebook.create_transform.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/notebook.link_dimension.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/notebook.set_attribute.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/client_test/register_table.txt +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.druid_spec.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.druid_spec.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.partition.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.full.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.categorical.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.druid_spec.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.patched.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_measures_cube.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.categorical.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.druid_spec.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/druid_metrics_cube.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.config.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.materializations.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.config.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.materializations.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.partition.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.full.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.incremental.additional.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.incremental.categorical.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.incremental.config.json +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.incremental.lookback.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/files/materializations_test/spark_sql.incremental.query.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/graphql/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/graphql/catalog_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/graphql/engine_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/graphql/find_nodes_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/health_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/helpers_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/history_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/materializations_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/measures_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/metrics_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/namespaces_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/nodes_update_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/routers_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/sql_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/sql_v2_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/tags_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/api/users_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/conftest.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/build_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/build_v2_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/compile_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/exceptions_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/fixtures.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/inference_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/construction/utils_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/default.duckdb +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/duckdb.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/errors_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/integration/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/integration/basic_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/internal/authentication/basic_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/internal/authentication/github_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/internal/authentication/http_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/internal/authentication/token_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/internal/authentication/whoami_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/migrations_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/catalog_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/hash_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/measure_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/node_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/models/query_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/pytest.ini +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/service_clients_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/dag_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/functions_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/backends/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/backends/antlr4_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/backends/types_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/__init__.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query1.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query10.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query11.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query12.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query13.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query14.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query15.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query16.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query17.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query18.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query19.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query2.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query20.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query21.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query22.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query23.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query24.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query25.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query26.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query27.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query28.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query29.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query3.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query30.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query31.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query32.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query33.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query34.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query35.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query36.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query37.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query38.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query39.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query4.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query40.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query41.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query42.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query43.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query44.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query45.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query46.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query47.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query48.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query49.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query5.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query50.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query51.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query52.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query53.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query54.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query55.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query56.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query57.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query58.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query59.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query6.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query60.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query61.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query62.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query63.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query64.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query65.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query66.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query67.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query68.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query69.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query7.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query70.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query71.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query72.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query73.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query74.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query75.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query76.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query77.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query78.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query79.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query8.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query80.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query81.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query82.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query83.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query84.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query85.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query86.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query87.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query88.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query89.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query9.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query90.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query91.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query92.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query93.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query94.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query95.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query96.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query97.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query98.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/ansi/query99.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query1.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query10.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query11.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query12.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query13.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query14.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query15.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query16.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query17.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query18.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query19.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query2.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query20.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query21.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query22.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query23.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query24.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query25.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query26.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query27.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query28.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query29.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query3.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query30.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query31.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query32.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query33.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query34.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query35.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query36.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query37.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query38.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query39.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query4.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query40.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query41.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query42.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query43.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query44.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query45.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query46.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query47.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query48.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query49.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query5.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query50.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query51.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query52.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query53.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query54.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query55.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query56.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query57.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query58.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query59.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query6.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query60.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query61.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query62.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query63.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query64.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query65.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query66.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query67.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query68.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query69.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query7.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query70.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query71.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query72.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query73.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query74.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query75.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query76.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query77.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query78.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query79.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query8.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query80.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query81.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query82.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query83.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query84.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query85.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query86.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query87.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query88.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query89.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query9.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query90.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query91.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query92.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query93.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query94.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query95.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query96.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query97.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query98.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/sparksql/query99.sql +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/queries/tpcds/test_tpcds.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/parsing/test_ast.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/sql/utils.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/superset_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/transpilation_test.py +0 -0
- {datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/tests/utils_test.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: datajunction-server
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.1a68.dev0
|
|
4
4
|
Summary: DataJunction server library for running to a DataJunction server
|
|
5
5
|
Project-URL: repository, https://github.com/DataJunction/dj
|
|
6
6
|
Author-email: DataJunction Authors <yian.shang@gmail.com>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Add indexes on history
|
|
2
|
+
|
|
3
|
+
Revision ID: f953dc7ec5a5
|
|
4
|
+
Revises: f3c9b40deb6f
|
|
5
|
+
Create Date: 2024-10-05 17:07:17.320467+00:00
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module
|
|
9
|
+
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from alembic import op
|
|
12
|
+
from sqlalchemy.dialects import postgresql
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = 'f953dc7ec5a5'
|
|
16
|
+
down_revision = 'f3c9b40deb6f'
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
with op.batch_alter_table('history', schema=None) as batch_op:
|
|
23
|
+
batch_op.create_index(batch_op.f('ix_history_entity_name'), ['entity_name'], unique=False)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade():
|
|
27
|
+
with op.batch_alter_table('history', schema=None) as batch_op:
|
|
28
|
+
batch_op.drop_index(batch_op.f('ix_history_entity_name'))
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Add indexes on history2
|
|
2
|
+
|
|
3
|
+
Revision ID: 6b30d917f125
|
|
4
|
+
Revises: f953dc7ec5a5
|
|
5
|
+
Create Date: 2024-10-05 17:13:00.623878+00:00
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module
|
|
9
|
+
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from alembic import op
|
|
12
|
+
from sqlalchemy.dialects import postgresql
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = '6b30d917f125'
|
|
16
|
+
down_revision = 'f953dc7ec5a5'
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
with op.batch_alter_table('history', schema=None) as batch_op:
|
|
23
|
+
batch_op.create_index(batch_op.f('ix_history_user'), ['user'], unique=False)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade():
|
|
27
|
+
with op.batch_alter_table('history', schema=None) as batch_op:
|
|
28
|
+
batch_op.drop_index(batch_op.f('ix_history_user'))
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Add indexes on nodes
|
|
2
|
+
|
|
3
|
+
Revision ID: 90d6250dc394
|
|
4
|
+
Revises: 6b30d917f125
|
|
5
|
+
Create Date: 2024-10-05 17:20:13.317534+00:00
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module
|
|
9
|
+
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from alembic import op
|
|
12
|
+
from sqlalchemy.dialects import postgresql
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = '90d6250dc394'
|
|
16
|
+
down_revision = '6b30d917f125'
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
with op.batch_alter_table('node', schema=None) as batch_op:
|
|
23
|
+
batch_op.create_index('cursor_index', ['created_at', 'id'], unique=False, postgresql_using='btree')
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade():
|
|
27
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
|
28
|
+
with op.batch_alter_table('node', schema=None) as batch_op:
|
|
29
|
+
batch_op.drop_index('cursor_index', postgresql_using='btree')
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Add indexes on node namespace
|
|
2
|
+
|
|
3
|
+
Revision ID: 1c13a84b41d6
|
|
4
|
+
Revises: 90d6250dc394
|
|
5
|
+
Create Date: 2024-10-06 04:47:18.214335+00:00
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=no-member, invalid-name, missing-function-docstring, unused-import, no-name-in-module
|
|
9
|
+
|
|
10
|
+
import sqlalchemy as sa
|
|
11
|
+
from alembic import op
|
|
12
|
+
from sqlalchemy.dialects import postgresql
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = '1c13a84b41d6'
|
|
16
|
+
down_revision = '90d6250dc394'
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade():
|
|
22
|
+
with op.batch_alter_table('node', schema=None) as batch_op:
|
|
23
|
+
batch_op.create_index('namespace_index', ['namespace'], unique=False, postgresql_using='btree', postgresql_ops={"identifier": "varchar_pattern_ops"},)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade():
|
|
27
|
+
with op.batch_alter_table('node', schema=None) as batch_op:
|
|
28
|
+
batch_op.drop_index('namespace_index', postgresql_using='text_pattern_ops')
|
|
@@ -739,7 +739,7 @@ async def build_sql_for_multiple_metrics( # pylint: disable=too-many-arguments,
|
|
|
739
739
|
# It must be either a Source node or some type of Materialized node.
|
|
740
740
|
# Even if there is no availability state for it right now, this qery may be built
|
|
741
741
|
# for future execution, so we don't need to check for availability state here.
|
|
742
|
-
if tbl.dj_node
|
|
742
|
+
if tbl.dj_node and tbl.dj_node.type == NodeType.SOURCE
|
|
743
743
|
],
|
|
744
744
|
),
|
|
745
745
|
engine,
|
{datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/api/nodes.py
RENAMED
|
@@ -67,9 +67,9 @@ from datajunction_server.internal.validation import validate_node_data
|
|
|
67
67
|
from datajunction_server.models import access
|
|
68
68
|
from datajunction_server.models.attribute import AttributeTypeIdentifier
|
|
69
69
|
from datajunction_server.models.dimensionlink import (
|
|
70
|
+
JoinLinkInput,
|
|
70
71
|
JoinType,
|
|
71
72
|
LinkDimensionIdentifier,
|
|
72
|
-
LinkDimensionInput,
|
|
73
73
|
)
|
|
74
74
|
from datajunction_server.models.node import (
|
|
75
75
|
ColumnOutput,
|
|
@@ -874,7 +874,7 @@ async def link_dimension(
|
|
|
874
874
|
" These column types are incompatible and the dimension cannot be linked",
|
|
875
875
|
)
|
|
876
876
|
|
|
877
|
-
link_input =
|
|
877
|
+
link_input = JoinLinkInput(
|
|
878
878
|
dimension_node=dimension,
|
|
879
879
|
join_type=JoinType.LEFT,
|
|
880
880
|
join_on=(
|
|
@@ -910,10 +910,130 @@ async def link_dimension(
|
|
|
910
910
|
)
|
|
911
911
|
|
|
912
912
|
|
|
913
|
+
@router.post("/nodes/{node_name}/columns/{node_column}/link", status_code=201)
|
|
914
|
+
async def add_reference_dimension_link(
|
|
915
|
+
node_name: str,
|
|
916
|
+
node_column: str,
|
|
917
|
+
dimension_node: str,
|
|
918
|
+
dimension_column: str,
|
|
919
|
+
role: Optional[str] = None,
|
|
920
|
+
session: AsyncSession = Depends(get_session),
|
|
921
|
+
current_user: User = Depends(get_and_update_current_user),
|
|
922
|
+
) -> JSONResponse:
|
|
923
|
+
"""
|
|
924
|
+
Add reference dimension link to a node column
|
|
925
|
+
"""
|
|
926
|
+
node = await Node.get_by_name(session, node_name, raise_if_not_exists=True)
|
|
927
|
+
dim_node = await Node.get_by_name(session, dimension_node, raise_if_not_exists=True)
|
|
928
|
+
if dim_node.type != NodeType.DIMENSION: # type: ignore
|
|
929
|
+
raise DJInvalidInputException(
|
|
930
|
+
message=f"Node {node.name} is not of type dimension!", # type: ignore
|
|
931
|
+
)
|
|
932
|
+
|
|
933
|
+
# The target and dimension columns should both exist
|
|
934
|
+
target_column = await get_column(session, node.current, node_column) # type: ignore
|
|
935
|
+
dim_column = await get_column(session, dim_node.current, dimension_column) # type: ignore
|
|
936
|
+
|
|
937
|
+
# Check the dimension column's type is compatible with the target column's type
|
|
938
|
+
if not dim_column.type.is_compatible(target_column.type):
|
|
939
|
+
raise DJInvalidInputException(
|
|
940
|
+
f"The column {target_column.name} has type {target_column.type} "
|
|
941
|
+
f"and is being linked to the dimension {dimension_node} "
|
|
942
|
+
f"via the dimension column {dimension_column}, which has "
|
|
943
|
+
f"type {dim_column.type}. These column types are incompatible"
|
|
944
|
+
" and the dimension cannot be linked",
|
|
945
|
+
)
|
|
946
|
+
|
|
947
|
+
activity_type = (
|
|
948
|
+
ActivityType.UPDATE if target_column.dimension_column else ActivityType.CREATE
|
|
949
|
+
)
|
|
950
|
+
|
|
951
|
+
# Create the reference link
|
|
952
|
+
target_column.dimension_id = dim_node.id # type: ignore
|
|
953
|
+
target_column.dimension_column = (
|
|
954
|
+
f"{dimension_column}[{role}]" if role else dimension_column
|
|
955
|
+
)
|
|
956
|
+
session.add(target_column)
|
|
957
|
+
session.add(
|
|
958
|
+
History(
|
|
959
|
+
entity_type=EntityType.LINK,
|
|
960
|
+
entity_name=node.name, # type: ignore
|
|
961
|
+
node=node.name, # type: ignore
|
|
962
|
+
activity_type=activity_type,
|
|
963
|
+
details={
|
|
964
|
+
"node_name": node_name, # type: ignore
|
|
965
|
+
"node_column": node_column,
|
|
966
|
+
"dimension_node": dimension_node,
|
|
967
|
+
"dimension_column": dimension_column,
|
|
968
|
+
"role": role,
|
|
969
|
+
},
|
|
970
|
+
user=current_user.username,
|
|
971
|
+
),
|
|
972
|
+
)
|
|
973
|
+
await session.commit()
|
|
974
|
+
return JSONResponse(
|
|
975
|
+
status_code=201,
|
|
976
|
+
content={
|
|
977
|
+
"message": (
|
|
978
|
+
f"{node_name}.{node_column} has been successfully "
|
|
979
|
+
f"linked to {dimension_node}.{dimension_column}"
|
|
980
|
+
),
|
|
981
|
+
},
|
|
982
|
+
)
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
@router.delete("/nodes/{node_name}/columns/{node_column}/link", status_code=201)
|
|
986
|
+
async def remove_reference_dimension_link(
|
|
987
|
+
node_name: str,
|
|
988
|
+
node_column: str,
|
|
989
|
+
session: AsyncSession = Depends(get_session),
|
|
990
|
+
current_user: User = Depends(get_and_update_current_user),
|
|
991
|
+
) -> JSONResponse:
|
|
992
|
+
"""
|
|
993
|
+
Remove reference dimension link from a node column
|
|
994
|
+
"""
|
|
995
|
+
node = await Node.get_by_name(session, node_name, raise_if_not_exists=True)
|
|
996
|
+
target_column = await get_column(session, node.current, node_column) # type: ignore
|
|
997
|
+
if target_column.dimension_id or target_column.dimension_column:
|
|
998
|
+
target_column.dimension_id = None
|
|
999
|
+
target_column.dimension_column = None
|
|
1000
|
+
session.add(target_column)
|
|
1001
|
+
session.add(
|
|
1002
|
+
History(
|
|
1003
|
+
entity_type=EntityType.LINK,
|
|
1004
|
+
entity_name=node.name, # type: ignore
|
|
1005
|
+
node=node.name, # type: ignore
|
|
1006
|
+
activity_type=ActivityType.DELETE,
|
|
1007
|
+
details={
|
|
1008
|
+
"node_name": node_name, # type: ignore
|
|
1009
|
+
"node_column": node_column,
|
|
1010
|
+
},
|
|
1011
|
+
user=current_user.username,
|
|
1012
|
+
),
|
|
1013
|
+
)
|
|
1014
|
+
session.commit()
|
|
1015
|
+
return JSONResponse(
|
|
1016
|
+
status_code=200,
|
|
1017
|
+
content={
|
|
1018
|
+
"message": (
|
|
1019
|
+
f"The reference dimension link on {node_name}.{node_column} has been removed."
|
|
1020
|
+
),
|
|
1021
|
+
},
|
|
1022
|
+
)
|
|
1023
|
+
return JSONResponse(
|
|
1024
|
+
status_code=200,
|
|
1025
|
+
content={
|
|
1026
|
+
"message": (
|
|
1027
|
+
f"There is no reference dimension link on {node_name}.{node_column}."
|
|
1028
|
+
),
|
|
1029
|
+
},
|
|
1030
|
+
)
|
|
1031
|
+
|
|
1032
|
+
|
|
913
1033
|
@router.post("/nodes/{node_name}/link/", status_code=201)
|
|
914
1034
|
async def add_complex_dimension_link( # pylint: disable=too-many-locals
|
|
915
1035
|
node_name: str,
|
|
916
|
-
link_input:
|
|
1036
|
+
link_input: JoinLinkInput,
|
|
917
1037
|
session: AsyncSession = Depends(get_session),
|
|
918
1038
|
current_user: User = Depends(get_and_update_current_user),
|
|
919
1039
|
) -> JSONResponse:
|
|
@@ -1337,7 +1457,7 @@ async def list_node_dag(
|
|
|
1337
1457
|
name="List All Dimension Attributes",
|
|
1338
1458
|
)
|
|
1339
1459
|
async def list_all_dimension_attributes(
|
|
1340
|
-
name: str, *, session: AsyncSession = Depends(get_session)
|
|
1460
|
+
name: str, *, depth: int = 30, session: AsyncSession = Depends(get_session)
|
|
1341
1461
|
) -> List[DimensionAttributeOutput]:
|
|
1342
1462
|
"""
|
|
1343
1463
|
List all available dimension attributes for the given node.
|
|
@@ -1353,7 +1473,12 @@ async def list_all_dimension_attributes(
|
|
|
1353
1473
|
],
|
|
1354
1474
|
)
|
|
1355
1475
|
)
|
|
1356
|
-
dimensions = await get_dimensions(
|
|
1476
|
+
dimensions = await get_dimensions(
|
|
1477
|
+
session,
|
|
1478
|
+
node, # type: ignore
|
|
1479
|
+
with_attributes=True,
|
|
1480
|
+
depth=depth,
|
|
1481
|
+
)
|
|
1357
1482
|
filter_only_dimensions = await get_filter_only_dimensions(session, name)
|
|
1358
1483
|
return dimensions + filter_only_dimensions
|
|
1359
1484
|
|
|
@@ -693,7 +693,7 @@ class QueryBuilder: # pylint: disable=too-many-instance-attributes,too-many-pub
|
|
|
693
693
|
self.node_revision,
|
|
694
694
|
dimension_attr.name,
|
|
695
695
|
)
|
|
696
|
-
if not join_path:
|
|
696
|
+
if not join_path and join_path != []:
|
|
697
697
|
self.errors.append(
|
|
698
698
|
DJQueryBuildError(
|
|
699
699
|
code=ErrorCode.INVALID_DIMENSION_JOIN,
|
|
@@ -733,6 +733,15 @@ def get_column_from_canonical_dimension(
|
|
|
733
733
|
if dimension_attr.node_name == node.name:
|
|
734
734
|
column_name = dimension_attr.column_name
|
|
735
735
|
|
|
736
|
+
# Dimension requested has reference link on node
|
|
737
|
+
for column in node.columns:
|
|
738
|
+
if (
|
|
739
|
+
column.dimension
|
|
740
|
+
and column.dimension.name == dimension_attr.node_name
|
|
741
|
+
and column.dimension_column == dimension_attr.column_name
|
|
742
|
+
):
|
|
743
|
+
column_name = column.name
|
|
744
|
+
|
|
736
745
|
# Dimension referenced was foreign key of dimension link
|
|
737
746
|
link = next(
|
|
738
747
|
(
|
|
@@ -781,14 +790,18 @@ async def dimension_join_path(
|
|
|
781
790
|
list of dimension links that represent the join path
|
|
782
791
|
"""
|
|
783
792
|
# Check if it is a local dimension
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
793
|
+
for col in node.columns: # pragma: no cover
|
|
794
|
+
# Decide if we should restrict this to only columns marked as dimensional
|
|
795
|
+
# await session.refresh(col, ["attributes"]) TODO
|
|
796
|
+
# if col.is_dimensional():
|
|
797
|
+
# ...
|
|
798
|
+
if f"{node.name}.{col.name}" == dimension:
|
|
799
|
+
return []
|
|
800
|
+
if (
|
|
801
|
+
col.dimension
|
|
802
|
+
and f"{col.dimension.name}.{col.dimension_column}" == dimension
|
|
803
|
+
):
|
|
804
|
+
return []
|
|
792
805
|
|
|
793
806
|
dimension_attr = FullColumnName(dimension)
|
|
794
807
|
|
|
@@ -801,7 +814,7 @@ async def dimension_join_path(
|
|
|
801
814
|
[(link, [link]) for link in node.dimension_links],
|
|
802
815
|
)
|
|
803
816
|
while processing_queue:
|
|
804
|
-
current_link, join_path = processing_queue.
|
|
817
|
+
current_link, join_path = processing_queue.popleft()
|
|
805
818
|
await session.refresh(current_link, ["dimension"])
|
|
806
819
|
if current_link.dimension.name == dimension_attr.node_name:
|
|
807
820
|
return join_path
|
|
@@ -50,8 +50,8 @@ from datajunction_server.models.attribute import (
|
|
|
50
50
|
from datajunction_server.models.base import labelize
|
|
51
51
|
from datajunction_server.models.cube import CubeElementMetadata, CubeRevisionMetadata
|
|
52
52
|
from datajunction_server.models.dimensionlink import (
|
|
53
|
+
JoinLinkInput,
|
|
53
54
|
LinkDimensionIdentifier,
|
|
54
|
-
LinkDimensionInput,
|
|
55
55
|
)
|
|
56
56
|
from datajunction_server.models.history import status_change_history
|
|
57
57
|
from datajunction_server.models.materialization import (
|
|
@@ -1486,7 +1486,7 @@ async def get_cube_revision_metadata(session: AsyncSession, name: str):
|
|
|
1486
1486
|
async def upsert_complex_dimension_link(
|
|
1487
1487
|
session: AsyncSession,
|
|
1488
1488
|
node_name: str,
|
|
1489
|
-
link_input:
|
|
1489
|
+
link_input: JoinLinkInput,
|
|
1490
1490
|
current_user: User,
|
|
1491
1491
|
) -> ActivityType:
|
|
1492
1492
|
"""
|
|
@@ -39,9 +39,9 @@ class LinkDimensionIdentifier(BaseModel):
|
|
|
39
39
|
role: Optional[str]
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
class
|
|
42
|
+
class JoinLinkInput(BaseModel):
|
|
43
43
|
"""
|
|
44
|
-
Input for
|
|
44
|
+
Input for creating a join link between a dimension node and node
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
47
|
dimension_node: str
|
{datajunction_server-0.0.1a67 → datajunction_server-0.0.1a68.dev0}/datajunction_server/sql/dag.py
RENAMED
|
@@ -86,7 +86,9 @@ async def get_downstream_nodes(
|
|
|
86
86
|
)
|
|
87
87
|
if not include_cubes:
|
|
88
88
|
initial_dag = initial_dag.where((NodeRevision.type != NodeType.CUBE))
|
|
89
|
-
dag = initial_dag.cte("downstreams", recursive=True)
|
|
89
|
+
dag = initial_dag.cte("downstreams", recursive=True).suffix_with(
|
|
90
|
+
"CYCLE node_id SET is_cycle USING path",
|
|
91
|
+
)
|
|
90
92
|
|
|
91
93
|
next_layer = (
|
|
92
94
|
select(
|
|
@@ -166,19 +168,25 @@ async def get_upstream_nodes(
|
|
|
166
168
|
)
|
|
167
169
|
|
|
168
170
|
dag = (
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
(
|
|
172
|
+
select(
|
|
173
|
+
NodeRelationship.child_id,
|
|
174
|
+
NodeRevision.id,
|
|
175
|
+
NodeRevision.node_id,
|
|
176
|
+
)
|
|
177
|
+
.where(NodeRelationship.child_id == node.current.id)
|
|
178
|
+
.join(Node, NodeRelationship.parent_id == Node.id)
|
|
179
|
+
.join(
|
|
180
|
+
NodeRevision,
|
|
181
|
+
(Node.id == NodeRevision.node_id)
|
|
182
|
+
& (Node.current_version == NodeRevision.version),
|
|
183
|
+
)
|
|
173
184
|
)
|
|
174
|
-
.
|
|
175
|
-
.
|
|
176
|
-
|
|
177
|
-
NodeRevision,
|
|
178
|
-
(Node.id == NodeRevision.node_id)
|
|
179
|
-
& (Node.current_version == NodeRevision.version),
|
|
185
|
+
.cte("upstreams", recursive=True)
|
|
186
|
+
.suffix_with(
|
|
187
|
+
"CYCLE node_id SET is_cycle USING path",
|
|
180
188
|
)
|
|
181
|
-
)
|
|
189
|
+
)
|
|
182
190
|
|
|
183
191
|
paths = dag.union_all(
|
|
184
192
|
select(
|
|
@@ -220,6 +228,7 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
220
228
|
session: AsyncSession,
|
|
221
229
|
node_revision: NodeRevision,
|
|
222
230
|
with_attributes: bool = True,
|
|
231
|
+
depth: int = 30,
|
|
223
232
|
) -> List[Union[DimensionAttributeOutput, Node]]:
|
|
224
233
|
"""
|
|
225
234
|
Gets the dimensions graph of the given node revision with a single recursive CTE query.
|
|
@@ -245,6 +254,7 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
245
254
|
NodeColumns.node_id.label("node_revision_id"),
|
|
246
255
|
Column.dimension_id,
|
|
247
256
|
Column.name,
|
|
257
|
+
Column.dimension_column,
|
|
248
258
|
)
|
|
249
259
|
.select_from(NodeColumns)
|
|
250
260
|
.join(Column, NodeColumns.column_id == Column.id)
|
|
@@ -261,6 +271,7 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
261
271
|
)
|
|
262
272
|
+ literal("]")
|
|
263
273
|
).label("name"),
|
|
274
|
+
literal(None).label("dimension_column"),
|
|
264
275
|
).select_from(DimensionLink),
|
|
265
276
|
)
|
|
266
277
|
.cte("graph_branches")
|
|
@@ -271,6 +282,7 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
271
282
|
select(
|
|
272
283
|
initial_node.id.label("path_start"),
|
|
273
284
|
graph_branches.c.name.label("col_name"),
|
|
285
|
+
graph_branches.c.dimension_column.label("dimension_column"),
|
|
274
286
|
dimension_node.id.label("path_end"),
|
|
275
287
|
(
|
|
276
288
|
initial_node.name
|
|
@@ -284,6 +296,7 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
284
296
|
dimension_node.name.label("node_name"),
|
|
285
297
|
dimension_rev.id.label("node_revision_id"),
|
|
286
298
|
dimension_rev.display_name.label("node_display_name"),
|
|
299
|
+
literal(0).label("depth"),
|
|
287
300
|
)
|
|
288
301
|
.select_from(initial_node)
|
|
289
302
|
.join(graph_branches, node_revision.id == graph_branches.c.node_revision_id)
|
|
@@ -301,11 +314,15 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
301
314
|
)
|
|
302
315
|
.where(initial_node.id == node_revision.id)
|
|
303
316
|
).cte("dimensions_graph", recursive=True)
|
|
317
|
+
dimensions_graph = dimensions_graph.suffix_with(
|
|
318
|
+
"CYCLE node_revision_id SET is_cycle USING path",
|
|
319
|
+
)
|
|
304
320
|
|
|
305
321
|
paths = dimensions_graph.union_all(
|
|
306
322
|
select(
|
|
307
323
|
dimensions_graph.c.path_start,
|
|
308
324
|
graph_branches.c.name.label("col_name"),
|
|
325
|
+
graph_branches.c.dimension_column.label("dimension_column"),
|
|
309
326
|
next_node.id.label("path_end"),
|
|
310
327
|
(
|
|
311
328
|
dimensions_graph.c.join_path
|
|
@@ -319,10 +336,12 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
319
336
|
next_node.name.label("node_name"),
|
|
320
337
|
next_rev.id.label("node_revision_id"),
|
|
321
338
|
next_rev.display_name.label("node_display_name"),
|
|
322
|
-
|
|
339
|
+
(dimensions_graph.c.depth + literal(1)).label("depth"),
|
|
340
|
+
)
|
|
341
|
+
.select_from(
|
|
323
342
|
dimensions_graph.join(
|
|
324
343
|
current_node,
|
|
325
|
-
dimensions_graph.c.path_end == current_node.id,
|
|
344
|
+
(dimensions_graph.c.path_end == current_node.id),
|
|
326
345
|
)
|
|
327
346
|
.join(
|
|
328
347
|
current_rev,
|
|
@@ -331,10 +350,15 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
331
350
|
current_rev.node_id == current_node.id,
|
|
332
351
|
),
|
|
333
352
|
)
|
|
334
|
-
.join(
|
|
353
|
+
.join(
|
|
354
|
+
graph_branches,
|
|
355
|
+
(current_rev.id == graph_branches.c.node_revision_id)
|
|
356
|
+
& (is_(graph_branches.c.dimension_column, None)),
|
|
357
|
+
)
|
|
335
358
|
.join(
|
|
336
359
|
next_node,
|
|
337
360
|
(next_node.id == graph_branches.c.dimension_id)
|
|
361
|
+
& (is_(graph_branches.c.dimension_column, None))
|
|
338
362
|
& (is_(next_node.deactivated_at, None)),
|
|
339
363
|
)
|
|
340
364
|
.join(
|
|
@@ -344,7 +368,8 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
344
368
|
next_rev.node_id == next_node.id,
|
|
345
369
|
),
|
|
346
370
|
),
|
|
347
|
-
)
|
|
371
|
+
)
|
|
372
|
+
.where(dimensions_graph.c.depth <= depth),
|
|
348
373
|
)
|
|
349
374
|
|
|
350
375
|
# Final SELECT statements
|
|
@@ -380,7 +405,16 @@ async def get_dimensions_dag( # pylint: disable=too-many-locals
|
|
|
380
405
|
)
|
|
381
406
|
.select_from(paths)
|
|
382
407
|
.join(NodeColumns, NodeColumns.node_id == paths.c.node_revision_id)
|
|
383
|
-
.join(
|
|
408
|
+
.join(
|
|
409
|
+
column,
|
|
410
|
+
and_(
|
|
411
|
+
NodeColumns.column_id == column.id,
|
|
412
|
+
or_(
|
|
413
|
+
is_(paths.c.dimension_column, None),
|
|
414
|
+
paths.c.dimension_column == column.name,
|
|
415
|
+
),
|
|
416
|
+
),
|
|
417
|
+
)
|
|
384
418
|
.join(ColumnAttribute, column.id == ColumnAttribute.column_id, isouter=True)
|
|
385
419
|
.join(
|
|
386
420
|
AttributeType,
|
|
@@ -490,6 +524,7 @@ async def get_dimensions(
|
|
|
490
524
|
session: AsyncSession,
|
|
491
525
|
node: Node,
|
|
492
526
|
with_attributes: bool = True,
|
|
527
|
+
depth: int = 30,
|
|
493
528
|
) -> List[Union[DimensionAttributeOutput, Node]]:
|
|
494
529
|
"""
|
|
495
530
|
Return all available dimensions for a given node.
|
|
@@ -501,10 +536,16 @@ async def get_dimensions(
|
|
|
501
536
|
session,
|
|
502
537
|
node.current.parents[0].current,
|
|
503
538
|
with_attributes,
|
|
539
|
+
depth=depth,
|
|
504
540
|
)
|
|
505
541
|
else:
|
|
506
542
|
await session.refresh(node, attribute_names=["current"])
|
|
507
|
-
dag = await get_dimensions_dag(
|
|
543
|
+
dag = await get_dimensions_dag(
|
|
544
|
+
session,
|
|
545
|
+
node.current,
|
|
546
|
+
with_attributes,
|
|
547
|
+
depth=depth,
|
|
548
|
+
)
|
|
508
549
|
return dag
|
|
509
550
|
|
|
510
551
|
|
|
@@ -2682,7 +2682,11 @@ class Query(TableExpression, UnNamed):
|
|
|
2682
2682
|
for cte in (nearest_query.ctes if nearest_query else [])
|
|
2683
2683
|
}
|
|
2684
2684
|
table_options = (
|
|
2685
|
-
|
|
2685
|
+
[
|
|
2686
|
+
tbl
|
|
2687
|
+
for tbl in self.select.from_.find_all(TableExpression)
|
|
2688
|
+
if tbl.get_nearest_parent_of_type(Query) is self
|
|
2689
|
+
]
|
|
2686
2690
|
if self.select.from_
|
|
2687
2691
|
else []
|
|
2688
2692
|
)
|