deltacat 1.1.4__tar.gz → 1.1.5__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 (218) hide show
  1. {deltacat-1.1.4 → deltacat-1.1.5}/PKG-INFO +1 -1
  2. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/__init__.py +1 -1
  3. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/compaction_session.py +24 -5
  4. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/task_options.py +4 -0
  5. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compact_partition_rebase_then_incremental_test_cases.py +30 -0
  6. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compact_partition_test_cases.py +62 -1
  7. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_compact_partition_incremental.py +34 -9
  8. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_compact_partition_rebase_then_incremental.py +6 -1
  9. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_util_common.py +4 -4
  10. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_util_create_table_deltas_repo.py +18 -7
  11. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/daft.py +2 -0
  12. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat.egg-info/PKG-INFO +1 -1
  13. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat.egg-info/requires.txt +1 -1
  14. {deltacat-1.1.4 → deltacat-1.1.5}/setup.py +1 -1
  15. {deltacat-1.1.4 → deltacat-1.1.5}/MANIFEST.in +0 -0
  16. {deltacat-1.1.4 → deltacat-1.1.5}/README.md +0 -0
  17. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/__init__.py +0 -0
  18. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/clients.py +0 -0
  19. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/constants.py +0 -0
  20. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/redshift/__init__.py +0 -0
  21. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/redshift/model/__init__.py +0 -0
  22. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/redshift/model/manifest.py +0 -0
  23. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/aws/s3u.py +0 -0
  24. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/benchmarking/__init__.py +0 -0
  25. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/benchmarking/benchmark_parquet_reads.py +0 -0
  26. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/benchmarking/conftest.py +0 -0
  27. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/__init__.py +0 -0
  28. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/default_catalog_impl/__init__.py +0 -0
  29. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/delegate.py +0 -0
  30. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/interface.py +0 -0
  31. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/model/__init__.py +0 -0
  32. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/model/catalog.py +0 -0
  33. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/catalog/model/table_definition.py +0 -0
  34. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/__init__.py +0 -0
  35. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/__init__.py +0 -0
  36. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/compaction_session.py +0 -0
  37. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/__init__.py +0 -0
  38. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/compact_partition_params.py +0 -0
  39. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/compaction_session_audit_info.py +0 -0
  40. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/compactor_version.py +0 -0
  41. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/dedupe_result.py +0 -0
  42. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/delta_annotated.py +0 -0
  43. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/delta_file_envelope.py +0 -0
  44. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/delta_file_locator.py +0 -0
  45. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/hash_bucket_result.py +0 -0
  46. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/materialize_result.py +0 -0
  47. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/primary_key_index.py +0 -0
  48. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/pyarrow_write_result.py +0 -0
  49. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/repartition_result.py +0 -0
  50. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/round_completion_info.py +0 -0
  51. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/model/table_object_store.py +0 -0
  52. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/repartition_session.py +0 -0
  53. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/steps/__init__.py +0 -0
  54. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/steps/dedupe.py +0 -0
  55. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/steps/hash_bucket.py +0 -0
  56. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/steps/materialize.py +0 -0
  57. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/steps/repartition.py +0 -0
  58. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/__init__.py +0 -0
  59. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/io.py +0 -0
  60. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/primary_key_index.py +0 -0
  61. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/round_completion_file.py +0 -0
  62. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/sort_key.py +0 -0
  63. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor/utils/system_columns.py +0 -0
  64. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/__init__.py +0 -0
  65. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/constants.py +0 -0
  66. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/__init__.py +0 -0
  67. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/delete_file_envelope.py +0 -0
  68. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/delete_strategy.py +0 -0
  69. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/delete_strategy_equality_delete.py +0 -0
  70. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/model.py +0 -0
  71. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/deletes/utils.py +0 -0
  72. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/__init__.py +0 -0
  73. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/hash_bucket_input.py +0 -0
  74. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/hash_bucket_result.py +0 -0
  75. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/merge_file_group.py +0 -0
  76. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/merge_input.py +0 -0
  77. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/model/merge_result.py +0 -0
  78. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/steps/__init__.py +0 -0
  79. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/steps/hash_bucket.py +0 -0
  80. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/steps/merge.py +0 -0
  81. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/__init__.py +0 -0
  82. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/content_type_params.py +0 -0
  83. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/dedupe.py +0 -0
  84. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/delta.py +0 -0
  85. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/io.py +0 -0
  86. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/merge.py +0 -0
  87. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/compactor_v2/utils/primary_key_index.py +0 -0
  88. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/__init__.py +0 -0
  89. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/daft.py +0 -0
  90. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/model/__init__.py +0 -0
  91. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/model/merge_on_read_params.py +0 -0
  92. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/utils/__init__.py +0 -0
  93. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/merge_on_read/utils/delta.py +0 -0
  94. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/__init__.py +0 -0
  95. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/config/__init__.py +0 -0
  96. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/meta_stats.py +0 -0
  97. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/model/__init__.py +0 -0
  98. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/model/partition_stats_dict.py +0 -0
  99. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/model/stats_cluster_size_estimator.py +0 -0
  100. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/stats.py +0 -0
  101. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/utils/__init__.py +0 -0
  102. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/utils/constants.py +0 -0
  103. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/utils/io.py +0 -0
  104. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/utils/pyarrow_memory_estimation_function.py +0 -0
  105. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/metastats/utils/ray_utils.py +0 -0
  106. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/__init__.py +0 -0
  107. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/basic.py +0 -0
  108. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/__init__.py +0 -0
  109. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/delta_column_stats.py +0 -0
  110. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/delta_stats.py +0 -0
  111. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/delta_stats_cache_result.py +0 -0
  112. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/manifest_entry_stats.py +0 -0
  113. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/models/stats_result.py +0 -0
  114. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/types.py +0 -0
  115. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/utils/__init__.py +0 -0
  116. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/utils/intervals.py +0 -0
  117. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/utils/io.py +0 -0
  118. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/compute/stats/utils/manifest_stats_file.py +0 -0
  119. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/constants.py +0 -0
  120. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/exceptions.py +0 -0
  121. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/__init__.py +0 -0
  122. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/aws/__init__.py +0 -0
  123. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/aws/redshift/__init__.py +0 -0
  124. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/aws/redshift/redshift_datasource.py +0 -0
  125. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/dataset.py +0 -0
  126. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/file_object_store.py +0 -0
  127. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/memcached_object_store.py +0 -0
  128. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/object_store.py +0 -0
  129. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/ray_plasma_object_store.py +0 -0
  130. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/read_api.py +0 -0
  131. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/redis_object_store.py +0 -0
  132. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/io/s3_object_store.py +0 -0
  133. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/logs.py +0 -0
  134. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/__init__.py +0 -0
  135. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/interface.py +0 -0
  136. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/__init__.py +0 -0
  137. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/delete_parameters.py +0 -0
  138. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/delta.py +0 -0
  139. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/list_result.py +0 -0
  140. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/locator.py +0 -0
  141. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/namespace.py +0 -0
  142. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/partition.py +0 -0
  143. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/sort_key.py +0 -0
  144. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/stream.py +0 -0
  145. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/table.py +0 -0
  146. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/table_version.py +0 -0
  147. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/storage/model/types.py +0 -0
  148. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/__init__.py +0 -0
  149. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/aws/__init__.py +0 -0
  150. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/aws/test_clients.py +0 -0
  151. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/aws/test_s3u.py +0 -0
  152. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/catalog/__init__.py +0 -0
  153. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/catalog/test_default_catalog_impl.py +0 -0
  154. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/__init__.py +0 -0
  155. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor/__init__.py +0 -0
  156. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor/steps/__init__.py +0 -0
  157. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor/steps/test_repartition.py +0 -0
  158. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor/utils/__init__.py +0 -0
  159. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor/utils/test_io.py +0 -0
  160. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor_v2/__init__.py +0 -0
  161. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor_v2/test_compaction_session.py +0 -0
  162. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor_v2/test_hashlib.py +0 -0
  163. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor_v2/utils/__init__.py +0 -0
  164. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/compactor_v2/utils/test_task_options.py +0 -0
  165. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_compact_partition_params.py +0 -0
  166. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/compute/test_util_constant.py +0 -0
  167. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/__init__.py +0 -0
  168. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_cloudpickle_bug_fix.py +0 -0
  169. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_file_object_store.py +0 -0
  170. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_memcached_object_store.py +0 -0
  171. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_ray_plasma_object_store.py +0 -0
  172. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_redis_object_store.py +0 -0
  173. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/io/test_s3_object_store.py +0 -0
  174. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/local_deltacat_storage/__init__.py +0 -0
  175. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/stats/__init__.py +0 -0
  176. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/stats/test_intervals.py +0 -0
  177. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_logs.py +0 -0
  178. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_utils/__init__.py +0 -0
  179. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_utils/constants.py +0 -0
  180. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_utils/pyarrow.py +0 -0
  181. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_utils/storage.py +0 -0
  182. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/test_utils/utils.py +0 -0
  183. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/__init__.py +0 -0
  184. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/data/__init__.py +0 -0
  185. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_cloudpickle.py +0 -0
  186. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_daft.py +0 -0
  187. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_metrics.py +0 -0
  188. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_placement.py +0 -0
  189. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_pyarrow.py +0 -0
  190. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_record_batch_tables.py +0 -0
  191. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/tests/utils/test_resources.py +0 -0
  192. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/types/__init__.py +0 -0
  193. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/types/media.py +0 -0
  194. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/types/partial_download.py +0 -0
  195. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/types/tables.py +0 -0
  196. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/__init__.py +0 -0
  197. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/arguments.py +0 -0
  198. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/cloudpickle.py +0 -0
  199. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/common.py +0 -0
  200. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/metrics.py +0 -0
  201. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/numpy.py +0 -0
  202. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/pandas.py +0 -0
  203. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/performance.py +0 -0
  204. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/placement.py +0 -0
  205. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/pyarrow.py +0 -0
  206. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/__init__.py +0 -0
  207. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/collections.py +0 -0
  208. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/concurrency.py +0 -0
  209. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/dataset.py +0 -0
  210. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/performance.py +0 -0
  211. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/ray_utils/runtime.py +0 -0
  212. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/resources.py +0 -0
  213. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/s3fs.py +0 -0
  214. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat/utils/schema.py +0 -0
  215. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat.egg-info/SOURCES.txt +0 -0
  216. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat.egg-info/dependency_links.txt +0 -0
  217. {deltacat-1.1.4 → deltacat-1.1.5}/deltacat.egg-info/top_level.txt +0 -0
  218. {deltacat-1.1.4 → deltacat-1.1.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deltacat
3
- Version: 1.1.4
3
+ Version: 1.1.5
4
4
  Summary: A scalable, fast, ACID-compliant Data Catalog powered by Ray.
5
5
  Home-page: https://github.com/ray-project/deltacat
6
6
  Author: Ray Team
@@ -44,7 +44,7 @@ from deltacat.types.tables import TableWriteMode
44
44
 
45
45
  deltacat.logs.configure_deltacat_logger(logging.getLogger(__name__))
46
46
 
47
- __version__ = "1.1.4"
47
+ __version__ = "1.1.5"
48
48
 
49
49
 
50
50
  __all__ = [
@@ -17,7 +17,11 @@ from deltacat.compute.compactor_v2.model.merge_input import MergeInput
17
17
  from deltacat.aws import s3u as s3_utils
18
18
  import deltacat
19
19
  from deltacat import logs
20
- from deltacat.compute.compactor import PyArrowWriteResult, RoundCompletionInfo
20
+ from deltacat.compute.compactor import (
21
+ HighWatermark,
22
+ PyArrowWriteResult,
23
+ RoundCompletionInfo,
24
+ )
21
25
  from deltacat.compute.compactor_v2.model.merge_result import MergeResult
22
26
  from deltacat.compute.compactor_v2.model.hash_bucket_result import HashBucketResult
23
27
  from deltacat.compute.compactor.model.materialize_result import MaterializeResult
@@ -37,6 +41,7 @@ from deltacat.compute.compactor_v2.deletes.utils import prepare_deletes
37
41
  from deltacat.storage import (
38
42
  Delta,
39
43
  DeltaLocator,
44
+ Manifest,
40
45
  Partition,
41
46
  )
42
47
  from deltacat.compute.compactor.model.compact_partition_params import (
@@ -96,7 +101,7 @@ def compact_partition(params: CompactPartitionParams, **kwargs) -> Optional[str]
96
101
  round_completion_file_s3_url = None
97
102
  if new_partition:
98
103
  logger.info(f"Committing compacted partition to: {new_partition.locator}")
99
- partition = params.deltacat_storage.commit_partition(
104
+ partition: Partition = params.deltacat_storage.commit_partition(
100
105
  new_partition, **params.deltacat_storage_kwargs
101
106
  )
102
107
  logger.info(f"Committed compacted partition: {partition}")
@@ -150,9 +155,9 @@ def _execute_compaction(
150
155
  compaction_audit.set_total_cluster_memory_bytes(cluster_memory)
151
156
 
152
157
  # read the results from any previously completed compaction round
153
- round_completion_info = None
154
- high_watermark = None
155
- previous_compacted_delta_manifest = None
158
+ round_completion_info: Optional[RoundCompletionInfo] = None
159
+ high_watermark: Optional[HighWatermark] = None
160
+ previous_compacted_delta_manifest: Optional[Manifest] = None
156
161
 
157
162
  if not params.rebase_source_partition_locator:
158
163
  round_completion_info = rcf.read_round_completion_file(
@@ -271,6 +276,7 @@ def _execute_compaction(
271
276
  total_hb_record_count = np.int64(0)
272
277
  telemetry_time_hb = 0
273
278
  if params.hash_bucket_count == 1:
279
+ logger.info("Hash bucket count set to 1. Running local merge")
274
280
  merge_start = time.monotonic()
275
281
  local_merge_input = generate_local_merge_input(
276
282
  params,
@@ -634,6 +640,19 @@ def _execute_compaction(
634
640
  f"partition-{params.source_partition_locator.partition_values},"
635
641
  f"compacted at: {params.last_stream_position_to_compact},"
636
642
  )
643
+ is_inplace_compacted: bool = (
644
+ params.source_partition_locator.partition_values
645
+ == params.destination_partition_locator.partition_values
646
+ and params.source_partition_locator.stream_id
647
+ == params.destination_partition_locator.stream_id
648
+ )
649
+ if is_inplace_compacted:
650
+ logger.info(
651
+ "Overriding round completion file source partition locator as in-place compacted. "
652
+ + f"Got compacted partition partition_id of {compacted_partition.locator.partition_id} "
653
+ f"and rcf source partition_id of {rcf_source_partition_locator.partition_id}."
654
+ )
655
+ rcf_source_partition_locator = compacted_partition.locator
637
656
  return (
638
657
  compacted_partition,
639
658
  new_round_completion_info,
@@ -21,6 +21,9 @@ from deltacat.compute.compactor_v2.constants import (
21
21
  PARQUET_TO_PYARROW_INFLATION,
22
22
  )
23
23
 
24
+ from daft.exceptions import DaftTransientError
25
+
26
+
24
27
  logger = logs.configure_deltacat_logger(logging.getLogger(__name__))
25
28
 
26
29
 
@@ -76,6 +79,7 @@ def get_task_options(
76
79
  botocore.exceptions.HTTPClientError,
77
80
  ConnectionError,
78
81
  TimeoutError,
82
+ DaftTransientError,
79
83
  ]
80
84
 
81
85
  return task_opts
@@ -107,6 +107,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
107
107
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
108
108
  ),
109
109
  expected_terminal_exception=None,
110
+ expected_terminal_exception_message=None,
110
111
  do_create_placement_group=False,
111
112
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
112
113
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -186,6 +187,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
186
187
  names=["pk_col_1", "pk_col_2", "sk_col_1", "col_1"],
187
188
  ),
188
189
  expected_terminal_exception=None,
190
+ expected_terminal_exception_message=None,
189
191
  do_create_placement_group=False,
190
192
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
191
193
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -234,6 +236,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
234
236
  names=["pk_col_1", "col_1"],
235
237
  ),
236
238
  expected_terminal_exception=None,
239
+ expected_terminal_exception_message=None,
237
240
  do_create_placement_group=False,
238
241
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
239
242
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -282,6 +285,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
282
285
  names=["pk_col_1", "col_1"],
283
286
  ),
284
287
  expected_terminal_exception=None,
288
+ expected_terminal_exception_message=None,
285
289
  do_create_placement_group=False,
286
290
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
287
291
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -336,6 +340,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
336
340
  names=["pk_col_1", "sk_col_1", "col_1"],
337
341
  ),
338
342
  expected_terminal_exception=None,
343
+ expected_terminal_exception_message=None,
339
344
  do_create_placement_group=False,
340
345
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
341
346
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -395,6 +400,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
395
400
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
396
401
  ),
397
402
  expected_terminal_exception=None,
403
+ expected_terminal_exception_message=None,
398
404
  do_create_placement_group=False,
399
405
  records_per_compacted_file=10,
400
406
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT + 10,
@@ -445,6 +451,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
445
451
  names=["sk_col_1", "col_1"],
446
452
  ),
447
453
  expected_terminal_exception=None,
454
+ expected_terminal_exception_message=None,
448
455
  do_create_placement_group=False,
449
456
  records_per_compacted_file=10,
450
457
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -500,6 +507,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
500
507
  names=["pk_col_1", "col_1"],
501
508
  ),
502
509
  expected_terminal_exception=None,
510
+ expected_terminal_exception_message=None,
503
511
  do_create_placement_group=False,
504
512
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
505
513
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -559,6 +567,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
559
567
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
560
568
  ),
561
569
  expected_terminal_exception=None,
570
+ expected_terminal_exception_message=None,
562
571
  do_create_placement_group=False,
563
572
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
564
573
  hash_bucket_count=1,
@@ -613,6 +622,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
613
622
  names=["pk_col_1", "sk_col_1", "col_1"],
614
623
  ),
615
624
  expected_terminal_exception=None,
625
+ expected_terminal_exception_message=None,
616
626
  do_create_placement_group=False,
617
627
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
618
628
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -658,6 +668,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
658
668
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
659
669
  ),
660
670
  expected_terminal_exception=None,
671
+ expected_terminal_exception_message=None,
661
672
  do_create_placement_group=False,
662
673
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
663
674
  hash_bucket_count=3,
@@ -717,6 +728,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
717
728
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
718
729
  ),
719
730
  expected_terminal_exception=None,
731
+ expected_terminal_exception_message=None,
720
732
  do_create_placement_group=False,
721
733
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
722
734
  hash_bucket_count=1,
@@ -762,6 +774,7 @@ REBASE_THEN_INCREMENTAL_TEST_CASES = {
762
774
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
763
775
  ),
764
776
  expected_terminal_exception=None,
777
+ expected_terminal_exception_message=None,
765
778
  do_create_placement_group=False,
766
779
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
767
780
  hash_bucket_count=1,
@@ -861,6 +874,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
861
874
  names=["pk_col_1", "col_1"],
862
875
  ),
863
876
  expected_terminal_exception=None,
877
+ expected_terminal_exception_message=None,
864
878
  do_create_placement_group=False,
865
879
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
866
880
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -911,6 +925,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
911
925
  names=["pk_col_1", "pk_col_2", "col_1"],
912
926
  ),
913
927
  expected_terminal_exception=None,
928
+ expected_terminal_exception_message=None,
914
929
  do_create_placement_group=False,
915
930
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
916
931
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -967,6 +982,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
967
982
  ),
968
983
  ),
969
984
  expected_terminal_exception=None,
985
+ expected_terminal_exception_message=None,
970
986
  do_create_placement_group=False,
971
987
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
972
988
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1019,6 +1035,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1019
1035
  ),
1020
1036
  ),
1021
1037
  expected_terminal_exception=None,
1038
+ expected_terminal_exception_message=None,
1022
1039
  do_create_placement_group=True,
1023
1040
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1024
1041
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1099,6 +1116,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1099
1116
  names=["pk_col_1", "col_1"],
1100
1117
  ),
1101
1118
  expected_terminal_exception=None,
1119
+ expected_terminal_exception_message=None,
1102
1120
  do_create_placement_group=True,
1103
1121
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1104
1122
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1168,6 +1186,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1168
1186
  names=["pk_col_1", "col_1"],
1169
1187
  ),
1170
1188
  expected_terminal_exception=None,
1189
+ expected_terminal_exception_message=None,
1171
1190
  do_create_placement_group=True,
1172
1191
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1173
1192
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1231,6 +1250,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1231
1250
  ),
1232
1251
  ),
1233
1252
  expected_terminal_exception=None,
1253
+ expected_terminal_exception_message=None,
1234
1254
  do_create_placement_group=True,
1235
1255
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1236
1256
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1321,6 +1341,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1321
1341
  names=["pk_col_1", "col_1"],
1322
1342
  ),
1323
1343
  expected_terminal_exception=None,
1344
+ expected_terminal_exception_message=None,
1324
1345
  do_create_placement_group=True,
1325
1346
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1326
1347
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1384,6 +1405,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1384
1405
  ),
1385
1406
  ),
1386
1407
  expected_terminal_exception=None,
1408
+ expected_terminal_exception_message=None,
1387
1409
  do_create_placement_group=True,
1388
1410
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1389
1411
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1453,6 +1475,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1453
1475
  names=["pk_col_1", "col_1"],
1454
1476
  ),
1455
1477
  expected_terminal_exception=None,
1478
+ expected_terminal_exception_message=None,
1456
1479
  do_create_placement_group=True,
1457
1480
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1458
1481
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1516,6 +1539,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1516
1539
  ),
1517
1540
  ),
1518
1541
  expected_terminal_exception=AssertionError,
1542
+ expected_terminal_exception_message="Delete type deltas are required to have delete parameters defined",
1519
1543
  do_create_placement_group=True,
1520
1544
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1521
1545
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1580,6 +1604,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1580
1604
  names=["pk_col_1", "col_1"],
1581
1605
  ),
1582
1606
  expected_terminal_exception=None,
1607
+ expected_terminal_exception_message=None,
1583
1608
  do_create_placement_group=True,
1584
1609
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1585
1610
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1638,6 +1663,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1638
1663
  names=["pk_col_1", "col_1"],
1639
1664
  ),
1640
1665
  expected_terminal_exception=None,
1666
+ expected_terminal_exception_message=None,
1641
1667
  do_create_placement_group=True,
1642
1668
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1643
1669
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1706,6 +1732,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1706
1732
  names=["pk_col_1", "col_1"],
1707
1733
  ),
1708
1734
  expected_terminal_exception=None,
1735
+ expected_terminal_exception_message=None,
1709
1736
  do_create_placement_group=True,
1710
1737
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1711
1738
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1795,6 +1822,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1795
1822
  names=["pk_col_1", "sk_col_1", "sk_col_2", "col_1"],
1796
1823
  ),
1797
1824
  expected_terminal_exception=None,
1825
+ expected_terminal_exception_message=None,
1798
1826
  do_create_placement_group=False,
1799
1827
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1800
1828
  hash_bucket_count=1,
@@ -1865,6 +1893,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1865
1893
  names=["sk_col_1", "col_1"],
1866
1894
  ),
1867
1895
  expected_terminal_exception=None,
1896
+ expected_terminal_exception_message=None,
1868
1897
  do_create_placement_group=False,
1869
1898
  records_per_compacted_file=10,
1870
1899
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -1913,6 +1942,7 @@ REBASE_THEN_INCREMENTAL_DELETE_DELTA_TYPE_TEST_CASES = {
1913
1942
  names=["pk_col_1", "col_1"],
1914
1943
  ),
1915
1944
  expected_terminal_exception=None,
1945
+ expected_terminal_exception_message=None,
1916
1946
  do_create_placement_group=False,
1917
1947
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
1918
1948
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
@@ -54,6 +54,7 @@ class BaseCompactorTestCase:
54
54
  input_deltas_delta_type: DeltaType - enumerated argument required for delta creation during compact_partition test setup. Available values are (DeltaType.APPEND, DeltaType.UPSERT, DeltaType.DELETE). DeltaType.APPEND is not supported by compactor v1 or v2
55
55
  expected_terminal_compact_partition_result: pa.Table - expected PyArrow table after compaction (i.e,. the state of the table after applying all row UPDATES/DELETES/INSERTS)
56
56
  expected_terminal_exception: BaseException - expected exception during compaction
57
+ expected_terminal_exception_message: Optional[str] - expected exception message if present.
57
58
  do_create_placement_group: bool - toggles whether to create a placement group (https://docs.ray.io/en/latest/ray-core/scheduling/placement-group.html) or not
58
59
  records_per_compacted_file: int - argument for the records_per_compacted_file parameter in compact_partition
59
60
  hash_bucket_count_param: int - argument for the hash_bucket_count parameter in compact_partition
@@ -70,6 +71,7 @@ class BaseCompactorTestCase:
70
71
  input_deltas_delta_type: DeltaType
71
72
  expected_terminal_compact_partition_result: pa.Table
72
73
  expected_terminal_exception: BaseException
74
+ expected_terminal_exception_message: str
73
75
  do_create_placement_group: bool
74
76
  records_per_compacted_file: int
75
77
  hash_bucket_count: int
@@ -84,7 +86,12 @@ class BaseCompactorTestCase:
84
86
 
85
87
  @dataclass(frozen=True)
86
88
  class IncrementalCompactionTestCaseParams(BaseCompactorTestCase):
87
- pass
89
+ """
90
+ Args:
91
+ is_inplace: bool - argument to indicate whether to try compacting an in-place compacted table (the source table is the destination table). Also needed to control whether the destination table is created
92
+ """
93
+
94
+ is_inplace: bool
88
95
 
89
96
 
90
97
  @dataclass(frozen=True)
@@ -134,11 +141,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
134
141
  names=["pk_col_1"],
135
142
  ),
136
143
  expected_terminal_exception=None,
144
+ expected_terminal_exception_message=None,
137
145
  do_create_placement_group=False,
138
146
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
139
147
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
140
148
  read_kwargs_provider=None,
141
149
  drop_duplicates=True,
150
+ is_inplace=False,
142
151
  skip_enabled_compact_partition_drivers=None,
143
152
  ),
144
153
  "2-incremental-pkstr-skstr-norcf": IncrementalCompactionTestCaseParams(
@@ -159,11 +168,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
159
168
  names=["pk_col_1", "sk_col_1"],
160
169
  ),
161
170
  expected_terminal_exception=None,
171
+ expected_terminal_exception_message=None,
162
172
  do_create_placement_group=False,
163
173
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
164
174
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
165
175
  read_kwargs_provider=None,
166
176
  drop_duplicates=True,
177
+ is_inplace=False,
167
178
  skip_enabled_compact_partition_drivers=None,
168
179
  ),
169
180
  "3-incremental-pkstr-multiskstr-norcf": IncrementalCompactionTestCaseParams(
@@ -193,11 +204,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
193
204
  names=["pk_col_1", "sk_col_1", "sk_col_2"],
194
205
  ),
195
206
  expected_terminal_exception=None,
207
+ expected_terminal_exception_message=None,
196
208
  do_create_placement_group=False,
197
209
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
198
210
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
199
211
  read_kwargs_provider=None,
200
212
  drop_duplicates=True,
213
+ is_inplace=False,
201
214
  skip_enabled_compact_partition_drivers=None,
202
215
  ),
203
216
  "4-incremental-duplicate-pk": IncrementalCompactionTestCaseParams(
@@ -226,11 +239,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
226
239
  names=["pk_col_1", "sk_col_1", "sk_col_2"],
227
240
  ),
228
241
  expected_terminal_exception=None,
242
+ expected_terminal_exception_message=None,
229
243
  do_create_placement_group=False,
230
244
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
231
245
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
232
246
  read_kwargs_provider=None,
233
247
  drop_duplicates=True,
248
+ is_inplace=False,
234
249
  skip_enabled_compact_partition_drivers=None,
235
250
  ),
236
251
  "5-incremental-decimal-pk-simple": IncrementalCompactionTestCaseParams(
@@ -254,11 +269,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
254
269
  names=["pk_col_1", "sk_col_1"],
255
270
  ),
256
271
  expected_terminal_exception=None,
272
+ expected_terminal_exception_message=None,
257
273
  do_create_placement_group=False,
258
274
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
259
275
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
260
276
  read_kwargs_provider=None,
261
277
  drop_duplicates=True,
278
+ is_inplace=False,
262
279
  skip_enabled_compact_partition_drivers=None,
263
280
  ),
264
281
  "6-incremental-integer-pk-simple": IncrementalCompactionTestCaseParams(
@@ -282,11 +299,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
282
299
  names=["pk_col_1", "sk_col_1"],
283
300
  ),
284
301
  expected_terminal_exception=None,
302
+ expected_terminal_exception_message=None,
285
303
  do_create_placement_group=False,
286
304
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
287
305
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
288
306
  read_kwargs_provider=None,
289
307
  drop_duplicates=True,
308
+ is_inplace=False,
290
309
  skip_enabled_compact_partition_drivers=None,
291
310
  ),
292
311
  "7-incremental-timestamp-pk-simple": IncrementalCompactionTestCaseParams(
@@ -310,11 +329,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
310
329
  names=["pk_col_1", "sk_col_1"],
311
330
  ),
312
331
  expected_terminal_exception=None,
332
+ expected_terminal_exception_message=None,
313
333
  do_create_placement_group=False,
314
334
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
315
335
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
316
336
  read_kwargs_provider=None,
317
337
  drop_duplicates=True,
338
+ is_inplace=False,
318
339
  skip_enabled_compact_partition_drivers=None,
319
340
  ),
320
341
  "8-incremental-decimal-timestamp-pk-multi": IncrementalCompactionTestCaseParams(
@@ -340,11 +361,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
340
361
  names=["pk_col_1", "pk_col_2", "sk_col_1"],
341
362
  ),
342
363
  expected_terminal_exception=None,
364
+ expected_terminal_exception_message=None,
343
365
  do_create_placement_group=False,
344
366
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
345
367
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
346
368
  read_kwargs_provider=None,
347
369
  drop_duplicates=True,
370
+ is_inplace=False,
348
371
  skip_enabled_compact_partition_drivers=None,
349
372
  ),
350
373
  "9-incremental-decimal-pk-multi-dup": IncrementalCompactionTestCaseParams(
@@ -368,11 +391,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
368
391
  names=["pk_col_1", "sk_col_1"],
369
392
  ),
370
393
  expected_terminal_exception=None,
394
+ expected_terminal_exception_message=None,
371
395
  do_create_placement_group=False,
372
396
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
373
397
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
374
398
  read_kwargs_provider=None,
375
399
  drop_duplicates=True,
400
+ is_inplace=False,
376
401
  skip_enabled_compact_partition_drivers=None,
377
402
  ),
378
403
  "10-incremental-decimal-pk-partitionless": IncrementalCompactionTestCaseParams(
@@ -396,11 +421,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
396
421
  names=["pk_col_1", "sk_col_1"],
397
422
  ),
398
423
  expected_terminal_exception=None,
424
+ expected_terminal_exception_message=None,
399
425
  do_create_placement_group=False,
400
426
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
401
427
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
402
428
  read_kwargs_provider=None,
403
429
  drop_duplicates=True,
430
+ is_inplace=False,
404
431
  skip_enabled_compact_partition_drivers=None,
405
432
  ),
406
433
  "11-incremental-decimal-hash-bucket-single": IncrementalCompactionTestCaseParams(
@@ -424,11 +451,13 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
424
451
  names=["pk_col_1", "sk_col_1"],
425
452
  ),
426
453
  expected_terminal_exception=None,
454
+ expected_terminal_exception_message=None,
427
455
  do_create_placement_group=False,
428
456
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
429
457
  hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
430
458
  read_kwargs_provider=None,
431
459
  drop_duplicates=True,
460
+ is_inplace=False,
432
461
  skip_enabled_compact_partition_drivers=None,
433
462
  ),
434
463
  "12-incremental-decimal-single-hash-bucket": IncrementalCompactionTestCaseParams(
@@ -452,13 +481,45 @@ INCREMENTAL_TEST_CASES: Dict[str, IncrementalCompactionTestCaseParams] = {
452
481
  names=["pk_col_1", "sk_col_1"],
453
482
  ),
454
483
  expected_terminal_exception=None,
484
+ expected_terminal_exception_message=None,
455
485
  do_create_placement_group=False,
456
486
  records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
457
487
  hash_bucket_count=1,
458
488
  read_kwargs_provider=None,
459
489
  drop_duplicates=True,
490
+ is_inplace=False,
460
491
  skip_enabled_compact_partition_drivers=None,
461
492
  ),
493
+ "13-incremental-pkstr-skexists-isinplacecompacted": IncrementalCompactionTestCaseParams(
494
+ primary_keys={"pk_col_1"},
495
+ sort_keys=[SortKey.of(key_name="sk_col_1")],
496
+ partition_keys=[PartitionKey.of("region_id", PartitionKeyType.INT)],
497
+ partition_values=["1"],
498
+ input_deltas=pa.Table.from_arrays(
499
+ [
500
+ pa.array([str(i) for i in range(10)]),
501
+ pa.array([i for i in range(10)]),
502
+ ],
503
+ names=["pk_col_1", "sk_col_1"],
504
+ ),
505
+ input_deltas_delta_type=DeltaType.UPSERT,
506
+ expected_terminal_compact_partition_result=pa.Table.from_arrays(
507
+ [
508
+ pa.array([str(i) for i in range(10)]),
509
+ pa.array([i for i in range(10)]),
510
+ ],
511
+ names=["pk_col_1", "sk_col_1"],
512
+ ),
513
+ expected_terminal_exception=None,
514
+ expected_terminal_exception_message=None,
515
+ do_create_placement_group=False,
516
+ records_per_compacted_file=DEFAULT_MAX_RECORDS_PER_FILE,
517
+ hash_bucket_count=DEFAULT_HASH_BUCKET_COUNT,
518
+ read_kwargs_provider=None,
519
+ drop_duplicates=True,
520
+ is_inplace=True,
521
+ skip_enabled_compact_partition_drivers=[CompactorVersion.V1],
522
+ ),
462
523
  }
463
524
 
464
525
  INCREMENTAL_TEST_CASES = with_compactor_version_func_test_param(INCREMENTAL_TEST_CASES)