snowflake-data-validation 1.44.0__tar.gz → 1.44.1__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.44.0 → snowflake_data_validation-1.44.1}/PKG-INFO +20 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/README.md +18 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/pyproject.toml +1 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +10 -6
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +2 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +4 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +7 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +38 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +6 -4
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +40 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +6 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +3 -2
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +130 -0
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +57 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +53 -23
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +30 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +12 -0
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +127 -0
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +109 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +6 -5
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +10 -5
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +6 -6
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +2 -2
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +5 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +17 -11
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +52 -21
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +10 -6
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +8 -4
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +15 -2
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +73 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +24 -18
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +10 -5
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +20 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/constants.py +6 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +22 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +67 -32
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +44 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +35 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +27 -13
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_collation.py +1 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_super_normalization.py +7 -3
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +11 -8
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +4 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +4 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_query_generator.py +3 -3
- snowflake_data_validation-1.44.1/tests/unit/query/test_time_fraction_rendering.py +310 -0
- snowflake_data_validation-1.44.1/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +193 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +1 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_row_queries.py +3 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_accepted_transformation.py +0 -1
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_data_validator.py +67 -4
- snowflake_data_validation-1.44.1/tests/unit/test_decimal_text_canonical.py +198 -0
- snowflake_data_validation-1.44.1/tests/unit/test_float_aggregate_reduction.py +358 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_float_bit_canonical.py +0 -22
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_float_canonical_templates.py +2 -2
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_iceberg_dv_l3_normalization.py +320 -74
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_spatial_wkt_canonicalization.py +64 -3
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sync_validation_executor.py +35 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_teradata_iso_normalization.py +16 -0
- snowflake_data_validation-1.44.1/tests/unit/test_tsql_float_l2_aggregates.py +278 -0
- snowflake_data_validation-1.44.0/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -32
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/.gitignore +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/LICENSE +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/docs/README.md +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/conftest.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_collation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_query_generator_teradata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_teradata_collation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/bigquery/test_query_generator_bigquery.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/conftest.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_registration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/db2/test_db2_xml_long_metrics.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_catalog_column_size.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_cell_data_validator_threading.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_cell_validation_query_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_normalization_override.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_selection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_column_selection_actual_names.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_comparison_codec.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_dv_tracing.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_error_classifier.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_get_target_cols.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_helper_dataframe.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_helper_io.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_iceberg_v2_metrics_exclusion.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_interval_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_iso_dv_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_l2_collation_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_metric_identifier_rendering.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_metrics_templates_casts.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_normalize_shape_aware.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_object_type_criterion.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_period_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_generator_numeric_scale.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_qvci_fallback_triggers.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_result_set_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_count_bigint_overflow.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_hash_column_delimiter.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_schema_column_selection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_signature_external_table.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_signature_row_md5_query.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_source_validation_executor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sql_catalog_template_guard.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_snapshot_generation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_teradata_type_code_mapping.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_trace_bridge.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_validation_templates_dto.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_vector_bit_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_vector_common.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_vector_normalization.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/test_warm_start.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/utils/test_constants.py +0 -0
- {snowflake_data_validation-1.44.0 → snowflake_data_validation-1.44.1}/tests/unit/utils/test_semi_structured_json_canonicalization.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: snowflake-data-validation
|
|
3
|
-
Version: 1.44.
|
|
3
|
+
Version: 1.44.1
|
|
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/
|
|
@@ -79,7 +79,7 @@ Requires-Dist: psycopg[binary]>=3.2.0; extra == 'postgresql'
|
|
|
79
79
|
Provides-Extra: redshift
|
|
80
80
|
Requires-Dist: redshift-connector>=2.1.14; extra == 'redshift'
|
|
81
81
|
Provides-Extra: scai
|
|
82
|
-
Requires-Dist: snowflake-code-unit-registry>=0.9.
|
|
82
|
+
Requires-Dist: snowflake-code-unit-registry>=0.9.2; extra == 'scai'
|
|
83
83
|
Provides-Extra: sqlite
|
|
84
84
|
Requires-Dist: sqlean-py>=3.45.0; extra == 'sqlite'
|
|
85
85
|
Provides-Extra: sqlserver
|
|
@@ -214,6 +214,24 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
214
214
|
|
|
215
215
|
## Changelog
|
|
216
216
|
|
|
217
|
+
### v1.44.1
|
|
218
|
+
|
|
219
|
+
**New features**
|
|
220
|
+
|
|
221
|
+
- Added support for L3 row and hybrid validation on Iceberg v3 tables in native storage mode, keyed by the stored column type.
|
|
222
|
+
|
|
223
|
+
**Bug fixes**
|
|
224
|
+
|
|
225
|
+
- Fixed `PERIOD` validation normalization and signature extraction.
|
|
226
|
+
- Fixed Teradata `XML` columns not being cast to `UNICODE` before L3 hashing.
|
|
227
|
+
- Fixed SQL Server and Synapse `FLOAT`/`REAL` L2 aggregates being cast to `DECIMAL(38,10)` on the source only.
|
|
228
|
+
- Fixed `TIME` and `TIME WITH TIME ZONE` normalization dropping fractional seconds on several platforms.
|
|
229
|
+
- Fixed `DECFLOAT` L3 comparisons diverging past about 16 digits by comparing exact decimal text.
|
|
230
|
+
- Fixed Teradata float aggregate comparisons by comparing on the signed significand.
|
|
231
|
+
- Fixed false row-hash mismatches on Iceberg-compatible geospatial columns.
|
|
232
|
+
- Fixed offset timestamps (SQL Server `DATETIMEOFFSET`, Teradata `TIMESTAMP WITH TIME ZONE`) not being compared as UTC instants under Iceberg `FULL_INGEST`.
|
|
233
|
+
- Fixed Redshift Iceberg validation findings: L3 `TIME`, L2 `count_distinct` overflow, and the L1 precision message.
|
|
234
|
+
|
|
217
235
|
### v1.44.0
|
|
218
236
|
|
|
219
237
|
**New features**
|
|
@@ -123,6 +123,24 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
123
123
|
|
|
124
124
|
## Changelog
|
|
125
125
|
|
|
126
|
+
### v1.44.1
|
|
127
|
+
|
|
128
|
+
**New features**
|
|
129
|
+
|
|
130
|
+
- Added support for L3 row and hybrid validation on Iceberg v3 tables in native storage mode, keyed by the stored column type.
|
|
131
|
+
|
|
132
|
+
**Bug fixes**
|
|
133
|
+
|
|
134
|
+
- Fixed `PERIOD` validation normalization and signature extraction.
|
|
135
|
+
- Fixed Teradata `XML` columns not being cast to `UNICODE` before L3 hashing.
|
|
136
|
+
- Fixed SQL Server and Synapse `FLOAT`/`REAL` L2 aggregates being cast to `DECIMAL(38,10)` on the source only.
|
|
137
|
+
- Fixed `TIME` and `TIME WITH TIME ZONE` normalization dropping fractional seconds on several platforms.
|
|
138
|
+
- Fixed `DECFLOAT` L3 comparisons diverging past about 16 digits by comparing exact decimal text.
|
|
139
|
+
- Fixed Teradata float aggregate comparisons by comparing on the signed significand.
|
|
140
|
+
- Fixed false row-hash mismatches on Iceberg-compatible geospatial columns.
|
|
141
|
+
- Fixed offset timestamps (SQL Server `DATETIMEOFFSET`, Teradata `TIMESTAMP WITH TIME ZONE`) not being compared as UTC instants under Iceberg `FULL_INGEST`.
|
|
142
|
+
- Fixed Redshift Iceberg validation findings: L3 `TIME`, L2 `count_distinct` overflow, and the L1 precision message.
|
|
143
|
+
|
|
126
144
|
### v1.44.0
|
|
127
145
|
|
|
128
146
|
**New features**
|
|
@@ -105,7 +105,7 @@ db2 = [
|
|
|
105
105
|
# musllinux build, and SDV is published to public PyPI. Inside DMO/DEA the
|
|
106
106
|
# dependency is already declared, so SDV's logger tree is covered there.
|
|
107
107
|
scai = [
|
|
108
|
-
"snowflake-code-unit-registry>=0.9.
|
|
108
|
+
"snowflake-code-unit-registry>=0.9.2",
|
|
109
109
|
]
|
|
110
110
|
|
|
111
111
|
[project.urls]
|
|
@@ -258,6 +258,9 @@ SMALLMONEY:
|
|
|
258
258
|
metric_return_datatype: FLOAT
|
|
259
259
|
metric_column_modifier: "% 2097143"
|
|
260
260
|
|
|
261
|
+
# avg/sum/stddev aggregate the binary64 value, as Snowflake aggregates its FLOAT
|
|
262
|
+
# (SNOW-4314808); REAL widens exactly. T-SQL has no FLOAT %, so the generator
|
|
263
|
+
# renders {{ modifier }} on this operand as Snowflake's float remainder (tsql_float_remainder.py).
|
|
261
264
|
FLOAT:
|
|
262
265
|
min:
|
|
263
266
|
metric_query: MIN("{{ col_name }}")
|
|
@@ -275,18 +278,19 @@ FLOAT:
|
|
|
275
278
|
metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
|
|
276
279
|
metric_return_datatype: INT
|
|
277
280
|
avg:
|
|
278
|
-
metric_query: AVG(CAST("{{ col_name }}" AS
|
|
281
|
+
metric_query: AVG(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
279
282
|
metric_return_datatype: FLOAT
|
|
280
283
|
metric_column_modifier: "% 2097143"
|
|
281
284
|
sum:
|
|
282
|
-
metric_query: SUM(CAST("{{ col_name }}" AS
|
|
285
|
+
metric_query: SUM(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
283
286
|
metric_return_datatype: FLOAT
|
|
284
287
|
metric_column_modifier: "% 2097143"
|
|
285
288
|
stddev:
|
|
286
|
-
metric_query: STDEVP(CAST("{{ col_name }}" AS
|
|
289
|
+
metric_query: STDEVP(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
287
290
|
metric_return_datatype: FLOAT
|
|
288
291
|
metric_column_modifier: "% 2097143"
|
|
289
292
|
|
|
293
|
+
# avg/sum/stddev widen to binary64, as FLOAT's do (SNOW-4314808).
|
|
290
294
|
REAL:
|
|
291
295
|
min:
|
|
292
296
|
metric_query: MIN("{{ col_name }}")
|
|
@@ -304,15 +308,15 @@ REAL:
|
|
|
304
308
|
metric_query: SUM(CASE WHEN "{{ col_name }}" = 0 THEN 1 ELSE 0 END)
|
|
305
309
|
metric_return_datatype: INT
|
|
306
310
|
avg:
|
|
307
|
-
metric_query: AVG(CAST("{{ col_name }}" AS
|
|
311
|
+
metric_query: AVG(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
308
312
|
metric_return_datatype: FLOAT
|
|
309
313
|
metric_column_modifier: "% 2097143"
|
|
310
314
|
sum:
|
|
311
|
-
metric_query: SUM(CAST("{{ col_name }}" AS
|
|
315
|
+
metric_query: SUM(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
312
316
|
metric_return_datatype: REAL
|
|
313
317
|
metric_column_modifier: "% 2097143"
|
|
314
318
|
stddev:
|
|
315
|
-
metric_query: STDEVP(CAST("{{ col_name }}" AS
|
|
319
|
+
metric_query: STDEVP(CAST("{{ col_name }}" AS FLOAT) {{ modifier }})
|
|
316
320
|
metric_return_datatype: FLOAT
|
|
317
321
|
metric_column_modifier: "% 2097143"
|
|
318
322
|
|
|
@@ -50,7 +50,8 @@ NVARCHAR: '"{{ col_name }}"'
|
|
|
50
50
|
# Use '+' (not CONCAT) so a NULL input propagates to NULL.
|
|
51
51
|
# DATENAME(TZOFFSET) emits '+HH:MM'/'-HH:MM' for every offset, including UTC.
|
|
52
52
|
DATE: CONVERT(VARCHAR(10), "{{ col_name }}", 23)
|
|
53
|
-
TIME:
|
|
53
|
+
# Same text as SQL Server TIME: hh:mi:ss.fffffff + '00', cut to {{ time_text_length }}.
|
|
54
|
+
TIME: LEFT(SUBSTRING(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 12, 16) + '00', {{ time_text_length }})
|
|
54
55
|
DATETIME: STUFF(CONVERT(VARCHAR(27), CAST(CAST("{{ col_name }}" AS DATETIME2(3)) AS DATETIME2(7)), 121), 11, 1, 'T') + '00'
|
|
55
56
|
DATETIME2: LEFT(STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T'), 26) + '000'
|
|
56
57
|
SMALLDATETIME: CONVERT(VARCHAR(19), "{{ col_name }}", 126) + '.000000000'
|
|
@@ -44,6 +44,9 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
|
|
|
44
44
|
QueryGeneratorBase,
|
|
45
45
|
resolve_table_context_modifiers,
|
|
46
46
|
)
|
|
47
|
+
from snowflake.snowflake_data_validation.query.tsql_float_remainder import (
|
|
48
|
+
TsqlFloatMetricModifierMixin,
|
|
49
|
+
)
|
|
47
50
|
from snowflake.snowflake_data_validation.sqlserver.query.charset_normalization import (
|
|
48
51
|
SqlServerCharacterSetResolver,
|
|
49
52
|
)
|
|
@@ -72,7 +75,7 @@ def build_azure_synapse_float_bit_canonical_expr(col_ref: str) -> str:
|
|
|
72
75
|
return build_binary64_canonical_expr(col_ref, dialect=Platform.AZURE_SYNAPSE.value)
|
|
73
76
|
|
|
74
77
|
|
|
75
|
-
class QueryGeneratorAzureSynapse(QueryGeneratorBase):
|
|
78
|
+
class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBase):
|
|
76
79
|
"""Azure Synapse Analytics implementation of the query generator.
|
|
77
80
|
|
|
78
81
|
Uses T-SQL syntax shared with SQL Server. L3 row hashing is emitted as a
|
|
@@ -47,11 +47,15 @@ FLOAT: '{{ float_bit_shim }}'
|
|
|
47
47
|
# bounded BIGNUMERIC(p, s) that fits NUMBER hashes identically. A bare
|
|
48
48
|
# BIGNUMERIC is created as DECFLOAT (SnowConvert engine parity); precision
|
|
49
49
|
# above 38 or scale above 37 reports as an L1 WARNING rather than a schema
|
|
50
|
-
# failure
|
|
50
|
+
# failure.
|
|
51
51
|
NUMERIC: FORMAT('{{ numeric_format_mask }}', `{{ col_name }}`)
|
|
52
52
|
DECIMAL: FORMAT('{{ numeric_format_mask }}', `{{ col_name }}`)
|
|
53
53
|
BIGNUMERIC: FORMAT('{{ numeric_format_mask }}', `{{ col_name }}`)
|
|
54
54
|
BIGDECIMAL: FORMAT('{{ numeric_format_mask }}', `{{ col_name }}`)
|
|
55
|
+
# A BIGNUMERIC / BIGDECIMAL whose mirror is DECFLOAT (the paired target type, or
|
|
56
|
+
# a bare type when unpaired) emits the exact canonical decimal text Snowflake
|
|
57
|
+
# DECFLOAT does. A value past DECFLOAT's 38 digits then reports as a mismatch.
|
|
58
|
+
BIGNUMERIC_DECFLOAT: '{{ decfloat_shim }}'
|
|
55
59
|
|
|
56
60
|
# Snowflake BOOLEAN normalizes to uppercase 'TRUE'/'FALSE' (see
|
|
57
61
|
# snowflake_datatypes_normalization_templates.yaml); match it so the row hashes agree.
|
|
@@ -65,7 +69,8 @@ BYTES: UPPER(TO_HEX(`{{ col_name }}`))
|
|
|
65
69
|
|
|
66
70
|
# %E4Y zero-pads the year to 4 digits so year 1 renders "0001" (matches Snowflake YYYY).
|
|
67
71
|
DATE: FORMAT_DATE('%E4Y-%m-%d', `{{ col_name }}`)
|
|
68
|
-
TIME:
|
|
72
|
+
# TIME: microseconds + '000' pad to nine digits, cut to the precision both sides share.
|
|
73
|
+
TIME: LEFT(FORMAT_TIME('%H:%M:%E6S', `{{ col_name }}`) || '000', {{ time_text_length }})
|
|
69
74
|
DATETIME: FORMAT_DATETIME('%E4Y-%m-%dT%H:%M:%E9S', `{{ col_name }}`)
|
|
70
75
|
TIMESTAMP: FORMAT_TIMESTAMP('%E4Y-%m-%dT%H:%M:%E9S%Ez', `{{ col_name }}`, 'UTC')
|
|
71
76
|
|
|
@@ -17,7 +17,12 @@ from __future__ import annotations
|
|
|
17
17
|
|
|
18
18
|
import logging
|
|
19
19
|
|
|
20
|
+
from shared.datatypes.bigquery import BigQueryType
|
|
20
21
|
from shared.datatypes.common import CommonType
|
|
22
|
+
from shared.datatypes.snowflake import SnowflakeType
|
|
23
|
+
from snowflake.snowflake_data_validation.query.decimal_text_normalization import (
|
|
24
|
+
build_decimal_text_canonical_expr,
|
|
25
|
+
)
|
|
21
26
|
from snowflake.snowflake_data_validation.query.float_bit_normalization import (
|
|
22
27
|
build_binary64_canonical_expr,
|
|
23
28
|
)
|
|
@@ -33,6 +38,10 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
33
38
|
METRIC_COLUMN_MODIFIER_PLACEHOLDER,
|
|
34
39
|
Platform,
|
|
35
40
|
)
|
|
41
|
+
from snowflake.snowflake_data_validation.utils.iso_dv_common import (
|
|
42
|
+
get_paired_target_column_types,
|
|
43
|
+
normalize_snowflake_base_type,
|
|
44
|
+
)
|
|
36
45
|
from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
|
|
37
46
|
from snowflake.snowflake_data_validation.validation.comparison_codec import (
|
|
38
47
|
ComparisonCodec,
|
|
@@ -43,6 +52,10 @@ from snowflake.snowflake_data_validation.validation.comparison_codec import (
|
|
|
43
52
|
|
|
44
53
|
LOGGER = logging.getLogger(__name__)
|
|
45
54
|
|
|
55
|
+
_WIDE_NUMERIC_BASE_TYPES = frozenset({BigQueryType.BIGNUMERIC, BigQueryType.BIGDECIMAL})
|
|
56
|
+
# Normalization key for a BIGNUMERIC / BIGDECIMAL whose Snowflake mirror is DECFLOAT.
|
|
57
|
+
BIGNUMERIC_DECFLOAT_NORMALIZATION_KEY = "BIGNUMERIC_DECFLOAT"
|
|
58
|
+
|
|
46
59
|
|
|
47
60
|
def build_bigquery_float_bit_canonical_expr(col_ref: str) -> str:
|
|
48
61
|
"""Return the exact binary64 tuple used for BigQuery float validation."""
|
|
@@ -151,6 +164,27 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
|
|
|
151
164
|
)
|
|
152
165
|
return build_bigquery_float_bit_canonical_expr(value_expr)
|
|
153
166
|
|
|
167
|
+
def build_decfloat_shim(self, column, col_ref: str) -> str:
|
|
168
|
+
"""Canonicalize a BIGNUMERIC mirrored as DECFLOAT from its exact ``STRING`` text."""
|
|
169
|
+
return build_decimal_text_canonical_expr(f"CAST({col_ref} AS STRING)", dialect=self.platform.value)
|
|
170
|
+
|
|
171
|
+
def _lands_in_decfloat(self, column, table_context: TableContext) -> bool:
|
|
172
|
+
"""Return True when a BIGNUMERIC / BIGDECIMAL column's Snowflake mirror is DECFLOAT.
|
|
173
|
+
|
|
174
|
+
The paired target type decides when it is known: Iceberg and user-chosen
|
|
175
|
+
targets keep a bare BIGNUMERIC on NUMBER. Without it, a bare type follows
|
|
176
|
+
the create path, which emits DECFLOAT (``apply_type_parameters``).
|
|
177
|
+
"""
|
|
178
|
+
if self.normalize_bigquery_type(column.data_type) not in _WIDE_NUMERIC_BASE_TYPES:
|
|
179
|
+
return False
|
|
180
|
+
target_type = get_paired_target_column_types(table_context).get(column.name)
|
|
181
|
+
if isinstance(target_type, str):
|
|
182
|
+
return normalize_snowflake_base_type(target_type) == SnowflakeType.DECFLOAT
|
|
183
|
+
if "(" in column.data_type:
|
|
184
|
+
return False
|
|
185
|
+
LOGGER.debug(f"No paired target type for {column.data_type} {column.name}; assuming the DECFLOAT mirror the create path emits.")
|
|
186
|
+
return True
|
|
187
|
+
|
|
154
188
|
def _apply_metric_column_modifier(
|
|
155
189
|
self,
|
|
156
190
|
metric_template: str,
|
|
@@ -200,8 +234,11 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
|
|
|
200
234
|
self,
|
|
201
235
|
column,
|
|
202
236
|
datatypes_normalization_templates: dict[str, str],
|
|
237
|
+
table_context: TableContext,
|
|
203
238
|
) -> str:
|
|
204
239
|
base_type = self.normalize_bigquery_type(column.data_type)
|
|
240
|
+
if self._lands_in_decfloat(column, table_context):
|
|
241
|
+
base_type = BIGNUMERIC_DECFLOAT_NORMALIZATION_KEY
|
|
205
242
|
normalization_template = datatypes_normalization_templates.get(base_type)
|
|
206
243
|
if normalization_template is None:
|
|
207
244
|
LOGGER.debug(
|
|
@@ -227,6 +264,7 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
|
|
|
227
264
|
normalization_template = self._resolve_datatype_normalization_template(
|
|
228
265
|
column,
|
|
229
266
|
datatypes_normalization_templates,
|
|
267
|
+
table_context,
|
|
230
268
|
)
|
|
231
269
|
normalization_template = resolve_column_normalization_template(
|
|
232
270
|
column.name,
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
# - {{ numeric_format_mask }} is a pre-built DB2-valid 9…90 mask (no FM prefix)
|
|
16
16
|
# from the query generator's _build_fm_to_char_mask override.
|
|
17
17
|
# - {{ float_bit_shim }} expands to the IEEE-754 sign|exponent|significand tuple.
|
|
18
|
+
# - {{ decfloat_shim }} expands to DECFLOAT's exact canonical decimal text.
|
|
18
19
|
# - HEX(HASH(val, 0)) computes MD5 in DB2 11.5 (algorithm 0 = MD5) using the built-in
|
|
19
20
|
# SYSIBM.HASH scalar — no special privilege (unlike SYSPROC.HASH2, which is often absent).
|
|
20
21
|
# - Double-quoted column names handle lowercase/mixed-case identifiers.
|
|
@@ -37,7 +38,8 @@ FLOAT: '{{ float_bit_shim }}'
|
|
|
37
38
|
REAL: '{{ float_bit_shim }}'
|
|
38
39
|
DOUBLE: '{{ float_bit_shim }}'
|
|
39
40
|
DOUBLE PRECISION: '{{ float_bit_shim }}'
|
|
40
|
-
DECFLOAT:
|
|
41
|
+
# DECFLOAT(16/34) is decimal: a DOUBLE drops digits past ~16, so compare its exact text.
|
|
42
|
+
DECFLOAT: '{{ decfloat_shim }}'
|
|
41
43
|
|
|
42
44
|
# ---- Character types (text family) ----
|
|
43
45
|
# CHAR/NCHAR are blank-padded; the Snowflake E2E/SCAI mirror is VARCHAR/TEXT.
|
|
@@ -103,9 +105,9 @@ XML: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN OCTET_LENGTH(XMLSERIALIZE
|
|
|
103
105
|
# DATE: no fractional seconds in DB2 DATE.
|
|
104
106
|
DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
|
|
105
107
|
# TIME: no fractional seconds in DB2 TIME. DB2's TO_CHAR / VARCHAR_FORMAT has no
|
|
106
|
-
# TIME signature (SQL0245N, ambiguous routine), so CHAR(col, JIS) renders
|
|
107
|
-
#
|
|
108
|
-
TIME: CHAR("{{ col_name }}", JIS)
|
|
108
|
+
# TIME signature (SQL0245N, ambiguous routine), so CHAR(col, JIS) renders hh:mm:ss,
|
|
109
|
+
# padded to nine zero digits and cut like Snowflake's TIME ({{ time_text_length }}).
|
|
110
|
+
TIME: LEFT(CHAR("{{ col_name }}", JIS) || '.000000000', {{ time_text_length }})
|
|
109
111
|
# TIMESTAMP: ISO 8601 with T-separator and 9 fractional digits, Snowflake
|
|
110
112
|
# TIMESTAMP_NTZ's .FF9 canonical form. FF9 pads TIMESTAMP(0-8) with zeros and keeps
|
|
111
113
|
# digits 7-9 of TIMESTAMP(9-12), the most Snowflake stores. DB2's TO_CHAR rejects an
|
|
@@ -21,15 +21,22 @@ below give DB2 its own DB2-valid rendering that still matches Snowflake
|
|
|
21
21
|
canonical wrapper and uses the base substitution with the DB2 mask.
|
|
22
22
|
* ``build_float_bit_shim`` — IEEE-754 ``sign|exponent|significand`` tuple (same
|
|
23
23
|
contract as Snowflake FLOAT). DB2 ``LN``/``POWER`` run in ``DOUBLE``.
|
|
24
|
+
* ``build_decfloat_shim`` — DECFLOAT's exact ``CHAR`` text, canonicalized like
|
|
25
|
+
Snowflake DECFLOAT's ``TO_VARCHAR`` (a ``DOUBLE`` keeps ~16 of its 34 digits).
|
|
24
26
|
"""
|
|
25
27
|
|
|
26
28
|
from pathlib import Path
|
|
27
29
|
|
|
28
30
|
import jinja2
|
|
29
31
|
|
|
32
|
+
from shared.datatypes.common import CommonType
|
|
33
|
+
from shared.datatypes.db2 import Db2Type
|
|
30
34
|
from snowflake.snowflake_data_validation.oracle.query.query_generator_oracle import (
|
|
31
35
|
QueryGeneratorOracle,
|
|
32
36
|
)
|
|
37
|
+
from snowflake.snowflake_data_validation.query.decimal_text_normalization import (
|
|
38
|
+
build_decimal_text_canonical_expr,
|
|
39
|
+
)
|
|
33
40
|
from snowflake.snowflake_data_validation.query.float_bit_normalization import (
|
|
34
41
|
build_binary64_canonical_expr,
|
|
35
42
|
)
|
|
@@ -40,6 +47,7 @@ from snowflake.snowflake_data_validation.query.query_generator_base import (
|
|
|
40
47
|
QueryGeneratorBase,
|
|
41
48
|
resolve_table_context_modifiers,
|
|
42
49
|
)
|
|
50
|
+
from snowflake.snowflake_data_validation.query.sql_type_families import SNOWFLAKE_FLOAT_TYPE_NAMES
|
|
43
51
|
from snowflake.snowflake_data_validation.utils.constants import (
|
|
44
52
|
NULL_HASHING_SENTINEL,
|
|
45
53
|
NULL_HASHING_SENTINEL_KEY,
|
|
@@ -47,6 +55,11 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
47
55
|
ROW_HASH_COLUMN_DELIMITER_KEY,
|
|
48
56
|
Platform,
|
|
49
57
|
)
|
|
58
|
+
from snowflake.snowflake_data_validation.utils.iso_dv_common import (
|
|
59
|
+
get_paired_target_column_types,
|
|
60
|
+
normalize_snowflake_base_type,
|
|
61
|
+
)
|
|
62
|
+
from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
|
|
50
63
|
|
|
51
64
|
|
|
52
65
|
# Wide enough for BIGINT (19 digits) and DECIMAL(31); the trailing 0 forces the
|
|
@@ -57,8 +70,8 @@ _DB2_INTEGER_NINES = 31
|
|
|
57
70
|
def build_db2_float_bit_canonical_expr(col_ref: str) -> str:
|
|
58
71
|
"""Return the exact binary64 tuple used for DB2 float validation.
|
|
59
72
|
|
|
60
|
-
``LN``/``POWER`` must run in IEEE-754, so values
|
|
61
|
-
|
|
73
|
+
``LN``/``POWER`` must run in IEEE-754, so values are cast to ``DOUBLE``
|
|
74
|
+
first. A value that is already ``DOUBLE`` (including
|
|
62
75
|
float32-widened ``REAL``) is left unchanged.
|
|
63
76
|
"""
|
|
64
77
|
ieee_expr = col_ref
|
|
@@ -130,6 +143,31 @@ class QueryGeneratorDb2(QueryGeneratorOracle):
|
|
|
130
143
|
value_expr = float_bit_input_expr(col_ref, data_type, dialect=self.platform.value)
|
|
131
144
|
return build_db2_float_bit_canonical_expr(value_expr)
|
|
132
145
|
|
|
146
|
+
def build_decfloat_shim(self, column, col_ref: str) -> str:
|
|
147
|
+
"""Canonicalize DECFLOAT from its exact ``CHAR`` text (``NaN``/``Infinity`` become markers)."""
|
|
148
|
+
return build_decimal_text_canonical_expr(f"CHAR({col_ref})", dialect=self.platform.value)
|
|
149
|
+
|
|
150
|
+
def _resolve_datatype_normalization_template(
|
|
151
|
+
self,
|
|
152
|
+
column,
|
|
153
|
+
datatypes_normalization_templates: dict[str, str],
|
|
154
|
+
table_context: TableContext,
|
|
155
|
+
) -> str:
|
|
156
|
+
"""Hash a DECFLOAT mirrored as a Snowflake FLOAT as binary64, as that target does.
|
|
157
|
+
|
|
158
|
+
DMO creates DECFLOAT; only a user-mapped target lands on FLOAT, and it
|
|
159
|
+
holds ~16 digits, so the exact decimal text could never match it.
|
|
160
|
+
"""
|
|
161
|
+
if self._parse_type_precision_scale(column.data_type or "")[0] == Db2Type.DECFLOAT:
|
|
162
|
+
target_type = get_paired_target_column_types(table_context).get(column.name)
|
|
163
|
+
if isinstance(target_type, str) and normalize_snowflake_base_type(target_type) in SNOWFLAKE_FLOAT_TYPE_NAMES:
|
|
164
|
+
return datatypes_normalization_templates[CommonType.FLOAT]
|
|
165
|
+
return super()._resolve_datatype_normalization_template(
|
|
166
|
+
column,
|
|
167
|
+
datatypes_normalization_templates,
|
|
168
|
+
table_context,
|
|
169
|
+
)
|
|
170
|
+
|
|
133
171
|
# ------------------------------------------------------------------
|
|
134
172
|
# text_comparison_mode: apply the per-column text codec (raw/logical)
|
|
135
173
|
#
|
|
@@ -39,6 +39,7 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
39
39
|
from snowflake.snowflake_data_validation.utils.context import Context
|
|
40
40
|
from snowflake.snowflake_data_validation.utils.iso_dv_common import (
|
|
41
41
|
attach_paired_column_types_for_iso_timestamp_dv,
|
|
42
|
+
attach_paired_time_comparison_precision,
|
|
42
43
|
)
|
|
43
44
|
from snowflake.snowflake_data_validation.utils.model.table_column_metadata import (
|
|
44
45
|
TableColumnMetadata,
|
|
@@ -129,6 +130,11 @@ class BaseValidationExecutor(ABC):
|
|
|
129
130
|
table_configuration.column_mappings,
|
|
130
131
|
)
|
|
131
132
|
)
|
|
133
|
+
attach_paired_time_comparison_precision(
|
|
134
|
+
source_table_context,
|
|
135
|
+
target_table_context,
|
|
136
|
+
self.context.source_platform,
|
|
137
|
+
)
|
|
132
138
|
|
|
133
139
|
if validations[SCHEMA_VALIDATION_KEY]:
|
|
134
140
|
self.execute_schema_validation(
|
|
@@ -88,9 +88,10 @@ SERIAL: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC), '{{ numeric_format_mask
|
|
|
88
88
|
SMALLINT: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC), '{{ numeric_format_mask }}'))
|
|
89
89
|
SMALLSERIAL: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC), '{{ numeric_format_mask }}'))
|
|
90
90
|
TEXT: '"{{ col_name }}"'
|
|
91
|
-
TIME:
|
|
91
|
+
# TIME: microseconds + '000' pad to nine digits, cut to the precision both sides share.
|
|
92
|
+
TIME: LEFT(TO_CHAR("{{ col_name }}", 'HH24:MI:SS.US') || '000', {{ time_text_length }})
|
|
92
93
|
TIME WITH TIME ZONE: CASE WHEN "{{ col_name }}" IS NULL THEN NULL ELSE '1970-01-01T' || TO_CHAR(CAST("{{ col_name }}" AS TIME), 'HH24:MI:SS.US') || '000' || CASE WHEN EXTRACT(TIMEZONE FROM "{{ col_name }}") < 0 THEN '-' ELSE '+' END || LPAD(CAST(FLOOR(ABS(EXTRACT(TIMEZONE FROM "{{ col_name }}")) / 3600) AS TEXT), 2, '0') || ':' || LPAD(CAST(FLOOR(MOD(ABS(EXTRACT(TIMEZONE FROM "{{ col_name }}")), 3600) / 60) AS TEXT), 2, '0') END
|
|
93
|
-
TIME WITHOUT TIME ZONE: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
|
|
94
|
+
TIME WITHOUT TIME ZONE: LEFT(TO_CHAR("{{ col_name }}", 'HH24:MI:SS.US') || '000', {{ time_text_length }})
|
|
94
95
|
TIMESTAMP: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD"T"HH24:MI:SS.US') || '000'
|
|
95
96
|
# timestamptz has no stored offset; compare UTC instants as ISO FF9 (+00:00).
|
|
96
97
|
TIMESTAMP WITH TIME ZONE: TO_CHAR(("{{ col_name }}" AT TIME ZONE 'UTC'), 'YYYY-MM-DD"T"HH24:MI:SS.US') || '000+00:00'
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""Exact decimal canonicalization for cross-engine DECFLOAT comparison.
|
|
2
|
+
|
|
3
|
+
DECFLOAT holds up to 34 (DB2) or 38 (Snowflake) significant decimal digits, so
|
|
4
|
+
it must not be compared through IEEE-754 binary64, which keeps about 16. Each
|
|
5
|
+
engine renders the value as text instead, and the text is reduced in SQL to
|
|
6
|
+
one canonical form that depends only on the value:
|
|
7
|
+
|
|
8
|
+
* ``[-]d[.ddd]E<n>``: the significant digits with leading and trailing zeros
|
|
9
|
+
removed, one digit before the point, and the adjusted decimal exponent;
|
|
10
|
+
* ``0`` for every zero (``0``, ``-0``, ``0E+5``, ``0.000``);
|
|
11
|
+
* ``NAN``, ``+INF`` and ``-INF`` for the special values, the markers the
|
|
12
|
+
binary64 tuple uses.
|
|
13
|
+
|
|
14
|
+
The input text may be plain (``-0.00120``) or E-notation (``1.20E+3``,
|
|
15
|
+
``1.2e-7``), with any sign, case or trailing zeros, so neither engine's own
|
|
16
|
+
text format has to match the other's: ``1.50``, ``15E-1`` and ``1.5E+0`` all
|
|
17
|
+
become ``1.5E0``.
|
|
18
|
+
|
|
19
|
+
Every step is position arithmetic that is valid for any input, never a CASE
|
|
20
|
+
branch that would fail if evaluated eagerly (DB2 may evaluate both branches).
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from __future__ import annotations
|
|
24
|
+
|
|
25
|
+
from dataclasses import dataclass
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass(frozen=True)
|
|
29
|
+
class DecimalTextSqlDialect:
|
|
30
|
+
"""SQL spelling for the decimal-text canonicalizer. Output strings stay identical."""
|
|
31
|
+
|
|
32
|
+
# 1-based position of ``{needle}`` in ``{haystack}``, 0 when absent.
|
|
33
|
+
locate: str
|
|
34
|
+
ltrim_zeros: str
|
|
35
|
+
rtrim_zeros: str
|
|
36
|
+
integer_type: str
|
|
37
|
+
integer_text: str
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
SNOWFLAKE_DECIMAL_TEXT_SQL = DecimalTextSqlDialect(
|
|
41
|
+
locate="POSITION({needle}, {haystack})",
|
|
42
|
+
ltrim_zeros="LTRIM({value}, '0')",
|
|
43
|
+
rtrim_zeros="RTRIM({value}, '0')",
|
|
44
|
+
integer_type="INTEGER",
|
|
45
|
+
integer_text="CAST({value} AS VARCHAR)",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
# DB2 LUW: TRIM(LEADING .. FROM ..) predates the two-argument LTRIM/RTRIM (11.1).
|
|
49
|
+
DB2_DECIMAL_TEXT_SQL = DecimalTextSqlDialect(
|
|
50
|
+
locate="LOCATE({needle}, {haystack})",
|
|
51
|
+
ltrim_zeros="TRIM(LEADING '0' FROM {value})",
|
|
52
|
+
rtrim_zeros="TRIM(TRAILING '0' FROM {value})",
|
|
53
|
+
integer_type="INTEGER",
|
|
54
|
+
integer_text="CAST({value} AS VARCHAR(12))",
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
BIGQUERY_DECIMAL_TEXT_SQL = DecimalTextSqlDialect(
|
|
58
|
+
locate="STRPOS({haystack}, {needle})",
|
|
59
|
+
ltrim_zeros="LTRIM({value}, '0')",
|
|
60
|
+
rtrim_zeros="RTRIM({value}, '0')",
|
|
61
|
+
integer_type="INT64",
|
|
62
|
+
integer_text="CAST({value} AS STRING)",
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
DECIMAL_TEXT_SQL_BY_DIALECT: dict[str, DecimalTextSqlDialect] = {
|
|
67
|
+
"snowflake": SNOWFLAKE_DECIMAL_TEXT_SQL,
|
|
68
|
+
"db2": DB2_DECIMAL_TEXT_SQL,
|
|
69
|
+
"bigquery": BIGQUERY_DECIMAL_TEXT_SQL,
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
_E = "'E'"
|
|
74
|
+
_POINT = "'.'"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _resolve_dialect(dialect: str | DecimalTextSqlDialect) -> DecimalTextSqlDialect:
|
|
78
|
+
if not isinstance(dialect, str):
|
|
79
|
+
return dialect
|
|
80
|
+
sql = DECIMAL_TEXT_SQL_BY_DIALECT.get(dialect.lower())
|
|
81
|
+
if sql is None:
|
|
82
|
+
raise ValueError(f"Unknown decimal-text SQL dialect: {dialect!r}")
|
|
83
|
+
return sql
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def build_decimal_text_canonical_expr(
|
|
87
|
+
text_expr: str,
|
|
88
|
+
*,
|
|
89
|
+
dialect: str | DecimalTextSqlDialect,
|
|
90
|
+
) -> str:
|
|
91
|
+
"""Return SQL that reduces the exact decimal text *text_expr* to its canonical form.
|
|
92
|
+
|
|
93
|
+
*text_expr* must render every digit the engine stores (``TO_VARCHAR`` on
|
|
94
|
+
Snowflake, ``CHAR`` on DB2, ``CAST(.. AS STRING)`` on BigQuery). The digits
|
|
95
|
+
are joined across the point, ``exp10 = exponent - fraction digits``, and the
|
|
96
|
+
adjusted exponent of the first significant digit is
|
|
97
|
+
``exp10 + len(digits without leading zeros) - 1``.
|
|
98
|
+
"""
|
|
99
|
+
sql = _resolve_dialect(dialect)
|
|
100
|
+
|
|
101
|
+
def locate(needle: str, haystack: str) -> str:
|
|
102
|
+
return sql.locate.format(needle=needle, haystack=haystack)
|
|
103
|
+
|
|
104
|
+
text = f"UPPER(TRIM({text_expr}))"
|
|
105
|
+
# Always carry an exponent, so the mantissa and exponent split never needs a CASE.
|
|
106
|
+
with_exponent = f"({text} || CASE WHEN {locate(_E, text)} = 0 THEN 'E0' ELSE '' END)"
|
|
107
|
+
exponent_at = locate(_E, with_exponent)
|
|
108
|
+
mantissa = f"SUBSTR({with_exponent}, 1, {exponent_at} - 1)"
|
|
109
|
+
exponent = f"CAST(REPLACE(SUBSTR({with_exponent}, {exponent_at} + 1), '+', '') AS {sql.integer_type})"
|
|
110
|
+
point_at = locate(_POINT, mantissa)
|
|
111
|
+
fraction_digits = f"(CASE WHEN {point_at} = 0 THEN 0 ELSE LENGTH({mantissa}) - {point_at} END)"
|
|
112
|
+
digits = f"REPLACE(REPLACE(REPLACE({mantissa}, '-', ''), '+', ''), '.', '')"
|
|
113
|
+
significant = sql.ltrim_zeros.format(value=digits)
|
|
114
|
+
coefficient_digits = sql.rtrim_zeros.format(value=significant)
|
|
115
|
+
adjusted_exponent = f"({exponent} - {fraction_digits} + LENGTH({significant}) - 1)"
|
|
116
|
+
coefficient = (
|
|
117
|
+
f"SUBSTR({coefficient_digits}, 1, 1) || "
|
|
118
|
+
f"CASE WHEN LENGTH({coefficient_digits}) > 1 THEN '.' || SUBSTR({coefficient_digits}, 2) ELSE '' END"
|
|
119
|
+
)
|
|
120
|
+
sign = f"CASE WHEN SUBSTR({text}, 1, 1) = '-' THEN '-' ELSE '' END"
|
|
121
|
+
canonical = f"{sign} || {coefficient} || 'E' || {sql.integer_text.format(value=adjusted_exponent)}"
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
f"CASE WHEN {text_expr} IS NULL THEN NULL "
|
|
125
|
+
f"WHEN {text} LIKE '%NAN%' THEN 'NAN' "
|
|
126
|
+
f"WHEN {text} LIKE '%INF%' THEN (CASE WHEN SUBSTR({text}, 1, 1) = '-' THEN '-INF' ELSE '+INF' END) "
|
|
127
|
+
# COALESCE: a DB2 database in Oracle compatibility mode turns '' into NULL.
|
|
128
|
+
f"WHEN COALESCE(LENGTH({significant}), 0) = 0 THEN '0' "
|
|
129
|
+
f"ELSE {canonical} END"
|
|
130
|
+
)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Copyright 2026 Snowflake Inc.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
"""Signed binary64 significand for Snowflake float avg, sum, and stddev against Teradata.
|
|
5
|
+
|
|
6
|
+
Teradata ``MOD`` and Snowflake ``%`` stop agreeing once a magnitude is too
|
|
7
|
+
large for an exact remainder (around 1e20 for modulus 2097143). The signed
|
|
8
|
+
unit significand of the same stored value matches on both engines, and
|
|
9
|
+
``STDDEV_POP`` of that significand stays inside the L2 absolute tolerance.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from shared.datatypes.common import CommonType
|
|
15
|
+
from snowflake.snowflake_data_validation.query.float_bit_normalization import (
|
|
16
|
+
SNOWFLAKE_BINARY64_SQL,
|
|
17
|
+
build_binary64_signed_significand_expr,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
_FLOAT_AGGREGATE_SQL = {"avg": "AVG", "sum": "SUM", "stddev": "STDDEV_POP"}
|
|
22
|
+
_SHIPPED_SNOWFLAKE_FLOAT_MODIFIER = "%2097143"
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _base_type(data_type: str) -> str:
|
|
26
|
+
return data_type.strip().upper().split("(", 1)[0].strip()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def is_shipped_snowflake_float_aggregate(metric_name: str, metric_template: str, column_sql: str) -> bool:
|
|
30
|
+
"""Return whether *metric_template* is the packaged Snowflake FLOAT avg/sum/stddev, modifier on or off.
|
|
31
|
+
|
|
32
|
+
A column override or customized template YAML is the user's SQL, which both
|
|
33
|
+
engines must run as written; only the packaged default is replaced.
|
|
34
|
+
"""
|
|
35
|
+
aggregate = _FLOAT_AGGREGATE_SQL.get(metric_name)
|
|
36
|
+
if aggregate is None:
|
|
37
|
+
return False
|
|
38
|
+
compact = "".join(metric_template.split())
|
|
39
|
+
column = "".join(column_sql.split())
|
|
40
|
+
return compact in {
|
|
41
|
+
f"{aggregate}({column})",
|
|
42
|
+
f"{aggregate}({column}{_SHIPPED_SNOWFLAKE_FLOAT_MODIFIER})",
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def snowflake_teradata_float_aggregate_template(metric_name: str, data_type: str, column_sql: str) -> str | None:
|
|
47
|
+
"""Return the Snowflake twin of the Teradata float avg/sum/stddev metric templates, or None.
|
|
48
|
+
|
|
49
|
+
The Teradata side lives in ``teradata_column_metrics_templates.yaml`` (FLOAT,
|
|
50
|
+
REAL and DOUBLE PRECISION), rendered from the same builder in the Teradata
|
|
51
|
+
dialect. The Snowflake YAML is shared by every source, so
|
|
52
|
+
this pairing-only rewrite runs from ``QueryGeneratorSnowflake``.
|
|
53
|
+
"""
|
|
54
|
+
if metric_name not in _FLOAT_AGGREGATE_SQL or _base_type(data_type) != CommonType.FLOAT:
|
|
55
|
+
return None
|
|
56
|
+
significand = build_binary64_signed_significand_expr(column_sql, dialect=SNOWFLAKE_BINARY64_SQL)
|
|
57
|
+
return f"{_FLOAT_AGGREGATE_SQL[metric_name]}({significand})"
|