snowflake-data-validation 1.35.1__tar.gz → 1.35.2__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 (606) hide show
  1. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/PKG-INFO +13 -1
  2. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/README.md +12 -0
  3. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +10 -10
  4. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +5 -7
  5. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +3 -3
  6. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_cell_validation_data_select.sql.j2 +2 -2
  7. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_datatypes_normalization_templates.yaml +4 -5
  8. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_md5_select.sql.j2 +6 -6
  9. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/query/query_generator_bigquery.py +4 -21
  10. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_column_metrics_templates.yaml +19 -13
  11. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_datatypes_normalization_templates.yaml +14 -12
  12. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_md5_select.sql.j2 +6 -7
  13. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/query/query_generator_db2.py +4 -43
  14. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -4
  15. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +12 -13
  16. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +19 -19
  17. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +5 -6
  18. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +9 -38
  19. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +2 -2
  20. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +16 -16
  21. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +14 -14
  22. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +6 -6
  23. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +9 -40
  24. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/float_bit_normalization.py +22 -0
  25. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/numeric_scale_resolution.py +3 -3
  26. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +44 -22
  27. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +2 -2
  28. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +4 -4
  29. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +50 -13
  30. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +15 -10
  31. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +4 -4
  32. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +5 -25
  33. snowflake_data_validation-1.35.2/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +5 -0
  34. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +2 -2
  35. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +6 -6
  36. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +6 -7
  37. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +5 -5
  38. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +6 -6
  39. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/l3/__init__.py +4 -0
  40. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/l3/signature_external_table.py +25 -6
  41. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/l3/warm_start.py +2 -2
  42. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +51 -22
  43. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_cell_validation_data_select.sql.j2 +2 -2
  44. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_datatypes_normalization_templates.yaml +6 -7
  45. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/query/query_generator_sqlite.py +3 -3
  46. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +11 -11
  47. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +14 -19
  48. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +9 -30
  49. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +2 -2
  50. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +5 -5
  51. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +8 -8
  52. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +21 -21
  53. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +9 -9
  54. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/query/charset_normalization.py +4 -1
  55. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +17 -22
  56. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/constants.py +3 -9
  57. snowflake_data_validation-1.35.2/src/snowflake/snowflake_data_validation/utils/teradata_string_rtrim.py +81 -0
  58. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/redshift.py +3 -6
  59. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/query/test_query_generator_redshift.py +6 -7
  60. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/test_redshift_varchar_count_distinct.py +17 -4
  61. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_query_generator_teradata.py +13 -2
  62. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_teradata_row_md5_select_template.py +6 -6
  63. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +15 -14
  64. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/bigquery/test_query_generator_bigquery.py +4 -4
  65. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/db2/test_db2_query_generator.py +34 -5
  66. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_lob_dv_generation.py +1 -1
  67. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_query_generator.py +4 -4
  68. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_metadata_query_template_sqlite.py +2 -2
  69. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_query_generator_sqlite.py +2 -2
  70. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/test_sqlserver_row_queries.py +4 -4
  71. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_cell_validation_query_generation.py +179 -77
  72. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_charset_normalization.py +7 -5
  73. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_comparison_codec.py +8 -9
  74. snowflake_data_validation-1.35.1/tests/unit/test_float_tme_canonical.py → snowflake_data_validation-1.35.2/tests/unit/test_float_bit_canonical.py +47 -70
  75. snowflake_data_validation-1.35.2/tests/unit/test_float_canonical_templates.py +91 -0
  76. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_numeric_scale_resolution.py +3 -3
  77. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_query_generator_numeric_scale.py +2 -0
  78. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_signature_external_table.py +12 -4
  79. snowflake_data_validation-1.35.2/tests/unit/test_teradata_string_rtrim_policy.py +170 -0
  80. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_timestamp_golden_vectors.py +5 -4
  81. snowflake_data_validation-1.35.2/tests/unit/test_vector_bit_normalization.py +113 -0
  82. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_warm_start.py +1 -1
  83. snowflake_data_validation-1.35.1/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -5
  84. snowflake_data_validation-1.35.1/src/snowflake/snowflake_data_validation/utils/redshift_tab_safe_rtrim.py +0 -17
  85. snowflake_data_validation-1.35.1/tests/unit/test_float_canonical_templates.py +0 -91
  86. snowflake_data_validation-1.35.1/tests/unit/test_vector_tme_normalization.py +0 -111
  87. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/.gitignore +0 -0
  88. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/LICENSE +0 -0
  89. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/docs/README.md +0 -0
  90. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/pyproject.toml +0 -0
  91. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
  92. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
  93. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
  94. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
  95. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
  96. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
  97. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
  98. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
  99. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
  100. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
  101. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
  102. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
  103. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
  104. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
  105. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
  106. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
  107. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
  108. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
  109. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
  110. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/__init__.py +0 -0
  111. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/__init__.py +0 -0
  112. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_column_metrics_templates.yaml +0 -0
  113. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_get_columns_metadata.sql.j2 +0 -0
  114. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_row_count_query.sql.j2 +0 -0
  115. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_table_metadata_query.sql.j2 +0 -0
  116. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/extractor/templates/bigquery_to_snowflake_datatypes_mapping_template.yaml +0 -0
  117. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/bigquery/query/__init__.py +0 -0
  118. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
  119. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
  120. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
  121. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
  122. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
  123. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
  124. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
  125. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
  126. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
  127. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
  128. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
  129. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
  130. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
  131. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
  132. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
  133. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/__init__.py +0 -0
  134. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/__init__.py +0 -0
  135. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/metadata_extractor_db2.py +0 -0
  136. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_cell_validation_data_select.sql.j2 +0 -0
  137. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_get_columns_metadata.sql.j2 +0 -0
  138. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_row_count_query.sql.j2 +0 -0
  139. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_table_metadata_query.sql.j2 +0 -0
  140. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/extractor/templates/db2_to_snowflake_datatypes_mapping_template.yaml +0 -0
  141. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/query/__init__.py +0 -0
  142. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/script_writer/__init__.py +0 -0
  143. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/db2/script_writer/script_writer_db2.py +0 -0
  144. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
  145. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
  146. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
  147. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
  148. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
  149. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
  150. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
  151. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
  152. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
  153. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
  154. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
  155. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
  156. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
  157. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
  158. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
  159. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
  160. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
  161. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
  162. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/oracle_iso_normalization.py +0 -0
  163. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/oracle_lob_normalization.py +0 -0
  164. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/oracle_vector_extraction.py +0 -0
  165. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
  166. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
  167. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
  168. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
  169. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
  170. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
  171. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
  172. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
  173. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
  174. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
  175. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
  176. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
  177. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
  178. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
  179. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
  180. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
  181. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
  182. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +0 -0
  183. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
  184. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +0 -0
  185. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
  186. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
  187. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
  188. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
  189. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/postgresql_tz_normalization.py +0 -0
  190. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
  191. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
  192. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
  193. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
  194. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
  195. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
  196. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
  197. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
  198. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
  199. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
  200. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
  201. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
  202. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
  203. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
  204. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
  205. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
  206. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
  207. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
  208. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
  209. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
  210. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
  211. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
  212. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
  213. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
  214. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
  215. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
  216. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
  217. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
  218. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/validation_progress_callback.py +0 -0
  219. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
  220. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
  221. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
  222. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
  223. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
  224. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
  225. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
  226. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
  227. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
  228. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
  229. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
  230. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
  231. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
  232. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
  233. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
  234. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
  235. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
  236. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
  237. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
  238. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
  239. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
  240. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
  241. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/charset_normalization.py +0 -0
  242. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
  243. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
  244. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
  245. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_modifiers.sql.j2 +0 -0
  246. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
  247. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
  248. /snowflake_data_validation-1.35.1/src/snowflake/snowflake_data_validation/query/vector_tme_normalization.py → /snowflake_data_validation-1.35.2/src/snowflake/snowflake_data_validation/query/vector_element_kind.py +0 -0
  249. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
  250. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
  251. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
  252. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
  253. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
  254. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
  255. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
  256. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
  257. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
  258. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
  259. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
  260. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
  261. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
  262. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
  263. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
  264. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
  265. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/query/charset_normalization.py +0 -0
  266. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
  267. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
  268. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
  269. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
  270. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
  271. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
  272. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
  273. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
  274. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
  275. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
  276. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
  277. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
  278. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
  279. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
  280. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
  281. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
  282. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
  283. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
  284. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
  285. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
  286. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
  287. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
  288. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/l3/pushdown_diff_sql.py +0 -0
  289. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
  290. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
  291. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
  292. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
  293. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
  294. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/query/charset_normalization.py +0 -0
  295. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
  296. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
  297. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
  298. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/__init__.py +0 -0
  299. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/connector/__init__.py +0 -0
  300. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_factory_sqlite.py +0 -0
  301. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/connector/connector_sqlite.py +0 -0
  302. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/__init__.py +0 -0
  303. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/metadata_extractor_sqlite.py +0 -0
  304. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_column_metrics_templates.yaml +0 -0
  305. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_compute_md5_sql.j2 +0 -0
  306. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_extract_md5_rows_chunk.sql.j2 +0 -0
  307. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_get_columns_metadata.sql.j2 +0 -0
  308. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_count_query.sql.j2 +0 -0
  309. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_row_md5_select.sql.j2 +0 -0
  310. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_table_metadata_query.sql.j2 +0 -0
  311. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_snowflake_datatypes_mapping_template.yaml +0 -0
  312. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/extractor/templates/sqlite_to_sqlite_datatypes_mapping_template.yaml +0 -0
  313. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/model/__init__.py +0 -0
  314. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/model/sqlite_connection.py +0 -0
  315. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/query/__init__.py +0 -0
  316. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/script_writer/__init__.py +0 -0
  317. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlite/script_writer/script_writer_sqlite.py +0 -0
  318. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
  319. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
  320. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
  321. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
  322. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
  323. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
  324. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_cell_validation_data_select.sql.j2 +0 -0
  325. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
  326. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
  327. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
  328. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
  329. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
  330. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
  331. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
  332. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
  333. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
  334. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
  335. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
  336. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
  337. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/query/charset_normalization.py +0 -0
  338. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
  339. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
  340. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
  341. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
  342. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
  343. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
  344. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
  345. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
  346. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
  347. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
  348. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +0 -0
  349. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
  350. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
  351. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
  352. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
  353. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
  354. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
  355. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
  356. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
  357. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
  358. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
  359. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
  360. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
  361. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/teradata/teradata_iso_normalization.py +0 -0
  362. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
  363. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
  364. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
  365. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
  366. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +0 -0
  367. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
  368. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
  369. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
  370. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
  371. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
  372. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
  373. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
  374. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
  375. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
  376. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
  377. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
  378. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
  379. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
  380. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
  381. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_polars_cast.py +0 -0
  382. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
  383. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
  384. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/iceberg_dv_common.py +0 -0
  385. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/index_key_format.py +0 -0
  386. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/interval_common.py +0 -0
  387. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/iso_dv_common.py +0 -0
  388. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
  389. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
  390. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
  391. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
  392. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
  393. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
  394. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -0
  395. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
  396. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
  397. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/qvci_fallback.py +0 -0
  398. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
  399. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
  400. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
  401. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
  402. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
  403. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
  404. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
  405. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
  406. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/vector_common.py +0 -0
  407. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/utils/vector_normalization.py +0 -0
  408. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
  409. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/accepted_transformation.py +0 -0
  410. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
  411. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/comparison_codec.py +0 -0
  412. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +0 -0
  413. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
  414. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
  415. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/metrics_tolerance.py +0 -0
  416. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/__init__.py +0 -0
  417. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/base.py +0 -0
  418. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/db2.py +0 -0
  419. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/registry.py +0 -0
  420. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/snowflake.py +0 -0
  421. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlite.py +0 -0
  422. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/sqlserver.py +0 -0
  423. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/platform_text_codec/teradata.py +0 -0
  424. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
  425. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
  426. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
  427. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
  428. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
  429. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
  430. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
  431. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
  432. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
  433. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
  434. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
  435. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
  436. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
  437. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/.coveragerc +0 -0
  438. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/conftest.py +0 -0
  439. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/.coveragerc +0 -0
  440. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
  441. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/test_async_generation_integration.py +0 -0
  442. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/test_async_validation_integration.py +0 -0
  443. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/test_reference_integration.py +0 -0
  444. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/test_source_validation_integration.py +0 -0
  445. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/integration/test_sync_validation_integration.py +0 -0
  446. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Postgresql/test_postgresql_spatial_templates.py +0 -0
  447. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
  448. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
  449. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/test_connector_redshift.py +0 -0
  450. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
  451. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/test_redshift_hllsketch_templates.py +0 -0
  452. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Redshift/test_redshift_spatial_templates.py +0 -0
  453. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_connector_teradata.py +0 -0
  454. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
  455. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_teradata_spatial_templates.py +0 -0
  456. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_teradata_view_generate_boundary.py +0 -0
  457. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/Teradata/test_teradata_view_l1_metadata_templates.py +0 -0
  458. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/__init__.py +0 -0
  459. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
  460. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
  461. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
  462. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
  463. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
  464. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
  465. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
  466. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
  467. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
  468. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
  469. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
  470. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
  471. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
  472. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
  473. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
  474. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/__init__.py +0 -0
  475. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
  476. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
  477. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
  478. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
  479. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
  480. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
  481. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/bigquery/__init__.py +0 -0
  482. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/bigquery/test_bigquery_spatial_templates.py +0 -0
  483. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/bigquery/test_query_generator_factory_bigquery.py +0 -0
  484. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/db2/__init__.py +0 -0
  485. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/db2/test_db2_metadata_extractor.py +0 -0
  486. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/db2/test_db2_registration.py +0 -0
  487. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/__init__.py +0 -0
  488. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_metadata_extractor_oracle_vector.py +0 -0
  489. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_iso_normalization.py +0 -0
  490. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_lob_normalization.py +0 -0
  491. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
  492. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
  493. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_normalization_templates.py +0 -0
  494. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_query_modifiers.py +0 -0
  495. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
  496. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
  497. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/snowflake/test_snowflake_spatial_metrics_templates.py +0 -0
  498. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/__init__.py +0 -0
  499. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_connector_factory_sqlite.py +0 -0
  500. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_connector_sqlite.py +0 -0
  501. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_metadata_extractor_sqlite.py +0 -0
  502. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlite/test_script_writer_sqlite.py +0 -0
  503. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/__init__.py +0 -0
  504. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/test_connector_factory_sql_server.py +0 -0
  505. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/test_metadata_extractor_sqlserver_vector.py +0 -0
  506. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/test_sqlserver_spatial_l1_metadata.py +0 -0
  507. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/sqlserver/test_sqlserver_spatial_metrics_templates.py +0 -0
  508. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_accepted_transformation.py +0 -0
  509. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_arguments_manager_base.py +0 -0
  510. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_arguments_manager_factory.py +0 -0
  511. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_batched_metrics_queries.py +0 -0
  512. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_boolean_binary_canonical_templates.py +0 -0
  513. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_cell_data_validator.py +0 -0
  514. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_column_grouping.py +0 -0
  515. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_column_metadata.py +0 -0
  516. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_column_normalization_override.py +0 -0
  517. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_column_partitioning_strategy.py +0 -0
  518. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_comparison_orchestrator.py +0 -0
  519. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_configuration_file_editor.py +0 -0
  520. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_configuration_file_generator.py +0 -0
  521. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_configuration_file_synchronizer.py +0 -0
  522. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_configuration_loader.py +0 -0
  523. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_configuration_model.py +0 -0
  524. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_connection_pool.py +0 -0
  525. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_connector_failure_tracker.py +0 -0
  526. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_connector_snowflake.py +0 -0
  527. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_cpu_optimizer.py +0 -0
  528. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_custom_templates_models.py +0 -0
  529. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_data_validator.py +0 -0
  530. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_escape_odbc_value.py +0 -0
  531. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_executor_factory.py +0 -0
  532. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_get_configuration_file.py +0 -0
  533. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_get_target_cols.py +0 -0
  534. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_helper_dataframe.py +0 -0
  535. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_helper_polars_cast.py +0 -0
  536. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_helpers.py +0 -0
  537. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_html_report_builder.py +0 -0
  538. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_iceberg_dv_l3_normalization.py +0 -0
  539. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_index_key_format.py +0 -0
  540. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_internal_helpers.py +0 -0
  541. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_interval_common.py +0 -0
  542. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_iso_dv_common.py +0 -0
  543. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_logging_config.py +0 -0
  544. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_metrics_reshape.py +0 -0
  545. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_metrics_result_shape.py +0 -0
  546. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_metrics_templates_casts.py +0 -0
  547. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_metrics_tolerance.py +0 -0
  548. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_normalize_shape_aware.py +0 -0
  549. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_platform_bridge.py +0 -0
  550. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_postgresql_normalization_templates.py +0 -0
  551. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_postgresql_tz_normalization.py +0 -0
  552. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_pushdown_diff_sql.py +0 -0
  553. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_query_cell_level_validation.py +0 -0
  554. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_query_metrics_level_validation.py +0 -0
  555. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_query_to_dataframe.py +0 -0
  556. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_query_validator.py +0 -0
  557. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_qvci_fallback.py +0 -0
  558. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_qvci_fallback_na_skip.py +0 -0
  559. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_qvci_fallback_triggers.py +0 -0
  560. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_report_metadata.py +0 -0
  561. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_cell_level_validation.py +0 -0
  562. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
  563. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_snapshot_generation.py +0 -0
  564. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_snapshot_validation.py +0 -0
  565. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_to_dataframe.py +0 -0
  566. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_result_set_validator.py +0 -0
  567. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_row_data_validator.py +0 -0
  568. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_row_hash_column_delimiter.py +0 -0
  569. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_row_partitioning_strategy.py +0 -0
  570. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_row_validation_report_buffer.py +0 -0
  571. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_shutdown_coordinator.py +0 -0
  572. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_signature_row_md5_query.py +0 -0
  573. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_snapshot_validation_statements.py +0 -0
  574. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_snowflake_arguments_manager.py +0 -0
  575. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_snowflake_binary_normalization_templates.py +0 -0
  576. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_source_validation_executor.py +0 -0
  577. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_spatial_wkt_canonicalization.py +0 -0
  578. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sql_catalog_template_guard.py +0 -0
  579. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sql_literal_jinja_filter.py +0 -0
  580. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sqlite_validation_connection.py +0 -0
  581. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
  582. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
  583. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sync_executor_qvci_fallback.py +0 -0
  584. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_sync_validation_executor.py +0 -0
  585. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_column_metadata_model.py +0 -0
  586. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_configuration.py +0 -0
  587. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_context.py +0 -0
  588. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_metadata_processor.py +0 -0
  589. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_snapshot_generation.py +0 -0
  590. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_table_snapshot_validation.py +0 -0
  591. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_target_platform_factory.py +0 -0
  592. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_telemetry.py +0 -0
  593. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_templates_loader_manager.py +0 -0
  594. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_teradata_iso_normalization.py +0 -0
  595. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_configuration.py +0 -0
  596. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_database_connection.py +0 -0
  597. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_execution_context.py +0 -0
  598. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_progress_reporter.py +0 -0
  599. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_report_buffer.py +0 -0
  600. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_report_status.py +0 -0
  601. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_validation_templates_dto.py +0 -0
  602. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_vector_common.py +0 -0
  603. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_vector_normalization.py +0 -0
  604. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/test_view_configuration.py +0 -0
  605. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/utils/__init__.py +0 -0
  606. {snowflake_data_validation-1.35.1 → snowflake_data_validation-1.35.2}/tests/unit/utils/test_constants.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: snowflake-data-validation
3
- Version: 1.35.1
3
+ Version: 1.35.2
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/
@@ -188,6 +188,18 @@ For configuration options and examples, see the [official documentation](https:/
188
188
 
189
189
  ## Changelog
190
190
 
191
+ ### v1.35.2
192
+
193
+ **New features**
194
+
195
+ - Added L3 signature comparison with Snowflake pushdown.
196
+ - Added as-stored string comparison, with space-only `RTRIM` for padded `CHAR` types.
197
+
198
+ **Bug fixes**
199
+
200
+ - Fixed Teradata `FLOAT` comparison to use IEEE-754 bit identity.
201
+ - Unified float comparison to IEEE-754 bit identity and removed decimal `TME` from data validation.
202
+
191
203
  ### v1.35.1
192
204
 
193
205
  **New features**
@@ -99,6 +99,18 @@ For configuration options and examples, see the [official documentation](https:/
99
99
 
100
100
  ## Changelog
101
101
 
102
+ ### v1.35.2
103
+
104
+ **New features**
105
+
106
+ - Added L3 signature comparison with Snowflake pushdown.
107
+ - Added as-stored string comparison, with space-only `RTRIM` for padded `CHAR` types.
108
+
109
+ **Bug fixes**
110
+
111
+ - Fixed Teradata `FLOAT` comparison to use IEEE-754 bit identity.
112
+ - Unified float comparison to IEEE-754 bit identity and removed decimal `TME` from data validation.
113
+
102
114
  ### v1.35.1
103
115
 
104
116
  **New features**
@@ -317,22 +317,22 @@ BIT:
317
317
 
318
318
  CHAR:
319
319
  min:
320
- metric_query: MIN(DATALENGTH("{{ col_name }}"))
320
+ metric_query: MIN(DATALENGTH(RTRIM("{{ col_name }}")))
321
321
  metric_return_datatype: INT
322
322
  max:
323
- metric_query: MAX(DATALENGTH("{{ col_name }}"))
323
+ metric_query: MAX(DATALENGTH(RTRIM("{{ col_name }}")))
324
324
  metric_return_datatype: INT
325
325
  count_empty:
326
- metric_query: SUM(CASE WHEN DATALENGTH("{{ col_name }}") = 0 THEN 1 ELSE 0 END)
326
+ metric_query: SUM(CASE WHEN DATALENGTH(RTRIM("{{ col_name }}")) = 0 THEN 1 ELSE 0 END)
327
327
  metric_return_datatype: INT
328
328
  count_distinct:
329
- metric_query: COUNT(DISTINCT TRIM("{{ col_name }}"))
329
+ metric_query: COUNT(DISTINCT RTRIM("{{ col_name }}"))
330
330
  metric_return_datatype: INT
331
331
  count_null:
332
332
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
333
333
  metric_return_datatype: INT
334
334
  avg:
335
- metric_query: AVG(CAST(DATALENGTH("{{ col_name }}") AS FLOAT))
335
+ metric_query: AVG(CAST(DATALENGTH(RTRIM("{{ col_name }}")) AS FLOAT))
336
336
  metric_return_datatype: FLOAT
337
337
  metric_column_modifier: "% 2097143"
338
338
 
@@ -358,19 +358,19 @@ VARCHAR:
358
358
 
359
359
  NCHAR:
360
360
  min:
361
- metric_query: MIN(LEN("{{ col_name }}"))
361
+ metric_query: MIN(LEN(RTRIM("{{ col_name }}")))
362
362
  metric_return_datatype: INT
363
363
  max:
364
- metric_query: MAX(LEN("{{ col_name }}"))
364
+ metric_query: MAX(LEN(RTRIM("{{ col_name }}")))
365
365
  metric_return_datatype: INT
366
366
  avg:
367
- metric_query: AVG(CAST(LEN("{{ col_name }}") AS FLOAT))
367
+ metric_query: AVG(CAST(LEN(RTRIM("{{ col_name }}")) AS FLOAT))
368
368
  metric_return_datatype: FLOAT
369
369
  count_empty:
370
- metric_query: SUM(CASE WHEN "{{ col_name }}" = '' THEN 1 ELSE 0 END)
370
+ metric_query: SUM(CASE WHEN RTRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
371
371
  metric_return_datatype: INT
372
372
  count_distinct:
373
- metric_query: COUNT(DISTINCT "{{ col_name }}")
373
+ metric_query: COUNT(DISTINCT RTRIM("{{ col_name }}"))
374
374
  metric_return_datatype: INT
375
375
  count_null:
376
376
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
@@ -18,19 +18,17 @@ DECIMAL: FORMAT("{{ col_name }}", '{{ numeric_format_mask }}')
18
18
  NUMERIC: FORMAT("{{ col_name }}", '{{ numeric_format_mask }}')
19
19
  MONEY: FORMAT("{{ col_name }}", '{{ numeric_format_mask }}')
20
20
  SMALLMONEY: FORMAT("{{ col_name }}", '{{ numeric_format_mask }}')
21
- FLOAT: '{{ float_tme_shim }}'
22
- REAL: '{{ float_tme_shim }}'
21
+ FLOAT: '{{ float_bit_shim }}'
22
+ REAL: '{{ float_bit_shim }}'
23
23
 
24
24
  # ---- Boolean type ----
25
25
  BIT: CASE WHEN "{{ col_name }}" = 1 THEN 'TRUE' WHEN "{{ col_name }}" = 0 THEN 'FALSE' END
26
26
 
27
27
  # ---- Character types ----
28
- # RTRIM aligns fixed-width CHAR/NCHAR padding and trailing VARCHAR spaces with the
29
- # Snowflake VARCHAR mirror. Use RTRIM (not TRIM) so leading spaces stay significant.
30
28
  CHAR: RTRIM("{{ col_name }}")
31
- VARCHAR: RTRIM("{{ col_name }}")
29
+ VARCHAR: '"{{ col_name }}"'
32
30
  NCHAR: RTRIM("{{ col_name }}")
33
- NVARCHAR: RTRIM("{{ col_name }}")
31
+ NVARCHAR: '"{{ col_name }}"'
34
32
 
35
33
  # ---- Date / Time types ----
36
34
  # Append '00' to FORMAT('.fffffff') so the output reaches FF9 (Snowflake TIMESTAMP_NTZ format).
@@ -49,7 +47,7 @@ VARBINARY: UPPER(CONVERT(VARCHAR(MAX), "{{ col_name }}", 2))
49
47
 
50
48
  # ---- Other types ----
51
49
  UNIQUEIDENTIFIER: LOWER(CONVERT(VARCHAR(36), "{{ col_name }}"))
52
- SYSNAME: RTRIM(CONVERT(VARCHAR(128), "{{ col_name }}"))
50
+ SYSNAME: CONVERT(VARCHAR(128), "{{ col_name }}")
53
51
 
54
52
  # ---- Default fallback ----
55
53
  DEFAULT: CONVERT(VARCHAR(MAX), "{{ col_name }}")
@@ -34,7 +34,7 @@ from snowflake.snowflake_data_validation.query.float_bit_normalization import (
34
34
  build_binary64_canonical_expr,
35
35
  )
36
36
  from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
37
- float_tme_input_expr,
37
+ float_bit_input_expr,
38
38
  )
39
39
  from snowflake.snowflake_data_validation.query.query_generator_base import (
40
40
  QueryGeneratorBase,
@@ -70,8 +70,8 @@ class QueryGeneratorAzureSynapse(QueryGeneratorBase):
70
70
  def _float_column_reference(self, column) -> str:
71
71
  return f'"{column.name}"'
72
72
 
73
- def build_float_tme_shim(self, column, col_ref: str) -> str:
74
- value_expr = float_tme_input_expr(
73
+ def build_float_bit_shim(self, column, col_ref: str) -> str:
74
+ value_expr = float_bit_input_expr(
75
75
  col_ref,
76
76
  getattr(column, "data_type", "") or "",
77
77
  dialect=self.platform.value,
@@ -2,9 +2,9 @@
2
2
  {{ qm.locking_prefix(query_modifiers) }}SELECT
3
3
  {% for column in column_collection %}
4
4
  {% if column.nullable %}
5
- RTRIM(COALESCE({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}')) AS `{{ column.name }}`{% if not loop.last %},{% endif %}
5
+ COALESCE({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}') AS `{{ column.name }}`{% if not loop.last %},{% endif %}
6
6
  {% else %}
7
- RTRIM({{ datatypes_normalization_renderer_templates[column.name] }}) AS `{{ column.name }}`{% if not loop.last %},{% endif %}
7
+ {{ datatypes_normalization_renderer_templates[column.name] }} AS `{{ column.name }}`{% if not loop.last %},{% endif %}
8
8
  {% endif %}
9
9
  {% endfor %}
10
10
  FROM (
@@ -37,10 +37,9 @@ INT64: FORMAT('{{ numeric_format_mask }}', CAST(`{{ col_name }}` AS NUMERIC))
37
37
  INTEGER: FORMAT('{{ numeric_format_mask }}', CAST(`{{ col_name }}` AS NUMERIC))
38
38
 
39
39
  # FLOAT64 maps to Snowflake FLOAT. L3 compares IEEE-754 bit identity
40
- # (sign|exponent|significand), not TME decimal text. See
41
- # QueryGeneratorBigQuery.build_float_tme_shim.
42
- FLOAT64: '{{ float_tme_shim }}'
43
- FLOAT: '{{ float_tme_shim }}'
40
+ # (sign|exponent|significand). See QueryGeneratorBigQuery.build_float_bit_shim.
41
+ FLOAT64: '{{ float_bit_shim }}'
42
+ FLOAT: '{{ float_bit_shim }}'
44
43
 
45
44
  # NUMERIC/BIGNUMERIC map to Snowflake NUMBER, which renders scale-aware via
46
45
  # TO_CHAR(col, 'FM...0.00..0'). BigQuery mirrors that scale with the resolved
@@ -57,7 +56,7 @@ BIGDECIMAL: FORMAT('{{ numeric_format_mask }}', `{{ col_name }}`)
57
56
  BOOL: CASE WHEN `{{ col_name }}` THEN 'TRUE' WHEN NOT `{{ col_name }}` THEN 'FALSE' END
58
57
  BOOLEAN: CASE WHEN `{{ col_name }}` THEN 'TRUE' WHEN NOT `{{ col_name }}` THEN 'FALSE' END
59
58
 
60
- STRING: RTRIM(`{{ col_name }}`)
59
+ STRING: '`{{ col_name }}`'
61
60
  # Snowflake BINARY normalizes via HEX_ENCODE (uppercase hex, no 0x prefix); match
62
61
  # it exactly so the row hashes agree.
63
62
  BYTES: UPPER(TO_HEX(`{{ col_name }}`))
@@ -8,15 +8,15 @@
8
8
  CONCAT(
9
9
  {% for group in column_groups %}
10
10
  {% if not loop.first %}, {% endif %}
11
- UPPER(TO_HEX(MD5(RTRIM(CONCAT(
11
+ UPPER(TO_HEX(MD5(CONCAT(
12
12
  {% for col in group %}`{{ col.name }}`{% if not loop.last %}, '{{ row_hash_column_delimiter }}', {% endif %}{% endfor %}
13
- )))))
13
+ ))))
14
14
  {% endfor %}
15
15
  )
16
16
  {% elif column_collection|length > 1 %}
17
- RTRIM(CONCAT({% for col in column_collection %}`{{ col.name }}`{% if not loop.last %}, '{{ row_hash_column_delimiter }}', {% endif %}{% endfor %}))
17
+ CONCAT({% for col in column_collection %}`{{ col.name }}`{% if not loop.last %}, '{{ row_hash_column_delimiter }}', {% endif %}{% endfor %})
18
18
  {% else %}
19
- TRIM({% for col in column_collection %}`{{ col.name }}`{% endfor %})
19
+ {% for col in column_collection %}`{{ col.name }}`{% endfor %}
20
20
  {% endif %}
21
21
  ))) AS ROW_MD5
22
22
  FROM
@@ -26,9 +26,9 @@ FROM
26
26
  {% endfor %}
27
27
  {% for column in column_collection %}
28
28
  {% if column.nullable %}
29
- TRIM(COALESCE({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}')) AS `{{ column.name }}`{% if not loop.last %},{% endif %}
29
+ COALESCE({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}') AS `{{ column.name }}`{% if not loop.last %},{% endif %}
30
30
  {% else %}
31
- TRIM({{ datatypes_normalization_renderer_templates[column.name] }}) AS `{{ column.name }}`{% if not loop.last %},{% endif %}
31
+ {{ datatypes_normalization_renderer_templates[column.name] }} AS `{{ column.name }}`{% if not loop.last %},{% endif %}
32
32
  {% endif %}
33
33
  {% endfor %}
34
34
  {{ qm.render_from_clause(query_modifiers, fully_qualified_name, 'src') }}
@@ -21,7 +21,7 @@ from snowflake.snowflake_data_validation.query.float_bit_normalization import (
21
21
  build_binary64_canonical_expr,
22
22
  )
23
23
  from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
24
- float_tme_input_expr,
24
+ float_bit_input_expr,
25
25
  )
26
26
  from snowflake.snowflake_data_validation.query.query_generator_base import (
27
27
  QueryGeneratorBase,
@@ -43,23 +43,6 @@ from snowflake.snowflake_data_validation.validation.comparison_codec import (
43
43
  LOGGER = logging.getLogger(__name__)
44
44
 
45
45
 
46
- def build_bigquery_float_tme_shim(col_ref: str) -> str:
47
- """Return inline BigQuery SQL that renders *col_ref* in Snowflake ``TME`` shape.
48
-
49
- Kept for migration-staging / decimal TME compatibility. L3 float validation
50
- uses :func:`build_bigquery_float_bit_canonical_expr` instead.
51
- """
52
- base = f"LOWER(FORMAT('%.15e', {col_ref}))"
53
- mantissa = f"SPLIT({base}, 'e')[OFFSET(0)]"
54
- exponent = f"CAST(SPLIT({base}, 'e')[OFFSET(1)] AS INT64)"
55
- mantissa_trimmed = f"RTRIM(RTRIM({mantissa}, '0'), '.')"
56
- return (
57
- f"CASE WHEN {col_ref} IS NULL THEN NULL "
58
- f"WHEN {col_ref} = 0 THEN '0E0' "
59
- f"ELSE CONCAT({mantissa_trimmed}, 'E', CAST({exponent} AS STRING)) END"
60
- )
61
-
62
-
63
46
  def build_bigquery_float_bit_canonical_expr(col_ref: str) -> str:
64
47
  """Return the exact binary64 tuple used for BigQuery float validation."""
65
48
  return build_binary64_canonical_expr(col_ref, dialect=Platform.BIGQUERY.value)
@@ -124,12 +107,12 @@ class QueryGeneratorBigQuery(QueryGeneratorBase):
124
107
  return self.normalize_bigquery_type(col.data_type)
125
108
 
126
109
  def _float_column_reference(self, column) -> str:
127
- """Backtick-quote the column for the float TME shim (BigQuery identifiers)."""
110
+ """Backtick-quote the column for the float bit shim (BigQuery identifiers)."""
128
111
  return f"`{column.name}`"
129
112
 
130
- def build_float_tme_shim(self, column, col_ref: str) -> str:
113
+ def build_float_bit_shim(self, column, col_ref: str) -> str:
131
114
  """Render *col_ref* as the shared IEEE-754 ``sign|exponent|significand`` tuple."""
132
- value_expr = float_tme_input_expr(
115
+ value_expr = float_bit_input_expr(
133
116
  col_ref,
134
117
  getattr(column, "data_type", "") or "",
135
118
  dialect=self.platform.value,
@@ -382,16 +382,22 @@ DECFLOAT:
382
382
  # INTEGER (integer division truncates), so an un-cast AVG yields e.g. 5 for
383
383
  # lengths averaging 5.1, while Snowflake's AVG returns 5.1 -> another spurious L2
384
384
  # mismatch. CAST(... AS FLOAT) forces DB2 to average in floating point (gotcha W).
385
+ #
386
+ # 3. CHAR/NCHAR RTRIM (gotcha Z): DB2 CHAR is blank-padded; the Snowflake mirror is
387
+ # TEXT. Length metrics RTRIM the pad so they match VARCHAR/TEXT as stored.
388
+ # RTRIM (not TRIM) keeps leading spaces significant, matching the L3 hash and
389
+ # the RTRIM the Snowflake generator applies to the paired mirror column.
390
+ # VARCHAR itself is not trimmed.
385
391
 
386
392
  CHARACTER:
387
393
  min:
388
- metric_query: MIN(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
394
+ metric_query: MIN(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
389
395
  metric_return_datatype: INTEGER
390
396
  max:
391
- metric_query: MAX(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
397
+ metric_query: MAX(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
392
398
  metric_return_datatype: INTEGER
393
399
  avg:
394
- metric_query: AVG(CAST(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
400
+ metric_query: AVG(CAST(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
395
401
  metric_return_datatype: FLOAT
396
402
  count_distinct:
397
403
  metric_query: COUNT(DISTINCT "{{ col_name }}")
@@ -400,18 +406,18 @@ CHARACTER:
400
406
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
401
407
  metric_return_datatype: INTEGER
402
408
  count_empty:
403
- metric_query: SUM(CASE WHEN TRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
409
+ metric_query: SUM(CASE WHEN RTRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
404
410
  metric_return_datatype: INTEGER
405
411
 
406
412
  CHAR:
407
413
  min:
408
- metric_query: MIN(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
414
+ metric_query: MIN(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
409
415
  metric_return_datatype: INTEGER
410
416
  max:
411
- metric_query: MAX(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
417
+ metric_query: MAX(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
412
418
  metric_return_datatype: INTEGER
413
419
  avg:
414
- metric_query: AVG(CAST(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
420
+ metric_query: AVG(CAST(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
415
421
  metric_return_datatype: FLOAT
416
422
  count_distinct:
417
423
  metric_query: COUNT(DISTINCT "{{ col_name }}")
@@ -420,7 +426,7 @@ CHAR:
420
426
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
421
427
  metric_return_datatype: INTEGER
422
428
  count_empty:
423
- metric_query: SUM(CASE WHEN TRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
429
+ metric_query: SUM(CASE WHEN RTRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
424
430
  metric_return_datatype: INTEGER
425
431
 
426
432
  VARCHAR:
@@ -443,16 +449,16 @@ VARCHAR:
443
449
  metric_query: SUM(CASE WHEN CHARACTER_LENGTH("{{ col_name }}", CODEUNITS32) = 0 THEN 1 ELSE 0 END)
444
450
  metric_return_datatype: INTEGER
445
451
 
446
- # National character (Unicode) fixed-length: same metrics as CHAR (LENGTH(TRIM)).
452
+ # National character (Unicode) fixed-length: same metrics as CHAR (LENGTH(RTRIM)).
447
453
  NCHAR:
448
454
  min:
449
- metric_query: MIN(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
455
+ metric_query: MIN(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
450
456
  metric_return_datatype: INTEGER
451
457
  max:
452
- metric_query: MAX(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32))
458
+ metric_query: MAX(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32))
453
459
  metric_return_datatype: INTEGER
454
460
  avg:
455
- metric_query: AVG(CAST(CHARACTER_LENGTH(TRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
461
+ metric_query: AVG(CAST(CHARACTER_LENGTH(RTRIM("{{ col_name }}"), CODEUNITS32) AS FLOAT))
456
462
  metric_return_datatype: FLOAT
457
463
  count_distinct:
458
464
  metric_query: COUNT(DISTINCT "{{ col_name }}")
@@ -461,7 +467,7 @@ NCHAR:
461
467
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
462
468
  metric_return_datatype: INTEGER
463
469
  count_empty:
464
- metric_query: SUM(CASE WHEN TRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
470
+ metric_query: SUM(CASE WHEN RTRIM("{{ col_name }}") = '' THEN 1 ELSE 0 END)
465
471
  metric_return_datatype: INTEGER
466
472
 
467
473
  # National character (Unicode) varying: same metrics as VARCHAR (LENGTH).
@@ -14,7 +14,7 @@
14
14
  # - TO_CHAR() is available but REJECTS the Oracle FM fill-mode prefix (SQL20476N).
15
15
  # - {{ numeric_format_mask }} is a pre-built DB2-valid 9…90 mask (no FM prefix)
16
16
  # from the query generator's _build_fm_to_char_mask override.
17
- # - {{ float_tme_shim }} expands to the IEEE-754 sign|exponent|significand tuple.
17
+ # - {{ float_bit_shim }} expands to the IEEE-754 sign|exponent|significand tuple.
18
18
  # - HEX(HASH(val, 0)) computes MD5 in DB2 11.5 (algorithm 0 = MD5) using the built-in
19
19
  # SYSIBM.HASH scalar — no special privilege (unlike SYSPROC.HASH2, which is often absent).
20
20
  # - Double-quoted column names handle lowercase/mixed-case identifiers.
@@ -33,27 +33,29 @@ INT: TRIM(TO_CHAR("{{ col_name }}", '{{ numeric_format_mask }}'))
33
33
  BIGINT: TRIM(TO_CHAR("{{ col_name }}", '{{ numeric_format_mask }}'))
34
34
  SMALLINT: TRIM(TO_CHAR("{{ col_name }}", '{{ numeric_format_mask }}'))
35
35
  # Float types use the IEEE-754 binary64 tuple (same contract as Snowflake FLOAT).
36
- FLOAT: '{{ float_tme_shim }}'
37
- REAL: '{{ float_tme_shim }}'
38
- DOUBLE: '{{ float_tme_shim }}'
39
- DOUBLE PRECISION: '{{ float_tme_shim }}'
40
- DECFLOAT: '{{ float_tme_shim }}'
36
+ FLOAT: '{{ float_bit_shim }}'
37
+ REAL: '{{ float_bit_shim }}'
38
+ DOUBLE: '{{ float_bit_shim }}'
39
+ DOUBLE PRECISION: '{{ float_bit_shim }}'
40
+ DECFLOAT: '{{ float_bit_shim }}'
41
41
 
42
42
  # ---- Character types (text family) ----
43
- # RTRIM strips trailing pad characters; NULL passes through for the sentinel wrap.
43
+ # CHAR/NCHAR are blank-padded; the Snowflake E2E/SCAI mirror is VARCHAR/TEXT.
44
+ # RTRIM trailing pads so L3 matches as-stored VARCHAR. VARCHAR/NVARCHAR stay
45
+ # identity (compared as stored). NULL passes through for the sentinel wrap.
44
46
  CHARACTER: RTRIM("{{ col_name }}")
45
47
  CHAR: RTRIM("{{ col_name }}")
46
- VARCHAR: RTRIM("{{ col_name }}")
48
+ VARCHAR: '"{{ col_name }}"'
47
49
  # CLOB / DBCLOB → Snowflake VARCHAR. MD5 hash via HEX(HASH(.., 0)) (built-in SYSIBM.HASH,
48
50
  # no special privilege), CASE-guarded for NULL. HASH rejects LOB arguments (SQL0171N), so the
49
51
  # LOB is cast to VARCHAR(32672) — DB2's max VARCHAR — before hashing. Values beyond 32672 bytes
50
52
  # are truncated for the hash; test fixtures stay within that bound.
51
53
  CLOB: CASE WHEN "{{ col_name }}" IS NULL THEN NULL ELSE UPPER(HEX(HASH(CAST("{{ col_name }}" AS VARCHAR(32672)), 0))) END
52
54
  DBCLOB: CASE WHEN "{{ col_name }}" IS NULL THEN NULL ELSE UPPER(HEX(HASH(CAST("{{ col_name }}" AS VARCHAR(32672)), 0))) END
53
- # National character (Unicode) strings: NCHAR/NVARCHAR behave like CHAR/VARCHAR
54
- # (RTRIM trailing pad, NULL passthrough); NCLOB is a LOB, hashed via HEX(HASH(.., 0)) like DBCLOB.
55
+ # National character: NCHAR is blank-padded like CHAR; NVARCHAR is as-stored.
56
+ # NCLOB is a LOB, hashed via HEX(HASH(.., 0)) like DBCLOB.
55
57
  NCHAR: RTRIM("{{ col_name }}")
56
- NVARCHAR: RTRIM("{{ col_name }}")
58
+ NVARCHAR: '"{{ col_name }}"'
57
59
  NCLOB: CASE WHEN "{{ col_name }}" IS NULL THEN NULL ELSE UPPER(HEX(HASH(CAST("{{ col_name }}" AS VARCHAR(32672)), 0))) END
58
60
 
59
61
  # ---- Boolean ----
@@ -84,4 +86,4 @@ TIME: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
84
86
  TIMESTAMP: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD') || 'T' || TO_CHAR("{{ col_name }}", 'HH24:MI:SS.FF6') || '000'
85
87
 
86
88
  # ---- Default fallback ----
87
- DEFAULT: TRIM(CAST("{{ col_name }}" AS VARCHAR(1000)))
89
+ DEFAULT: CAST("{{ col_name }}" AS VARCHAR(1000))
@@ -1,5 +1,5 @@
1
1
  {% import 'query_modifiers.sql.j2' as qm with context %}
2
- -- DB2 L3 row hashing. Uses the Oracle-compatible SQL surface (||, NVL, RTRIM)
2
+ -- DB2 L3 row hashing. Uses the Oracle-compatible SQL surface (||, NVL)
3
3
  -- with DB2's built-in MD5 primitive HEX(HASH(expr, 0)) in place of Oracle's
4
4
  -- STANDARD_HASH/RAWTOHEX. SYSIBM.HASH(expr, 0) returns the 16-byte MD5 digest
5
5
  -- (algorithm 0 = MD5, no special privilege required, unlike SYSPROC.HASH2);
@@ -12,19 +12,18 @@ SELECT
12
12
  {% if use_column_groups %}
13
13
  {% for group in column_groups %}
14
14
  {% if not loop.first %} || {% endif %}
15
- UPPER(HEX(HASH(RTRIM(
15
+ UPPER(HEX(HASH(
16
16
  {% for col in group %}
17
17
  NVL("{{ col.name }}", '{{ null_hashing_sentinel }}')
18
18
  {% if not loop.last %} || '{{ row_hash_column_delimiter }}' || {% endif %}
19
19
  {% endfor %}
20
- ), 0)))
20
+ , 0)))
21
21
  {% endfor %}
22
22
  {% else %}
23
- RTRIM(
24
23
  {% for column in column_collection %}
25
24
  NVL("{{ column.name }}", '{{ null_hashing_sentinel }}')
26
25
  {% if not loop.last %} || '{{ row_hash_column_delimiter }}' || {% endif %}
27
- {% endfor %})
26
+ {% endfor %}
28
27
  {% endif %}
29
28
  , 0))) AS ROW_MD5
30
29
  FROM
@@ -34,9 +33,9 @@ FROM
34
33
  {% endfor %}
35
34
  {% for column in column_collection %}
36
35
  {% if column.nullable %}
37
- RTRIM(NVL({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}')) AS "{{ column.name }}"{% if not loop.last %},{% endif %}
36
+ NVL({{ datatypes_normalization_renderer_templates[column.name] }}, '{{ null_hashing_sentinel }}') AS "{{ column.name }}"{% if not loop.last %},{% endif %}
38
37
  {% else %}
39
- RTRIM({{ datatypes_normalization_renderer_templates[column.name] }}) AS "{{ column.name }}"{% if not loop.last %},{% endif %}
38
+ {{ datatypes_normalization_renderer_templates[column.name] }} AS "{{ column.name }}"{% if not loop.last %},{% endif %}
40
39
  {% endif %}
41
40
  {% endfor %}
42
41
  {{ qm.render_from_clause(query_modifiers, fully_qualified_name, 'src') }}
@@ -19,7 +19,7 @@ below give DB2 its own DB2-valid rendering that still matches Snowflake
19
19
  Oracle ``REGEXP_REPLACE`` leading-zero wrapper is needed.
20
20
  * ``render_normalization_template`` — bypasses Oracle's ``FM``+``REGEXP`` numeric
21
21
  canonical wrapper and uses the base substitution with the DB2 mask.
22
- * ``build_float_tme_shim`` — IEEE-754 ``sign|exponent|significand`` tuple (same
22
+ * ``build_float_bit_shim`` — IEEE-754 ``sign|exponent|significand`` tuple (same
23
23
  contract as Snowflake FLOAT). DB2 ``LN``/``POWER`` run in ``DOUBLE``.
24
24
  """
25
25
 
@@ -34,7 +34,7 @@ from snowflake.snowflake_data_validation.query.float_bit_normalization import (
34
34
  build_binary64_canonical_expr,
35
35
  )
36
36
  from snowflake.snowflake_data_validation.query.numeric_scale_resolution import (
37
- float_tme_input_expr,
37
+ float_bit_input_expr,
38
38
  )
39
39
  from snowflake.snowflake_data_validation.query.query_generator_base import (
40
40
  QueryGeneratorBase,
@@ -49,9 +49,6 @@ from snowflake.snowflake_data_validation.utils.constants import (
49
49
  )
50
50
 
51
51
 
52
- # Mantissa is normalized to [1, 10); one integer 9 plus 15 fractional zeros gives
53
- # the same 15-decimal rounding Oracle's ROUND(mantissa, 15) + TM9 produces.
54
- _DB2_MANTISSA_MASK = "9.000000000000000"
55
52
  # Wide enough for BIGINT (19 digits) and DECIMAL(31); the trailing 0 forces the
56
53
  # leading zero for |v| < 1 (matching Snowflake TO_VARCHAR).
57
54
  _DB2_INTEGER_NINES = 31
@@ -70,42 +67,6 @@ def build_db2_float_bit_canonical_expr(col_ref: str) -> str:
70
67
  return build_binary64_canonical_expr(ieee_expr, dialect=Platform.DB2.value)
71
68
 
72
69
 
73
- def build_db2_float_tme_shim(col_ref: str) -> str:
74
- """DB2 analogue of ``build_oracle_float_tme_shim`` (DB2-valid casts/masks).
75
-
76
- Identical LN/POWER canonical form, but the exponent is cast ``AS INTEGER``
77
- (DB2 has no ``NUMBER`` type) and the mantissa is rendered with a plain
78
- ``9.0…0`` mask (DB2 ``TO_CHAR`` rejects Oracle's ``TM9``). The trailing-zero
79
- trimming below still collapses ``1.000000000000000`` → ``1`` and drops the
80
- dangling decimal point, matching Snowflake ``TME`` (e.g. ``100`` → ``1E2``).
81
- """
82
- abs_ref = f"ABS({col_ref})"
83
- log10 = f"(LN({abs_ref}) / LN(10))"
84
- exp0 = f"CAST(FLOOR({log10}) AS INTEGER)"
85
- mant0 = f"({col_ref} / POWER(10, {exp0}))"
86
- exp_int = f"CASE WHEN ABS({mant0}) >= 10 THEN {exp0} + 1 WHEN ABS({mant0}) < 1 THEN {exp0} - 1 ELSE {exp0} END"
87
- mantissa = f"({col_ref} / POWER(10, {exp_int}))"
88
- mantissa_rounded = f"ROUND({mantissa}, 15)"
89
- mantissa_base = f"TRIM(TO_CHAR({mantissa_rounded}, '{_DB2_MANTISSA_MASK}'))"
90
- decimal_pos = f"NULLIF(INSTR({mantissa_base}, '.'), 0)"
91
- # 2-arg SUBSTR (to end of string): DB2's 3-arg SUBSTR blank-pads the result to
92
- # the requested length, which would leave trailing spaces that defeat the
93
- # RTRIM('0') trailing-zero trim (Oracle's 3-arg SUBSTR returns only the
94
- # available chars). The fraction is always the mask's 15 decimals.
95
- fraction = f"SUBSTR({mantissa_base}, {decimal_pos} + 1)"
96
- fraction_trimmed = f"RTRIM({fraction}, '0')"
97
- mantissa_trimmed = (
98
- f"CASE WHEN {decimal_pos} IS NULL THEN {mantissa_base} "
99
- f"ELSE SUBSTR({mantissa_base}, 1, {decimal_pos} - 1) || "
100
- f"CASE WHEN {fraction_trimmed} IS NULL OR {fraction_trimmed} = '' THEN '' ELSE '.' || {fraction_trimmed} END END"
101
- )
102
- return (
103
- f"CASE WHEN {col_ref} IS NULL THEN NULL "
104
- f"WHEN {col_ref} = 0 THEN '0E0' "
105
- f"ELSE UPPER({mantissa_trimmed}) || 'E' || TRIM(TO_CHAR({exp_int})) END"
106
- )
107
-
108
-
109
70
  class QueryGeneratorDb2(QueryGeneratorOracle):
110
71
  """DB2 LUW query generator (see module docstring for the DB2-vs-Oracle rendering rationale)."""
111
72
 
@@ -141,10 +102,10 @@ class QueryGeneratorDb2(QueryGeneratorOracle):
141
102
  """Use base substitution: DB2's mask needs no Oracle ``FM``+``REGEXP`` wrapper."""
142
103
  return QueryGeneratorBase.render_normalization_template(self, template, column)
143
104
 
144
- def build_float_tme_shim(self, column, col_ref: str) -> str:
105
+ def build_float_bit_shim(self, column, col_ref: str) -> str:
145
106
  """Render *col_ref* as the shared IEEE-754 ``sign|exponent|significand`` tuple."""
146
107
  data_type = getattr(column, "data_type", "") or ""
147
- value_expr = float_tme_input_expr(col_ref, data_type, dialect=self.platform.value)
108
+ value_expr = float_bit_input_expr(col_ref, data_type, dialect=self.platform.value)
148
109
  return build_db2_float_bit_canonical_expr(value_expr)
149
110
 
150
111
  # ------------------------------------------------------------------
@@ -42,9 +42,6 @@ from snowflake.snowflake_data_validation.utils.model.column_metadata import Colu
42
42
  from snowflake.snowflake_data_validation.utils.qvci_fallback import (
43
43
  object_type_render_value,
44
44
  )
45
- from snowflake.snowflake_data_validation.utils.redshift_tab_safe_rtrim import (
46
- build_redshift_tab_safe_rtrim,
47
- )
48
45
 
49
46
 
50
47
  class SQLQueriesTemplateGenerator:
@@ -79,7 +76,6 @@ class SQLQueriesTemplateGenerator:
79
76
  )
80
77
  )
81
78
  self.env.filters["escape_sql_literal"] = escape_sql_literal
82
- self.env.globals["redshift_tab_safe_rtrim"] = build_redshift_tab_safe_rtrim
83
79
  # Single source of truth for the NULL sentinel used by L3 row-MD5 and
84
80
  # cell-validation normalization. Exposed to every template so the
85
81
  # COALESCE fallback can keep a real SQL NULL distinct from "".
@@ -306,44 +306,43 @@ REAL:
306
306
 
307
307
  CHAR:
308
308
  min:
309
- metric_query: MIN(LENGTH(TRIM("{{ col_name }}")))
309
+ metric_query: MIN(LENGTH(RTRIM("{{ col_name }}")))
310
310
  metric_return_datatype: INTEGER
311
311
  max:
312
- metric_query: MAX(LENGTH(TRIM("{{ col_name }}")))
312
+ metric_query: MAX(LENGTH(RTRIM("{{ col_name }}")))
313
313
  metric_return_datatype: INTEGER
314
314
  avg:
315
- metric_query: AVG(LENGTH(TRIM("{{ col_name }}")))
315
+ metric_query: AVG(LENGTH(RTRIM("{{ col_name }}")))
316
316
  metric_return_datatype: FLOAT
317
317
  count_distinct:
318
- metric_query: COUNT(DISTINCT "{{ col_name }}")
318
+ metric_query: COUNT(DISTINCT RTRIM("{{ col_name }}"))
319
319
  metric_return_datatype: INTEGER
320
320
  count_null:
321
321
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
322
322
  metric_return_datatype: INTEGER
323
- # Oracle TRIM of an all-whitespace string returns NULL (empty string = NULL
324
- # in Oracle), so use IS NULL rather than = '' to detect blank-only values.
323
+ # Oracle coerces '' to NULL; LENGTH = 0 matches the VARCHAR2 empty metric.
325
324
  count_empty:
326
- metric_query: SUM(CASE WHEN "{{ col_name }}" IS NOT NULL AND TRIM("{{ col_name }}") IS NULL THEN 1 ELSE 0 END)
325
+ metric_query: SUM(CASE WHEN LENGTH(RTRIM("{{ col_name }}")) = 0 THEN 1 ELSE 0 END)
327
326
  metric_return_datatype: INTEGER
328
327
 
329
328
  NCHAR:
330
329
  min:
331
- metric_query: MIN(LENGTH(TRIM("{{ col_name }}")))
330
+ metric_query: MIN(LENGTH(RTRIM("{{ col_name }}")))
332
331
  metric_return_datatype: INTEGER
333
332
  max:
334
- metric_query: MAX(LENGTH(TRIM("{{ col_name }}")))
333
+ metric_query: MAX(LENGTH(RTRIM("{{ col_name }}")))
335
334
  metric_return_datatype: INTEGER
336
335
  avg:
337
- metric_query: AVG(LENGTH(TRIM("{{ col_name }}")))
336
+ metric_query: AVG(LENGTH(RTRIM("{{ col_name }}")))
338
337
  metric_return_datatype: FLOAT
339
338
  count_distinct:
340
- metric_query: COUNT(DISTINCT "{{ col_name }}")
339
+ metric_query: COUNT(DISTINCT RTRIM("{{ col_name }}"))
341
340
  metric_return_datatype: INTEGER
342
341
  count_null:
343
342
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)
344
343
  metric_return_datatype: INTEGER
345
344
  count_empty:
346
- metric_query: SUM(CASE WHEN "{{ col_name }}" IS NOT NULL AND TRIM("{{ col_name }}") IS NULL THEN 1 ELSE 0 END)
345
+ metric_query: SUM(CASE WHEN LENGTH(RTRIM("{{ col_name }}")) = 0 THEN 1 ELSE 0 END)
347
346
  metric_return_datatype: INTEGER
348
347
 
349
348
  VARCHAR2:
@@ -591,7 +590,7 @@ BOOL:
591
590
 
592
591
  VECTOR:
593
592
  count_distinct:
594
- metric_query: 'COUNT(DISTINCT ({{ vector_tme_shim }}))'
593
+ metric_query: 'COUNT(DISTINCT ({{ vector_bit_shim }}))'
595
594
  metric_return_datatype: INTEGER
596
595
  count_null:
597
596
  metric_query: SUM(CASE WHEN "{{ col_name }}" IS NULL THEN 1 ELSE 0 END)