snowflake-data-validation 1.44.1__tar.gz → 1.45.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.1 → snowflake_data_validation-1.45.1}/PKG-INFO +55 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/README.md +54 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -5
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +3 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +12 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +6 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +3 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +14 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +6 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +3 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +3 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +13 -4
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +17 -6
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +65 -17
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +20 -11
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +5 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -9
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +2 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -4
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +10 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +13 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/__init__.py +18 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/_internal.py +109 -26
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +12 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +18 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +18 -0
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +375 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +21 -7
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +10 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +123 -7
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +67 -9
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +16 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +5 -8
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -5
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +1 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +1 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +13 -8
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +7 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +1 -0
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_show_columns_query.sql.j2 +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +173 -35
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +1 -24
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +7 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +5 -9
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +16 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +56 -13
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -4
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -7
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +6 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +3 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +48 -9
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +16 -7
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +32 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -6
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +8 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +29 -12
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +34 -5
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/constants.py +19 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -8
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +48 -53
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +412 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +5 -12
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +15 -5
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +33 -8
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/validation/column_pairing.py +74 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +24 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +102 -6
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -30
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +22 -19
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +22 -16
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +29 -55
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_collation.py +1 -0
- snowflake_data_validation-1.45.1/tests/unit/Postgresql/test_postgresql_enum_metadata.py +128 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/query/test_query_generator_redshift.py +98 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_collation.py +4 -4
- snowflake_data_validation-1.45.1/tests/unit/Redshift/test_redshift_columns_metadata_template.py +61 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +6 -3
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_spatial_templates.py +23 -19
- snowflake_data_validation-1.45.1/tests/unit/Redshift/test_redshift_split_schema_query.py +234 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_super_normalization.py +8 -30
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_query_generator_teradata.py +102 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_collation.py +1 -0
- snowflake_data_validation-1.45.1/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +99 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +5 -7
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +112 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_query_generator_bigquery.py +58 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_metadata_extractor.py +3 -6
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_xml_long_metrics.py +1 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -4
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -14
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_query_generator.py +1 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/query/test_time_fraction_rendering.py +5 -2
- snowflake_data_validation-1.45.1/tests/unit/snowflake/test_snowflake_get_case_sensitive_columns.py +65 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +30 -16
- snowflake_data_validation-1.45.1/tests/unit/sqlserver/test_sqlserver_datetimeoffset_physical_target.py +177 -0
- snowflake_data_validation-1.45.1/tests/unit/sqlserver/test_sqlserver_l1_character_length.py +77 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +2 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_row_queries.py +157 -0
- snowflake_data_validation-1.45.1/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +153 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_accepted_transformation.py +36 -0
- snowflake_data_validation-1.45.1/tests/unit/test_case_sensitive_column_pairing.py +266 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_normalization_override.py +49 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_loader.py +11 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_model.py +10 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_data_validator.py +191 -0
- snowflake_data_validation-1.45.1/tests/unit/test_extraction_keeps_catalog_column_spelling.py +45 -0
- snowflake_data_validation-1.45.1/tests/unit/test_fetch_schema_metadata.py +154 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_float_bit_canonical.py +1 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_get_target_cols.py +45 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_dataframe.py +3 -15
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_polars_cast.py +3 -5
- snowflake_data_validation-1.45.1/tests/unit/test_helper_polars_cast_threading.py +112 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_iceberg_dv_l3_normalization.py +267 -115
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_iceberg_v2_metrics_exclusion.py +23 -11
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_iso_dv_common.py +37 -2
- snowflake_data_validation-1.45.1/tests/unit/test_l2_count_distinct_opt_in_config.py +89 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_object_type_criterion.py +2 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_generator_numeric_scale.py +10 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_snapshot_generation.py +11 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_validator.py +59 -0
- snowflake_data_validation-1.45.1/tests/unit/test_schema_accepted_native_datatypes.py +291 -0
- snowflake_data_validation-1.45.1/tests/unit/test_schema_query_capability.py +93 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_source_validation_executor.py +27 -19
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_spatial_wkt_canonicalization.py +2 -2
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sql_catalog_template_guard.py +5 -1
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sql_literal_jinja_filter.py +5 -8
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sync_executor_qvci_fallback.py +10 -2
- snowflake_data_validation-1.45.1/tests/unit/test_sync_schema_validation_real_callbacks.py +87 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sync_validation_executor.py +11 -10
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_configuration.py +6 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_metadata_processor.py +246 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_snapshot_generation.py +11 -6
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_iso_normalization.py +34 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_type_code_mapping.py +19 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_configuration.py +4 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_view_configuration.py +6 -0
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -191
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -55
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -8
- snowflake_data_validation-1.44.1/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +0 -361
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/.gitignore +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/LICENSE +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/docs/README.md +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/pyproject.toml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/conftest.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/conftest.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_query_generator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_registration.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_catalog_column_size.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_data_validator_threading.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_validation_query_generation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_charset_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_selection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_column_selection_actual_names.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_comparison_codec.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_decimal_text_canonical.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_dv_tracing.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_error_classifier.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_float_canonical_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_io.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_interval_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_l2_collation_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_metric_identifier_rendering.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_templates_casts.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_normalize_shape_aware.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_period_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_executor.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback_triggers.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_count_bigint_overflow.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_hash_column_delimiter.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_schema_column_selection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_signature_external_table.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_signature_row_md5_query.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_trace_bridge.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_tsql_float_l2_aggregates.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_templates_dto.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_bit_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_common.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_normalization.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/test_warm_start.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.1}/tests/unit/utils/test_constants.py +0 -0
- {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.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.
|
|
3
|
+
Version: 1.45.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/
|
|
@@ -154,6 +154,14 @@ Compares table structure between source and target:
|
|
|
154
154
|
- Precision, scale, and length
|
|
155
155
|
- Nullable constraints
|
|
156
156
|
|
|
157
|
+
Some differences are reported as `WARNING` and do not fail L1:
|
|
158
|
+
- Snowflake still holds every source value: a different column order, a Snowflake precision or scale that can hold the source's, and a `NOT NULL` source column whose Snowflake column is nullable (a Snowflake virtual column is always nullable).
|
|
159
|
+
- Snowflake may truncate or reject source values, so review it: a source character length longer than Snowflake's.
|
|
160
|
+
|
|
161
|
+
A nullable source column on a `NOT NULL` Snowflake column still fails, since Snowflake can reject the source's NULLs.
|
|
162
|
+
|
|
163
|
+
A PostgreSQL user-defined `ENUM` column is validated as `ENUM` against a Snowflake `VARCHAR`. `information_schema` reports every enum as `USER-DEFINED`, so the metadata queries read `pg_type.typtype` to tell enums apart, and report the longest label as the column's length. L2 and L3 compare the label text.
|
|
164
|
+
|
|
157
165
|
### Metrics Validation
|
|
158
166
|
Compares statistical metrics for each column:
|
|
159
167
|
- Row count
|
|
@@ -164,6 +172,10 @@ Compares statistical metrics for each column:
|
|
|
164
172
|
|
|
165
173
|
For some types these metrics do not depend on the values themselves (for SQL Server: `VECTOR`, `XML`, `IMAGE`, `SQL_VARIANT`, `JSON`, `GEOGRAPHY`, `GEOMETRY`, `UNIQUEIDENTIFIER`), so a changed value can pass L2. Use L3 row validation to compare those columns' values. The per-type list is in `docs/data-migration-orchestrator/sqlserver-data-type-coverage.md` in this repo.
|
|
166
174
|
|
|
175
|
+
### Column pairing (L1 and L2)
|
|
176
|
+
|
|
177
|
+
L1 and L2 read each column's catalog spelling rather than an upper-cased name, so the report shows PostgreSQL `order_id` and SQL Server `OrderId` as the catalog spells them. They pair a source column with its target column by the source platform's identifier rule, the same rule data migration uses: the exact name; on a case-insensitive source (SQL Server, Teradata, Redshift, Azure Synapse, BigQuery, SQLite) a name differing only by case; else the name as Snowflake reads it unquoted, so PostgreSQL `order_id` pairs with `ORDER_ID`. On Oracle, PostgreSQL and DB2, `MixedCase` and `mixedcase` are two columns, and a mixed-case source column whose target exists only as `MIXEDCASE` is reported missing from the target. A `column_mappings` key names a source column by the same rule: on Oracle the key `MixedCase` names `MIXEDCASE`, and `"MixedCase"` names `MixedCase`. Result-set and query inputs pair names exactly, else ignoring case.
|
|
178
|
+
|
|
167
179
|
### Views
|
|
168
180
|
|
|
169
181
|
For **Redshift** and **Teradata** sources, views are validated on the view itself (no `CREATE TABLE AS SELECT` materialization in local sync mode). Other platforms may still materialize views to temporary tables before L1/L2/L3. **Teradata** views are read via `DBC.ColumnsQV` (Teradata's Query View Column Information catalog), so view L1 covers the full field set — column existence, datatype, precision, scale, length, nullability, and ordinal position — matching the table path. When `DBC.ColumnsQV` is unavailable (QVCI disabled → Teradata error 9719, missing `SELECT` grant, any other failure of that catalog query, or a degenerate result with null `DATA_TYPE`), the extractor falls back to `HELP COLUMN` with `basic_validation=True` and emits one WARNING schema row per view naming the trigger and the remediation. If HELP fails or source schema metadata still has no usable `DATA_TYPE` (including a view validated as a table whose `ColumnsV` types are null), L1 fails that object and does not continue to L2/L3. **Redshift** uses full schema metadata like tables.
|
|
@@ -214,6 +226,48 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
214
226
|
|
|
215
227
|
## Changelog
|
|
216
228
|
|
|
229
|
+
### v1.45.1
|
|
230
|
+
|
|
231
|
+
**Improvements**
|
|
232
|
+
|
|
233
|
+
- Improved schema-level metadata retrieval by using `SHOW COLUMNS`.
|
|
234
|
+
- Improved Iceberg timestamp normalization to follow the target physical type.
|
|
235
|
+
|
|
236
|
+
**Bug fixes**
|
|
237
|
+
|
|
238
|
+
- Fixed schema validation failing for source columns whose names end in a space.
|
|
239
|
+
- Fixed BigQuery `ARRAY<INT64>` elements beyond 2^53 being compared as quoted JSON strings.
|
|
240
|
+
- Fixed validation never passing for a SQL Server `NOT NULL` computed column migrated as a Snowflake virtual column.
|
|
241
|
+
- Fixed L1 and L2 pairing of source and target columns to ignore case for case-sensitive sources when no target names are given.
|
|
242
|
+
- Fixed SQL Server Iceberg L1 schema validation reporting a missing Snowflake character length.
|
|
243
|
+
- Fixed Redshift `DATE`, `TIMESTAMP` and `TIMESTAMPTZ` values on Iceberg losing signed-year values.
|
|
244
|
+
- Fixed Teradata numeric L3 text exceeding the `TO_CHAR` digit limit.
|
|
245
|
+
- Fixed PostgreSQL `ENUM` columns surfacing as `USER-DEFINED`, so `ENUM` type rules never matched.
|
|
246
|
+
- Fixed Teradata column metadata not reporting precision and scale, which made `TIME` pairing fall back to 6.
|
|
247
|
+
- Fixed L1 failing `CHARACTER_MAXIMUM_LENGTH` for a SQL Server `xml` column migrated as `VARIANT`.
|
|
248
|
+
|
|
249
|
+
### v1.45.0
|
|
250
|
+
|
|
251
|
+
**New features**
|
|
252
|
+
|
|
253
|
+
- Added support for applying custom L3 normalization per side, including `targetDataType: "*"` to target the mapped type.
|
|
254
|
+
- Added the `includeCountDistinct` option; L2 `COUNT(DISTINCT)` is now off by default and opt-in globally or per table.
|
|
255
|
+
- Added support for additional table and view types in data validation, including materialized views, temporary tables, BigQuery clones and snapshots, and DB2 materialized query tables.
|
|
256
|
+
|
|
257
|
+
**Improvements**
|
|
258
|
+
|
|
259
|
+
- Improved row comparison with positional column identity, so duplicate and case-variant column names no longer collapse.
|
|
260
|
+
- Improved Redshift connection resiliency with TCP keepalive defaults.
|
|
261
|
+
- Improved L1 validation to treat native integer bits-versus-digits precision differences as compatible, reported as a warning.
|
|
262
|
+
|
|
263
|
+
**Bug fixes**
|
|
264
|
+
|
|
265
|
+
- Fixed Oracle L2 metric rows and L3 cell frames upper-casing column names, which made mixed-case columns collide.
|
|
266
|
+
- Fixed L3 failing rows over a lowercase SQL Server `UNIQUEIDENTIFIER` or an ignored `FLOAT` `targetExpression`.
|
|
267
|
+
- Fixed a possible deadlock in expression casts when validators run on several threads.
|
|
268
|
+
- Fixed Redshift and PostgreSQL `REAL` values being compared against a non-exact widened value.
|
|
269
|
+
- Fixed Iceberg `FULL_INGEST` validation to follow the lossless-only temporal promotion of the load.
|
|
270
|
+
|
|
217
271
|
### v1.44.1
|
|
218
272
|
|
|
219
273
|
**New features**
|
|
@@ -63,6 +63,14 @@ Compares table structure between source and target:
|
|
|
63
63
|
- Precision, scale, and length
|
|
64
64
|
- Nullable constraints
|
|
65
65
|
|
|
66
|
+
Some differences are reported as `WARNING` and do not fail L1:
|
|
67
|
+
- Snowflake still holds every source value: a different column order, a Snowflake precision or scale that can hold the source's, and a `NOT NULL` source column whose Snowflake column is nullable (a Snowflake virtual column is always nullable).
|
|
68
|
+
- Snowflake may truncate or reject source values, so review it: a source character length longer than Snowflake's.
|
|
69
|
+
|
|
70
|
+
A nullable source column on a `NOT NULL` Snowflake column still fails, since Snowflake can reject the source's NULLs.
|
|
71
|
+
|
|
72
|
+
A PostgreSQL user-defined `ENUM` column is validated as `ENUM` against a Snowflake `VARCHAR`. `information_schema` reports every enum as `USER-DEFINED`, so the metadata queries read `pg_type.typtype` to tell enums apart, and report the longest label as the column's length. L2 and L3 compare the label text.
|
|
73
|
+
|
|
66
74
|
### Metrics Validation
|
|
67
75
|
Compares statistical metrics for each column:
|
|
68
76
|
- Row count
|
|
@@ -73,6 +81,10 @@ Compares statistical metrics for each column:
|
|
|
73
81
|
|
|
74
82
|
For some types these metrics do not depend on the values themselves (for SQL Server: `VECTOR`, `XML`, `IMAGE`, `SQL_VARIANT`, `JSON`, `GEOGRAPHY`, `GEOMETRY`, `UNIQUEIDENTIFIER`), so a changed value can pass L2. Use L3 row validation to compare those columns' values. The per-type list is in `docs/data-migration-orchestrator/sqlserver-data-type-coverage.md` in this repo.
|
|
75
83
|
|
|
84
|
+
### Column pairing (L1 and L2)
|
|
85
|
+
|
|
86
|
+
L1 and L2 read each column's catalog spelling rather than an upper-cased name, so the report shows PostgreSQL `order_id` and SQL Server `OrderId` as the catalog spells them. They pair a source column with its target column by the source platform's identifier rule, the same rule data migration uses: the exact name; on a case-insensitive source (SQL Server, Teradata, Redshift, Azure Synapse, BigQuery, SQLite) a name differing only by case; else the name as Snowflake reads it unquoted, so PostgreSQL `order_id` pairs with `ORDER_ID`. On Oracle, PostgreSQL and DB2, `MixedCase` and `mixedcase` are two columns, and a mixed-case source column whose target exists only as `MIXEDCASE` is reported missing from the target. A `column_mappings` key names a source column by the same rule: on Oracle the key `MixedCase` names `MIXEDCASE`, and `"MixedCase"` names `MixedCase`. Result-set and query inputs pair names exactly, else ignoring case.
|
|
87
|
+
|
|
76
88
|
### Views
|
|
77
89
|
|
|
78
90
|
For **Redshift** and **Teradata** sources, views are validated on the view itself (no `CREATE TABLE AS SELECT` materialization in local sync mode). Other platforms may still materialize views to temporary tables before L1/L2/L3. **Teradata** views are read via `DBC.ColumnsQV` (Teradata's Query View Column Information catalog), so view L1 covers the full field set — column existence, datatype, precision, scale, length, nullability, and ordinal position — matching the table path. When `DBC.ColumnsQV` is unavailable (QVCI disabled → Teradata error 9719, missing `SELECT` grant, any other failure of that catalog query, or a degenerate result with null `DATA_TYPE`), the extractor falls back to `HELP COLUMN` with `basic_validation=True` and emits one WARNING schema row per view naming the trigger and the remediation. If HELP fails or source schema metadata still has no usable `DATA_TYPE` (including a view validated as a table whose `ColumnsV` types are null), L1 fails that object and does not continue to L2/L3. **Redshift** uses full schema metadata like tables.
|
|
@@ -123,6 +135,48 @@ For configuration options and examples, see the [official documentation](https:/
|
|
|
123
135
|
|
|
124
136
|
## Changelog
|
|
125
137
|
|
|
138
|
+
### v1.45.1
|
|
139
|
+
|
|
140
|
+
**Improvements**
|
|
141
|
+
|
|
142
|
+
- Improved schema-level metadata retrieval by using `SHOW COLUMNS`.
|
|
143
|
+
- Improved Iceberg timestamp normalization to follow the target physical type.
|
|
144
|
+
|
|
145
|
+
**Bug fixes**
|
|
146
|
+
|
|
147
|
+
- Fixed schema validation failing for source columns whose names end in a space.
|
|
148
|
+
- Fixed BigQuery `ARRAY<INT64>` elements beyond 2^53 being compared as quoted JSON strings.
|
|
149
|
+
- Fixed validation never passing for a SQL Server `NOT NULL` computed column migrated as a Snowflake virtual column.
|
|
150
|
+
- Fixed L1 and L2 pairing of source and target columns to ignore case for case-sensitive sources when no target names are given.
|
|
151
|
+
- Fixed SQL Server Iceberg L1 schema validation reporting a missing Snowflake character length.
|
|
152
|
+
- Fixed Redshift `DATE`, `TIMESTAMP` and `TIMESTAMPTZ` values on Iceberg losing signed-year values.
|
|
153
|
+
- Fixed Teradata numeric L3 text exceeding the `TO_CHAR` digit limit.
|
|
154
|
+
- Fixed PostgreSQL `ENUM` columns surfacing as `USER-DEFINED`, so `ENUM` type rules never matched.
|
|
155
|
+
- Fixed Teradata column metadata not reporting precision and scale, which made `TIME` pairing fall back to 6.
|
|
156
|
+
- Fixed L1 failing `CHARACTER_MAXIMUM_LENGTH` for a SQL Server `xml` column migrated as `VARIANT`.
|
|
157
|
+
|
|
158
|
+
### v1.45.0
|
|
159
|
+
|
|
160
|
+
**New features**
|
|
161
|
+
|
|
162
|
+
- Added support for applying custom L3 normalization per side, including `targetDataType: "*"` to target the mapped type.
|
|
163
|
+
- Added the `includeCountDistinct` option; L2 `COUNT(DISTINCT)` is now off by default and opt-in globally or per table.
|
|
164
|
+
- Added support for additional table and view types in data validation, including materialized views, temporary tables, BigQuery clones and snapshots, and DB2 materialized query tables.
|
|
165
|
+
|
|
166
|
+
**Improvements**
|
|
167
|
+
|
|
168
|
+
- Improved row comparison with positional column identity, so duplicate and case-variant column names no longer collapse.
|
|
169
|
+
- Improved Redshift connection resiliency with TCP keepalive defaults.
|
|
170
|
+
- Improved L1 validation to treat native integer bits-versus-digits precision differences as compatible, reported as a warning.
|
|
171
|
+
|
|
172
|
+
**Bug fixes**
|
|
173
|
+
|
|
174
|
+
- Fixed Oracle L2 metric rows and L3 cell frames upper-casing column names, which made mixed-case columns collide.
|
|
175
|
+
- Fixed L3 failing rows over a lowercase SQL Server `UNIQUEIDENTIFIER` or an ignored `FLOAT` `targetExpression`.
|
|
176
|
+
- Fixed a possible deadlock in expression casts when validators run on several threads.
|
|
177
|
+
- Fixed Redshift and PostgreSQL `REAL` values being compared against a non-exact widened value.
|
|
178
|
+
- Fixed Iceberg `FULL_INGEST` validation to follow the lossless-only temporal promotion of the load.
|
|
179
|
+
|
|
126
180
|
### v1.44.1
|
|
127
181
|
|
|
128
182
|
**New features**
|
|
@@ -78,13 +78,11 @@ class MetadataExtractorAzureSynapse(MetadataExtractorBase):
|
|
|
78
78
|
def process_schema_query_result(
|
|
79
79
|
self,
|
|
80
80
|
result: list,
|
|
81
|
-
apply_column_validated_uppercase: bool = True,
|
|
82
81
|
) -> pd.DataFrame:
|
|
83
82
|
"""Process schema query results into a DataFrame for Azure Synapse.
|
|
84
83
|
|
|
85
84
|
Args:
|
|
86
85
|
result: Query result containing (columns_names, data_rows).
|
|
87
|
-
apply_column_validated_uppercase: Whether to uppercase column names.
|
|
88
86
|
|
|
89
87
|
Returns:
|
|
90
88
|
pd.DataFrame: Processed DataFrame with schema metadata.
|
|
@@ -94,7 +92,6 @@ class MetadataExtractorAzureSynapse(MetadataExtractorBase):
|
|
|
94
92
|
df = self.helper_dataframe.process_query_result_to_dataframe(
|
|
95
93
|
columns_names=list(columns_names),
|
|
96
94
|
data_rows=list(metadata_info),
|
|
97
|
-
apply_column_validated_uppercase=apply_column_validated_uppercase,
|
|
98
95
|
sort_and_reset_index=True,
|
|
99
96
|
)
|
|
100
97
|
if COLUMN_DATATYPE in df.columns:
|
|
@@ -115,7 +112,6 @@ class MetadataExtractorAzureSynapse(MetadataExtractorBase):
|
|
|
115
112
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
116
113
|
columns_names=list(result_columns),
|
|
117
114
|
data_rows=list(result_data),
|
|
118
|
-
apply_column_validated_uppercase=True,
|
|
119
115
|
sort_and_reset_index=True,
|
|
120
116
|
)
|
|
121
117
|
|
|
@@ -173,6 +169,5 @@ class MetadataExtractorAzureSynapse(MetadataExtractorBase):
|
|
|
173
169
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
174
170
|
columns_names=list(result_columns),
|
|
175
171
|
data_rows=list(result),
|
|
176
|
-
apply_column_validated_uppercase=False,
|
|
177
172
|
sort_and_reset_index=False,
|
|
178
173
|
)
|
|
@@ -52,6 +52,9 @@ NVARCHAR: '"{{ col_name }}"'
|
|
|
52
52
|
DATE: CONVERT(VARCHAR(10), "{{ col_name }}", 23)
|
|
53
53
|
# Same text as SQL Server TIME: hh:mi:ss.fffffff + '00', cut to {{ time_text_length }}.
|
|
54
54
|
TIME: LEFT(SUBSTRING(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 12, 16) + '00', {{ time_text_length }})
|
|
55
|
+
# Iceberg compatible TIME stored as VARCHAR (CETAS): the extract's own text, TIME(7)
|
|
56
|
+
# widened then '00', nine digits whatever the scale. '+' keeps NULL as NULL.
|
|
57
|
+
TIME_ICEBERG: CAST(CAST("{{ col_name }}" AS TIME(7)) AS VARCHAR(16)) + '00'
|
|
55
58
|
DATETIME: STUFF(CONVERT(VARCHAR(27), CAST(CAST("{{ col_name }}" AS DATETIME2(3)) AS DATETIME2(7)), 121), 11, 1, 'T') + '00'
|
|
56
59
|
DATETIME2: LEFT(STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T'), 26) + '000'
|
|
57
60
|
SMALLDATETIME: CONVERT(VARCHAR(19), "{{ col_name }}", 126) + '.000000000'
|
|
@@ -53,6 +53,11 @@ from snowflake.snowflake_data_validation.sqlserver.query.charset_normalization i
|
|
|
53
53
|
from snowflake.snowflake_data_validation.utils.constants import (
|
|
54
54
|
Platform,
|
|
55
55
|
)
|
|
56
|
+
from snowflake.snowflake_data_validation.utils.iceberg_dv_common import (
|
|
57
|
+
IcebergProfile,
|
|
58
|
+
resolve_iceberg_compatible_tsql_source_normalization_key,
|
|
59
|
+
)
|
|
60
|
+
from snowflake.snowflake_data_validation.utils.iso_dv_common import get_paired_target_column_types
|
|
56
61
|
from snowflake.snowflake_data_validation.utils.measure_collation import (
|
|
57
62
|
TSQL_ROW_HASH_COLLATION_SUFFIX,
|
|
58
63
|
tsql_comparison_collation_tokens,
|
|
@@ -141,8 +146,14 @@ class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBas
|
|
|
141
146
|
datatypes_normalization_templates = table_context.templates_loader_manager.datatypes_normalization_templates
|
|
142
147
|
rendered: dict[str, str] = {}
|
|
143
148
|
renderer_columns = self._row_md5_normalization_columns(table_context)
|
|
149
|
+
paired_target_types = get_paired_target_column_types(table_context)
|
|
150
|
+
is_iceberg = IcebergProfile.from_table_context(table_context).is_active
|
|
144
151
|
for column in renderer_columns:
|
|
145
|
-
lookup_key = (
|
|
152
|
+
lookup_key = resolve_iceberg_compatible_tsql_source_normalization_key(
|
|
153
|
+
(column.data_type or "").strip().upper(),
|
|
154
|
+
paired_target_type=paired_target_types.get(column.name),
|
|
155
|
+
is_iceberg=is_iceberg,
|
|
156
|
+
)
|
|
146
157
|
normalization_template = self._lookup_normalization_template(
|
|
147
158
|
datatypes_normalization_templates,
|
|
148
159
|
lookup_key,
|
|
@@ -99,7 +99,6 @@ class ScriptWriterAzureSynapse(ScriptWriterBase):
|
|
|
99
99
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
100
100
|
columns_names=result_columns,
|
|
101
101
|
data_rows=result,
|
|
102
|
-
apply_column_validated_uppercase=False,
|
|
103
102
|
sort_and_reset_index=False,
|
|
104
103
|
)
|
|
105
104
|
|
|
@@ -137,6 +136,5 @@ class ScriptWriterAzureSynapse(ScriptWriterBase):
|
|
|
137
136
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
138
137
|
columns_names=list(result_columns),
|
|
139
138
|
data_rows=list(result),
|
|
140
|
-
apply_column_validated_uppercase=False,
|
|
141
139
|
sort_and_reset_index=False,
|
|
142
140
|
)
|
|
@@ -82,6 +82,12 @@ TIMESTAMP: FORMAT_TIMESTAMP('%E4Y-%m-%dT%H:%M:%E9S%Ez', `{{ col_name }}`, 'UTC')
|
|
|
82
82
|
ARRAY: NULLIF(TO_JSON_STRING(PARSE_JSON(TO_JSON_STRING(`{{ col_name }}`))), 'null')
|
|
83
83
|
STRUCT: NULLIF(TO_JSON_STRING(PARSE_JSON(TO_JSON_STRING(`{{ col_name }}`))), 'null')
|
|
84
84
|
JSON: NULLIF(TO_JSON_STRING(PARSE_JSON(TO_JSON_STRING(`{{ col_name }}`))), 'null')
|
|
85
|
+
# An ARRAY / STRUCT holding no NUMERIC / BIGNUMERIC (QueryGeneratorBigQuery picks this key)
|
|
86
|
+
# goes through TO_JSON, as data migration extracts it: TO_JSON_STRING quotes an INT64 beyond
|
|
87
|
+
# +/-2^53, while TO_JSON keeps it the number Snowflake holds. TO_JSON sorts object keys
|
|
88
|
+
# itself, so no PARSE_JSON round trip. One holding a decimal keeps the keys above, since
|
|
89
|
+
# TO_JSON rounds a wide NUMERIC to FLOAT64.
|
|
90
|
+
NESTED_TO_JSON: NULLIF(TO_JSON_STRING(TO_JSON(`{{ col_name }}`)), 'null')
|
|
85
91
|
# Spatial → WKT for L3 hashing. BigQuery ST_ASTEXT may emit "POINT (x y)" (space after
|
|
86
92
|
# the type keyword) and ", " between vertices; Snowflake ST_ASWKT does not. Canonicalize
|
|
87
93
|
# with chained REPLACE — preserve SQL NULL so null rows use the shared L3 sentinel.
|
|
@@ -48,7 +48,10 @@ WITH rc_cte AS (
|
|
|
48
48
|
(
|
|
49
49
|
SELECT CASE table_type
|
|
50
50
|
WHEN 'BASE TABLE' THEN 'TABLE'
|
|
51
|
+
WHEN 'CLONE' THEN 'TABLE'
|
|
52
|
+
WHEN 'SNAPSHOT' THEN 'TABLE'
|
|
51
53
|
WHEN 'VIEW' THEN 'VIEW'
|
|
54
|
+
WHEN 'MATERIALIZED VIEW' THEN 'VIEW'
|
|
52
55
|
ELSE 'UNKNOWN'
|
|
53
56
|
END
|
|
54
57
|
FROM {{ object_database_sql }}.{{ object_schema_sql }}.INFORMATION_SCHEMA.TABLES
|
|
@@ -17,7 +17,7 @@ from __future__ import annotations
|
|
|
17
17
|
|
|
18
18
|
import logging
|
|
19
19
|
|
|
20
|
-
from shared.datatypes.bigquery import BigQueryType
|
|
20
|
+
from shared.datatypes.bigquery import BigQueryType, serializes_exactly_through_to_json
|
|
21
21
|
from shared.datatypes.common import CommonType
|
|
22
22
|
from shared.datatypes.snowflake import SnowflakeType
|
|
23
23
|
from snowflake.snowflake_data_validation.query.decimal_text_normalization import (
|
|
@@ -46,6 +46,7 @@ from snowflake.snowflake_data_validation.utils.model.table_context import TableC
|
|
|
46
46
|
from snowflake.snowflake_data_validation.validation.comparison_codec import (
|
|
47
47
|
ComparisonCodec,
|
|
48
48
|
apply_text_codec_to_renderer_templates,
|
|
49
|
+
has_custom_column_normalization,
|
|
49
50
|
resolve_column_normalization_template,
|
|
50
51
|
)
|
|
51
52
|
|
|
@@ -55,6 +56,9 @@ LOGGER = logging.getLogger(__name__)
|
|
|
55
56
|
_WIDE_NUMERIC_BASE_TYPES = frozenset({BigQueryType.BIGNUMERIC, BigQueryType.BIGDECIMAL})
|
|
56
57
|
# Normalization key for a BIGNUMERIC / BIGDECIMAL whose Snowflake mirror is DECFLOAT.
|
|
57
58
|
BIGNUMERIC_DECFLOAT_NORMALIZATION_KEY = "BIGNUMERIC_DECFLOAT"
|
|
59
|
+
# Normalization key for an ARRAY / STRUCT holding no NUMERIC / BIGNUMERIC, which data
|
|
60
|
+
# migration serializes through TO_JSON so a wide INT64 lands as a number.
|
|
61
|
+
NESTED_TO_JSON_NORMALIZATION_KEY = "NESTED_TO_JSON"
|
|
58
62
|
|
|
59
63
|
|
|
60
64
|
def build_bigquery_float_bit_canonical_expr(col_ref: str) -> str:
|
|
@@ -239,6 +243,15 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
|
|
|
239
243
|
base_type = self.normalize_bigquery_type(column.data_type)
|
|
240
244
|
if self._lands_in_decfloat(column, table_context):
|
|
241
245
|
base_type = BIGNUMERIC_DECFLOAT_NORMALIZATION_KEY
|
|
246
|
+
elif serializes_exactly_through_to_json(column.data_type) and not has_custom_column_normalization(
|
|
247
|
+
column.name,
|
|
248
|
+
base_type,
|
|
249
|
+
column_normalization_map=None,
|
|
250
|
+
templates_loader_manager=table_context.templates_loader_manager,
|
|
251
|
+
):
|
|
252
|
+
# A workflow or custom-YAML override of ``ARRAY`` / ``STRUCT`` wins over the
|
|
253
|
+
# built-in TO_JSON text; a per-column rule replaces the template afterwards.
|
|
254
|
+
base_type = NESTED_TO_JSON_NORMALIZATION_KEY
|
|
242
255
|
normalization_template = datatypes_normalization_templates.get(base_type)
|
|
243
256
|
if normalization_template is None:
|
|
244
257
|
LOGGER.debug(
|
|
@@ -96,6 +96,7 @@ class ConfigurationModel(BaseModel):
|
|
|
96
96
|
self._check_max_failed_rows_number(table)
|
|
97
97
|
self._check_chunk_number(table)
|
|
98
98
|
self.set_exclude_metrics(table)
|
|
99
|
+
self.set_include_count_distinct(table)
|
|
99
100
|
self.set_apply_metric_column_modifier(table)
|
|
100
101
|
self.set_include_lob_columns_in_row_validation(table)
|
|
101
102
|
|
|
@@ -113,6 +114,7 @@ class ConfigurationModel(BaseModel):
|
|
|
113
114
|
self._check_max_failed_rows_number(view)
|
|
114
115
|
self._check_chunk_number(view)
|
|
115
116
|
self.set_exclude_metrics(view)
|
|
117
|
+
self.set_include_count_distinct(view)
|
|
116
118
|
self.set_apply_metric_column_modifier(view)
|
|
117
119
|
self.set_include_lob_columns_in_row_validation(view)
|
|
118
120
|
|
|
@@ -198,6 +200,10 @@ class ConfigurationModel(BaseModel):
|
|
|
198
200
|
if table.exclude_metrics is None:
|
|
199
201
|
table.exclude_metrics = self.validation_configuration.exclude_metrics
|
|
200
202
|
|
|
203
|
+
def set_include_count_distinct(self, table: TableConfiguration) -> None:
|
|
204
|
+
if table.include_count_distinct is None:
|
|
205
|
+
table.include_count_distinct = self.validation_configuration.include_count_distinct
|
|
206
|
+
|
|
201
207
|
def set_include_lob_columns_in_row_validation(self, table: TableConfiguration) -> None:
|
|
202
208
|
if table.include_lob_columns_in_row_validation is None:
|
|
203
209
|
table.include_lob_columns_in_row_validation = (
|
|
@@ -32,6 +32,7 @@ VISIBLE_PROPERTIES: set[str] = {
|
|
|
32
32
|
"chunk_number",
|
|
33
33
|
"column_mappings",
|
|
34
34
|
"exclude_metrics",
|
|
35
|
+
"include_count_distinct",
|
|
35
36
|
"include_lob_columns_in_row_validation",
|
|
36
37
|
"index_column_list",
|
|
37
38
|
"max_failed_rows_number",
|
|
@@ -83,6 +84,7 @@ class TableConfiguration(BaseModel):
|
|
|
83
84
|
column_mappings: dict[str, str] = {}
|
|
84
85
|
max_failed_rows_number: int | None = None
|
|
85
86
|
exclude_metrics: bool | None = None
|
|
87
|
+
include_count_distinct: bool | None = None
|
|
86
88
|
apply_metric_column_modifier: bool | None = None
|
|
87
89
|
include_lob_columns_in_row_validation: bool | None = None
|
|
88
90
|
object_type: ObjectType = ObjectType.TABLE
|
|
@@ -41,6 +41,9 @@ class ValidationConfiguration(BaseModel):
|
|
|
41
41
|
custom_templates_path: Path | None = None
|
|
42
42
|
max_failed_rows_number: int = MAX_FAILED_ROWS_NUMBER_DEFAULT_VALUE
|
|
43
43
|
exclude_metrics: bool = False
|
|
44
|
+
# L2 COUNT(DISTINCT) is opt-in (SNOW-4338258): it dominates L2 cost on the source
|
|
45
|
+
# (one SQL Server batch 26.4 s with it, 1.4 s without) and L2 is the fast metrics level.
|
|
46
|
+
include_count_distinct: bool = False
|
|
44
47
|
apply_metric_column_modifier: bool = True
|
|
45
48
|
include_lob_columns_in_row_validation: bool = False
|
|
46
49
|
|
|
@@ -49,13 +49,15 @@ SELECT
|
|
|
49
49
|
(
|
|
50
50
|
SELECT CASE TYPE
|
|
51
51
|
WHEN 'T' THEN 'TABLE'
|
|
52
|
+
WHEN 'G' THEN 'TABLE'
|
|
52
53
|
WHEN 'V' THEN 'VIEW'
|
|
54
|
+
WHEN 'S' THEN 'VIEW'
|
|
53
55
|
ELSE 'UNKNOWN'
|
|
54
56
|
END
|
|
55
57
|
FROM SYSCAT.TABLES
|
|
56
58
|
WHERE TABSCHEMA = '{{ object_schema | escape_sql_literal }}'
|
|
57
59
|
AND TABNAME = '{{ object_name | escape_sql_literal }}'
|
|
58
|
-
AND TYPE IN ('T', 'V')
|
|
60
|
+
AND TYPE IN ('T', 'G', 'V', 'S')
|
|
59
61
|
) AS OBJECT_TYPE,
|
|
60
62
|
rc.ROW_COUNT
|
|
61
63
|
FROM SYSCAT.COLUMNS C
|
|
@@ -66,19 +66,28 @@ class AsyncGenerationExecutor(BaseValidationExecutor):
|
|
|
66
66
|
|
|
67
67
|
"""
|
|
68
68
|
try:
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
from snowflake.snowflake_data_validation.public.model import GeneratedQuery
|
|
70
|
+
from snowflake.snowflake_data_validation.public.query_generation.schema_metrics_queries import (
|
|
71
|
+
schema_queries_as_script_sql,
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
source_script = schema_queries_as_script_sql(
|
|
75
|
+
data_validation_api.generate_schema_queries(source_table_context)
|
|
76
|
+
)
|
|
77
|
+
target_script = schema_queries_as_script_sql(
|
|
78
|
+
data_validation_api.generate_schema_queries(target_table_context)
|
|
79
|
+
)
|
|
71
80
|
|
|
72
81
|
data_validation_api.write_schema_query_to_script(
|
|
73
82
|
table_context=source_table_context,
|
|
74
|
-
generated_query=
|
|
83
|
+
generated_query=GeneratedQuery(query_string=source_script),
|
|
75
84
|
output_directory=self.source_extractor.report_path,
|
|
76
85
|
timestamp=self.context.run_start_time,
|
|
77
86
|
)
|
|
78
87
|
|
|
79
88
|
data_validation_api.write_schema_query_to_script(
|
|
80
89
|
table_context=target_table_context,
|
|
81
|
-
generated_query=
|
|
90
|
+
generated_query=GeneratedQuery(query_string=target_script),
|
|
82
91
|
output_directory=self.source_extractor.report_path,
|
|
83
92
|
timestamp=self.context.run_start_time,
|
|
84
93
|
)
|
|
@@ -234,6 +234,7 @@ class BaseValidationExecutor(ABC):
|
|
|
234
234
|
columns=source_table_column_metadata.columns,
|
|
235
235
|
database_name=configured_object_name(self.context.source_platform, table_configuration.source_database),
|
|
236
236
|
exclude_metrics=table_configuration.exclude_metrics,
|
|
237
|
+
include_count_distinct=bool(table_configuration.include_count_distinct),
|
|
237
238
|
fully_qualified_name=table_configuration.fully_qualified_name,
|
|
238
239
|
has_where_clause=table_configuration.has_where_clause,
|
|
239
240
|
max_failed_rows_number=table_configuration.max_failed_rows_number,
|
|
@@ -279,6 +280,7 @@ class BaseValidationExecutor(ABC):
|
|
|
279
280
|
columns=target_table_column_metadata.columns,
|
|
280
281
|
database_name=configured_object_name(self.context.target_platform, table_configuration.target_database),
|
|
281
282
|
exclude_metrics=table_configuration.exclude_metrics,
|
|
283
|
+
include_count_distinct=bool(table_configuration.include_count_distinct),
|
|
282
284
|
fully_qualified_name=table_configuration.target_fully_qualified_name,
|
|
283
285
|
has_where_clause=table_configuration.has_target_where_clause,
|
|
284
286
|
max_failed_rows_number=table_configuration.max_failed_rows_number,
|
|
@@ -128,6 +128,7 @@ class SourceValidationExecutor:
|
|
|
128
128
|
columns=source_table_column_metadata.columns,
|
|
129
129
|
database_name=configured_object_name(self.context.source_platform, table_configuration.source_database),
|
|
130
130
|
exclude_metrics=table_configuration.exclude_metrics,
|
|
131
|
+
include_count_distinct=bool(table_configuration.include_count_distinct),
|
|
131
132
|
fully_qualified_name=table_configuration.fully_qualified_name,
|
|
132
133
|
has_where_clause=table_configuration.has_where_clause,
|
|
133
134
|
max_failed_rows_number=table_configuration.max_failed_rows_number,
|
|
@@ -159,13 +160,23 @@ class SourceValidationExecutor:
|
|
|
159
160
|
source_table_context: Source table context
|
|
160
161
|
|
|
161
162
|
"""
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
from snowflake.snowflake_data_validation.public.model import GeneratedQuery
|
|
164
|
+
from snowflake.snowflake_data_validation.public.model.query_generator_factory import (
|
|
165
|
+
QueryGeneratorFactory,
|
|
166
|
+
)
|
|
167
|
+
|
|
168
|
+
queries = data_validation_api.generate_schema_queries(source_table_context)
|
|
169
|
+
generator = QueryGeneratorFactory.create(source_table_context.platform)
|
|
170
|
+
schema_df = data_validation_api.fetch_schema_metadata(
|
|
171
|
+
queries,
|
|
172
|
+
lambda sql: data_validation_api.execute_query(
|
|
173
|
+
table_context=source_table_context,
|
|
174
|
+
connector=self.source_extractor.connector,
|
|
175
|
+
generated_query=GeneratedQuery(query_string=sql),
|
|
176
|
+
).dataframe,
|
|
177
|
+
generator,
|
|
178
|
+
source_table_context,
|
|
167
179
|
)
|
|
168
|
-
schema_df = query_result.dataframe
|
|
169
180
|
|
|
170
181
|
output_path = self._get_output_path("schema", source_table_context)
|
|
171
182
|
self._save_dataframe_as_parquet(schema_df, output_path)
|
|
@@ -28,10 +28,15 @@ public workflow API module:
|
|
|
28
28
|
|
|
29
29
|
import hashlib
|
|
30
30
|
|
|
31
|
+
from collections.abc import Callable
|
|
31
32
|
from concurrent.futures import ThreadPoolExecutor
|
|
33
|
+
from typing import Any
|
|
32
34
|
|
|
33
35
|
import pandas as pd
|
|
34
36
|
|
|
37
|
+
from snowflake.snowflake_data_validation.connector.connector_base import (
|
|
38
|
+
ConnectorBase,
|
|
39
|
+
)
|
|
35
40
|
from snowflake.snowflake_data_validation.executer.base_validation_executor import (
|
|
36
41
|
BaseValidationExecutor,
|
|
37
42
|
)
|
|
@@ -41,6 +46,7 @@ from snowflake.snowflake_data_validation.public import (
|
|
|
41
46
|
from snowflake.snowflake_data_validation.public.model import (
|
|
42
47
|
ConfigurationError,
|
|
43
48
|
DataValidationExceptionError,
|
|
49
|
+
GeneratedQuery,
|
|
44
50
|
MetricsValidationError,
|
|
45
51
|
QueryExecutionResult,
|
|
46
52
|
SchemaValidationError,
|
|
@@ -83,6 +89,20 @@ from snowflake.snowflake_data_validation.validation.validation_report_buffer imp
|
|
|
83
89
|
)
|
|
84
90
|
|
|
85
91
|
|
|
92
|
+
# ``execute_query``'s ``result_processor(raw_result, apply_column_validated_uppercase)``.
|
|
93
|
+
SchemaResultProcessor = Callable[[list[Any], bool], pd.DataFrame]
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def _ignoring_case_flag(process: Callable[[list], pd.DataFrame]) -> Callable[[list, bool], pd.DataFrame]:
|
|
97
|
+
"""Adapt an extractor's one-argument result callback to ``execute_query``'s processor contract.
|
|
98
|
+
|
|
99
|
+
``execute_query`` calls ``result_processor(raw_result, apply_column_validated_uppercase)``.
|
|
100
|
+
The extractors take the raw result alone: they keep each column's catalog
|
|
101
|
+
spelling, and the validators pair names by the source's identifier rule.
|
|
102
|
+
"""
|
|
103
|
+
return lambda result, _apply_column_validated_uppercase: process(result)
|
|
104
|
+
|
|
105
|
+
|
|
86
106
|
class SyncValidationExecutor(BaseValidationExecutor):
|
|
87
107
|
"""Executor for synchronous validation operations.
|
|
88
108
|
|
|
@@ -99,6 +119,24 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
99
119
|
parallelization of source and target operations.
|
|
100
120
|
"""
|
|
101
121
|
|
|
122
|
+
def _schema_side_executor(
|
|
123
|
+
self,
|
|
124
|
+
table_context: TableContext,
|
|
125
|
+
connector: ConnectorBase,
|
|
126
|
+
processor: SchemaResultProcessor,
|
|
127
|
+
) -> Callable[[str], pd.DataFrame]:
|
|
128
|
+
"""Return the runner for one side's schema statements."""
|
|
129
|
+
|
|
130
|
+
def execute(sql: str) -> pd.DataFrame:
|
|
131
|
+
return data_validation_api.execute_query(
|
|
132
|
+
table_context=table_context,
|
|
133
|
+
connector=connector,
|
|
134
|
+
generated_query=GeneratedQuery(query_string=sql),
|
|
135
|
+
result_processor=processor,
|
|
136
|
+
).dataframe
|
|
137
|
+
|
|
138
|
+
return execute
|
|
139
|
+
|
|
102
140
|
@report_telemetry(params_list=["source_table_context", "target_table_context"])
|
|
103
141
|
def execute_schema_validation(
|
|
104
142
|
self,
|
|
@@ -121,11 +159,13 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
121
159
|
|
|
122
160
|
"""
|
|
123
161
|
try:
|
|
124
|
-
|
|
125
|
-
|
|
162
|
+
source_queries = data_validation_api.generate_schema_queries(source_table_context)
|
|
163
|
+
target_queries = data_validation_api.generate_schema_queries(target_table_context)
|
|
164
|
+
source_generator = QueryGeneratorFactory.create(source_table_context.platform)
|
|
165
|
+
target_generator = QueryGeneratorFactory.create(target_table_context.platform)
|
|
126
166
|
|
|
127
167
|
self.source_extractor.prepare_for_table(source_table_context)
|
|
128
|
-
source_processor = self.source_extractor.process_schema_query_result
|
|
168
|
+
source_processor = _ignoring_case_flag(self.source_extractor.process_schema_query_result)
|
|
129
169
|
|
|
130
170
|
# SNOW-3981941: Teradata view L1 now hits DBC.ColumnsQV. If that
|
|
131
171
|
# catalog query fails for any reason (9719, access, wrapped/masked
|
|
@@ -136,12 +176,17 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
136
176
|
is_teradata_view = source_table_context.object_type == ObjectType.VIEW and self.context.source_platform == Platform.TERADATA
|
|
137
177
|
|
|
138
178
|
try:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
179
|
+
source_df = data_validation_api.fetch_schema_metadata(
|
|
180
|
+
source_queries,
|
|
181
|
+
self._schema_side_executor(
|
|
182
|
+
source_table_context,
|
|
183
|
+
self.source_extractor.connector,
|
|
184
|
+
source_processor,
|
|
185
|
+
),
|
|
186
|
+
source_generator,
|
|
187
|
+
source_table_context,
|
|
144
188
|
)
|
|
189
|
+
source_result = QueryExecutionResult(dataframe=source_df)
|
|
145
190
|
except Exception as exc:
|
|
146
191
|
if not is_teradata_view:
|
|
147
192
|
raise
|
|
@@ -176,12 +221,17 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
176
221
|
object_name=source_table_context.fully_qualified_name,
|
|
177
222
|
)
|
|
178
223
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
224
|
+
target_df = data_validation_api.fetch_schema_metadata(
|
|
225
|
+
target_queries,
|
|
226
|
+
self._schema_side_executor(
|
|
227
|
+
target_table_context,
|
|
228
|
+
self.target_extractor.connector,
|
|
229
|
+
_ignoring_case_flag(self.target_extractor.process_schema_query_result),
|
|
230
|
+
),
|
|
231
|
+
target_generator,
|
|
232
|
+
target_table_context,
|
|
184
233
|
)
|
|
234
|
+
target_result = QueryExecutionResult(dataframe=target_df)
|
|
185
235
|
|
|
186
236
|
# SNOW-3981941: Teradata views used to be forced through
|
|
187
237
|
# ``normalize_table_metadata`` + ``basic_validation=True``, stripping
|
|
@@ -308,8 +358,7 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
308
358
|
if not source_queries or not target_queries:
|
|
309
359
|
raise RuntimeError(f"generate_batched_metrics_queries returned no queries for {source_table_context.fully_qualified_name}")
|
|
310
360
|
|
|
311
|
-
|
|
312
|
-
return self.source_extractor.process_metrics_query_result(result)
|
|
361
|
+
source_processor = _ignoring_case_flag(self.source_extractor.process_metrics_query_result)
|
|
313
362
|
|
|
314
363
|
source_dfs: list[pd.DataFrame] = []
|
|
315
364
|
for source_batch in source_queries:
|
|
@@ -322,8 +371,7 @@ class SyncValidationExecutor(BaseValidationExecutor):
|
|
|
322
371
|
source_dfs.append(reshape_wide_metrics_result(batch_result.dataframe, source_batch.result_shape))
|
|
323
372
|
source_result = QueryExecutionResult(dataframe=pd.concat(source_dfs, ignore_index=True))
|
|
324
373
|
|
|
325
|
-
|
|
326
|
-
return self.target_extractor.process_metrics_query_result(result)
|
|
374
|
+
target_processor = _ignoring_case_flag(self.target_extractor.process_metrics_query_result)
|
|
327
375
|
|
|
328
376
|
target_dfs: list[pd.DataFrame] = []
|
|
329
377
|
for target_batch in target_queries:
|