snowflake-data-validation 1.22.0__tar.gz → 1.23.0__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.
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/.gitignore +14 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/PKG-INFO +56 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/README.md +52 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/pyproject.toml +4 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +2 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +8 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +7 -4
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +10 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +24 -8
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +3 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +6 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +13 -10
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +14 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +10 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +7 -4
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +2 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +3 -2
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +117 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +99 -14
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +5 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +8 -4
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +3 -3
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +4 -34
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +1 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/__init__.py +8 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +4 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +5 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +9 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +16 -5
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +33 -3
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +1 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +3 -3
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +41 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +3 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +4 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +334 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +3 -3
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/__init__.py +1 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +1 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +66 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +166 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +124 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +15 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +114 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +38 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +13 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +10 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +14 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +27 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +24 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +10 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +9 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +1 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +46 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +11 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +103 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +11 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +85 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +1 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +8 -4
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +11 -5
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +2 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +2 -2
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +1 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +34 -9
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +2 -2
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +101 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +27 -44
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +31 -10
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +11 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +4 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/constants.py +32 -2
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +255 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +1 -0
- snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +179 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +19 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +2 -1
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +23 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +17 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +23 -0
- snowflake_data_validation-1.23.0/tests/unit/oracle/test_oracle_iso_normalization.py +103 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/oracle/test_oracle_type_mappings.py +2 -1
- snowflake_data_validation-1.23.0/tests/unit/sqlite/__init__.py +11 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlite/test_connector_factory_sqlite.py +57 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlite/test_connector_sqlite.py +147 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlite/test_metadata_extractor_sqlite.py +97 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlite/test_query_generator_sqlite.py +150 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlite/test_script_writer_sqlite.py +78 -0
- snowflake_data_validation-1.23.0/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +8 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_cell_validation_query_generation.py +3 -3
- snowflake_data_validation-1.23.0/tests/unit/test_comparison_codec.py +378 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_data_validator.py +115 -3
- snowflake_data_validation-1.23.0/tests/unit/test_iso_dv_common.py +200 -0
- snowflake_data_validation-1.23.0/tests/unit/test_platform_bridge.py +30 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_postgresql_tz_normalization.py +0 -26
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_snowflake_arguments_manager.py +1 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sql_literal_jinja_filter.py +34 -3
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sqlserver_arguments_manager.py +2 -4
- snowflake_data_validation-1.23.0/tests/unit/test_target_platform_factory.py +82 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_teradata_iso_normalization.py +32 -39
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_timestamp_golden_vectors.py +83 -14
- snowflake_data_validation-1.22.0/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +0 -223
- snowflake_data_validation-1.22.0/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -221
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/LICENSE +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/docs/README.md +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/__main__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/common_cli/cli_partitioning.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/common_cli/cli_sync_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/main_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/console_progress_reporter.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/redshift_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_cli.py +0 -0
- {snowflake_data_validation-1.22.0/tests/unit/azure_synapse → snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor}/__init__.py +0 -0
- /snowflake_data_validation-1.22.0/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 → /snowflake_data_validation-1.23.0/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/teradata/teradata_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_general.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_generate_validation_scripts.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_get_configuration_files.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_run_async_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_run_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/cli/test_redshift_cli_run_validation_ipc.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Teradata/test_query_generator_teradata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/Teradata/test_teradata_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.22.0/tests/unit/oracle → snowflake_data_validation-1.23.0/tests/unit/azure_synapse}/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.22.0/tests/unit/sqlserver → snowflake_data_validation-1.23.0/tests/unit/oracle}/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_accepted_transformation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_console_progress_reporter.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_metrics_templates_casts.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_result_set_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_snowflake_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_source_validation_executor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sqlserver_cli.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.22.0 → snowflake_data_validation-1.23.0}/tests/unit/utils/test_constants.py +0 -0
|
@@ -93,6 +93,20 @@ docs/_build/
|
|
|
93
93
|
# PyBuilder
|
|
94
94
|
.pybuilder/
|
|
95
95
|
target/
|
|
96
|
+
# DV target-platform packages (not PyBuilder ``target/`` build output)
|
|
97
|
+
!data-migration-orchestrator/src/data_migration_orchestrator/data_validation_cloud/platforms/target/
|
|
98
|
+
!data-migration-orchestrator/src/data_migration_orchestrator/data_validation_cloud/platforms/target/**
|
|
99
|
+
!data-migration-orchestrator/tests/platforms/target/
|
|
100
|
+
!data-migration-orchestrator/tests/platforms/target/**
|
|
101
|
+
!snowflake-data-validation/src/snowflake/snowflake_data_validation/target/
|
|
102
|
+
!snowflake-data-validation/src/snowflake/snowflake_data_validation/target/**
|
|
103
|
+
# Re-ignore bytecode under the un-ignored target/ trees (negation above overrides __pycache__/)
|
|
104
|
+
data-migration-orchestrator/src/data_migration_orchestrator/data_validation_cloud/platforms/target/**/__pycache__/
|
|
105
|
+
data-migration-orchestrator/tests/platforms/target/**/__pycache__/
|
|
106
|
+
snowflake-data-validation/src/snowflake/snowflake_data_validation/target/**/__pycache__/
|
|
107
|
+
data-migration-orchestrator/src/data_migration_orchestrator/data_validation_cloud/platforms/target/**/*.pyc
|
|
108
|
+
data-migration-orchestrator/tests/platforms/target/**/*.pyc
|
|
109
|
+
snowflake-data-validation/src/snowflake/snowflake_data_validation/target/**/*.pyc
|
|
96
110
|
|
|
97
111
|
# Jupyter Notebook
|
|
98
112
|
.ipynb_checkpoints
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-data-validation
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.23.0
|
|
4
4
|
Summary: Snowflake Data Validation
|
|
5
5
|
Project-URL: Bug Tracker, https://github.com/snowflake-eng/migrations-data-validation/issues
|
|
6
6
|
Project-URL: Source code, https://github.com/snowflake-eng/migrations-data-validation/
|
|
@@ -56,6 +56,7 @@ Requires-Dist: pytest-mock>=3.14.1; extra == 'all'
|
|
|
56
56
|
Requires-Dist: pytest>=8.3.3; extra == 'all'
|
|
57
57
|
Requires-Dist: redshift-connector>=2.1.8; extra == 'all'
|
|
58
58
|
Requires-Dist: setuptools>=70.0.0; extra == 'all'
|
|
59
|
+
Requires-Dist: sqlean-py>=3.45.0; extra == 'all'
|
|
59
60
|
Requires-Dist: teradatasql>=17.20.0.0; extra == 'all'
|
|
60
61
|
Requires-Dist: twine==6.0.1; extra == 'all'
|
|
61
62
|
Provides-Extra: azure-synapse
|
|
@@ -74,6 +75,8 @@ Provides-Extra: postgresql
|
|
|
74
75
|
Requires-Dist: psycopg[binary]>=3.2.0; extra == 'postgresql'
|
|
75
76
|
Provides-Extra: redshift
|
|
76
77
|
Requires-Dist: redshift-connector>=2.1.8; extra == 'redshift'
|
|
78
|
+
Provides-Extra: sqlite
|
|
79
|
+
Requires-Dist: sqlean-py>=3.45.0; extra == 'sqlite'
|
|
77
80
|
Provides-Extra: sqlserver
|
|
78
81
|
Requires-Dist: azure-identity>=1.15.0; extra == 'sqlserver'
|
|
79
82
|
Requires-Dist: pyodbc>=5.2.0; extra == 'sqlserver'
|
|
@@ -118,6 +121,14 @@ For SQL Server support:
|
|
|
118
121
|
pip install "snowflake-data-validation[sqlserver]"
|
|
119
122
|
```
|
|
120
123
|
|
|
124
|
+
For SQLite support:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
pip install "snowflake-data-validation[sqlite]"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
> **SQLite prerequisite:** This extra installs [sqlean.py](https://github.com/nalgeon/sqlean), a drop-in `sqlite3` replacement that bundles the [sqlean-crypto](https://github.com/nalgeon/sqlean/blob/main/docs/crypto.md) extension. The `crypto_md5` function provided by this extension is required for row-level MD5 computation during SQLite data validation. Wheels are available for **Linux and macOS** only; Windows is not supported by `sqlean.py`.
|
|
131
|
+
|
|
121
132
|
For development and testing:
|
|
122
133
|
|
|
123
134
|
```bash
|
|
@@ -205,6 +216,50 @@ For complete command reference, configuration options, and examples, see the [Da
|
|
|
205
216
|
|
|
206
217
|
## Changelog
|
|
207
218
|
|
|
219
|
+
### v1.23.0
|
|
220
|
+
|
|
221
|
+
**New features**
|
|
222
|
+
|
|
223
|
+
- Added configurable text comparison mode (`logical` vs `raw`) for column-level validation.
|
|
224
|
+
- Added SQLite as a supported source platform for data validation.
|
|
225
|
+
|
|
226
|
+
**Improvements**
|
|
227
|
+
|
|
228
|
+
- Implemented Oracle ISO 8601 timestamp normalization for Snowflake migration.
|
|
229
|
+
- Enhanced timestamp normalization for Teradata with fractional-second precision.
|
|
230
|
+
- Implemented timestamp timezone preservation for Azure Synapse validation.
|
|
231
|
+
- Decoupled target platform for data validation, enabling non-Snowflake target comparisons.
|
|
232
|
+
|
|
233
|
+
**Bug fixes**
|
|
234
|
+
|
|
235
|
+
- Fixed row-hash early-stop so all failed rows are reported when early stopping is disabled.
|
|
236
|
+
- Fixed empty-source handling to record an explicit validation failure instead of silently passing.
|
|
237
|
+
|
|
238
|
+
### v1.22.1
|
|
239
|
+
|
|
240
|
+
No user-facing changes in this release.
|
|
241
|
+
|
|
242
|
+
### v1.22.0
|
|
243
|
+
|
|
244
|
+
**New features**
|
|
245
|
+
|
|
246
|
+
- Added accepted transformations (V1) for data validation.
|
|
247
|
+
|
|
248
|
+
**Improvements**
|
|
249
|
+
|
|
250
|
+
- Preserved ISO 8601 timestamp timezone for SQL Server validation.
|
|
251
|
+
- Preserved ISO 8601 timestamp timezone for Teradata validation.
|
|
252
|
+
- Replaced the pipe with the `AND` keyword in `WHERE` clause generation.
|
|
253
|
+
- Aligned Postgres `BYTEA` normalization with Snowflake `BINARY` `0x` prefix.
|
|
254
|
+
- Aligned Oracle `RAW`/`BLOB` normalization with Snowflake `BINARY` `0x` prefix.
|
|
255
|
+
|
|
256
|
+
**Bug fixes**
|
|
257
|
+
|
|
258
|
+
- Implemented a NULL hashing sentinel for SQL templates.
|
|
259
|
+
- Fixed SQL Server datetime normalization for L2/L3 validation.
|
|
260
|
+
- Fixed Oracle `DATE`/`TIMESTAMP` normalization to match Snowflake ISO FF9.
|
|
261
|
+
- Replaced `TRIM` with `RTRIM` in L2/L3 validation query templates.
|
|
262
|
+
|
|
208
263
|
### v1.21.0
|
|
209
264
|
|
|
210
265
|
**Improvements**
|
|
@@ -35,6 +35,14 @@ For SQL Server support:
|
|
|
35
35
|
pip install "snowflake-data-validation[sqlserver]"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
For SQLite support:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install "snowflake-data-validation[sqlite]"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
> **SQLite prerequisite:** This extra installs [sqlean.py](https://github.com/nalgeon/sqlean), a drop-in `sqlite3` replacement that bundles the [sqlean-crypto](https://github.com/nalgeon/sqlean/blob/main/docs/crypto.md) extension. The `crypto_md5` function provided by this extension is required for row-level MD5 computation during SQLite data validation. Wheels are available for **Linux and macOS** only; Windows is not supported by `sqlean.py`.
|
|
45
|
+
|
|
38
46
|
For development and testing:
|
|
39
47
|
|
|
40
48
|
```bash
|
|
@@ -122,6 +130,50 @@ For complete command reference, configuration options, and examples, see the [Da
|
|
|
122
130
|
|
|
123
131
|
## Changelog
|
|
124
132
|
|
|
133
|
+
### v1.23.0
|
|
134
|
+
|
|
135
|
+
**New features**
|
|
136
|
+
|
|
137
|
+
- Added configurable text comparison mode (`logical` vs `raw`) for column-level validation.
|
|
138
|
+
- Added SQLite as a supported source platform for data validation.
|
|
139
|
+
|
|
140
|
+
**Improvements**
|
|
141
|
+
|
|
142
|
+
- Implemented Oracle ISO 8601 timestamp normalization for Snowflake migration.
|
|
143
|
+
- Enhanced timestamp normalization for Teradata with fractional-second precision.
|
|
144
|
+
- Implemented timestamp timezone preservation for Azure Synapse validation.
|
|
145
|
+
- Decoupled target platform for data validation, enabling non-Snowflake target comparisons.
|
|
146
|
+
|
|
147
|
+
**Bug fixes**
|
|
148
|
+
|
|
149
|
+
- Fixed row-hash early-stop so all failed rows are reported when early stopping is disabled.
|
|
150
|
+
- Fixed empty-source handling to record an explicit validation failure instead of silently passing.
|
|
151
|
+
|
|
152
|
+
### v1.22.1
|
|
153
|
+
|
|
154
|
+
No user-facing changes in this release.
|
|
155
|
+
|
|
156
|
+
### v1.22.0
|
|
157
|
+
|
|
158
|
+
**New features**
|
|
159
|
+
|
|
160
|
+
- Added accepted transformations (V1) for data validation.
|
|
161
|
+
|
|
162
|
+
**Improvements**
|
|
163
|
+
|
|
164
|
+
- Preserved ISO 8601 timestamp timezone for SQL Server validation.
|
|
165
|
+
- Preserved ISO 8601 timestamp timezone for Teradata validation.
|
|
166
|
+
- Replaced the pipe with the `AND` keyword in `WHERE` clause generation.
|
|
167
|
+
- Aligned Postgres `BYTEA` normalization with Snowflake `BINARY` `0x` prefix.
|
|
168
|
+
- Aligned Oracle `RAW`/`BLOB` normalization with Snowflake `BINARY` `0x` prefix.
|
|
169
|
+
|
|
170
|
+
**Bug fixes**
|
|
171
|
+
|
|
172
|
+
- Implemented a NULL hashing sentinel for SQL templates.
|
|
173
|
+
- Fixed SQL Server datetime normalization for L2/L3 validation.
|
|
174
|
+
- Fixed Oracle `DATE`/`TIMESTAMP` normalization to match Snowflake ISO FF9.
|
|
175
|
+
- Replaced `TRIM` with `RTRIM` in L2/L3 validation query templates.
|
|
176
|
+
|
|
125
177
|
### v1.21.0
|
|
126
178
|
|
|
127
179
|
**Improvements**
|
|
@@ -65,7 +65,7 @@ sdv = "snowflake.snowflake_data_validation.main_cli:data_validation_app"
|
|
|
65
65
|
snowflake-data-validation = "snowflake.snowflake_data_validation.main_cli:data_validation_app"
|
|
66
66
|
|
|
67
67
|
[project.optional-dependencies]
|
|
68
|
-
all = ["snowflake-data-validation[development,sqlserver,teradata,redshift,postgresql,azure-synapse]"]
|
|
68
|
+
all = ["snowflake-data-validation[development,sqlserver,teradata,redshift,postgresql,azure-synapse,sqlite]"]
|
|
69
69
|
development = [
|
|
70
70
|
"pytest>=8.3.3",
|
|
71
71
|
"pytest-cov>=6.0.0",
|
|
@@ -84,6 +84,9 @@ sqlserver = [
|
|
|
84
84
|
teradata = [
|
|
85
85
|
"teradatasql>=17.20.0.0",
|
|
86
86
|
]
|
|
87
|
+
sqlite = [
|
|
88
|
+
"sqlean.py>=3.45.0",
|
|
89
|
+
]
|
|
87
90
|
redshift = [
|
|
88
91
|
"redshift-connector>=2.1.8",
|
|
89
92
|
]
|
|
@@ -38,9 +38,9 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
38
38
|
class AzureSynapseArgumentsManager(ArgumentsManagerBase):
|
|
39
39
|
"""Arguments manager for Azure Synapse Analytics connections and configuration."""
|
|
40
40
|
|
|
41
|
-
def __init__(self) -> None:
|
|
41
|
+
def __init__(self, target_platform: Platform = Platform.SNOWFLAKE) -> None:
|
|
42
42
|
"""Initialize the Azure Synapse arguments manager."""
|
|
43
|
-
super().__init__(Platform.AZURE_SYNAPSE,
|
|
43
|
+
super().__init__(Platform.AZURE_SYNAPSE, target_platform)
|
|
44
44
|
|
|
45
45
|
@property
|
|
46
46
|
def is_snowflake_to_snowflake(self) -> bool:
|
|
@@ -424,9 +424,11 @@ DATETIME:
|
|
|
424
424
|
min:
|
|
425
425
|
metric_query: MIN("{{ col_name }}")
|
|
426
426
|
metric_return_datatype: DATETIME
|
|
427
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
427
428
|
max:
|
|
428
429
|
metric_query: MAX("{{ col_name }}")
|
|
429
430
|
metric_return_datatype: DATETIME
|
|
431
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
430
432
|
count_null:
|
|
431
433
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
432
434
|
metric_return_datatype: INT
|
|
@@ -435,9 +437,11 @@ DATETIME2:
|
|
|
435
437
|
min:
|
|
436
438
|
metric_query: MIN("{{ col_name }}")
|
|
437
439
|
metric_return_datatype: DATETIME2
|
|
440
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
438
441
|
max:
|
|
439
442
|
metric_query: MAX("{{ col_name }}")
|
|
440
443
|
metric_return_datatype: DATETIME2
|
|
444
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
441
445
|
count_null:
|
|
442
446
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
443
447
|
metric_return_datatype: INT
|
|
@@ -446,9 +450,11 @@ SMALLDATETIME:
|
|
|
446
450
|
min:
|
|
447
451
|
metric_query: MIN("{{ col_name }}")
|
|
448
452
|
metric_return_datatype: SMALLDATETIME
|
|
453
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.000000000')
|
|
449
454
|
max:
|
|
450
455
|
metric_query: MAX("{{ col_name }}")
|
|
451
456
|
metric_return_datatype: SMALLDATETIME
|
|
457
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.000000000')
|
|
452
458
|
count_null:
|
|
453
459
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
454
460
|
metric_return_datatype: INT
|
|
@@ -457,9 +463,11 @@ DATETIMEOFFSET:
|
|
|
457
463
|
min:
|
|
458
464
|
metric_query: MIN("{{ col_name }}")
|
|
459
465
|
metric_return_datatype: DATETIMEOFFSET
|
|
466
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00' + FORMAT({{ metric_query }}, 'zzz')
|
|
460
467
|
max:
|
|
461
468
|
metric_query: MAX("{{ col_name }}")
|
|
462
469
|
metric_return_datatype: DATETIMEOFFSET
|
|
470
|
+
metric_normalization: FORMAT({{ metric_query }}, 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00' + FORMAT({{ metric_query }}, 'zzz')
|
|
463
471
|
count_null:
|
|
464
472
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
465
473
|
metric_return_datatype: INT
|
|
@@ -32,12 +32,15 @@ NCHAR: TRIM("{{ col_name }}")
|
|
|
32
32
|
NVARCHAR: TRIM("{{ col_name }}")
|
|
33
33
|
|
|
34
34
|
# ---- Date / Time types ----
|
|
35
|
+
# Append '00' to FORMAT('.fffffff') so the output reaches FF9 (Snowflake TIMESTAMP_NTZ format).
|
|
36
|
+
# Use '+' (not CONCAT) so a NULL input propagates to NULL — CONCAT would coerce NULL to ''.
|
|
37
|
+
# FORMAT(..., 'zzz') reliably emits '+HH:MM'/'-HH:MM' for every offset, including UTC.
|
|
35
38
|
DATE: FORMAT("{{ col_name }}", 'yyyy-MM-dd')
|
|
36
39
|
TIME: CONVERT(VARCHAR(8), "{{ col_name }}", 108)
|
|
37
|
-
DATETIME: FORMAT("{{ col_name }}", 'yyyy-MM-dd
|
|
38
|
-
DATETIME2: FORMAT("{{ col_name }}", 'yyyy-MM-dd
|
|
39
|
-
SMALLDATETIME: FORMAT("{{ col_name }}", 'yyyy-MM-dd
|
|
40
|
-
DATETIMEOFFSET: FORMAT("{{ col_name }}"
|
|
40
|
+
DATETIME: FORMAT("{{ col_name }}", 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
41
|
+
DATETIME2: FORMAT("{{ col_name }}", 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00'
|
|
42
|
+
SMALLDATETIME: FORMAT("{{ col_name }}", 'yyyy-MM-dd''T''HH:mm:ss.000000000')
|
|
43
|
+
DATETIMEOFFSET: FORMAT("{{ col_name }}", 'yyyy-MM-dd''T''HH:mm:ss.fffffff') + '00' + FORMAT("{{ col_name }}", 'zzz')
|
|
41
44
|
|
|
42
45
|
# ---- Binary types ----
|
|
43
46
|
BINARY: CONVERT(VARCHAR(MAX), "{{ col_name }}", 2)
|
|
@@ -83,15 +83,22 @@ class QueryGeneratorAzureSynapse(QueryGeneratorBase):
|
|
|
83
83
|
table_context: TableContext,
|
|
84
84
|
*,
|
|
85
85
|
order_by: bool = False,
|
|
86
|
+
column_codec_map=None, # accepted for interface compatibility; not applied on this platform
|
|
86
87
|
) -> str:
|
|
87
88
|
"""Generate an inline SELECT returning ``(index_cols, ROW_MD5)``.
|
|
88
89
|
|
|
89
90
|
Uses ``HASHBYTES('MD5', ...)`` and ``CONVERT(VARCHAR(32), ..., 2)``
|
|
90
91
|
syntax via the ``azure_synapse_row_md5_select.sql.j2`` template.
|
|
91
92
|
"""
|
|
92
|
-
return self._build_row_md5_select(table_context, order_by=order_by)
|
|
93
|
+
return self._build_row_md5_select(table_context, order_by=order_by, column_codec_map=column_codec_map)
|
|
93
94
|
|
|
94
|
-
def _build_row_md5_select(
|
|
95
|
+
def _build_row_md5_select(
|
|
96
|
+
self,
|
|
97
|
+
table_context: TableContext,
|
|
98
|
+
*,
|
|
99
|
+
order_by: bool = False,
|
|
100
|
+
column_codec_map=None, # accepted for interface compatibility; not applied on this platform
|
|
101
|
+
) -> str:
|
|
95
102
|
"""Synapse-specific row MD5 SELECT (case-insensitive type template lookup).
|
|
96
103
|
|
|
97
104
|
L1 ``columns_metadata`` stores source types in lowercase (e.g. int,
|
|
@@ -121,6 +128,7 @@ class QueryGeneratorAzureSynapse(QueryGeneratorBase):
|
|
|
121
128
|
self,
|
|
122
129
|
table_context: TableContext,
|
|
123
130
|
order_by_columns: list[str] | None = None,
|
|
131
|
+
column_codec_map=None, # accepted for interface compatibility; not applied on this platform
|
|
124
132
|
) -> str:
|
|
125
133
|
"""SELECT with per-column normalization matching L3 MD5 templates.
|
|
126
134
|
|
|
@@ -82,24 +82,33 @@ class ConfigurationModel(BaseModel):
|
|
|
82
82
|
return self
|
|
83
83
|
|
|
84
84
|
def check_tables(self) -> None:
|
|
85
|
+
if not self.tables:
|
|
86
|
+
return
|
|
87
|
+
target_platform = Platform(self.target_platform.lower())
|
|
85
88
|
table: TableConfiguration
|
|
86
89
|
for table in self.tables:
|
|
87
90
|
if self.target_database and table.target_database is None:
|
|
88
91
|
self._add_database(object=table)
|
|
89
|
-
self._apply_mappings_to_table(table)
|
|
92
|
+
self._apply_mappings_to_table(table, target_platform=target_platform)
|
|
90
93
|
self._normalize_fully_qualified_name_based_on_source(table)
|
|
94
|
+
table._load_target_fully_qualified_name(target_platform=target_platform)
|
|
95
|
+
table._set_internal_identifiers()
|
|
91
96
|
self._check_max_failed_rows_number(table)
|
|
92
97
|
self._check_chunk_number(table)
|
|
93
98
|
self.set_exclude_metrics(table)
|
|
94
99
|
self.set_apply_metric_column_modifier(table)
|
|
95
100
|
|
|
96
101
|
def check_views(self) -> None:
|
|
102
|
+
if not self.views:
|
|
103
|
+
return
|
|
104
|
+
target_platform = Platform(self.target_platform.lower())
|
|
97
105
|
view: ViewConfiguration
|
|
98
106
|
for view in self.views:
|
|
99
107
|
if self.target_database and view.target_database is None:
|
|
100
108
|
self._add_database(object=view)
|
|
101
|
-
self._apply_mappings_to_view(view)
|
|
109
|
+
self._apply_mappings_to_view(view, target_platform=target_platform)
|
|
102
110
|
self._normalize_fully_qualified_name_based_on_source(view)
|
|
111
|
+
view._load_target_fully_qualified_name(target_platform=target_platform)
|
|
103
112
|
self._check_max_failed_rows_number(view)
|
|
104
113
|
self._check_chunk_number(view)
|
|
105
114
|
self.set_exclude_metrics(view)
|
|
@@ -121,7 +130,9 @@ class ConfigurationModel(BaseModel):
|
|
|
121
130
|
"Schema mappings cannot have empty string as a target schema."
|
|
122
131
|
)
|
|
123
132
|
|
|
124
|
-
def _apply_mappings_to_table(
|
|
133
|
+
def _apply_mappings_to_table(
|
|
134
|
+
self, table: TableConfiguration, *, target_platform: Platform
|
|
135
|
+
) -> None:
|
|
125
136
|
needs_reload = False
|
|
126
137
|
|
|
127
138
|
mapped_database = self.database_mappings.get(table.source_database)
|
|
@@ -135,7 +146,7 @@ class ConfigurationModel(BaseModel):
|
|
|
135
146
|
needs_reload = True
|
|
136
147
|
|
|
137
148
|
if needs_reload:
|
|
138
|
-
table._load_target_fully_qualified_name()
|
|
149
|
+
table._load_target_fully_qualified_name(target_platform=target_platform)
|
|
139
150
|
table._set_internal_identifiers()
|
|
140
151
|
|
|
141
152
|
def _normalize_fully_qualified_name_based_on_source(
|
|
@@ -147,7 +158,9 @@ class ConfigurationModel(BaseModel):
|
|
|
147
158
|
if is_source_oracle:
|
|
148
159
|
table.fully_qualified_name = f"{table.source_schema}.{table.source_table}"
|
|
149
160
|
|
|
150
|
-
def _apply_mappings_to_view(
|
|
161
|
+
def _apply_mappings_to_view(
|
|
162
|
+
self, view: ViewConfiguration, *, target_platform: Platform
|
|
163
|
+
) -> None:
|
|
151
164
|
needs_reload = False
|
|
152
165
|
|
|
153
166
|
mapped_database = self.database_mappings.get(view.source_database)
|
|
@@ -161,11 +174,12 @@ class ConfigurationModel(BaseModel):
|
|
|
161
174
|
needs_reload = True
|
|
162
175
|
|
|
163
176
|
if needs_reload:
|
|
164
|
-
view._load_target_fully_qualified_name()
|
|
177
|
+
view._load_target_fully_qualified_name(target_platform=target_platform)
|
|
165
178
|
|
|
166
179
|
# Set internal identifiers for SQL Server platform to handle special identifier formatting.
|
|
167
180
|
view._set_internal_identifiers(
|
|
168
|
-
source_platform=Platform(self.source_platform.lower())
|
|
181
|
+
source_platform=Platform(self.source_platform.lower()),
|
|
182
|
+
target_platform=target_platform,
|
|
169
183
|
)
|
|
170
184
|
|
|
171
185
|
def _check_max_failed_rows_number(self, table: TableConfiguration) -> None:
|
|
@@ -190,4 +204,6 @@ class ConfigurationModel(BaseModel):
|
|
|
190
204
|
|
|
191
205
|
def _add_database(self, object: TableConfiguration) -> None:
|
|
192
206
|
object.target_database = self.target_database
|
|
193
|
-
object._load_target_fully_qualified_name(
|
|
207
|
+
object._load_target_fully_qualified_name(
|
|
208
|
+
target_platform=Platform(self.target_platform.lower())
|
|
209
|
+
)
|
|
@@ -27,6 +27,7 @@ from snowflake.snowflake_data_validation.configuration.model.connections import
|
|
|
27
27
|
SnowflakeCredentialsConnection,
|
|
28
28
|
SnowflakeDefaultConnection,
|
|
29
29
|
SnowflakeNamedConnection,
|
|
30
|
+
SqliteConnection,
|
|
30
31
|
SqlServerCredentialsConnection,
|
|
31
32
|
TeradataCredentialsConnection,
|
|
32
33
|
)
|
|
@@ -49,4 +50,6 @@ Connection = Union[
|
|
|
49
50
|
RedshiftCredentialsConnection,
|
|
50
51
|
# Azure Synapse connections
|
|
51
52
|
AzureSynapseCredentialsConnection,
|
|
53
|
+
# SQLite connections
|
|
54
|
+
SqliteConnection,
|
|
52
55
|
]
|
|
@@ -45,6 +45,11 @@ from snowflake.snowflake_data_validation.snowflake.model.snowflake_credentials_c
|
|
|
45
45
|
SnowflakeCredentialsConnection,
|
|
46
46
|
)
|
|
47
47
|
|
|
48
|
+
# Import SQLite connection models
|
|
49
|
+
from snowflake.snowflake_data_validation.sqlite.model.sqlite_connection import (
|
|
50
|
+
SqliteConnection,
|
|
51
|
+
)
|
|
52
|
+
|
|
48
53
|
__all__ = [
|
|
49
54
|
"AzureSynapseCredentialsConnection",
|
|
50
55
|
"SqlServerCredentialsConnection",
|
|
@@ -54,4 +59,5 @@ __all__ = [
|
|
|
54
59
|
"SnowflakeCredentialsConnection",
|
|
55
60
|
"PostgresqlCredentialsConnection",
|
|
56
61
|
"RedshiftCredentialsConnection",
|
|
62
|
+
"SqliteConnection",
|
|
57
63
|
]
|
|
@@ -9,7 +9,10 @@ from typing_extensions import Self
|
|
|
9
9
|
from snowflake.snowflake_data_validation.configuration.model.validation_configuration import (
|
|
10
10
|
ValidationConfiguration,
|
|
11
11
|
)
|
|
12
|
-
from snowflake.snowflake_data_validation.
|
|
12
|
+
from snowflake.snowflake_data_validation.target.target_platform_factory import (
|
|
13
|
+
TargetPlatformFactory,
|
|
14
|
+
)
|
|
15
|
+
from snowflake.snowflake_data_validation.utils.constants import NEWLINE, ObjectType, Platform
|
|
13
16
|
from snowflake.snowflake_data_validation.utils.helper import Helper
|
|
14
17
|
from snowflake.snowflake_data_validation.utils.helpers.helper_database import (
|
|
15
18
|
HelperDatabase,
|
|
@@ -123,16 +126,16 @@ class TableConfiguration(BaseModel):
|
|
|
123
126
|
self.source_schema = decomposed_tuple[1]
|
|
124
127
|
self.source_table = decomposed_tuple[2]
|
|
125
128
|
|
|
126
|
-
def _load_target_fully_qualified_name(
|
|
127
|
-
self
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
self.target_schema or self.source_schema
|
|
132
|
-
)
|
|
133
|
-
self.target_name = HelperDatabase.normalize_to_snowflake_identifier(
|
|
134
|
-
self.target_name or self.source_table
|
|
129
|
+
def _load_target_fully_qualified_name(
|
|
130
|
+
self, target_platform: Platform | None = None
|
|
131
|
+
) -> None:
|
|
132
|
+
target_capability = TargetPlatformFactory.create(
|
|
133
|
+
target_platform or Platform.SNOWFLAKE
|
|
135
134
|
)
|
|
135
|
+
normalize = target_capability.normalize_target_identifier
|
|
136
|
+
self.target_database = normalize(self.target_database or self.source_database)
|
|
137
|
+
self.target_schema = normalize(self.target_schema or self.source_schema)
|
|
138
|
+
self.target_name = normalize(self.target_name or self.source_table)
|
|
136
139
|
self.target_fully_qualified_name = (
|
|
137
140
|
f"{self.target_database}.{self.target_schema}.{self.target_name}"
|
|
138
141
|
)
|
|
@@ -92,6 +92,15 @@ from snowflake.snowflake_data_validation.snowflake.query.query_generator_snowfla
|
|
|
92
92
|
from snowflake.snowflake_data_validation.snowflake.script_writer.script_writer_snowflake import (
|
|
93
93
|
ScriptWriterSnowflake,
|
|
94
94
|
)
|
|
95
|
+
from snowflake.snowflake_data_validation.sqlite.extractor.metadata_extractor_sqlite import (
|
|
96
|
+
MetadataExtractorSqlite,
|
|
97
|
+
)
|
|
98
|
+
from snowflake.snowflake_data_validation.sqlite.query.query_generator_sqlite import (
|
|
99
|
+
QueryGeneratorSqlite,
|
|
100
|
+
)
|
|
101
|
+
from snowflake.snowflake_data_validation.sqlite.script_writer.script_writer_sqlite import (
|
|
102
|
+
ScriptWriterSqlite,
|
|
103
|
+
)
|
|
95
104
|
from snowflake.snowflake_data_validation.sqlserver.connector.connector_sql_server import (
|
|
96
105
|
ConnectorSqlServer,
|
|
97
106
|
)
|
|
@@ -194,6 +203,11 @@ class ExecutorFactory:
|
|
|
194
203
|
metadata_extractor=MetadataExtractorPostgresql,
|
|
195
204
|
script_writer=ScriptWriterPostgresql,
|
|
196
205
|
),
|
|
206
|
+
Platform.SQLITE: PlatformConfig(
|
|
207
|
+
query_generator=QueryGeneratorSqlite,
|
|
208
|
+
metadata_extractor=MetadataExtractorSqlite,
|
|
209
|
+
script_writer=ScriptWriterSqlite,
|
|
210
|
+
),
|
|
197
211
|
Platform.AZURE_SYNAPSE: PlatformConfig(
|
|
198
212
|
query_generator=QueryGeneratorAzureSynapse,
|
|
199
213
|
metadata_extractor=MetadataExtractorAzureSynapse,
|
|
@@ -26,6 +26,7 @@ public workflow API module:
|
|
|
26
26
|
3. Validation - Uses data_validation_api.validate_schema / validate_metrics
|
|
27
27
|
"""
|
|
28
28
|
|
|
29
|
+
import hashlib
|
|
29
30
|
import logging
|
|
30
31
|
|
|
31
32
|
from concurrent.futures import ThreadPoolExecutor
|
|
@@ -374,6 +375,15 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
374
375
|
columns=lambda x: x.upper() + TARGET_SUFFIX
|
|
375
376
|
)
|
|
376
377
|
|
|
378
|
+
# SQLite has no native MD5: the row-md5-select query returns CONCAT_TEXT
|
|
379
|
+
# instead of ROW_MD5. Compute hashlib MD5 here so the comparison columns match.
|
|
380
|
+
_concat_col = "CONCAT_TEXT" + SOURCE_SUFFIX
|
|
381
|
+
if _concat_col in source_md5_df.columns:
|
|
382
|
+
source_md5_df["ROW_MD5" + SOURCE_SUFFIX] = source_md5_df[_concat_col].apply(
|
|
383
|
+
lambda v: hashlib.md5((v if v is not None else "").encode("utf-8")).hexdigest().upper()
|
|
384
|
+
)
|
|
385
|
+
source_md5_df = source_md5_df.drop(columns=[_concat_col])
|
|
386
|
+
|
|
377
387
|
source_transformed = QueryExecutionResult(dataframe=source_md5_df)
|
|
378
388
|
target_transformed = QueryExecutionResult(dataframe=target_md5_df)
|
|
379
389
|
|
|
@@ -71,8 +71,9 @@ class SQLQueriesTemplateGenerator:
|
|
|
71
71
|
fully_qualified_name: str,
|
|
72
72
|
where_clause: str,
|
|
73
73
|
has_where_clause: bool,
|
|
74
|
-
|
|
74
|
+
columns: list[str],
|
|
75
75
|
is_temporary_table: bool,
|
|
76
|
+
use_as_exclude_list: bool = False,
|
|
76
77
|
):
|
|
77
78
|
"""
|
|
78
79
|
Generate SQL query for table metadata based on the provided table configuration and platform.
|
|
@@ -85,8 +86,10 @@ class SQLQueriesTemplateGenerator:
|
|
|
85
86
|
fully_qualified_name (str): The fully qualified name of the table.
|
|
86
87
|
where_clause (str): Optional WHERE clause to filter results.
|
|
87
88
|
has_where_clause (bool): Indicates if a WHERE clause is present.
|
|
88
|
-
|
|
89
|
+
columns (list[str]): Column names to include (``use_as_exclude_list=False``)
|
|
90
|
+
or exclude (``use_as_exclude_list=True``) from the catalog query.
|
|
89
91
|
is_temporary_table (bool): Indicates if the table is temporary.
|
|
92
|
+
use_as_exclude_list (bool): When True, ``columns`` is treated as a NOT IN list.
|
|
90
93
|
|
|
91
94
|
Returns:
|
|
92
95
|
str: The generated SQL query as a string.
|
|
@@ -99,7 +102,6 @@ class SQLQueriesTemplateGenerator:
|
|
|
99
102
|
template_file = TABLE_METADATA_QUERY.format(platform=platform)
|
|
100
103
|
try:
|
|
101
104
|
template = self.env.get_template(template_file)
|
|
102
|
-
column_names = [col.name for col in column_selection_list]
|
|
103
105
|
sql = template.render(
|
|
104
106
|
object_name=table_name,
|
|
105
107
|
object_schema=schema_name,
|
|
@@ -107,7 +109,8 @@ class SQLQueriesTemplateGenerator:
|
|
|
107
109
|
fully_qualified_name=fully_qualified_name,
|
|
108
110
|
where_clause=where_clause,
|
|
109
111
|
has_where_clause=has_where_clause,
|
|
110
|
-
columns=
|
|
112
|
+
columns=columns,
|
|
113
|
+
use_as_exclude_list=use_as_exclude_list,
|
|
111
114
|
is_temporary_table=is_temporary_table,
|
|
112
115
|
)
|
|
113
116
|
return sql
|
|
@@ -487,11 +487,11 @@ TIMESTAMP WITH LOCAL TIME ZONE:
|
|
|
487
487
|
min:
|
|
488
488
|
metric_query: MIN("{{ col_name }}")
|
|
489
489
|
metric_return_datatype: TIMESTAMP WITH LOCAL TIME ZONE
|
|
490
|
-
metric_normalization: TO_CHAR(
|
|
490
|
+
metric_normalization: TO_CHAR({{ metric_query }}, 'YYYY-MM-DD"T"HH24:MI:SS.FF9')
|
|
491
491
|
max:
|
|
492
492
|
metric_query: MAX("{{ col_name }}")
|
|
493
493
|
metric_return_datatype: TIMESTAMP WITH LOCAL TIME ZONE
|
|
494
|
-
metric_normalization: TO_CHAR(
|
|
494
|
+
metric_normalization: TO_CHAR({{ metric_query }}, 'YYYY-MM-DD"T"HH24:MI:SS.FF9')
|
|
495
495
|
count_null:
|
|
496
496
|
metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
|
|
497
497
|
metric_return_datatype: INTEGER
|
|
@@ -65,11 +65,12 @@ SDO_GEOMETRY: NVL(SDO_UTIL.TO_WKTGEOMETRY({{ col_name }}), '')
|
|
|
65
65
|
# ---- Date / Time types ----
|
|
66
66
|
# Format masks aligned with Snowflake TIMESTAMP_NTZ / TIMESTAMP_TZ normalization:
|
|
67
67
|
# DATE / TIMESTAMP → ISO 8601 with 9-digit fractional seconds (FF9)
|
|
68
|
-
#
|
|
68
|
+
# TIMESTAMP WITH TIME ZONE → ISO with per-row offset (TZH:TZM)
|
|
69
|
+
# TIMESTAMP WITH LOCAL TIME ZONE → session wall-clock ISO (no UTC extract)
|
|
69
70
|
DATE: TO_CHAR(CAST({{ col_name }} AS TIMESTAMP), 'YYYY-MM-DD"T"HH24:MI:SS.FF9')
|
|
70
71
|
TIMESTAMP: TO_CHAR({{ col_name }}, 'YYYY-MM-DD"T"HH24:MI:SS.FF9')
|
|
71
72
|
TIMESTAMP WITH TIME ZONE: REGEXP_REPLACE(TO_CHAR({{ col_name }}, 'YYYY-MM-DD"T"HH24:MI:SS.FF9TZH:TZM'), 'Z$', '+00:00')
|
|
72
|
-
TIMESTAMP WITH LOCAL TIME ZONE: TO_CHAR(
|
|
73
|
+
TIMESTAMP WITH LOCAL TIME ZONE: TO_CHAR({{ col_name }}, 'YYYY-MM-DD"T"HH24:MI:SS.FF9')
|
|
73
74
|
|
|
74
75
|
# ---- Interval types ----
|
|
75
76
|
# TO_CHAR on INTERVAL prefixes a sign and zero-pads fields (e.g. "+01-06").
|