snowflake-data-validation 1.44.1__tar.gz → 1.45.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (692) hide show
  1. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/PKG-INFO +23 -1
  2. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/README.md +22 -0
  3. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +3 -0
  4. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +13 -1
  5. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +3 -0
  6. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +6 -0
  7. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +2 -0
  8. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +3 -0
  9. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +3 -1
  10. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +2 -0
  11. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +1 -0
  12. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +2 -1
  13. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/_internal.py +5 -15
  14. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +8 -0
  15. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +8 -0
  16. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +5 -8
  17. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +7 -0
  18. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/redshift_super_normalization.py +1 -24
  19. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +3 -7
  20. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +2 -0
  21. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +50 -5
  22. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +3 -0
  23. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +17 -5
  24. snowflake_data_validation-1.45.0/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_uniqueidentifier_normalization.py +32 -0
  25. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +16 -6
  26. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +34 -0
  27. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/constants.py +2 -0
  28. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +48 -53
  29. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +46 -42
  30. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +9 -0
  31. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +33 -8
  32. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +24 -0
  33. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +81 -6
  34. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -30
  35. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +35 -6
  36. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +22 -16
  37. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_collation.py +1 -0
  38. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_collation.py +1 -0
  39. snowflake_data_validation-1.45.0/tests/unit/Redshift/test_redshift_columns_metadata_template.py +61 -0
  40. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_query_generator_teradata.py +52 -0
  41. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_teradata_collation.py +1 -0
  42. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_l3_convert_normalization.py +2 -0
  43. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +112 -0
  44. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/bigquery/test_query_generator_bigquery.py +1 -0
  45. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_xml_long_metrics.py +1 -0
  46. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_query_generator.py +1 -0
  47. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_full_ingest_utc.py +1 -0
  48. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_l3_convert_normalization.py +2 -0
  49. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_row_queries.py +157 -0
  50. snowflake_data_validation-1.45.0/tests/unit/sqlserver/test_sqlserver_uniqueidentifier_l3_normalization.py +153 -0
  51. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_accepted_transformation.py +36 -0
  52. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_normalization_override.py +49 -1
  53. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_configuration_loader.py +11 -0
  54. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_configuration_model.py +10 -0
  55. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_data_validator.py +154 -0
  56. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_float_bit_canonical.py +1 -1
  57. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_helper_polars_cast.py +3 -5
  58. snowflake_data_validation-1.45.0/tests/unit/test_helper_polars_cast_threading.py +112 -0
  59. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_iceberg_dv_l3_normalization.py +66 -40
  60. snowflake_data_validation-1.45.0/tests/unit/test_l2_count_distinct_opt_in_config.py +89 -0
  61. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_object_type_criterion.py +2 -2
  62. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_generator_numeric_scale.py +10 -1
  63. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_validator.py +59 -0
  64. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_source_validation_executor.py +2 -0
  65. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sql_literal_jinja_filter.py +2 -0
  66. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_configuration.py +6 -0
  67. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_teradata_iso_normalization.py +34 -0
  68. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_configuration.py +4 -0
  69. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_view_configuration.py +6 -0
  70. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/.gitignore +0 -0
  71. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/LICENSE +0 -0
  72. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/docs/README.md +0 -0
  73. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/pyproject.toml +0 -0
  74. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
  75. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
  76. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
  77. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
  78. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
  79. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
  80. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
  81. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
  82. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
  83. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
  84. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
  85. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
  86. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
  87. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
  88. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
  89. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
  90. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
  91. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
  92. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
  93. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
  94. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
  95. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
  96. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +0 -0
  97. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
  98. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +0 -0
  99. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
  100. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
  101. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +0 -0
  102. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
  103. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
  104. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +0 -0
  105. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
  106. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
  107. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
  108. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
  109. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
  110. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
  111. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
  112. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
  113. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
  114. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
  115. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
  116. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
  117. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
  118. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/db2_lob_normalization.py +0 -0
  119. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
  120. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
  121. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
  122. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +0 -0
  123. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +0 -0
  124. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
  125. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
  126. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +0 -0
  127. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
  128. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
  129. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +0 -0
  130. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
  131. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
  132. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
  133. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
  134. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
  135. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
  136. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
  137. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
  138. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
  139. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
  140. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
  141. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
  142. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
  143. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
  144. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
  145. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
  146. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
  147. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
  148. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
  149. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
  150. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
  151. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_bfile.py +0 -0
  152. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
  153. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
  154. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_statement_functions.py +0 -0
  155. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
  156. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/oracle_xmltype.py +0 -0
  157. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
  158. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
  159. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
  160. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
  161. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
  162. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
  163. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
  164. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
  165. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
  166. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
  167. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
  168. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
  169. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
  170. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
  171. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
  172. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
  173. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
  174. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
  175. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  176. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_concatenated_table_template.sql.j2 +0 -0
  177. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_insert_template.sql.j2 +0 -0
  178. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_chunk_row_md5_table_template.sql.j2 +0 -0
  179. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
  180. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -0
  181. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
  182. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
  183. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
  184. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +0 -0
  185. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
  186. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
  187. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
  188. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
  189. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
  190. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
  191. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
  192. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/query/charset_normalization.py +0 -0
  193. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
  194. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
  195. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
  196. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
  197. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
  198. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
  199. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
  200. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
  201. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
  202. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
  203. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
  204. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
  205. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
  206. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
  207. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
  208. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
  209. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
  210. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
  211. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
  212. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
  213. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
  214. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
  215. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
  216. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
  217. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
  218. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
  219. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
  220. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
  221. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
  222. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
  223. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
  224. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
  225. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
  226. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
  227. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
  228. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
  229. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
  230. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
  231. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
  232. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
  233. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
  234. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
  235. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
  236. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
  237. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
  238. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
  239. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
  240. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
  241. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
  242. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
  243. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
  244. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/decimal_text_normalization.py +0 -0
  245. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
  246. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
  247. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
  248. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/float_aggregate_reduction.py +0 -0
  249. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +0 -0
  250. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +0 -0
  251. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
  252. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
  253. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/sql_type_families.py +0 -0
  254. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/time_precision_resolution.py +0 -0
  255. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/tsql_float_remainder.py +0 -0
  256. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
  257. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
  258. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
  259. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
  260. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
  261. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
  262. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  263. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
  264. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
  265. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
  266. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +0 -0
  267. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
  268. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
  269. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
  270. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
  271. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
  272. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
  273. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
  274. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
  275. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
  276. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
  277. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +0 -0
  278. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
  279. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
  280. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
  281. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
  282. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
  283. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
  284. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
  285. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
  286. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
  287. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
  288. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
  289. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
  290. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
  291. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
  292. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
  293. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/_wkt_despace.sql.j2 +0 -0
  294. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
  295. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
  296. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
  297. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +0 -0
  298. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
  299. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
  300. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
  301. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
  302. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
  303. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
  304. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
  305. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +0 -0
  306. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
  307. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +0 -0
  308. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +0 -0
  309. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
  310. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
  311. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
  312. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
  313. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
  314. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
  315. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
  316. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
  317. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
  318. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
  319. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
  320. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
  321. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
  322. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
  323. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
  324. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +0 -0
  325. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
  326. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
  327. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +0 -0
  328. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
  329. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
  330. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
  331. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
  332. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
  333. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
  334. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
  335. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
  336. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
  337. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
  338. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +0 -0
  339. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
  340. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
  341. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
  342. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
  343. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
  344. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
  345. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
  346. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
  347. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
  348. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
  349. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
  350. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
  351. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
  352. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
  353. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
  354. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
  355. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
  356. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
  357. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
  358. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
  359. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
  360. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
  361. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
  362. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
  363. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
  364. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
  365. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_string_length_normalization.py +0 -0
  366. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_tz_normalization.py +0 -0
  367. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
  368. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
  369. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
  370. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
  371. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
  372. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
  373. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
  374. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
  375. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
  376. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +0 -0
  377. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
  378. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
  379. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +0 -0
  380. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
  381. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
  382. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
  383. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +0 -0
  384. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
  385. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
  386. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
  387. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
  388. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
  389. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +0 -0
  390. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
  391. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
  392. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
  393. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
  394. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
  395. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
  396. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
  397. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/catalog_column_size.py +0 -0
  398. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
  399. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
  400. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
  401. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
  402. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
  403. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
  404. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
  405. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
  406. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
  407. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
  408. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/dv_tracing.py +0 -0
  409. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/error_classifier.py +0 -0
  410. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
  411. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
  412. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
  413. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
  414. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
  415. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
  416. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
  417. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
  418. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
  419. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +0 -0
  420. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/lob_source_types.py +0 -0
  421. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
  422. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
  423. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/measure_collation.py +0 -0
  424. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
  425. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
  426. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/column_selection.py +0 -0
  427. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
  428. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
  429. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
  430. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/period_common.py +0 -0
  431. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
  432. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
  433. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
  434. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/row_validation_lob_exclusion.py +0 -0
  435. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
  436. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/semi_structured_json_canonicalization.py +0 -0
  437. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
  438. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
  439. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
  440. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
  441. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +0 -0
  442. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
  443. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
  444. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
  445. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
  446. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
  447. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
  448. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
  449. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/object_type_criterion.py +0 -0
  450. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
  451. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
  452. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
  453. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +0 -0
  454. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
  455. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
  456. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
  457. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
  458. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
  459. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
  460. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
  461. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
  462. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
  463. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
  464. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
  465. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
  466. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
  467. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
  468. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
  469. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
  470. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
  471. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/.coveragerc +0 -0
  472. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/conftest.py +0 -0
  473. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/.coveragerc +0 -0
  474. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
  475. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/test_async_generation_integration.py +0 -0
  476. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/test_async_validation_integration.py +0 -0
  477. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/test_reference_integration.py +0 -0
  478. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/test_source_validation_integration.py +0 -0
  479. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/integration/test_sync_validation_integration.py +0 -0
  480. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_bit_count_distinct.py +0 -0
  481. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_json_cell_validation.py +0 -0
  482. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_jsonb_row_hash.py +0 -0
  483. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_numeric_leading_zero.py +0 -0
  484. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
  485. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
  486. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
  487. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
  488. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_connector_redshift.py +0 -0
  489. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
  490. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +0 -0
  491. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_spatial_templates.py +0 -0
  492. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_super_normalization.py +0 -0
  493. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_timetz_sentinel_normalization.py +0 -0
  494. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +0 -0
  495. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_connector_teradata.py +0 -0
  496. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
  497. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_period_varchar_l1.py +0 -0
  498. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +0 -0
  499. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
  500. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
  501. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
  502. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/__init__.py +0 -0
  503. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
  504. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
  505. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
  506. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
  507. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
  508. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
  509. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
  510. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
  511. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
  512. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
  513. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
  514. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
  515. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
  516. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
  517. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
  518. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/__init__.py +0 -0
  519. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
  520. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
  521. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
  522. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
  523. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
  524. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
  525. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/bigquery/__init__.py +0 -0
  526. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/bigquery/test_bigquery_l1_string_length.py +0 -0
  527. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
  528. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
  529. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/conftest.py +0 -0
  530. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/__init__.py +0 -0
  531. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_lob_dv_generation.py +0 -0
  532. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
  533. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_query_generator.py +0 -0
  534. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_registration.py +0 -0
  535. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/db2/test_db2_xml_long_dv_generation.py +0 -0
  536. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/__init__.py +0 -0
  537. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
  538. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_configured_index_columns.py +0 -0
  539. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
  540. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_lob_dv_generation.py +0 -0
  541. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
  542. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
  543. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
  544. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
  545. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
  546. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_quoted_identifiers.py +0 -0
  547. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
  548. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
  549. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/query/test_time_fraction_rendering.py +0 -0
  550. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
  551. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/__init__.py +0 -0
  552. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
  553. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
  554. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
  555. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +0 -0
  556. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_query_generator_sqlite.py +0 -0
  557. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
  558. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/__init__.py +0 -0
  559. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
  560. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
  561. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_datetimeoffset_metrics_utc.py +0 -0
  562. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_json.py +0 -0
  563. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_l1_catalog.py +0 -0
  564. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_length_metrics_chars.py +0 -0
  565. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_row_count_overflow.py +0 -0
  566. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
  567. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
  568. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_string_length_pairing.py +0 -0
  569. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_sqlserver_xml_image_metrics.py +0 -0
  570. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/sqlserver/test_tsql_integer_stddev_exact.py +0 -0
  571. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_arguments_manager_base.py +0 -0
  572. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_arguments_manager_factory.py +0 -0
  573. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_batched_metrics_queries.py +0 -0
  574. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
  575. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_catalog_column_size.py +0 -0
  576. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_catalog_queries_take_actual_names.py +0 -0
  577. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_cell_data_validator.py +0 -0
  578. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_cell_data_validator_threading.py +0 -0
  579. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_cell_validation_query_generation.py +0 -0
  580. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_charset_normalization.py +0 -0
  581. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_grouping.py +0 -0
  582. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_metadata.py +0 -0
  583. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_partitioning_strategy.py +0 -0
  584. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_selection.py +0 -0
  585. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_column_selection_actual_names.py +0 -0
  586. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_comparison_codec.py +0 -0
  587. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_comparison_orchestrator.py +0 -0
  588. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_configuration_file_editor.py +0 -0
  589. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_configuration_file_generator.py +0 -0
  590. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_configuration_file_synchronizer.py +0 -0
  591. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_connection_pool.py +0 -0
  592. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_connector_failure_tracker.py +0 -0
  593. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_connector_snowflake.py +0 -0
  594. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_cpu_optimizer.py +0 -0
  595. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_custom_templates_models.py +0 -0
  596. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_decimal_text_canonical.py +0 -0
  597. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_dv_tracing.py +0 -0
  598. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_error_classifier.py +0 -0
  599. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_escape_odbc_value.py +0 -0
  600. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_executor_factory.py +0 -0
  601. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_float_aggregate_reduction.py +0 -0
  602. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_float_canonical_templates.py +0 -0
  603. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_get_configuration_file.py +0 -0
  604. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_get_target_cols.py +0 -0
  605. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_helper_dataframe.py +0 -0
  606. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_helper_io.py +0 -0
  607. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_helpers.py +0 -0
  608. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_html_report_builder.py +0 -0
  609. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_iceberg_v2_metrics_exclusion.py +0 -0
  610. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_index_key_format.py +0 -0
  611. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_internal_helpers.py +0 -0
  612. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_interval_common.py +0 -0
  613. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_iso_dv_common.py +0 -0
  614. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_l2_collation_metadata.py +0 -0
  615. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_logging_config.py +0 -0
  616. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_metric_identifier_rendering.py +0 -0
  617. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_metrics_reshape.py +0 -0
  618. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_metrics_result_shape.py +0 -0
  619. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_metrics_templates_casts.py +0 -0
  620. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_metrics_tolerance.py +0 -0
  621. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_normalize_shape_aware.py +0 -0
  622. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_numeric_scale_resolution.py +0 -0
  623. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_parallel_execution_engine_fatal_errors.py +0 -0
  624. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_period_common.py +0 -0
  625. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_platform_bridge.py +0 -0
  626. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_postgresql_normalization_templates.py +0 -0
  627. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_postgresql_tz_normalization.py +0 -0
  628. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_pushdown_diff_sql.py +0 -0
  629. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_cell_level_validation.py +0 -0
  630. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_executor.py +0 -0
  631. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_metrics_level_validation.py +0 -0
  632. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_to_dataframe.py +0 -0
  633. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_query_validator.py +0 -0
  634. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_qvci_fallback.py +0 -0
  635. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
  636. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_qvci_fallback_triggers.py +0 -0
  637. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_redshift_native_timestamptz_ltz.py +0 -0
  638. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_report_metadata.py +0 -0
  639. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_cell_level_validation.py +0 -0
  640. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
  641. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_snapshot_generation.py +0 -0
  642. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_snapshot_validation.py +0 -0
  643. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_result_set_to_dataframe.py +0 -0
  644. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_count_bigint_overflow.py +0 -0
  645. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_data_validator.py +0 -0
  646. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_data_validator_empty_chunk.py +0 -0
  647. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_hash_column_delimiter.py +0 -0
  648. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_partitioning_strategy.py +0 -0
  649. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_validation_lob_exclusion.py +0 -0
  650. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_row_validation_report_buffer.py +0 -0
  651. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_schema_column_selection.py +0 -0
  652. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_shutdown_coordinator.py +0 -0
  653. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_signature_external_table.py +0 -0
  654. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_signature_row_md5_query.py +0 -0
  655. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_snapshot_validation_statements.py +0 -0
  656. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_snowflake_arguments_manager.py +0 -0
  657. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
  658. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_snowflake_redshift_super_size_guard.py +0 -0
  659. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_spatial_wkt_canonicalization.py +0 -0
  660. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sql_catalog_template_guard.py +0 -0
  661. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sqlite_validation_connection.py +0 -0
  662. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
  663. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
  664. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
  665. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_sync_validation_executor.py +0 -0
  666. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_column_metadata_model.py +0 -0
  667. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_context.py +0 -0
  668. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_metadata_processor.py +0 -0
  669. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_snapshot_generation.py +0 -0
  670. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_table_snapshot_validation.py +0 -0
  671. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_target_platform_factory.py +0 -0
  672. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_telemetry.py +0 -0
  673. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_templates_loader_manager.py +0 -0
  674. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_teradata_string_rtrim_policy.py +0 -0
  675. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_teradata_timetz_metric_domain.py +0 -0
  676. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_teradata_type_code_mapping.py +0 -0
  677. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_timestamp_golden_vectors.py +0 -0
  678. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_trace_bridge.py +0 -0
  679. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_tsql_float_l2_aggregates.py +0 -0
  680. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_database_connection.py +0 -0
  681. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_execution_context.py +0 -0
  682. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_progress_reporter.py +0 -0
  683. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_report_buffer.py +0 -0
  684. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_report_status.py +0 -0
  685. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_validation_templates_dto.py +0 -0
  686. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_vector_bit_normalization.py +0 -0
  687. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_vector_common.py +0 -0
  688. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_vector_normalization.py +0 -0
  689. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/test_warm_start.py +0 -0
  690. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/utils/__init__.py +0 -0
  691. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/utils/test_constants.py +0 -0
  692. {snowflake_data_validation-1.44.1 → snowflake_data_validation-1.45.0}/tests/unit/utils/test_semi_structured_json_canonicalization.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: snowflake-data-validation
3
- Version: 1.44.1
3
+ Version: 1.45.0
4
4
  Summary: Snowflake Data Validation
5
5
  Project-URL: Bug Tracker, https://github.com/snowflake-eng/migrations-data-validation/issues
6
6
  Project-URL: Source code, https://github.com/snowflake-eng/migrations-data-validation/
@@ -214,6 +214,28 @@ For configuration options and examples, see the [official documentation](https:/
214
214
 
215
215
  ## Changelog
216
216
 
217
+ ### v1.45.0
218
+
219
+ **New features**
220
+
221
+ - Added support for applying custom L3 normalization per side, including `targetDataType: "*"` to target the mapped type.
222
+ - Added the `includeCountDistinct` option; L2 `COUNT(DISTINCT)` is now off by default and opt-in globally or per table.
223
+ - Added support for additional table and view types in data validation, including materialized views, temporary tables, BigQuery clones and snapshots, and DB2 materialized query tables.
224
+
225
+ **Improvements**
226
+
227
+ - Improved row comparison with positional column identity, so duplicate and case-variant column names no longer collapse.
228
+ - Improved Redshift connection resiliency with TCP keepalive defaults.
229
+ - Improved L1 validation to treat native integer bits-versus-digits precision differences as compatible, reported as a warning.
230
+
231
+ **Bug fixes**
232
+
233
+ - Fixed Oracle L2 metric rows and L3 cell frames upper-casing column names, which made mixed-case columns collide.
234
+ - Fixed L3 failing rows over a lowercase SQL Server `UNIQUEIDENTIFIER` or an ignored `FLOAT` `targetExpression`.
235
+ - Fixed a possible deadlock in expression casts when validators run on several threads.
236
+ - Fixed Redshift and PostgreSQL `REAL` values being compared against a non-exact widened value.
237
+ - Fixed Iceberg `FULL_INGEST` validation to follow the lossless-only temporal promotion of the load.
238
+
217
239
  ### v1.44.1
218
240
 
219
241
  **New features**
@@ -123,6 +123,28 @@ For configuration options and examples, see the [official documentation](https:/
123
123
 
124
124
  ## Changelog
125
125
 
126
+ ### v1.45.0
127
+
128
+ **New features**
129
+
130
+ - Added support for applying custom L3 normalization per side, including `targetDataType: "*"` to target the mapped type.
131
+ - Added the `includeCountDistinct` option; L2 `COUNT(DISTINCT)` is now off by default and opt-in globally or per table.
132
+ - Added support for additional table and view types in data validation, including materialized views, temporary tables, BigQuery clones and snapshots, and DB2 materialized query tables.
133
+
134
+ **Improvements**
135
+
136
+ - Improved row comparison with positional column identity, so duplicate and case-variant column names no longer collapse.
137
+ - Improved Redshift connection resiliency with TCP keepalive defaults.
138
+ - Improved L1 validation to treat native integer bits-versus-digits precision differences as compatible, reported as a warning.
139
+
140
+ **Bug fixes**
141
+
142
+ - Fixed Oracle L2 metric rows and L3 cell frames upper-casing column names, which made mixed-case columns collide.
143
+ - Fixed L3 failing rows over a lowercase SQL Server `UNIQUEIDENTIFIER` or an ignored `FLOAT` `targetExpression`.
144
+ - Fixed a possible deadlock in expression casts when validators run on several threads.
145
+ - Fixed Redshift and PostgreSQL `REAL` values being compared against a non-exact widened value.
146
+ - Fixed Iceberg `FULL_INGEST` validation to follow the lossless-only temporal promotion of the load.
147
+
126
148
  ### v1.44.1
127
149
 
128
150
  **New features**
@@ -52,6 +52,9 @@ NVARCHAR: '"{{ col_name }}"'
52
52
  DATE: CONVERT(VARCHAR(10), "{{ col_name }}", 23)
53
53
  # Same text as SQL Server TIME: hh:mi:ss.fffffff + '00', cut to {{ time_text_length }}.
54
54
  TIME: LEFT(SUBSTRING(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 12, 16) + '00', {{ time_text_length }})
55
+ # Iceberg compatible TIME stored as VARCHAR (CETAS): the extract's own text, TIME(7)
56
+ # widened then '00', nine digits whatever the scale. '+' keeps NULL as NULL.
57
+ TIME_ICEBERG: CAST(CAST("{{ col_name }}" AS TIME(7)) AS VARCHAR(16)) + '00'
55
58
  DATETIME: STUFF(CONVERT(VARCHAR(27), CAST(CAST("{{ col_name }}" AS DATETIME2(3)) AS DATETIME2(7)), 121), 11, 1, 'T') + '00'
56
59
  DATETIME2: LEFT(STUFF(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 11, 1, 'T'), 26) + '000'
57
60
  SMALLDATETIME: CONVERT(VARCHAR(19), "{{ col_name }}", 126) + '.000000000'
@@ -53,6 +53,10 @@ from snowflake.snowflake_data_validation.sqlserver.query.charset_normalization i
53
53
  from snowflake.snowflake_data_validation.utils.constants import (
54
54
  Platform,
55
55
  )
56
+ from snowflake.snowflake_data_validation.utils.iceberg_dv_common import (
57
+ resolve_iceberg_compatible_tsql_source_normalization_key,
58
+ )
59
+ from snowflake.snowflake_data_validation.utils.iso_dv_common import get_paired_target_column_types
56
60
  from snowflake.snowflake_data_validation.utils.measure_collation import (
57
61
  TSQL_ROW_HASH_COLLATION_SUFFIX,
58
62
  tsql_comparison_collation_tokens,
@@ -141,8 +145,16 @@ class QueryGeneratorAzureSynapse(TsqlFloatMetricModifierMixin, QueryGeneratorBas
141
145
  datatypes_normalization_templates = table_context.templates_loader_manager.datatypes_normalization_templates
142
146
  rendered: dict[str, str] = {}
143
147
  renderer_columns = self._row_md5_normalization_columns(table_context)
148
+ paired_target_types = get_paired_target_column_types(table_context)
149
+ iceberg_spec = table_context.iceberg_spec
150
+ storage_mode = table_context.storage_mode
144
151
  for column in renderer_columns:
145
- lookup_key = (column.data_type or "").strip().upper()
152
+ lookup_key = resolve_iceberg_compatible_tsql_source_normalization_key(
153
+ (column.data_type or "").strip().upper(),
154
+ paired_target_type=paired_target_types.get(column.name),
155
+ iceberg_spec=iceberg_spec,
156
+ storage_mode=storage_mode,
157
+ )
146
158
  normalization_template = self._lookup_normalization_template(
147
159
  datatypes_normalization_templates,
148
160
  lookup_key,
@@ -48,7 +48,10 @@ WITH rc_cte AS (
48
48
  (
49
49
  SELECT CASE table_type
50
50
  WHEN 'BASE TABLE' THEN 'TABLE'
51
+ WHEN 'CLONE' THEN 'TABLE'
52
+ WHEN 'SNAPSHOT' THEN 'TABLE'
51
53
  WHEN 'VIEW' THEN 'VIEW'
54
+ WHEN 'MATERIALIZED VIEW' THEN 'VIEW'
52
55
  ELSE 'UNKNOWN'
53
56
  END
54
57
  FROM {{ object_database_sql }}.{{ object_schema_sql }}.INFORMATION_SCHEMA.TABLES
@@ -96,6 +96,7 @@ class ConfigurationModel(BaseModel):
96
96
  self._check_max_failed_rows_number(table)
97
97
  self._check_chunk_number(table)
98
98
  self.set_exclude_metrics(table)
99
+ self.set_include_count_distinct(table)
99
100
  self.set_apply_metric_column_modifier(table)
100
101
  self.set_include_lob_columns_in_row_validation(table)
101
102
 
@@ -113,6 +114,7 @@ class ConfigurationModel(BaseModel):
113
114
  self._check_max_failed_rows_number(view)
114
115
  self._check_chunk_number(view)
115
116
  self.set_exclude_metrics(view)
117
+ self.set_include_count_distinct(view)
116
118
  self.set_apply_metric_column_modifier(view)
117
119
  self.set_include_lob_columns_in_row_validation(view)
118
120
 
@@ -198,6 +200,10 @@ class ConfigurationModel(BaseModel):
198
200
  if table.exclude_metrics is None:
199
201
  table.exclude_metrics = self.validation_configuration.exclude_metrics
200
202
 
203
+ def set_include_count_distinct(self, table: TableConfiguration) -> None:
204
+ if table.include_count_distinct is None:
205
+ table.include_count_distinct = self.validation_configuration.include_count_distinct
206
+
201
207
  def set_include_lob_columns_in_row_validation(self, table: TableConfiguration) -> None:
202
208
  if table.include_lob_columns_in_row_validation is None:
203
209
  table.include_lob_columns_in_row_validation = (
@@ -32,6 +32,7 @@ VISIBLE_PROPERTIES: set[str] = {
32
32
  "chunk_number",
33
33
  "column_mappings",
34
34
  "exclude_metrics",
35
+ "include_count_distinct",
35
36
  "include_lob_columns_in_row_validation",
36
37
  "index_column_list",
37
38
  "max_failed_rows_number",
@@ -83,6 +84,7 @@ class TableConfiguration(BaseModel):
83
84
  column_mappings: dict[str, str] = {}
84
85
  max_failed_rows_number: int | None = None
85
86
  exclude_metrics: bool | None = None
87
+ include_count_distinct: bool | None = None
86
88
  apply_metric_column_modifier: bool | None = None
87
89
  include_lob_columns_in_row_validation: bool | None = None
88
90
  object_type: ObjectType = ObjectType.TABLE
@@ -41,6 +41,9 @@ class ValidationConfiguration(BaseModel):
41
41
  custom_templates_path: Path | None = None
42
42
  max_failed_rows_number: int = MAX_FAILED_ROWS_NUMBER_DEFAULT_VALUE
43
43
  exclude_metrics: bool = False
44
+ # L2 COUNT(DISTINCT) is opt-in (SNOW-4338258): it dominates L2 cost on the source
45
+ # (one SQL Server batch 26.4 s with it, 1.4 s without) and L2 is the fast metrics level.
46
+ include_count_distinct: bool = False
44
47
  apply_metric_column_modifier: bool = True
45
48
  include_lob_columns_in_row_validation: bool = False
46
49
 
@@ -49,13 +49,15 @@ SELECT
49
49
  (
50
50
  SELECT CASE TYPE
51
51
  WHEN 'T' THEN 'TABLE'
52
+ WHEN 'G' THEN 'TABLE'
52
53
  WHEN 'V' THEN 'VIEW'
54
+ WHEN 'S' THEN 'VIEW'
53
55
  ELSE 'UNKNOWN'
54
56
  END
55
57
  FROM SYSCAT.TABLES
56
58
  WHERE TABSCHEMA = '{{ object_schema | escape_sql_literal }}'
57
59
  AND TABNAME = '{{ object_name | escape_sql_literal }}'
58
- AND TYPE IN ('T', 'V')
60
+ AND TYPE IN ('T', 'G', 'V', 'S')
59
61
  ) AS OBJECT_TYPE,
60
62
  rc.ROW_COUNT
61
63
  FROM SYSCAT.COLUMNS C
@@ -234,6 +234,7 @@ class BaseValidationExecutor(ABC):
234
234
  columns=source_table_column_metadata.columns,
235
235
  database_name=configured_object_name(self.context.source_platform, table_configuration.source_database),
236
236
  exclude_metrics=table_configuration.exclude_metrics,
237
+ include_count_distinct=bool(table_configuration.include_count_distinct),
237
238
  fully_qualified_name=table_configuration.fully_qualified_name,
238
239
  has_where_clause=table_configuration.has_where_clause,
239
240
  max_failed_rows_number=table_configuration.max_failed_rows_number,
@@ -279,6 +280,7 @@ class BaseValidationExecutor(ABC):
279
280
  columns=target_table_column_metadata.columns,
280
281
  database_name=configured_object_name(self.context.target_platform, table_configuration.target_database),
281
282
  exclude_metrics=table_configuration.exclude_metrics,
283
+ include_count_distinct=bool(table_configuration.include_count_distinct),
282
284
  fully_qualified_name=table_configuration.target_fully_qualified_name,
283
285
  has_where_clause=table_configuration.has_target_where_clause,
284
286
  max_failed_rows_number=table_configuration.max_failed_rows_number,
@@ -128,6 +128,7 @@ class SourceValidationExecutor:
128
128
  columns=source_table_column_metadata.columns,
129
129
  database_name=configured_object_name(self.context.source_platform, table_configuration.source_database),
130
130
  exclude_metrics=table_configuration.exclude_metrics,
131
+ include_count_distinct=bool(table_configuration.include_count_distinct),
131
132
  fully_qualified_name=table_configuration.fully_qualified_name,
132
133
  has_where_clause=table_configuration.has_where_clause,
133
134
  max_failed_rows_number=table_configuration.max_failed_rows_number,
@@ -43,12 +43,13 @@ SELECT
43
43
  SELECT CASE object_type
44
44
  WHEN 'TABLE' THEN 'TABLE'
45
45
  WHEN 'VIEW' THEN 'VIEW'
46
+ WHEN 'MATERIALIZED VIEW' THEN 'VIEW'
46
47
  ELSE 'UNKNOWN'
47
48
  END
48
49
  FROM ALL_OBJECTS
49
50
  WHERE owner = '{{ object_schema | escape_sql_literal }}'
50
51
  AND object_name = '{{ object_name | escape_sql_literal }}'
51
- AND object_type IN ('TABLE', 'VIEW')
52
+ AND object_type IN ('TABLE', 'VIEW', 'MATERIALIZED VIEW')
52
53
  ) AS OBJECT_TYPE,
53
54
  rc.ROW_COUNT,
54
55
  s.STAT_ROW_COUNT
@@ -73,7 +73,7 @@ from snowflake.snowflake_data_validation.utils.helpers.helper_dataframe import (
73
73
  HelperDataFrame,
74
74
  )
75
75
  from snowflake.snowflake_data_validation.utils.helpers.helper_polars_cast import (
76
- build_polars_cast_expression,
76
+ cast_polars_columns,
77
77
  )
78
78
  from snowflake.snowflake_data_validation.utils.model.table_column_metadata import (
79
79
  TableColumnMetadata,
@@ -582,7 +582,7 @@ def apply_schema_to_polars_dataframe(
582
582
  """
583
583
  datatypes_mapping = _get_snowflake_to_polars_datatypes_mapping()
584
584
 
585
- cast_expressions: list[pl.Expr] = []
585
+ target_types: dict[str, pl.DataType] = {}
586
586
  for col_name, col_dtype in column_schema:
587
587
  if col_name not in dataframe.columns:
588
588
  continue
@@ -592,22 +592,12 @@ def apply_schema_to_polars_dataframe(
592
592
  continue
593
593
 
594
594
  target_type = datatypes_mapping[normalized_type]
595
- current_type = dataframe[col_name].dtype
596
- if current_type == target_type:
595
+ if dataframe[col_name].dtype == target_type:
597
596
  continue
598
597
 
599
- cast_expressions.append(
600
- build_polars_cast_expression(
601
- col_name=col_name,
602
- current_type=current_type,
603
- target_type=target_type,
604
- )
605
- )
598
+ target_types[col_name] = target_type
606
599
 
607
- if cast_expressions:
608
- dataframe = dataframe.with_columns(cast_expressions)
609
-
610
- return dataframe
600
+ return cast_polars_columns(dataframe, target_types)
611
601
 
612
602
 
613
603
  def process_table_column_metadata_internal(
@@ -17,6 +17,8 @@
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
+ from collections.abc import Mapping
21
+
20
22
  import pandas as pd
21
23
 
22
24
  from snowflake.snowflake_data_validation.public.model import (
@@ -89,6 +91,7 @@ def validate_metrics(
89
91
  tolerance: float | None = DEFAULT_TOLERANCE,
90
92
  relative_tolerance: float | None = None,
91
93
  excluded_columns: list[str] | None = None,
94
+ target_names: Mapping[str, str] | None = None,
92
95
  ) -> ValidationResult:
93
96
  """Validate metrics by comparing source and target DataFrames.
94
97
 
@@ -106,6 +109,10 @@ def validate_metrics(
106
109
  When both are set, a pair passes if either check passes (OR).
107
110
  excluded_columns: Columns left out of the metrics SELECT (Iceberg v2
108
111
  flattened VARCHAR columns); each is reported as one WARNING row.
112
+ target_names: Each actual source column's actual target name, resolved by
113
+ the caller (Cloud Data Validation: the column data migration creates).
114
+ With it the comparison pairs names exactly; without it, through
115
+ ``column_mappings`` ignoring case, as the standalone CLI does.
109
116
 
110
117
  Returns:
111
118
  ValidationResult: The validation result.
@@ -126,6 +133,7 @@ def validate_metrics(
126
133
  column_mappings=column_mappings,
127
134
  tolerance=tolerance,
128
135
  relative_tolerance=relative_tolerance,
136
+ target_names=target_names,
129
137
  )
130
138
  results_dataframe = append_flattened_metrics_exclusions(
131
139
  results_dataframe,
@@ -93,6 +93,7 @@ from snowflake.snowflake_data_validation.utils.iso_dv_common import (
93
93
  get_paired_source_column_types,
94
94
  get_paired_target_column_types,
95
95
  )
96
+ from snowflake.snowflake_data_validation.utils.measure_collation import COUNT_DISTINCT_METRIC
96
97
  from snowflake.snowflake_data_validation.utils.model.table_context import TableContext, configured_object_name
97
98
  from snowflake.snowflake_data_validation.utils.qvci_fallback import (
98
99
  resolve_teradata_metadata_is_temporary_table,
@@ -837,6 +838,9 @@ class QueryGeneratorBase(ABC):
837
838
  where_clause = table_context.where_clause
838
839
  has_where_clause = table_context.has_where_clause
839
840
  exclude_metrics = table_context.exclude_metrics
841
+ # COUNT(DISTINCT) is opt-in (SNOW-4338258). `is True` so test doubles (MagicMock) that never
842
+ # set the attribute keep the default instead of a truthy Mock.
843
+ include_count_distinct = getattr(table_context, "include_count_distinct", False) is True
840
844
  apply_metric_column_modifier = table_context.apply_metric_column_modifier
841
845
 
842
846
  select_exprs: list[str] = []
@@ -869,6 +873,8 @@ class QueryGeneratorBase(ABC):
869
873
  metric_name = row[METRIC_COLUMN_KEY]
870
874
  if exclude_metrics and metric_name in METRICS_TO_EXCLUDE:
871
875
  continue
876
+ if metric_name == COUNT_DISTINCT_METRIC and not include_count_distinct:
877
+ continue
872
878
  override = column_overrides.get(metric_name)
873
879
  if override is not None and override.removes_metric:
874
880
  applied_override_names.add(metric_name)
@@ -908,6 +914,8 @@ class QueryGeneratorBase(ABC):
908
914
  for metric_name, override in column_overrides.items():
909
915
  if metric_name in applied_override_names or override.removes_metric or not override.metric_query:
910
916
  continue
917
+ if metric_name == COUNT_DISTINCT_METRIC and not include_count_distinct:
918
+ continue
911
919
  metric_expr = self._render_metric_select_expr(
912
920
  col,
913
921
  metric_name,
@@ -15,6 +15,11 @@ import types
15
15
 
16
16
  from typing import TYPE_CHECKING, Any
17
17
 
18
+ from shared.redshift.constants import (
19
+ TCP_KEEPALIVE_COUNT,
20
+ TCP_KEEPALIVE_IDLE_SECONDS,
21
+ TCP_KEEPALIVE_INTERVAL_SECONDS,
22
+ )
18
23
  from snowflake.snowflake_data_validation.connector.connector_base import (
19
24
  ConnectorBase as BaseConnector,
20
25
  )
@@ -46,14 +51,6 @@ that disappears mid-handshake) blocks the caller forever and the retry loop in
46
51
  ``connect`` never gets a turn.
47
52
  """
48
53
 
49
- # Keepalive probes turn a silently dropped connection into an error. The OS
50
- # defaults wait about two hours before the first probe; with these, a peer that
51
- # stops answering is detected in about two minutes, while a live server running
52
- # a long statement keeps answering the probes and is never cut off.
53
- TCP_KEEPALIVE_IDLE_SECONDS = 60
54
- TCP_KEEPALIVE_INTERVAL_SECONDS = 15
55
- TCP_KEEPALIVE_COUNT = 4
56
-
57
54
 
58
55
  @Helper.import_dependencies("redshift")
59
56
  def import_redshift():
@@ -72,17 +72,24 @@ SELECT
72
72
  c.collation_name AS collation_name
73
73
  FROM
74
74
  SVV_COLUMNS c
75
+ -- The table literals stay in the ON clauses: Redshift does not carry the WHERE
76
+ -- filter on c through the LEFT JOINs, so without them both views read every
77
+ -- constraint in the database. In WHERE they would drop no-PK columns.
75
78
  LEFT JOIN
76
79
  information_schema.key_column_usage kcu
77
80
  ON c.column_name = kcu.column_name
78
81
  AND c.table_name = kcu.table_name
79
82
  AND c.table_schema = kcu.table_schema
83
+ AND kcu.table_name = '{{table_name | lower | escape_sql_literal}}'
84
+ AND kcu.table_schema = '{{schema_name | escape_sql_literal}}'
80
85
  LEFT JOIN
81
86
  information_schema.table_constraints tco
82
87
  ON kcu.constraint_name = tco.constraint_name
83
88
  AND kcu.table_schema = tco.table_schema
84
89
  AND kcu.table_name = tco.table_name
85
90
  AND tco.constraint_type = 'PRIMARY KEY'
91
+ AND tco.table_name = '{{table_name | lower | escape_sql_literal}}'
92
+ AND tco.table_schema = '{{schema_name | escape_sql_literal}}'
86
93
  WHERE
87
94
  c.table_name = '{{table_name | lower | escape_sql_literal}}'
88
95
  AND c.table_schema = '{{schema_name | escape_sql_literal}}';
@@ -40,7 +40,6 @@ Python canonicalization as native VARIANT.
40
40
  from __future__ import annotations
41
41
 
42
42
  from collections.abc import Mapping
43
- from typing import TYPE_CHECKING
44
43
 
45
44
  from shared.datatypes.common import CommonType
46
45
  from shared.datatypes.postgresql import PostgreSQLType
@@ -53,12 +52,7 @@ from snowflake.snowflake_data_validation.utils.iso_dv_common import (
53
52
  is_snowflake_varchar_like_type,
54
53
  normalize_snowflake_base_type,
55
54
  )
56
-
57
-
58
- if TYPE_CHECKING:
59
- from snowflake.snowflake_data_validation.utils.model.templates_loader_manager import (
60
- TemplatesLoaderManager,
61
- )
55
+ from snowflake.snowflake_data_validation.validation.comparison_codec import has_custom_column_normalization
62
56
 
63
57
 
64
58
  # Redshift's own catalog metadata query explicitly UPPER()s data_type, so
@@ -122,23 +116,6 @@ def is_cell_canonicalized_json_pair(
122
116
  return normalize_snowflake_base_type(target_snowflake_type) in _REDSHIFT_SUPER_TARGET_BASE_TYPES
123
117
 
124
118
 
125
- def has_custom_column_normalization(
126
- column_name: str,
127
- data_type: str | None,
128
- column_normalization_map: Mapping[str, str] | None,
129
- templates_loader_manager: TemplatesLoaderManager,
130
- ) -> bool:
131
- """Whether a user normalization replaces this column's template.
132
-
133
- Either a per-column rule (*column_normalization_map*) or a workflow
134
- override of its data type. Its output need not be JSON, so such a column
135
- is compared as rendered rather than canonicalized.
136
- """
137
- if column_normalization_map and column_name in column_normalization_map:
138
- return True
139
- return _normalize_redshift_source_type(data_type) in templates_loader_manager.overridden_normalization_types
140
-
141
-
142
119
  def resolve_snowflake_redshift_super_normalization_key(
143
120
  target_snowflake_type: str,
144
121
  source_data_type: str | None,
@@ -19,9 +19,6 @@ TIMESTAMP_TZ: REGEXP_REPLACE(TO_CHAR("{{ col_name }}", 'YYYY-MM-DD"T"HH24:MI:SS.
19
19
  # Paired PostgreSQL timestamptz: compare UTC instants (Oracle/Teradata use TIMESTAMP_TZ).
20
20
  TIMESTAMP_TZ_UTC: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD"T"HH24:MI:SS.FF9') || '+00:00'
21
21
  VARCHAR_ISO_TZ: REGEXP_REPLACE(TO_CHAR(TRY_TO_TIMESTAMP_TZ(TRIM("{{ col_name }}")), 'YYYY-MM-DD"T"HH24:MI:SS.FF9TZH:TZM'), 'Z$', '+00:00')
22
- # Iceberg v2 + compatible target overlays (microsecond / FF6).
23
- TIMESTAMP_LTZ_FF6: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD"T"HH24:MI:SS.FF6')
24
- TIMESTAMP_LTZ_UTC_FF6: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD"T"HH24:MI:SS.FF6')
25
22
  # Canonical UTC-instant form for every Snowflake TIMESTAMP_LTZ mirror of a
26
23
  # UTC-instant TIMESTAMPTZ source (Redshift / PostgreSQL), reached from either
27
24
  # the native path (iceberg_spec and storage_mode both None, target
@@ -29,10 +26,6 @@ TIMESTAMP_LTZ_UTC_FF6: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-
29
26
  # compatible overlay (TIMESTAMP_LTZ(6)). Source side emits the same
30
27
  # FF9-padded +00:00 string.
31
28
  TIMESTAMP_LTZ_UTC_FF9_OFFSET: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD"T"HH24:MI:SS.FF9') || '+00:00'
32
- TIMESTAMP_NTZ_FF6: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD"T"HH24:MI:SS.FF6')
33
- TIMESTAMP_TZ_FF6: REGEXP_REPLACE(TO_CHAR("{{ col_name }}", 'YYYY-MM-DD"T"HH24:MI:SS.FF6TZH:TZM'), 'Z$', '+00:00')
34
- TIMESTAMP_TZ_UTC_FF6: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD"T"HH24:MI:SS.FF6') || '+00:00'
35
- VARCHAR_ISO_TZ_FF6: REGEXP_REPLACE(TO_CHAR(TRY_TO_TIMESTAMP_TZ(TRIM("{{ col_name }}")), 'YYYY-MM-DD"T"HH24:MI:SS.FF6TZH:TZM'), 'Z$', '+00:00')
36
29
  # Complex values flattened to VARCHAR under Iceberg compatible DDL retain the
37
30
  # exact Redshift JSON_SERIALIZE text staged by UNLOAD. Compare that migration
38
31
  # representation directly: PARSE_JSON + TO_JSON recursively sorts object keys
@@ -82,6 +75,9 @@ PERIOD(TIMESTAMP_TZ): "REPLACE(REPLACE('[' || TRIM(TO_CHAR(PERIOD_BEGIN(\"{{ col
82
75
  PERIOD(TIMESTAMP): "'[' || TRIM(TO_CHAR(PERIOD_BEGIN(\"{{ col_name }}\"), 'YYYY-MM-DD HH24:MI:SS.FF6')) || ', ' || TRIM(TO_CHAR(PERIOD_END(\"{{ col_name }}\"), 'YYYY-MM-DD HH24:MI:SS.FF6')) || ')'"
83
76
  PERIOD: TRIM(CAST("{{ col_name }}" AS VARCHAR))
84
77
  VARCHAR: '"{{ col_name }}"'
78
+ # Text mirror of a SQL Server / Synapse UNIQUEIDENTIFIER: T-SQL renders a GUID in uppercase,
79
+ # so uppercase the mirror, which keeps the case it was loaded with.
80
+ VARCHAR_UNIQUEIDENTIFIER: UPPER("{{ col_name }}")
85
81
  # Spatial → WKT for L3 hashing. One _wkt_despace.sql.j2 base chain, parameterized on
86
82
  # wkt_input, so native geo (ST_ASWKT) and flattened geo (stored WKT text) can't drift,
87
83
  # and Snowflake matches PostGIS / SQL Server / Oracle / Teradata / Redshift / BigQuery.
@@ -18,7 +18,9 @@ SELECT
18
18
  (
19
19
  SELECT CASE TABLE_TYPE
20
20
  WHEN 'BASE TABLE' THEN 'TABLE'
21
+ WHEN 'LOCAL TEMPORARY' THEN 'TABLE'
21
22
  WHEN 'VIEW' THEN 'VIEW'
23
+ WHEN 'MATERIALIZED VIEW' THEN 'VIEW'
22
24
  ELSE 'UNKNOWN'
23
25
  END
24
26
  FROM {{ object_database_ref }}.INFORMATION_SCHEMA.TABLES
@@ -70,6 +70,9 @@ from snowflake.snowflake_data_validation.sqlserver.sqlserver_tz_normalization im
70
70
  from snowflake.snowflake_data_validation.sqlserver.sqlserver_tz_normalization import (
71
71
  resolve_snowflake_timestamp_tz_metrics_key as resolve_sqlserver_timestamp_tz_metrics_key,
72
72
  )
73
+ from snowflake.snowflake_data_validation.sqlserver.sqlserver_uniqueidentifier_normalization import (
74
+ resolve_snowflake_uniqueidentifier_normalization_key,
75
+ )
73
76
  from snowflake.snowflake_data_validation.teradata.teradata_iso_normalization import (
74
77
  resolve_snowflake_timestamp_tz_normalization_key as resolve_teradata_timestamp_tz_normalization_key,
75
78
  )
@@ -95,6 +98,7 @@ from snowflake.snowflake_data_validation.utils.measure_collation import (
95
98
  TARGET_CHARACTER_TYPES,
96
99
  )
97
100
  from snowflake.snowflake_data_validation.utils.model.table_context import TableContext
101
+ from snowflake.snowflake_data_validation.utils.model.templates_loader_manager import TemplatesLoaderManager
98
102
  from snowflake.snowflake_data_validation.utils.period_common import (
99
103
  resolve_snowflake_period_normalization_key,
100
104
  )
@@ -110,6 +114,7 @@ from snowflake.snowflake_data_validation.utils.vector_normalization import (
110
114
  from snowflake.snowflake_data_validation.validation.comparison_codec import (
111
115
  ComparisonCodec,
112
116
  apply_text_codec_to_renderer_templates,
117
+ has_custom_column_normalization,
113
118
  resolve_column_normalization_template,
114
119
  )
115
120
 
@@ -128,9 +133,20 @@ _PAIRED_SOURCE_NORMALIZATION_KEY_RESOLVERS: dict[Platform, tuple[_NormalizationK
128
133
  ),
129
134
  Platform.DB2: (resolve_snowflake_db2_lob_normalization_key,),
130
135
  Platform.TERADATA: (resolve_teradata_timestamp_tz_normalization_key,),
131
- Platform.SQLSERVER: (resolve_sqlserver_datetimeoffset_ltz_utc_normalization_key,),
136
+ Platform.SQLSERVER: (
137
+ resolve_sqlserver_datetimeoffset_ltz_utc_normalization_key,
138
+ resolve_snowflake_uniqueidentifier_normalization_key,
139
+ ),
140
+ Platform.AZURE_SYNAPSE: (resolve_snowflake_uniqueidentifier_normalization_key,),
132
141
  }
133
142
 
143
+ # Resolvers that only re-render the mirror's own text, with no source-side template
144
+ # paired to their key (as a LOB digest is), so a workflow or custom templates YAML
145
+ # override of the mirror's type replaces them: that override is what the user hashes.
146
+ _TYPE_OVERRIDE_YIELDING_RESOLVERS: frozenset[_NormalizationKeyResolver] = frozenset(
147
+ {resolve_snowflake_uniqueidentifier_normalization_key},
148
+ )
149
+
134
150
 
135
151
  # Per-source-platform resolvers for the key of a Snowflake ``TIMESTAMP_TZ`` mirror's
136
152
  # L2 min/max normalization, ``(target_key, paired_source_type) -> target_key``.
@@ -146,10 +162,25 @@ def resolve_paired_source_normalization_key(
146
162
  paired_source_platform: Platform | None,
147
163
  target_key: str,
148
164
  paired_source_type: str | None,
165
+ templates_loader_manager: TemplatesLoaderManager,
149
166
  ) -> str:
150
- """Apply the paired source platform's registered normalization-key resolvers."""
167
+ """Apply the paired source platform's registered normalization-key resolvers.
168
+
169
+ A resolver's key keeps the incoming one when the templates lack it (a custom
170
+ templates YAML copied before the key existed), so that YAML's own template for the
171
+ type applies rather than ``DEFAULT``, and, for a
172
+ :data:`_TYPE_OVERRIDE_YIELDING_RESOLVERS` resolver, when the user overrode the
173
+ incoming type.
174
+ """
175
+ templates = templates_loader_manager.datatypes_normalization_templates
176
+ overridden_types = templates_loader_manager.overridden_normalization_types
151
177
  for resolve in _PAIRED_SOURCE_NORMALIZATION_KEY_RESOLVERS.get(paired_source_platform, ()):
152
- target_key = resolve(target_key, paired_source_type)
178
+ resolved = resolve(target_key, paired_source_type)
179
+ if resolved == target_key or resolved not in templates:
180
+ continue
181
+ if resolve in _TYPE_OVERRIDE_YIELDING_RESOLVERS and normalize_snowflake_base_type(target_key) in overridden_types:
182
+ continue
183
+ target_key = resolved
153
184
  return target_key
154
185
 
155
186
 
@@ -268,9 +299,17 @@ class QueryGeneratorSnowflake(QueryGeneratorBase):
268
299
  *,
269
300
  paired_source_platform: Platform | None = None,
270
301
  paired_source_type: str | None = None,
302
+ has_custom_normalization: bool = False,
271
303
  ) -> str:
304
+ """Render *template* for *column*; a FLOAT column hashes its binary64 tuple.
305
+
306
+ ``has_custom_normalization`` marks *template* as the user's (a column's
307
+ ``targetExpression``, or a workflow or custom templates YAML override of its
308
+ type): it is rendered as written, FLOAT included, as the source side renders
309
+ its own.
310
+ """
272
311
  target_base, _, _ = self._parse_type_precision_scale(getattr(column, "data_type", "") or "")
273
- if target_base in SNOWFLAKE_FLOAT_TYPE_NAMES:
312
+ if target_base in SNOWFLAKE_FLOAT_TYPE_NAMES and not has_custom_normalization:
274
313
  return build_snowflake_float_bit_canonical_expr(write_identifier_for_sql(column.name))
275
314
  if (
276
315
  paired_source_platform == Platform.TERADATA
@@ -321,6 +360,7 @@ class QueryGeneratorSnowflake(QueryGeneratorBase):
321
360
  table_context.paired_source_platform,
322
361
  data_type,
323
362
  paired.get(column_name),
363
+ table_context.templates_loader_manager,
324
364
  )
325
365
  from snowflake.snowflake_data_validation.redshift.redshift_super_normalization import (
326
366
  SNOWFLAKE_REDSHIFT_SUPER_NORMALIZATION_KEY,
@@ -411,6 +451,12 @@ class QueryGeneratorSnowflake(QueryGeneratorBase):
411
451
  column,
412
452
  paired_source_platform=table_context.paired_source_platform,
413
453
  paired_source_type=paired_source_types.get(column.name),
454
+ has_custom_normalization=has_custom_column_normalization(
455
+ column.name,
456
+ column.data_type,
457
+ column_normalization_map,
458
+ table_context.templates_loader_manager,
459
+ ),
414
460
  )
415
461
  renderer_templates[column.name] = rendered
416
462
  renderer_templates = apply_text_codec_to_renderer_templates(
@@ -706,7 +752,6 @@ class QueryGeneratorSnowflake(QueryGeneratorBase):
706
752
  SNOWFLAKE_REDSHIFT_SUPER_JSON_ONLY_NORMALIZATION_KEY,
707
753
  SNOWFLAKE_REDSHIFT_SUPER_NORMALIZATION_KEY,
708
754
  SNOWFLAKE_VARIANT_JSON_NORMALIZATION_KEY,
709
- has_custom_column_normalization,
710
755
  is_cell_canonicalized_json_pair,
711
756
  resolve_snowflake_redshift_super_normalization_key,
712
757
  )
@@ -39,6 +39,9 @@ TEXT: CONVERT(VARCHAR(MAX), "{{ col_name }}")
39
39
  # maps 'time' to .NET TimeSpan, where 'HH' is the literal "HH". '00' pads to nine
40
40
  # digits, then LEFT cuts to the precision both sides share ({{ time_text_length }}).
41
41
  TIME: LEFT(SUBSTRING(CONVERT(VARCHAR(27), CAST("{{ col_name }}" AS DATETIME2(7)), 121), 12, 16) + '00', {{ time_text_length }})
42
+ # Iceberg compatible TIME stored as VARCHAR (CETAS): the extract's own text, TIME(7)
43
+ # widened then '00', nine digits whatever the scale. '+' keeps NULL as NULL.
44
+ TIME_ICEBERG: CAST(CAST("{{ col_name }}" AS TIME(7)) AS VARCHAR(16)) + '00'
42
45
  TIMESTAMP: UPPER(CONVERT(VARCHAR(MAX), CAST("{{ col_name }}" AS VARBINARY(8)), 2))
43
46
  ROWVERSION: UPPER(CONVERT(VARCHAR(MAX), CAST("{{ col_name }}" AS VARBINARY(8)), 2))
44
47
  TINYINT: CONVERT(VARCHAR(20), "{{ col_name }}")