snowflake-data-validation 1.9.0__tar.gz → 1.9.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 (455) hide show
  1. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/.gitignore +3 -3
  2. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/PKG-INFO +25 -2
  3. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/README.md +24 -1
  4. snowflake_data_validation-1.9.2/docs/README.md +44 -0
  5. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/__version__.py +1 -1
  6. snowflake_data_validation-1.9.2/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +87 -0
  7. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_get_columns_metadata.sql.j2 +5 -1
  8. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_md5_select.sql.j2 +6 -6
  9. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_table_metadata_query.sql.j2 +3 -0
  10. snowflake_data_validation-1.9.2/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +23 -0
  11. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_compute_md5_sql.j2 +3 -3
  12. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_concatenated.sql.j2 +1 -1
  13. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_datatypes_normalization_templates.yaml +5 -5
  14. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_md5_select.sql.j2 +3 -3
  15. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/column_grouping.py +31 -0
  16. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/constants.py +6 -2
  17. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_column_grouping.py +24 -0
  18. snowflake_data_validation-1.9.0/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_datatypes_normalization_templates.yaml +0 -73
  19. snowflake_data_validation-1.9.0/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_datatypes_normalization_templates.yaml +0 -13
  20. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/LICENSE +0 -0
  21. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/pyproject.toml +0 -0
  22. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/__init__.py +0 -0
  23. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/__main__.py +0 -0
  24. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/__init__.py +0 -0
  25. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_arguments_manager.py +0 -0
  26. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/azure_synapse_cli.py +0 -0
  27. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/__init__.py +0 -0
  28. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_azure_synapse.py +0 -0
  29. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/connector/connector_factory_azure_synapse.py +0 -0
  30. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/__init__.py +0 -0
  31. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/metadata_extractor_azure_synapse.py +0 -0
  32. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_cell_validation_data_select.sql.j2 +0 -0
  33. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_column_metrics_templates.yaml +0 -0
  34. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_datatypes_normalization_templates.yaml +0 -0
  35. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_get_columns_metadata.sql.j2 +0 -0
  36. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_count_query.sql.j2 +0 -0
  37. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_row_md5_select.sql.j2 +0 -0
  38. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_table_metadata_query.sql.j2 +0 -0
  39. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/extractor/templates/azure_synapse_to_snowflake_datatypes_mapping_template.yaml +0 -0
  40. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/model/__init__.py +0 -0
  41. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/model/azure_synapse_credentials_connection.py +0 -0
  42. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/query/__init__.py +0 -0
  43. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/query/query_generator_azure_synapse.py +0 -0
  44. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/__init__.py +0 -0
  45. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/azure_synapse/script_writer/script_writer_azure_synapse.py +0 -0
  46. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/common_cli/cli_partitioning.py +0 -0
  47. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/common_cli/cli_sync_validation.py +0 -0
  48. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/comparison_orchestrator.py +0 -0
  49. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/__init__.py +0 -0
  50. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/configuration_loader.py +0 -0
  51. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/configuration_model.py +0 -0
  52. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/connection_types.py +0 -0
  53. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/connections/__init__.py +0 -0
  54. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/logging_configuration.py +0 -0
  55. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/table_configuration.py +0 -0
  56. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/validation_configuration.py +0 -0
  57. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/model/view_configuration.py +0 -0
  58. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/configuration/singleton.py +0 -0
  59. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/connector/__init__.py +0 -0
  60. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/connector/connector_base.py +0 -0
  61. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/connector/connector_factory_base.py +0 -0
  62. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/connector/connector_failure_tracker.py +0 -0
  63. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/__init__.py +0 -0
  64. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/async_generation_executor.py +0 -0
  65. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/async_validation_executor.py +0 -0
  66. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/base_validation_executor.py +0 -0
  67. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/executor_factory.py +0 -0
  68. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/extractor_types.py +0 -0
  69. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/source_validation_executor.py +0 -0
  70. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/executer/sync_validation_executor.py +0 -0
  71. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/extractor/__init__.py +0 -0
  72. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/extractor/metadata_extractor_base.py +0 -0
  73. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/extractor/sql_queries_template_generator.py +0 -0
  74. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/main_cli.py +0 -0
  75. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/__init__.py +0 -0
  76. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/__init__.py +0 -0
  77. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/metadata_extractor_oracle.py +0 -0
  78. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_cell_validation_data_select.sql.j2 +0 -0
  79. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_column_metrics_templates.yaml +0 -0
  80. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_datatypes_normalization_templates.yaml +0 -0
  81. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_get_columns_metadata.sql.j2 +0 -0
  82. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_count_query.sql.j2 +0 -0
  83. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_row_md5_select.sql.j2 +0 -0
  84. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_table_metadata_query.sql.j2 +0 -0
  85. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/extractor/templates/oracle_to_snowflake_datatypes_mapping_template.yaml +0 -0
  86. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/query/__init__.py +0 -0
  87. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/query/query_generator_oracle.py +0 -0
  88. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/script_writer/__init__.py +0 -0
  89. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/oracle/script_writer/script_writer_oracle.py +0 -0
  90. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/console_progress_reporter.py +0 -0
  91. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/__init__.py +0 -0
  92. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/html_report_builder.py +0 -0
  93. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/html_report/report_metadata.py +0 -0
  94. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/parallel_execution_engine.py +0 -0
  95. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/table_metadata_processor.py +0 -0
  96. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/validation_progress_reporter.py +0 -0
  97. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/orchestration/view_preprocessor.py +0 -0
  98. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/__init__.py +0 -0
  99. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/connector/__init__.py +0 -0
  100. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_factory_postgresql.py +0 -0
  101. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/connector/connector_postgresql.py +0 -0
  102. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/__init__.py +0 -0
  103. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/metadata_extractor_postgresql.py +0 -0
  104. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_cell_validation_data_select.sql.j2 +0 -0
  105. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_column_metrics_templates.yaml +0 -0
  106. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_extract_md5_rows_chunk.sql.j2 +0 -0
  107. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_row_count_query.sql.j2 +0 -0
  108. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/extractor/templates/postgresql_to_snowflake_datatypes_mapping_template.yaml +0 -0
  109. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/model/__init__.py +0 -0
  110. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/model/postgresql_credentials_connection.py +0 -0
  111. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/postgresql_arguments_manager.py +0 -0
  112. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/postgresql_cli.py +0 -0
  113. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/query/__init__.py +0 -0
  114. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/query/query_generator_postgresql.py +0 -0
  115. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/script_writer/__init__.py +0 -0
  116. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/postgresql/script_writer/script_writer_postgresql.py +0 -0
  117. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/DATA_VALIDATION_API_OVERVIEW.md +0 -0
  118. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/__init__.py +0 -0
  119. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/_internal.py +0 -0
  120. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/_teradata_internal.py +0 -0
  121. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/async_mode/__init__.py +0 -0
  122. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/async_mode/file_loader.py +0 -0
  123. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/async_mode/script_writer.py +0 -0
  124. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/cli/__init__.py +0 -0
  125. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/cli/commands.py +0 -0
  126. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/configuration/__init__.py +0 -0
  127. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/connectors/__init__.py +0 -0
  128. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/context/__init__.py +0 -0
  129. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/data_validation_api.py +0 -0
  130. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/enums/__init__.py +0 -0
  131. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/execution/__init__.py +0 -0
  132. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/execution/query_executor.py +0 -0
  133. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/generators/__init__.py +0 -0
  134. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/metadata/__init__.py +0 -0
  135. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/__init__.py +0 -0
  136. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/data_validation_exception.py +0 -0
  137. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/generated_query.py +0 -0
  138. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/metrics_result_shape.py +0 -0
  139. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/query_execution_result.py +0 -0
  140. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/query_generator_factory.py +0 -0
  141. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/result_set.py +0 -0
  142. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/model/validation_result.py +0 -0
  143. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_generation/__init__.py +0 -0
  144. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_generation/metadata_queries.py +0 -0
  145. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_generation/row_validation_queries.py +0 -0
  146. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_generation/schema_metrics_queries.py +0 -0
  147. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_validation/__init__.py +0 -0
  148. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/query_validation/query_comparison.py +0 -0
  149. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/reshape/__init__.py +0 -0
  150. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/reshape/metrics_reshape.py +0 -0
  151. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/result_set_validation/__init__.py +0 -0
  152. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/result_set_validation/result_set_comparison.py +0 -0
  153. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/snapshot/__init__.py +0 -0
  154. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_generation.py +0 -0
  155. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/snapshot/snapshot_validation.py +0 -0
  156. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/utils/__init__.py +0 -0
  157. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/utils/helpers.py +0 -0
  158. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/validation/__init__.py +0 -0
  159. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/validation/cell_validation.py +0 -0
  160. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/validation/metrics_validation.py +0 -0
  161. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/validation/row_validation.py +0 -0
  162. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/public/validation/schema_validation.py +0 -0
  163. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/__init__.py +0 -0
  164. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/chunk_md5_tiered.py +0 -0
  165. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_column_metrics_templates.yaml +0 -0
  166. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/extractor/templates/query_datatypes_normalization_templates.yaml +0 -0
  167. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/query/query_generator_query.py +0 -0
  168. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/query_arguments_manager.py +0 -0
  169. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/query/query_generator_base.py +0 -0
  170. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/__init__.py +0 -0
  171. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/connector/__init__.py +0 -0
  172. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/connector/connector_factory_redshift.py +0 -0
  173. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/connector/connector_redshift.py +0 -0
  174. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/metadata_extractor_redshift.py +0 -0
  175. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_cell_validation_data_select.sql.j2 +0 -0
  176. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_insert_template.sql.j2 +0 -0
  177. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_concatenated_table_template.sql.j2 +0 -0
  178. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_insert_template.sql.j2 +0 -0
  179. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_chunk_row_md5_table_template.sql.j2 +0 -0
  180. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_column_metrics_templates.yaml +0 -0
  181. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_datatypes_normalization_templates.yaml +0 -0
  182. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_extract_md5_rows_chunk.sql.j2 +0 -0
  183. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_get_columns_metadata.sql.j2 +0 -0
  184. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_count_query.sql.j2 +0 -0
  185. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_row_md5_select.sql.j2 +0 -0
  186. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_table_metadata_query.sql.j2 +0 -0
  187. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/extractor/templates/redshift_to_snowflake_datatypes_mapping_template.yaml +0 -0
  188. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/model/__init__.py +0 -0
  189. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/model/redshift_credentials_connection.py +0 -0
  190. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/query/__init__.py +0 -0
  191. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/query/query_generator_redshift.py +0 -0
  192. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/redshift_arguments_manager.py +0 -0
  193. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/redshift_cli.py +0 -0
  194. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/script_writer/__init__.py +0 -0
  195. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/redshift/script_writer/script_writer_redshift.py +0 -0
  196. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_cell_validation_data_select.sql.j2 +0 -0
  197. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_column_metrics_templates.yaml +0 -0
  198. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/result_set_datatypes_normalization_templates.yaml +0 -0
  199. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/extractor/templates/snowflake_to_result_set_datatypes_mapping_template.yaml +0 -0
  200. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/query/query_generator_result_set.py +0 -0
  201. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/result_set/result_set_arguments_manager.py +0 -0
  202. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/script_writer/__init__.py +0 -0
  203. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/script_writer/script_writer_base.py +0 -0
  204. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/__init__.py +0 -0
  205. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_factory_snowflake.py +0 -0
  206. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/connector/connector_snowflake.py +0 -0
  207. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/metadata_extractor_snowflake.py +0 -0
  208. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_cell_validation_data_select.sql.j2 +0 -0
  209. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_concatenated_template.sql.j2 +0 -0
  210. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_chunk_row_md5_template.sql.j2 +0 -0
  211. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_column_metrics_templates.yaml +0 -0
  212. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_extract_md5_rows_chunk.sql.j2 +0 -0
  213. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_case_sensitive_columns.sql.j2 +0 -0
  214. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_get_columns_metadata.sql.j2 +0 -0
  215. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_count_query.sql.j2 +0 -0
  216. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_row_md5_select.sql.j2 +0 -0
  217. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_table_metadata_query.sql.j2 +0 -0
  218. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_temporary_table_from_view_template.sql.j2 +0 -0
  219. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/extractor/templates/snowflake_to_snowflake_datatypes_mapping_template.yaml +0 -0
  220. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/model/__init__.py +0 -0
  221. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_credentials_connection.py +0 -0
  222. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_default_connection.py +0 -0
  223. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/model/snowflake_named_connection.py +0 -0
  224. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/query/__init__.py +0 -0
  225. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/query/query_generator_snowflake.py +0 -0
  226. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/script_writer/__init__.py +0 -0
  227. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/script_writer/script_writer_snowflake.py +0 -0
  228. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/snowflake_arguments_manager.py +0 -0
  229. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/snowflake/snowflake_cli.py +0 -0
  230. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/__init__.py +0 -0
  231. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/__init__.py +0 -0
  232. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_factory_sql_server.py +0 -0
  233. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/connector/connector_sql_server.py +0 -0
  234. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/__init__.py +0 -0
  235. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/metadata_extractor_sqlserver.py +0 -0
  236. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_column_metrics_templates.yaml +0 -0
  237. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_compute_md5_sql.j2 +0 -0
  238. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_datatypes_normalization_templates.yaml +0 -0
  239. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_extract_md5_rows_chunk.sql.j2 +0 -0
  240. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_columns_metadata.sql.j2 +0 -0
  241. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_get_temporary_table_internal_identifier_template.sql.j2 +0 -0
  242. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_count_query.sql.j2 +0 -0
  243. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_row_md5_select.sql.j2 +0 -0
  244. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_table_metadata_query.sql.j2 +0 -0
  245. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_temporary_table_from_view_template.sql.j2 +0 -0
  246. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/extractor/templates/sqlserver_to_snowflake_datatypes_mapping_template.yaml +0 -0
  247. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/model/__init__.py +0 -0
  248. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/model/sqlserver_credentials_connection.py +0 -0
  249. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/query/__init__.py +0 -0
  250. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/query/query_generator_sqlserver.py +0 -0
  251. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/__init__.py +0 -0
  252. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/script_writer/script_writer_sqlserver.py +0 -0
  253. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_arguments_manager.py +0 -0
  254. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/sqlserver/sqlserver_cli.py +0 -0
  255. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/table_partitioning_strategy.md +0 -0
  256. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/__init__.py +0 -0
  257. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/connector/__init__.py +0 -0
  258. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/connector/connector_factory_teradata.py +0 -0
  259. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/connector/connector_teradata.py +0 -0
  260. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/__init__.py +0 -0
  261. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/metadata_extractor_teradata.py +0 -0
  262. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_cell_validation_data_select.sql.j2 +0 -0
  263. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_column_metrics_templates.yaml +0 -0
  264. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_create_row_md5.sql.j2 +0 -0
  265. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_extract_md5_rows_chunk.sql.j2 +0 -0
  266. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_get_columns_metadata.sql.j2 +0 -0
  267. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_row_count_query.sql.j2 +0 -0
  268. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_table_metadata_query.sql.j2 +0 -0
  269. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/extractor/templates/teradata_to_snowflake_datatypes_mapping_template.yaml +0 -0
  270. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/model/__init__.py +0 -0
  271. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/model/teradata_credentials_connection.py +0 -0
  272. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/query/__init__.py +0 -0
  273. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/query/query_generator_teradata.py +0 -0
  274. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/script_writer/__init__.py +0 -0
  275. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/script_writer/script_writer_teradata.py +0 -0
  276. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/teradata_arguments_manager.py +0 -0
  277. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/teradata/teradata_cli.py +0 -0
  278. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/__init__.py +0 -0
  279. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/arguments_manager_base.py +0 -0
  280. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/arguments_manager_factory.py +0 -0
  281. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/base_output_handler.py +0 -0
  282. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/column_partitioning_strategy.py +0 -0
  283. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_editor.py +0 -0
  284. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_generator.py +0 -0
  285. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/configuration_file_synchronizer.py +0 -0
  286. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/connection_pool.py +0 -0
  287. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/connector_factory.py +0 -0
  288. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/console_output_handler.py +0 -0
  289. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/context.py +0 -0
  290. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/cpu_optimizer.py +0 -0
  291. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helper.py +0 -0
  292. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_database.py +0 -0
  293. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_dataframe.py +0 -0
  294. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_io.py +0 -0
  295. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_misc.py +0 -0
  296. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_query_result.py +0 -0
  297. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/helpers/helper_templates.py +0 -0
  298. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/logging_config.py +0 -0
  299. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/logging_utils.py +0 -0
  300. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/chunk.py +0 -0
  301. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/column_metadata.py +0 -0
  302. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/custom_templates.py +0 -0
  303. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/table_column_metadata.py +0 -0
  304. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/table_context.py +0 -0
  305. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/model/templates_loader_manager.py +0 -0
  306. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/progress_reporter.py +0 -0
  307. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/row_partitioning_strategy.py +0 -0
  308. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/run_context.py +0 -0
  309. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/shutdown_coordinator.py +0 -0
  310. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/snapshot_validation_statements.py +0 -0
  311. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/telemetry.py +0 -0
  312. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/templates/configuration_file_templates.py +0 -0
  313. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/thread_safe_singleton.py +0 -0
  314. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/utils/validation_utils.py +0 -0
  315. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/__init__.py +0 -0
  316. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/cell_data_validator.py +0 -0
  317. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/data_validator_base.py +0 -0
  318. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/dataframe_validator_base.py +0 -0
  319. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/metrics_data_validator.py +0 -0
  320. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/query_validator.py +0 -0
  321. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/result_set_validator.py +0 -0
  322. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/results_summary_report.py +0 -0
  323. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/row_data_validator.py +0 -0
  324. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/row_validation_report_buffer.py +0 -0
  325. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/schema_data_validator.py +0 -0
  326. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_database/__init__.py +0 -0
  327. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_database/sqlite_validation_connection.py +0 -0
  328. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_database/validation_database_connection_base.py +0 -0
  329. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_database_manager.py +0 -0
  330. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_execution_context.py +0 -0
  331. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_report_buffer.py +0 -0
  332. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/src/snowflake/snowflake_data_validation/validation/validation_report_status.py +0 -0
  333. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/.coveragerc +0 -0
  334. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/.coveragerc +0 -0
  335. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/Redshift/test_metadata_extractor_integration.py +0 -0
  336. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/test_async_generation_integration.py +0 -0
  337. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/test_async_validation_integration.py +0 -0
  338. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/test_reference_integration.py +0 -0
  339. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/test_source_validation_integration.py +0 -0
  340. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/integration/test_sync_validation_integration.py +0 -0
  341. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_general.py +0 -0
  342. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_generate_validation_scripts.py +0 -0
  343. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_get_configuration_files.py +0 -0
  344. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_run_async_validation.py +0 -0
  345. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_run_validation.py +0 -0
  346. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/cli/test_redshift_cli_run_validation_ipc.py +0 -0
  347. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/model/test_redshift_credentials_connection.py +0 -0
  348. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/query/test_query_generator_redshift.py +0 -0
  349. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/script_writer/test_script_writer_redshift.py +0 -0
  350. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/test_connector_redshift.py +0 -0
  351. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Redshift/test_redshift_arguments_manager.py +0 -0
  352. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Teradata/test_connector_teradata.py +0 -0
  353. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Teradata/test_metadata_extractor_teradata.py +0 -0
  354. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Teradata/test_query_generator_teradata.py +0 -0
  355. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/Teradata/test_teradata_cli.py +0 -0
  356. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/__init__.py +0 -0
  357. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/custom_templates_loader/snowflake_column_metrics_templates.yaml +0 -0
  358. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/custom_templates_loader/snowflake_datatypes_normalization_templates.yaml +0 -0
  359. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/custom_templates_loader/snowflake_table_metadata_query.sql.j2 +0 -0
  360. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_configuration_loader/test_load_configuration_model/conf.yaml +0 -0
  361. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_configuration_loader/test_load_configuration_model_reading_file_exception/conf.yaml +0 -0
  362. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_configuration_file.json +0 -0
  363. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_connection_source_db.toml +0 -0
  364. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_datatypes_normalization_template.yaml +0 -0
  365. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_datatypes_template.yaml +0 -0
  366. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_metrics_template.yaml +0 -0
  367. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_metrics_template_datatypes.yaml +0 -0
  368. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/dummy_template.csv +0 -0
  369. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_helpers/not_valid_format.yaml +0 -0
  370. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_templates_loader_manager/snowflake_column_metrics_templates.yaml +0 -0
  371. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/assets/test_templates_loader_manager/snowflake_datatypes_normalization_templates.yaml +0 -0
  372. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/__init__.py +0 -0
  373. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_azure_synapse_credentials_connection.py +0 -0
  374. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_azure_synapse_metadata_extractor.py +0 -0
  375. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_azure_synapse_metrics_templates.py +0 -0
  376. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_azure_synapse_query_generator.py +0 -0
  377. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_azure_synapse_row_queries.py +0 -0
  378. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_connector_azure_synapse.py +0 -0
  379. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/azure_synapse/test_connector_factory_azure_synapse.py +0 -0
  380. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/oracle/__init__.py +0 -0
  381. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/oracle/test_oracle_metadata_extractor.py +0 -0
  382. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/oracle/test_oracle_metrics_templates.py +0 -0
  383. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/oracle/test_oracle_query_generator.py +0 -0
  384. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/oracle/test_oracle_type_mappings.py +0 -0
  385. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/query/test_chunk_md5_tiered.py +0 -0
  386. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_arguments_manager_base.py +0 -0
  387. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_arguments_manager_factory.py +0 -0
  388. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_batched_metrics_queries.py +0 -0
  389. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_cell_data_validator.py +0 -0
  390. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_cell_validation_query_generation.py +0 -0
  391. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_column_metadata.py +0 -0
  392. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_column_partitioning_strategy.py +0 -0
  393. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_comparison_orchestrator.py +0 -0
  394. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_configuration_file_editor.py +0 -0
  395. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_configuration_file_synchronizer.py +0 -0
  396. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_configuration_loader.py +0 -0
  397. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_configuration_model.py +0 -0
  398. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_connection_pool.py +0 -0
  399. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_connector_failure_tracker.py +0 -0
  400. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_connector_snowflake.py +0 -0
  401. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_console_progress_reporter.py +0 -0
  402. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_cpu_optimizer.py +0 -0
  403. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_custom_templates_models.py +0 -0
  404. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_data_validator.py +0 -0
  405. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_escape_odbc_value.py +0 -0
  406. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_executor_factory.py +0 -0
  407. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_get_configuration_file.py +0 -0
  408. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_helper_dataframe.py +0 -0
  409. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_helpers.py +0 -0
  410. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_html_report_builder.py +0 -0
  411. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_internal_helpers.py +0 -0
  412. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_logging_config.py +0 -0
  413. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_metrics_reshape.py +0 -0
  414. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_metrics_result_shape.py +0 -0
  415. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_metrics_templates_casts.py +0 -0
  416. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_query_cell_level_validation.py +0 -0
  417. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_query_metrics_level_validation.py +0 -0
  418. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_query_to_dataframe.py +0 -0
  419. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_query_validator.py +0 -0
  420. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_report_metadata.py +0 -0
  421. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_cell_level_validation.py +0 -0
  422. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_column_metrics_validation.py +0 -0
  423. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_snapshot_generation.py +0 -0
  424. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_snapshot_validation.py +0 -0
  425. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_to_dataframe.py +0 -0
  426. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_result_set_validator.py +0 -0
  427. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_row_data_validator.py +0 -0
  428. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_row_partitioning_strategy.py +0 -0
  429. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_row_validation_report_buffer.py +0 -0
  430. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_shutdown_coordinator.py +0 -0
  431. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_snapshot_validation_statements.py +0 -0
  432. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_snowflake_arguments_manager.py +0 -0
  433. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_snowflake_cli.py +0 -0
  434. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_source_validation_executor.py +0 -0
  435. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_sqlite_validation_connection.py +0 -0
  436. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_sqlserver_arguments_manager.py +0 -0
  437. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_sqlserver_cli.py +0 -0
  438. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_sqlserver_multi_version_support.py +0 -0
  439. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_column_metadata_model.py +0 -0
  440. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_configuration.py +0 -0
  441. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_context.py +0 -0
  442. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_metadata_processor.py +0 -0
  443. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_snapshot_generation.py +0 -0
  444. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_table_snapshot_validation.py +0 -0
  445. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_telemetry.py +0 -0
  446. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_templates_loader_manager.py +0 -0
  447. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_configuration.py +0 -0
  448. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_database_connection.py +0 -0
  449. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_execution_context.py +0 -0
  450. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_progress_reporter.py +0 -0
  451. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_report_buffer.py +0 -0
  452. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_validation_report_status.py +0 -0
  453. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/test_view_configuration.py +0 -0
  454. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/utils/__init__.py +0 -0
  455. {snowflake_data_validation-1.9.0 → snowflake_data_validation-1.9.2}/tests/unit/utils/test_constants.py +0 -0
@@ -14,9 +14,9 @@ __pycache__/
14
14
  # C extensions
15
15
  *.so
16
16
 
17
- # Sphinx documentation
18
- docs/build/
19
- docs/source/**/_autosummary
17
+ # Sphinx documentation (snowflake-data-validation package)
18
+ snowflake-data-validation/docs/build/
19
+ snowflake-data-validation/docs/source/**/_autosummary
20
20
 
21
21
 
22
22
  # Distribution / packaging
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-data-validation
3
- Version: 1.9.0
3
+ Version: 1.9.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/
@@ -88,7 +88,7 @@ Description-Content-Type: text/markdown
88
88
 
89
89
  **Snowflake Data Validation** is a command-line tool and Python library for validating data migrations and ensuring data quality between source and target databases, with support for SQL Server, Redshift, Teradata, and Oracle as source systems.
90
90
 
91
- > 📖 **For detailed usage instructions, configuration examples, and CLI reference, please check the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
91
+ > 📖 **For detailed usage instructions, configuration examples, and CLI reference, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
92
92
 
93
93
  ---
94
94
 
@@ -186,6 +186,17 @@ Performs row-by-row comparison:
186
186
 
187
187
  ---
188
188
 
189
+ ## CLI commands
190
+
191
+ ```bash
192
+ snowflake-data-validation <source_dialect> <command> [options]
193
+ # Short alias: sdv <source_dialect> <command> [options]
194
+ ```
195
+
196
+ Supported dialects include `sqlserver`, `teradata`, `redshift`, and `oracle`. Common commands: `run-validation`, `run-async-validation`, `source-validate`, and `generate-validation-scripts`. The dialect must match `source_platform` in your configuration file.
197
+
198
+ ---
199
+
189
200
  ## 📚 Documentation
190
201
 
191
202
  For complete command reference, configuration options, and examples, see the [Data Validation CLI](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
@@ -194,6 +205,18 @@ For complete command reference, configuration options, and examples, see the [Da
194
205
 
195
206
  ## Changelog
196
207
 
208
+ ### v1.9.2
209
+
210
+ **Bug fixes**
211
+
212
+ - Fixed L3 row hashing crash when source and target tables had different column counts under existing column-selection or column-mapping config.
213
+
214
+ ### v1.9.1
215
+
216
+ **Bug fixes**
217
+
218
+ - Fixed smart partition size calculation when using `targetWhereClause`.
219
+
197
220
  ### v1.9.0
198
221
 
199
222
  **New features**
@@ -5,7 +5,7 @@
5
5
 
6
6
  **Snowflake Data Validation** is a command-line tool and Python library for validating data migrations and ensuring data quality between source and target databases, with support for SQL Server, Redshift, Teradata, and Oracle as source systems.
7
7
 
8
- > 📖 **For detailed usage instructions, configuration examples, and CLI reference, please check the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
8
+ > 📖 **For detailed usage instructions, configuration examples, and CLI reference, see the [official documentation](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).**
9
9
 
10
10
  ---
11
11
 
@@ -103,6 +103,17 @@ Performs row-by-row comparison:
103
103
 
104
104
  ---
105
105
 
106
+ ## CLI commands
107
+
108
+ ```bash
109
+ snowflake-data-validation <source_dialect> <command> [options]
110
+ # Short alias: sdv <source_dialect> <command> [options]
111
+ ```
112
+
113
+ Supported dialects include `sqlserver`, `teradata`, `redshift`, and `oracle`. Common commands: `run-validation`, `run-async-validation`, `source-validate`, and `generate-validation-scripts`. The dialect must match `source_platform` in your configuration file.
114
+
115
+ ---
116
+
106
117
  ## 📚 Documentation
107
118
 
108
119
  For complete command reference, configuration options, and examples, see the [Data Validation CLI](https://docs.snowflake.com/en/migrations/snowconvert-docs/data-validation-cli/CLI_QUICK_REFERENCE).
@@ -111,6 +122,18 @@ For complete command reference, configuration options, and examples, see the [Da
111
122
 
112
123
  ## Changelog
113
124
 
125
+ ### v1.9.2
126
+
127
+ **Bug fixes**
128
+
129
+ - Fixed L3 row hashing crash when source and target tables had different column counts under existing column-selection or column-mapping config.
130
+
131
+ ### v1.9.1
132
+
133
+ **Bug fixes**
134
+
135
+ - Fixed smart partition size calculation when using `targetWhereClause`.
136
+
114
137
  ### v1.9.0
115
138
 
116
139
  **New features**
@@ -0,0 +1,44 @@
1
+ # Data Validations API Documentation
2
+
3
+ ## How to build the API Reference documentation
4
+
5
+ 1. Create a Python virtual environment if you don't have one already and activate it:
6
+
7
+ ```shell
8
+ python3 -m venv .venv
9
+ source .venv/bin/activate
10
+ ```
11
+
12
+ 2. Install the required dependencies:
13
+
14
+ ```shell
15
+ pip install hatch
16
+ ```
17
+
18
+ 3. Build the documentation from the root of the repository using `hatch`:
19
+
20
+ If you are not in the root of the repository, navigate to it first:
21
+
22
+ ```bash
23
+ cd $(git rev-parse --show-toplevel)
24
+ ```
25
+
26
+ Then, run the following command to build the documentation:
27
+
28
+ ```bash
29
+ hatch run docs:build
30
+ ```
31
+
32
+ Alternatively, to build the documentation with a custom theme for testing purposes, you can run the following command:
33
+
34
+ ```bash
35
+ hatch run docs:build_pretty
36
+ ```
37
+
38
+ 4. Open the file `snowflake-data-validation/docs/build/html/index.html` in a web browser.
39
+
40
+ ## Important files and directories
41
+
42
+ * `snowflake-data-validation/docs/source/index.rst`: Specify which `.rst` to include in the `index.html` landing page.
43
+ * `snowflake-data-validation/docs/source/conf.py`: The configuration parameters for Sphinx and autosummary.
44
+ * `snowflake-data-validation/docs/source/_templates/`: Directory containing JINJA templates used by autosummary.
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- __version__ = "1.9.0"
16
+ __version__ = "1.9.2"
@@ -0,0 +1,87 @@
1
+ # PostgreSQL normalization expressions for row/cell validation (canonical text).
2
+ # POINT maps to Snowflake GEOMETRY — emit OGC WKT (space-separated coords) to
3
+ # align with ST_ASWKT on the Snowflake side. Native point uses subscripts;
4
+ # PostGIS geometry/geography use ST_AsText when present.
5
+ # CAST(... AS ...) is used instead of :: casts so YAML parses unambiguously.
6
+ # BOOLEAN / BOOL: emit lowercase true/false to match Snowflake TO_CHAR(boolean).
7
+ # NUMERIC / DECIMAL / approximate floats: align canonical text with Snowflake ``TO_CHAR`` on the
8
+ # mirror (Snowflake normalization templates unchanged here — Postgres adjusts to match).
9
+ # DECIMAL / NUMERIC columns round-trip through NUMERIC(38, 12) before TO_CHAR so Postgres output
10
+ # matches Snowflake typed ``NUMBER(p,s)`` mirrors more closely (untyped ``CAST(... AS NUMERIC)``
11
+ # diverged around literal ``0`` / ``0.0`` payloads). Float approximate types use NUMERIC(38, 12) after
12
+ # IEEE ``±0`` canonicalization.
13
+ # Shared ``TO_CHAR(..., 'FM999...9999.0000')`` trims insignificant fractional zeros (FM).
14
+ # ``float8`` can carry IEEE ``-0`` — map ``±0`` to ``+0::double precision`` /
15
+ # ``+0::real`` with ``IS NOT DISTINCT FROM`` (``NaN`` stays distinct from zero).
16
+ # FM ``TO_CHAR`` can omit the digit before ``.`` (``.0000``). ``REGEXP_REPLACE(..., '^\\.', '0.')``
17
+ # aligns that with Snowflake-ish ``0….`` strings. Exact numeric zeros (all types after the shared
18
+ # ``numeric(38,12)`` / ``NUMBER(38,12)`` cast) normalize to literal ``0.0000`` so Snowflake ``FLOAT`` /
19
+ # ``NUMBER`` payloads that stringify as bare ``0`` still match Postgres row-hash concat.
20
+ # Datatype keys below are sorted lexicographically.
21
+
22
+ ARRAY: CAST("{{ col_name }}" AS TEXT)
23
+ BIGINT: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
24
+ BIGSERIAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
25
+ BIT: TRIM(CAST("{{ col_name }}" AS TEXT))
26
+ BIT VARYING: TRIM(CAST("{{ col_name }}" AS TEXT))
27
+ BOOL: TRIM(CASE WHEN "{{ col_name }}" IS TRUE THEN 'true' WHEN "{{ col_name }}" IS FALSE THEN 'false' END)
28
+ BOOLEAN: TRIM(CASE WHEN "{{ col_name }}" IS TRUE THEN 'true' WHEN "{{ col_name }}" IS FALSE THEN 'false' END)
29
+ BOX: TRIM(CAST("{{ col_name }}" AS TEXT))
30
+ BPCHAR: TRIM("{{ col_name }}")
31
+ # BYTEA: hex must match Snowflake BINARY canonicalization (TO_HEX-style uppercase).
32
+ BYTEA: UPPER(ENCODE("{{ col_name }}", 'hex'))
33
+ CHAR: TRIM("{{ col_name }}")
34
+ CHARACTER: TRIM("{{ col_name }}")
35
+ CHARACTER VARYING: TRIM("{{ col_name }}")
36
+ CIDR: TRIM(CAST("{{ col_name }}" AS TEXT))
37
+ CIRCLE: TRIM(CAST("{{ col_name }}" AS TEXT))
38
+ DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
39
+ DATERANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
40
+ DECIMAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
41
+ DEFAULT: TRIM(CAST("{{ col_name }}" AS TEXT))
42
+ DOMAIN: TRIM(CAST("{{ col_name }}" AS TEXT))
43
+ DOUBLE PRECISION: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN CAST("{{ col_name }}" AS DOUBLE PRECISION) IS NOT DISTINCT FROM 0::DOUBLE PRECISION THEN 0::DOUBLE PRECISION ELSE CAST("{{ col_name }}" AS DOUBLE PRECISION) END AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN CAST("{{ col_name }}" AS DOUBLE PRECISION) IS NOT DISTINCT FROM 0::DOUBLE PRECISION THEN 0::DOUBLE PRECISION ELSE CAST("{{ col_name }}" AS DOUBLE PRECISION) END AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
44
+ ENUM: TRIM(CAST("{{ col_name }}" AS TEXT))
45
+ FLOAT: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN CAST("{{ col_name }}" AS DOUBLE PRECISION) IS NOT DISTINCT FROM 0::DOUBLE PRECISION THEN 0::DOUBLE PRECISION ELSE CAST("{{ col_name }}" AS DOUBLE PRECISION) END AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN CAST("{{ col_name }}" AS DOUBLE PRECISION) IS NOT DISTINCT FROM 0::DOUBLE PRECISION THEN 0::DOUBLE PRECISION ELSE CAST("{{ col_name }}" AS DOUBLE PRECISION) END AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
46
+ GEOGRAPHY: TRIM(ST_AsText("{{ col_name }}"))
47
+ GEOMETRY: TRIM(ST_AsText("{{ col_name }}"))
48
+ INET: TRIM(CAST("{{ col_name }}" AS TEXT))
49
+ INT4RANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
50
+ INT8RANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
51
+ INTEGER: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
52
+ INTERVAL: TRIM(CAST("{{ col_name }}" AS TEXT))
53
+ JSON: CAST("{{ col_name }}" AS TEXT)
54
+ JSONB: CAST("{{ col_name }}" AS TEXT)
55
+ LINE: TRIM(CAST("{{ col_name }}" AS TEXT))
56
+ LSEG: TRIM(CAST("{{ col_name }}" AS TEXT))
57
+ MACADDR: TRIM(CAST("{{ col_name }}" AS TEXT))
58
+ MACADDR8: TRIM(CAST("{{ col_name }}" AS TEXT))
59
+ MONEY: TRIM(CAST(CAST("{{ col_name }}" AS NUMERIC) AS TEXT))
60
+ NAME: TRIM("{{ col_name }}")
61
+ NUMERIC: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
62
+ NUMRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
63
+ OID: TRIM(CAST("{{ col_name }}" AS TEXT))
64
+ PATH: TRIM(CAST("{{ col_name }}" AS TEXT))
65
+ POINT: TRIM(FORMAT('POINT(%s %s)', ("{{ col_name }}")[0], ("{{ col_name }}")[1]))
66
+ POLYGON: TRIM(CAST("{{ col_name }}" AS TEXT))
67
+ REAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CAST(CASE WHEN CAST("{{ col_name }}" AS REAL) IS NOT DISTINCT FROM 0::REAL THEN 0::REAL ELSE CAST("{{ col_name }}" AS REAL) END AS DOUBLE PRECISION) AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CAST(CASE WHEN CAST("{{ col_name }}" AS REAL) IS NOT DISTINCT FROM 0::REAL THEN 0::REAL ELSE CAST("{{ col_name }}" AS REAL) END AS DOUBLE PRECISION) AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
68
+ SERIAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
69
+ SMALLINT: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
70
+ SMALLSERIAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMERIC(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
71
+ TEXT: TRIM("{{ col_name }}")
72
+ TIME: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
73
+ TIME WITH TIME ZONE: TO_CHAR(CAST("{{ col_name }}" AT TIME ZONE 'UTC' AS time), 'HH24:MI:SS')
74
+ TIME WITHOUT TIME ZONE: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
75
+ TIMESTAMP: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
76
+ TIMESTAMP WITH TIME ZONE: TO_CHAR("{{ col_name }}" AT TIME ZONE 'UTC', 'YYYY-MM-DD-HH24:MI:SS')
77
+ TIMESTAMP WITHOUT TIME ZONE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
78
+ TIMESTAMPTZ: TO_CHAR("{{ col_name }}" AT TIME ZONE 'UTC', 'YYYY-MM-DD-HH24:MI:SS')
79
+ TIMETZ: TO_CHAR(CAST("{{ col_name }}" AT TIME ZONE 'UTC' AS time), 'HH24:MI:SS')
80
+ TSQUERY: TRIM(CAST("{{ col_name }}" AS TEXT))
81
+ TSRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
82
+ TSTZRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
83
+ TSVECTOR: TRIM(CAST("{{ col_name }}" AS TEXT))
84
+ UUID: TRIM(CAST("{{ col_name }}" AS TEXT))
85
+ VARBIT: TRIM(CAST("{{ col_name }}" AS TEXT))
86
+ VARCHAR: TRIM("{{ col_name }}")
87
+ XML: CAST("{{ col_name }}" AS TEXT)
@@ -7,7 +7,11 @@ SELECT
7
7
  UPPER(c.data_type) AS data_type,
8
8
  CASE WHEN tc.constraint_type = 'PRIMARY KEY' THEN 1 ELSE 0 END AS is_primary_key,
9
9
  COALESCE(c.character_maximum_length, -1) AS character_length,
10
- c.numeric_precision AS precision,
10
+ CASE
11
+ WHEN c.data_type IN ('real', 'double precision', 'float4', 'float8') THEN -1
12
+ WHEN c.data_type IN ('smallint', 'integer', 'bigint') THEN 38
13
+ ELSE c.numeric_precision
14
+ END AS precision,
11
15
  c.numeric_scale AS scale,
12
16
  -1 AS calculated_column_size_in_bytes
13
17
  FROM information_schema.columns c
@@ -6,19 +6,19 @@ SELECT
6
6
  {% if use_column_groups %}
7
7
  {% for group in column_groups %}
8
8
  {% if not loop.first %} || {% endif %}
9
- UPPER(MD5(TRIM(
9
+ UPPER(MD5(TRIM(CONCAT(
10
10
  {% for col in group %}
11
11
  CAST("{{ col.name }}" AS TEXT)
12
- {% if not loop.last %} || {% endif %}
12
+ {% if not loop.last %}, {% endif %}
13
13
  {% endfor %}
14
- )))
14
+ ))))
15
15
  {% endfor %}
16
16
  {% else %}
17
- TRIM(
17
+ TRIM(CONCAT(
18
18
  {% for column in column_collection %}
19
19
  CAST("{{ column.name }}" AS TEXT)
20
- {% if not loop.last %} || {% endif %}
21
- {% endfor %})
20
+ {% if not loop.last %}, {% endif %}
21
+ {% endfor %}))
22
22
  {% endif %}
23
23
  )) AS ROW_MD5
24
24
  FROM
@@ -13,6 +13,9 @@ SELECT
13
13
  END AS CHARACTER_MAXIMUM_LENGTH,
14
14
  CASE
15
15
  WHEN c.data_type IN ('real', 'double precision', 'float4', 'float8') THEN -1
16
+ -- Integral Postgres types expose bit-width precision (e.g. BIGINT=64); mirror as
17
+ -- NUMBER(38,0) semantics so Snowflake schema comparison matches.
18
+ WHEN c.data_type IN ('smallint', 'integer', 'bigint') THEN 38
16
19
  ELSE c.numeric_precision
17
20
  END AS NUMERIC_PRECISION,
18
21
  c.numeric_scale AS NUMERIC_SCALE,
@@ -0,0 +1,23 @@
1
+ BOOLEAN: TO_CHAR("{{ col_name }}")
2
+ DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
3
+ # IEEE floats: ±0 coercion, CAST to NUMBER(38,12), FM TO_CHAR, leading "." fix, and exact-zero → "0.0000"
4
+ # (parity with Postgres row-hash text and bare "0" / ".0000" Snowflake quirks).
5
+ FLOAT: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
6
+ DOUBLE: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
7
+ DOUBLE PRECISION: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
8
+ FLOAT4: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
9
+ FLOAT8: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
10
+ REAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST(CASE WHEN ABS("{{ col_name }}") = 0 THEN 0 ELSE "{{ col_name }}" END AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
11
+ # Fixed-point NUMBER
12
+ NUMBER: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
13
+ DECIMAL: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
14
+ NUMERIC: CASE WHEN "{{ col_name }}" IS NULL THEN NULL WHEN CAST("{{ col_name }}" AS NUMBER(38, 12)) = 0 THEN '0.0000' ELSE TRIM(REGEXP_REPLACE(TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMBER(38, 12)), 'FM9999999999999999999999999999.0000')), '^\\.', '0.')) END
15
+ TIME: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
16
+ TIMESTAMP_LTZ: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
17
+ TIMESTAMP_NTZ: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
18
+ TIMESTAMP_TZ: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD-HH24:MI:SS')
19
+ VARCHAR: TRIM("{{ col_name }}")
20
+ GEOMETRY: TRIM(ST_ASWKT("{{ col_name }}"))
21
+ GEOGRAPHY: TRIM(ST_ASWKT("{{ col_name }}"))
22
+
23
+ DEFAULT: TO_VARCHAR("{{ col_name }}")
@@ -19,7 +19,7 @@ SELECT
19
19
  {% endfor %}
20
20
  ))) AS CHAR(32))
21
21
  {% endfor %}
22
- AS VARCHAR(64000))
22
+ AS VARCHAR(32000))
23
23
  {% elif column_collection|length > 1 %}
24
24
  CAST(TRIM(
25
25
  {% for column in column_collection %}
@@ -30,9 +30,9 @@ SELECT
30
30
  {% endif %}
31
31
  {% if not loop.last %} || {% endif %}
32
32
  {% endfor %}
33
- ) AS VARCHAR(64000))
33
+ ) AS VARCHAR(32000))
34
34
  {% else %}
35
- CAST(TRIM({{ column_names_separate_by_comma }}) AS VARCHAR(64000))
35
+ CAST(TRIM({{ column_names_separate_by_comma }}) AS VARCHAR(32000))
36
36
  {% endif %}
37
37
  FROM
38
38
  (SELECT
@@ -2,5 +2,5 @@ CREATE VOLATILE TABLE "ROW_CONCATENATED_{{ chunk_id }}_{{ table_id }}" (
2
2
  {% for index_column in index_column_collection %}
3
3
  "{{ index_column.name }}_IDX" {{ index_column.data_type }},
4
4
  {% endfor %}
5
- ROW_CONCAT_VALUES VARCHAR(64000)
5
+ ROW_CONCAT_VALUES VARCHAR(32000)
6
6
  ) ON COMMIT PRESERVE ROWS;
@@ -1,17 +1,17 @@
1
- ARRAY: CAST("{{ col_name }}" AS VARCHAR(64000))
1
+ ARRAY: CAST("{{ col_name }}" AS VARCHAR(32000))
2
2
  BIGINT: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
3
3
  BLOB: "{{ col_name }}"
4
- BYTE: TRIM(CAST("{{ col_name }}" AS VARCHAR(64000)))
4
+ BYTE: TRIM(CAST("{{ col_name }}" AS VARCHAR(32000)))
5
5
  BYTEINT: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
6
6
  CHAR: TRIM("{{ col_name }}")
7
7
  CLOB: TRIM("{{ col_name }}")
8
- DATASET: CAST("{{ col_name }}".toJSON() AS VARCHAR(64000))
8
+ DATASET: CAST("{{ col_name }}".toJSON() AS VARCHAR(32000))
9
9
  DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
10
10
  DECIMAL: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
11
11
  DEFAULT: TRIM(CAST("{{ col_name }}" AS VARCHAR(1000)))
12
12
  DOUBLE PRECISION: TRIM(TO_CHAR(CAST("{{ col_name }}" AS DECIMAL(28,4)), '99999999999990.0000'))
13
13
  FLOAT: TRIM(TO_CHAR(CAST("{{ col_name }}" AS DECIMAL(28,4)), '99999999999990.0000'))
14
- GRAPHIC: CAST("{{ col_name }}" AS VARCHAR(64000))
14
+ GRAPHIC: CAST("{{ col_name }}" AS VARCHAR(32000))
15
15
  INTEGER: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
16
16
  INTERVAL DAY: TRIM(CAST("{{ col_name }}" AS VARCHAR(5)))
17
17
  INTERVAL DAY TO HOUR: TRIM(CAST("{{ col_name }}" AS VARCHAR(10)))
@@ -43,7 +43,7 @@ TIME WITH TIME ZONE: TO_CHAR("{{ col_name }}" AT TIME ZONE 'GMT', 'HH24:MI:SS')
43
43
  TIMESTAMP: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
44
44
  TIMESTAMP WITH TIME ZONE: TO_CHAR("{{ col_name }}" AT TIME ZONE 'GMT', 'YYYY-MM-DD-HH24:MI:SS')
45
45
  VARARRAY: ARRAY_TO_STRING("{{ col_name }}", ', ')
46
- VARBYTE: TRIM(CAST("{{ col_name }}" AS VARCHAR(64000)))
46
+ VARBYTE: TRIM(CAST("{{ col_name }}" AS VARCHAR(32000)))
47
47
  VARCHAR: TRIM("{{ col_name }}")
48
48
  VARGRAPHIC: CAST("{{ col_name }}" AS CLOB)
49
49
  XML: CAST("{{ col_name }}" AS CLOB)
@@ -18,7 +18,7 @@ SELECT
18
18
  {% endfor %}
19
19
  ))) AS VARCHAR(32))
20
20
  {% endfor %}
21
- AS VARCHAR(64000))
21
+ AS VARCHAR(32000))
22
22
  {% elif column_collection|length > 1 %}
23
23
  CAST(TRIM(
24
24
  {% for column in column_collection %}
@@ -29,9 +29,9 @@ SELECT
29
29
  {% endif %}
30
30
  {% if not loop.last %} || {% endif %}
31
31
  {% endfor %}
32
- ) AS VARCHAR(64000))
32
+ ) AS VARCHAR(32000))
33
33
  {% else %}
34
- CAST(TRIM({{ column_names_separate_by_comma }}) AS VARCHAR(64000))
34
+ CAST(TRIM({{ column_names_separate_by_comma }}) AS VARCHAR(32000))
35
35
  {% endif %}
36
36
  ))) AS VARCHAR(32)) AS ROW_MD5
37
37
  FROM
@@ -217,3 +217,34 @@ def compute_unified_column_groups(
217
217
  return None
218
218
 
219
219
  return src_groups, tgt_groups
220
+
221
+
222
+ def compute_teradata_row_md5_column_groups(
223
+ source_columns: list[ColumnMetadata],
224
+ target_columns: list[ColumnMetadata],
225
+ ) -> tuple[list[list[ColumnMetadata]], list[list[ColumnMetadata]]] | None:
226
+ """Force one validated column per ``HASH_MD5`` segment on Teradata row-hash SQL.
227
+
228
+ Multi-column ``TRIM(a || b || ...)`` nested inside ``HASH_MD5`` can raise
229
+ Teradata **3798** (*column or character expression is larger than the max size*)
230
+ because the engine widens concatenation results before narrower ``CAST`` bounds
231
+ apply. Segmenting MD5 so each non-key column is hashed alone (then concatenating
232
+ fixed-length hex fragments) matches the stable semantics of grouped hashing while
233
+ avoiding that evaluation order.
234
+
235
+ Returns parallel ``(source_groups, target_groups)``, or ``None`` when no
236
+ segmentation applies (fewer than two validated columns).
237
+
238
+ Raises:
239
+ ValueError: If source/target column lists are not aligned.
240
+
241
+ """
242
+ if len(source_columns) <= 1:
243
+ return None
244
+ if len(source_columns) != len(target_columns):
245
+ raise ValueError(
246
+ "compute_teradata_row_md5_column_groups requires aligned column lists "
247
+ f"of equal length, got source={len(source_columns)} vs "
248
+ f"target={len(target_columns)}"
249
+ )
250
+ return ([[c] for c in source_columns], [[c] for c in target_columns])
@@ -266,8 +266,12 @@ TABLE_NOT_FOUND_ERROR_CODE_SQL_SERVER = "42S02"
266
266
  # columns into groups when the estimated concatenated string would exceed
267
267
  # the engine. See the documentation URL in the comment above each entry.
268
268
  MAX_CONCAT_LENGTH: dict[Platform, int] = {
269
- # VARCHAR(n) up to 64,000 characters (LATIN/UNICODE).
270
- Platform.TERADATA: 51_200,
269
+ # ~64K is roughly the largest VARCHAR(n) Teradata lets you declare; it is not how large every
270
+ # intermediate string expression may grow. Row MD5 concatenates many columns in one shot, and
271
+ # Teradata caps those intermediates/clients/smaller widths (often around 32K bytes in practice),
272
+ # which yields error 3798 long before inputs hit the 64K DDL ceiling. Generated row-hash SQL
273
+ # therefore uses VARCHAR(32000); this splitting budget mirrors that cast: floor(0.8 * 32000).
274
+ Platform.TERADATA: 25_600,
271
275
  # character varying(n): n may not exceed 10,485,760 characters.
272
276
  Platform.POSTGRESQL: 8_388_608,
273
277
  # VARCHAR width up to 65,535 bytes (64K − 1); limits are in bytes.
@@ -16,6 +16,7 @@
16
16
  import pytest
17
17
 
18
18
  from snowflake.snowflake_data_validation.utils.column_grouping import (
19
+ compute_teradata_row_md5_column_groups,
19
20
  compute_unified_column_groups,
20
21
  estimate_normalized_column_length,
21
22
  group_columns_for_md5,
@@ -206,3 +207,26 @@ class TestComputeUnifiedColumnGroups:
206
207
  tgt = [_col("a", "NUMBER"), _col("b", "NUMBER")]
207
208
  result = compute_unified_column_groups(src, tgt, max_concat_length=100_000)
208
209
  assert result is None
210
+
211
+
212
+ class TestComputeTeradataRowMd5ColumnGroups:
213
+ def test_one_column_returns_none(self) -> None:
214
+ src = [_col("x", "VARCHAR(10)")]
215
+ tgt = [_col("x", "VARCHAR(10)")]
216
+ assert compute_teradata_row_md5_column_groups(src, tgt) is None
217
+
218
+ def test_aligns_parallel_single_column_groups(self) -> None:
219
+ src = [_col("a", "INTEGER"), _col("b", "VARCHAR(5)")]
220
+ tgt = [_col("a", "NUMBER"), _col("b", "VARCHAR(5)")]
221
+ out = compute_teradata_row_md5_column_groups(src, tgt)
222
+ assert out is not None
223
+ src_g, tgt_g = out
224
+ assert src_g == [[src[0]], [src[1]]]
225
+ assert tgt_g == [[tgt[0]], [tgt[1]]]
226
+
227
+ def test_mismatched_lengths_raise(self) -> None:
228
+ with pytest.raises(ValueError, match="aligned column lists"):
229
+ compute_teradata_row_md5_column_groups(
230
+ [_col("a", "INT"), _col("b", "INT")],
231
+ [_col("a", "INT")],
232
+ )
@@ -1,73 +0,0 @@
1
- # PostgreSQL normalization expressions for row/cell validation (canonical text).
2
- # POINT maps to Snowflake GEOMETRY — emit OGC WKT (space-separated coords) to
3
- # align with ST_ASWKT on the Snowflake side. Native point uses subscripts;
4
- # PostGIS geometry/geography use ST_AsText when present.
5
- # CAST(... AS ...) is used instead of :: casts so YAML parses unambiguously.
6
- # BOOLEAN / BOOL: emit lowercase true/false to match Snowflake TO_CHAR(boolean).
7
- # Datatype keys below are sorted lexicographically.
8
-
9
- ARRAY: CAST("{{ col_name }}" AS TEXT)
10
- BIGINT: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
11
- BIGSERIAL: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
12
- BIT: TRIM(CAST("{{ col_name }}" AS TEXT))
13
- BIT VARYING: TRIM(CAST("{{ col_name }}" AS TEXT))
14
- BOOL: TRIM(CASE WHEN "{{ col_name }}" IS TRUE THEN 'true' WHEN "{{ col_name }}" IS FALSE THEN 'false' END)
15
- BOOLEAN: TRIM(CASE WHEN "{{ col_name }}" IS TRUE THEN 'true' WHEN "{{ col_name }}" IS FALSE THEN 'false' END)
16
- BOX: TRIM(CAST("{{ col_name }}" AS TEXT))
17
- BPCHAR: TRIM("{{ col_name }}")
18
- BYTEA: ENCODE("{{ col_name }}", 'hex')
19
- CHAR: TRIM("{{ col_name }}")
20
- CHARACTER: TRIM("{{ col_name }}")
21
- CHARACTER VARYING: TRIM("{{ col_name }}")
22
- CIDR: TRIM(CAST("{{ col_name }}" AS TEXT))
23
- CIRCLE: TRIM(CAST("{{ col_name }}" AS TEXT))
24
- DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
25
- DATERANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
26
- DECIMAL: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
27
- DEFAULT: TRIM(CAST("{{ col_name }}" AS TEXT))
28
- DOMAIN: TRIM(CAST("{{ col_name }}" AS TEXT))
29
- DOUBLE PRECISION: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(28,4)), '99999999999990.0000'))
30
- ENUM: TRIM(CAST("{{ col_name }}" AS TEXT))
31
- FLOAT: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(28,4)), '99999999999990.0000'))
32
- GEOGRAPHY: TRIM(ST_AsText("{{ col_name }}"))
33
- GEOMETRY: TRIM(ST_AsText("{{ col_name }}"))
34
- INET: TRIM(CAST("{{ col_name }}" AS TEXT))
35
- INT4RANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
36
- INT8RANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
37
- INTEGER: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
38
- INTERVAL: TRIM(CAST("{{ col_name }}" AS TEXT))
39
- JSON: CAST("{{ col_name }}" AS TEXT)
40
- JSONB: CAST("{{ col_name }}" AS TEXT)
41
- LINE: TRIM(CAST("{{ col_name }}" AS TEXT))
42
- LSEG: TRIM(CAST("{{ col_name }}" AS TEXT))
43
- MACADDR: TRIM(CAST("{{ col_name }}" AS TEXT))
44
- MACADDR8: TRIM(CAST("{{ col_name }}" AS TEXT))
45
- MONEY: TRIM(CAST(CAST("{{ col_name }}" AS NUMERIC) AS TEXT))
46
- NAME: TRIM("{{ col_name }}")
47
- NUMERIC: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
48
- NUMRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
49
- OID: TRIM(CAST("{{ col_name }}" AS TEXT)
50
- PATH: TRIM(CAST("{{ col_name }}" AS TEXT))
51
- POINT: TRIM(FORMAT('POINT(%s %s)', ("{{ col_name }}")[0], ("{{ col_name }}")[1]))
52
- POLYGON: TRIM(CAST("{{ col_name }}" AS TEXT))
53
- REAL: TRIM(TO_CHAR(CAST("{{ col_name }}" AS NUMERIC(28,4)), '99999999999990.0000'))
54
- SERIAL: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
55
- SMALLINT: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
56
- SMALLSERIAL: TRIM(TO_CHAR("{{ col_name }}", '99999999999990.0000'))
57
- TEXT: TRIM("{{ col_name }}")
58
- TIME: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
59
- TIME WITH TIME ZONE: TO_CHAR(CAST("{{ col_name }}" AT TIME ZONE 'UTC' AS time), 'HH24:MI:SS')
60
- TIME WITHOUT TIME ZONE: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
61
- TIMESTAMP: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
62
- TIMESTAMP WITH TIME ZONE: TO_CHAR("{{ col_name }}" AT TIME ZONE 'UTC', 'YYYY-MM-DD-HH24:MI:SS')
63
- TIMESTAMP WITHOUT TIME ZONE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
64
- TIMESTAMPTZ: TO_CHAR("{{ col_name }}" AT TIME ZONE 'UTC', 'YYYY-MM-DD-HH24:MI:SS')
65
- TIMETZ: TO_CHAR(CAST("{{ col_name }}" AT TIME ZONE 'UTC' AS time), 'HH24:MI:SS')
66
- TSQUERY: TRIM(CAST("{{ col_name }}" AS TEXT))
67
- TSRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
68
- TSTZRANGE: TRIM(CAST("{{ col_name }}" AS TEXT))
69
- TSVECTOR: TRIM(CAST("{{ col_name }}" AS TEXT))
70
- UUID: TRIM(CAST("{{ col_name }}" AS TEXT))
71
- VARBIT: TRIM(CAST("{{ col_name }}" AS TEXT))
72
- VARCHAR: TRIM("{{ col_name }}")
73
- XML: CAST("{{ col_name }}" AS TEXT)
@@ -1,13 +0,0 @@
1
- BOOLEAN: TO_CHAR("{{ col_name }}")
2
- DATE: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD')
3
- FLOAT: TO_CHAR("{{ col_name }}", 'FM9999999999999999999999999999.0000')
4
- NUMBER: TO_CHAR("{{ col_name }}", 'FM9999999999999999999999999999.0000')
5
- TIME: TO_CHAR("{{ col_name }}", 'HH24:MI:SS')
6
- TIMESTAMP_LTZ: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
7
- TIMESTAMP_NTZ: TO_CHAR("{{ col_name }}", 'YYYY-MM-DD-HH24:MI:SS')
8
- TIMESTAMP_TZ: TO_CHAR(CONVERT_TIMEZONE('UTC', "{{ col_name }}"), 'YYYY-MM-DD-HH24:MI:SS')
9
- VARCHAR: TRIM("{{ col_name }}")
10
- GEOMETRY: TRIM(ST_ASWKT("{{ col_name }}"))
11
- GEOGRAPHY: TRIM(ST_ASWKT("{{ col_name }}"))
12
-
13
- DEFAULT: TO_VARCHAR("{{ col_name }}")