snowflake-data-validation 1.45.0__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.45.0 → snowflake_data_validation-1.45.1}/PKG-INFO +33 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/README.md +32 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +3 -4
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +14 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +13 -4
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +16 -6
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +65 -17
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +20 -11
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +5 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -9
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -4
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/__init__.py +18 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/_internal.py +104 -11
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +12 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +18 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -2
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +21 -7
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +2 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +123 -7
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +59 -9
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +16 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -5
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +173 -35
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +7 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +2 -2
- 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +6 -8
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -4
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -7
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +3 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +44 -17
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +16 -7
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -6
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +13 -6
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -5
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/constants.py +17 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -8
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +161 -114
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +5 -12
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +6 -5
- snowflake_data_validation-1.45.1/src/snowflake/snowflake_data_validation/validation/column_pairing.py +74 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +21 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +16 -42
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +29 -55
- snowflake_data_validation-1.45.1/tests/unit/Postgresql/test_postgresql_enum_metadata.py +128 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/query/test_query_generator_redshift.py +98 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_collation.py +3 -4
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +6 -3
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_super_normalization.py +8 -30
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_query_generator_teradata.py +50 -0
- snowflake_data_validation-1.45.1/tests/unit/Teradata/test_teradata_columns_metadata_precision_scale.py +99 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +5 -7
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_query_generator_bigquery.py +57 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_metadata_extractor.py +3 -6
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -4
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -14
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +29 -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.45.1/tests/unit/test_case_sensitive_column_pairing.py +266 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_data_validator.py +37 -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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_get_target_cols.py +45 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_dataframe.py +3 -15
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_iceberg_dv_l3_normalization.py +208 -82
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_iceberg_v2_metrics_exclusion.py +23 -11
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_iso_dv_common.py +37 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_snapshot_generation.py +11 -1
- 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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_source_validation_executor.py +25 -19
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_spatial_wkt_canonicalization.py +2 -2
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sql_catalog_template_guard.py +5 -1
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sql_literal_jinja_filter.py +3 -8
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sync_validation_executor.py +11 -10
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_metadata_processor.py +246 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_snapshot_generation.py +11 -6
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_type_code_mapping.py +19 -0
- snowflake_data_validation-1.45.0/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -191
- snowflake_data_validation-1.45.0/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -55
- snowflake_data_validation-1.45.0/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -8
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/.gitignore +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/LICENSE +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/docs/README.md +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/pyproject.toml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/.coveragerc +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/conftest.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/.coveragerc +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/test_async_generation_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/test_async_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/test_reference_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/test_source_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/integration/test_sync_validation_integration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_collation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_connector_redshift.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_columns_metadata_template.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_connector_teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_collation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/conftest.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_query_generator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_registration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/db2/test_db2_xml_long_metrics.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_row_queries.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_accepted_transformation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_arguments_manager_base.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_arguments_manager_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_batched_metrics_queries.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_catalog_column_size.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_data_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_data_validator_threading.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_cell_validation_query_generation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_charset_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_grouping.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_normalization_override.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_selection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_column_selection_actual_names.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_comparison_codec.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_comparison_orchestrator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_editor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_generator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_file_synchronizer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_loader.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_configuration_model.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_connection_pool.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_connector_failure_tracker.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_connector_snowflake.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_cpu_optimizer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_custom_templates_models.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_decimal_text_canonical.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_dv_tracing.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_error_classifier.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_escape_odbc_value.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_executor_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_float_aggregate_reduction.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_float_bit_canonical.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_float_canonical_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_get_configuration_file.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_io.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_polars_cast.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_helper_polars_cast_threading.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_helpers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_html_report_builder.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_index_key_format.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_internal_helpers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_interval_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_l2_collation_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_l2_count_distinct_opt_in_config.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_logging_config.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_metric_identifier_rendering.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_reshape.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_result_shape.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_templates_casts.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_metrics_tolerance.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_normalize_shape_aware.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_numeric_scale_resolution.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_object_type_criterion.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_period_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_platform_bridge.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_postgresql_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_postgresql_tz_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_pushdown_diff_sql.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_executor.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_generator_numeric_scale.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_metrics_level_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_to_dataframe.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_query_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_qvci_fallback_triggers.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_report_metadata.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_cell_level_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_to_dataframe.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_result_set_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_count_bigint_overflow.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_data_validator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_hash_column_delimiter.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_partitioning_strategy.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_row_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_schema_column_selection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_shutdown_coordinator.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_signature_external_table.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_signature_row_md5_query.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_snapshot_validation_statements.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlite_validation_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_column_metadata_model.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_context.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_table_snapshot_validation.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_target_platform_factory.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_telemetry.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_templates_loader_manager.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_iso_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_timestamp_golden_vectors.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_trace_bridge.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_tsql_float_l2_aggregates.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_database_connection.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_execution_context.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_progress_reporter.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_report_buffer.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_report_status.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_validation_templates_dto.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_bit_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_common.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_vector_normalization.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_view_configuration.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/test_warm_start.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/utils/__init__.py +0 -0
- {snowflake_data_validation-1.45.0 → snowflake_data_validation-1.45.1}/tests/unit/utils/test_constants.py +0 -0
- {snowflake_data_validation-1.45.0 → 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.45.
|
|
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,26 @@ 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
|
+
|
|
217
249
|
### v1.45.0
|
|
218
250
|
|
|
219
251
|
**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,26 @@ 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
|
+
|
|
126
158
|
### v1.45.0
|
|
127
159
|
|
|
128
160
|
**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
|
)
|
|
@@ -54,6 +54,7 @@ from snowflake.snowflake_data_validation.utils.constants import (
|
|
|
54
54
|
Platform,
|
|
55
55
|
)
|
|
56
56
|
from snowflake.snowflake_data_validation.utils.iceberg_dv_common import (
|
|
57
|
+
IcebergProfile,
|
|
57
58
|
resolve_iceberg_compatible_tsql_source_normalization_key,
|
|
58
59
|
)
|
|
59
60
|
from snowflake.snowflake_data_validation.utils.iso_dv_common import get_paired_target_column_types
|
|
@@ -146,14 +147,12 @@ class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBas
|
|
|
146
147
|
rendered: dict[str, str] = {}
|
|
147
148
|
renderer_columns = self._row_md5_normalization_columns(table_context)
|
|
148
149
|
paired_target_types = get_paired_target_column_types(table_context)
|
|
149
|
-
|
|
150
|
-
storage_mode = table_context.storage_mode
|
|
150
|
+
is_iceberg = IcebergProfile.from_table_context(table_context).is_active
|
|
151
151
|
for column in renderer_columns:
|
|
152
152
|
lookup_key = resolve_iceberg_compatible_tsql_source_normalization_key(
|
|
153
153
|
(column.data_type or "").strip().upper(),
|
|
154
154
|
paired_target_type=paired_target_types.get(column.name),
|
|
155
|
-
|
|
156
|
-
storage_mode=storage_mode,
|
|
155
|
+
is_iceberg=is_iceberg,
|
|
157
156
|
)
|
|
158
157
|
normalization_template = self._lookup_normalization_template(
|
|
159
158
|
datatypes_normalization_templates,
|
|
@@ -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.
|
|
@@ -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(
|
|
@@ -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
|
)
|
|
@@ -160,13 +160,23 @@ class SourceValidationExecutor:
|
|
|
160
160
|
source_table_context: Source table context
|
|
161
161
|
|
|
162
162
|
"""
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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,
|
|
168
179
|
)
|
|
169
|
-
schema_df = query_result.dataframe
|
|
170
180
|
|
|
171
181
|
output_path = self._get_output_path("schema", source_table_context)
|
|
172
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:
|
|
@@ -109,10 +109,26 @@ class MetadataExtractorBase(ABC):
|
|
|
109
109
|
table_context.fully_qualified_name,
|
|
110
110
|
)
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
from snowflake.snowflake_data_validation.public.query_generation.schema_metrics_queries import (
|
|
113
|
+
fetch_schema_metadata,
|
|
114
|
+
generate_schema_queries,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
queries = generate_schema_queries(table_context, self.query_generator)
|
|
118
|
+
|
|
119
|
+
def _execute(sql: str) -> pd.DataFrame:
|
|
120
|
+
result = self.connector.execute_query(sql)
|
|
121
|
+
if not result:
|
|
122
|
+
return pd.DataFrame()
|
|
123
|
+
return self.process_schema_query_result(result)
|
|
113
124
|
|
|
114
125
|
try:
|
|
115
|
-
|
|
126
|
+
dataframe = fetch_schema_metadata(
|
|
127
|
+
queries,
|
|
128
|
+
_execute,
|
|
129
|
+
self.query_generator,
|
|
130
|
+
table_context,
|
|
131
|
+
)
|
|
116
132
|
except Exception:
|
|
117
133
|
error_message = self._get_error_message(
|
|
118
134
|
"Schema validation query failed",
|
|
@@ -121,17 +137,12 @@ class MetadataExtractorBase(ABC):
|
|
|
121
137
|
LOGGER.critical(error_message)
|
|
122
138
|
raise
|
|
123
139
|
|
|
124
|
-
if
|
|
140
|
+
if dataframe.empty:
|
|
125
141
|
output_handler.handle_message(
|
|
126
142
|
message=f"No metadata found for table: {table_context.fully_qualified_name}",
|
|
127
143
|
level=OutputMessageLevel.WARNING,
|
|
128
144
|
)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return self.process_schema_query_result(
|
|
132
|
-
result,
|
|
133
|
-
True,
|
|
134
|
-
)
|
|
145
|
+
return dataframe
|
|
135
146
|
|
|
136
147
|
@log
|
|
137
148
|
def extract_metrics_metadata(
|
|
@@ -232,7 +243,6 @@ class MetadataExtractorBase(ABC):
|
|
|
232
243
|
origin: Origin,
|
|
233
244
|
result: list,
|
|
234
245
|
output_handler: OutputHandlerBase,
|
|
235
|
-
apply_column_validated_uppercase: bool = True,
|
|
236
246
|
) -> pd.DataFrame:
|
|
237
247
|
"""Process schema query results into a DataFrame.
|
|
238
248
|
|
|
@@ -240,7 +250,6 @@ class MetadataExtractorBase(ABC):
|
|
|
240
250
|
origin: The origin enum value.
|
|
241
251
|
result: Query result list containing columns and data.
|
|
242
252
|
output_handler: Output handler for logging and reporting.
|
|
243
|
-
apply_column_validated_uppercase: whether returned dataframe should have columns in uppercase.
|
|
244
253
|
|
|
245
254
|
Returns:
|
|
246
255
|
pd.DataFrame: Processed DataFrame with schema metadata.
|
|
@@ -742,6 +742,7 @@ class SQLQueriesTemplateGenerator:
|
|
|
742
742
|
hash_md5_function: str | None = None,
|
|
743
743
|
row_hash_collation_suffix: str = "",
|
|
744
744
|
write_identifier: IdentifierWriter | None = None,
|
|
745
|
+
extra_from_joins: list[str] | None = None,
|
|
745
746
|
) -> str:
|
|
746
747
|
"""Render an inline SELECT that returns (index_cols, ROW_MD5) directly.
|
|
747
748
|
|
|
@@ -749,7 +750,9 @@ class SQLQueriesTemplateGenerator:
|
|
|
749
750
|
no temp tables and no OFFSET/FETCH. When *order_by_columns* is
|
|
750
751
|
provided the result set is sorted by those columns. ``write_identifier``
|
|
751
752
|
writes a column name as the dialect's identifier (see
|
|
752
|
-
``column_sql_names``).
|
|
753
|
+
``column_sql_names``). ``extra_from_joins`` (Redshift SUPER sorted-object
|
|
754
|
+
joins) is appended after the base ``FROM``; templates that omit it are
|
|
755
|
+
unaffected.
|
|
753
756
|
"""
|
|
754
757
|
template_file = f"{platform}_row_md5_select.sql.j2"
|
|
755
758
|
try:
|
|
@@ -765,6 +768,7 @@ class SQLQueriesTemplateGenerator:
|
|
|
765
768
|
order_by_columns=order_by_columns or [],
|
|
766
769
|
order_by_collation_expressions=order_by_collation_expressions or {},
|
|
767
770
|
row_hash_collation_suffix=row_hash_collation_suffix,
|
|
771
|
+
extra_from_joins=extra_from_joins or [],
|
|
768
772
|
**column_sql_names(platform, write_identifier),
|
|
769
773
|
)
|
|
770
774
|
if column_groups is not None:
|
|
@@ -151,14 +151,12 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
151
151
|
|
|
152
152
|
return self.process_schema_query_result(
|
|
153
153
|
result,
|
|
154
|
-
True,
|
|
155
154
|
table_context=table_context,
|
|
156
155
|
)
|
|
157
156
|
|
|
158
157
|
def process_schema_query_result(
|
|
159
158
|
self,
|
|
160
159
|
result: list,
|
|
161
|
-
apply_column_validated_uppercase: bool = True,
|
|
162
160
|
*,
|
|
163
161
|
table_context: TableContext | None = None,
|
|
164
162
|
) -> pd.DataFrame:
|
|
@@ -166,9 +164,6 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
166
164
|
|
|
167
165
|
Args:
|
|
168
166
|
result: Query result containing (columns_names, data_rows).
|
|
169
|
-
apply_column_validated_uppercase: Whether to uppercase the
|
|
170
|
-
COLUMN_VALIDATED values. Defaults to True; Oracle returns
|
|
171
|
-
column names in uppercase so this is normally a no-op.
|
|
172
167
|
table_context: When provided, run a VECTOR_INFO follow-up if
|
|
173
168
|
phase-1 schema shows VECTOR columns without dimension.
|
|
174
169
|
|
|
@@ -180,7 +175,6 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
180
175
|
df = self.helper_dataframe.process_query_result_to_dataframe(
|
|
181
176
|
columns_names=list(columns_names),
|
|
182
177
|
data_rows=list(metadata_info),
|
|
183
|
-
apply_column_validated_uppercase=apply_column_validated_uppercase,
|
|
184
178
|
sort_and_reset_index=True,
|
|
185
179
|
)
|
|
186
180
|
|
|
@@ -240,7 +234,6 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
240
234
|
vector_df = self.helper_dataframe.process_query_result_to_dataframe(
|
|
241
235
|
columns_names=list(result_columns),
|
|
242
236
|
data_rows=list(vector_rows),
|
|
243
|
-
apply_column_validated_uppercase=False,
|
|
244
237
|
sort_and_reset_index=False,
|
|
245
238
|
)
|
|
246
239
|
merge_vector_metadata(rows, vector_df.to_dict(orient="records"))
|
|
@@ -260,7 +253,6 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
260
253
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
261
254
|
columns_names=list(result_columns),
|
|
262
255
|
data_rows=list(result_data),
|
|
263
|
-
apply_column_validated_uppercase=True,
|
|
264
256
|
sort_and_reset_index=True,
|
|
265
257
|
)
|
|
266
258
|
|
|
@@ -327,6 +319,5 @@ class MetadataExtractorOracle(MetadataExtractorBase):
|
|
|
327
319
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
328
320
|
columns_names=list(result_columns),
|
|
329
321
|
data_rows=list(result),
|
|
330
|
-
apply_column_validated_uppercase=False,
|
|
331
322
|
sort_and_reset_index=False,
|
|
332
323
|
)
|
|
@@ -95,7 +95,6 @@ class ScriptWriterOracle(ScriptWriterBase):
|
|
|
95
95
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
96
96
|
columns_names=result_columns,
|
|
97
97
|
data_rows=result,
|
|
98
|
-
apply_column_validated_uppercase=False,
|
|
99
98
|
sort_and_reset_index=False,
|
|
100
99
|
)
|
|
101
100
|
|
|
@@ -131,6 +130,5 @@ class ScriptWriterOracle(ScriptWriterBase):
|
|
|
131
130
|
return self.helper_dataframe.process_query_result_to_dataframe(
|
|
132
131
|
columns_names=list(result_columns),
|
|
133
132
|
data_rows=list(result),
|
|
134
|
-
apply_column_validated_uppercase=False,
|
|
135
133
|
sort_and_reset_index=False,
|
|
136
134
|
)
|