Commit 6f66c4c
feat(phase-5b): Dynamic Partition Pruning support for Delta
Delta scans with DPP now go through Comet's native path instead of
falling back to vanilla Spark.
Changes:
1. CometScanRule: moved Delta detection BEFORE the DPP fallback check
so DPP-bearing Delta scans reach nativeDeltaScan instead of bailing
out. Non-Delta scans still fall back for DPP as before.
2. prunePartitions: filters out DynamicPruningExpression (wrapping
InSubqueryExec) before building the InterpretedPredicate. These
expressions aren't resolved at planning time; Spark applies them
post-scan at runtime. Static partition filters are still evaluated
for file-level pruning at planning time.
3. New test: "dynamic partition pruning through join" - star-schema
join (fact partitioned by region + small dim table) that exercises
DPP. Verifies CometDeltaNativeScanExec appears in the plan and
results match vanilla row-for-row.
Results: Tests: succeeded 35, failed 0, canceled 0, ignored 0, pending 0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent 2d2c99f commit 6f66c4c
3 files changed
Lines changed: 77 additions & 10 deletions
File tree
- spark/src
- main/scala/org/apache/comet
- rules
- serde/operator
- test/scala/org/apache/comet
Lines changed: 10 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
253 | | - | |
254 | 249 | | |
255 | 250 | | |
256 | | - | |
257 | | - | |
258 | | - | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
259 | 255 | | |
260 | 256 | | |
261 | 257 | | |
262 | 258 | | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
263 | 265 | | |
264 | 266 | | |
265 | 267 | | |
| |||
Lines changed: 10 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
320 | 320 | | |
321 | 321 | | |
322 | 322 | | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
323 | 331 | | |
324 | 332 | | |
325 | 333 | | |
326 | 334 | | |
327 | | - | |
328 | | - | |
| 335 | + | |
| 336 | + | |
329 | 337 | | |
330 | 338 | | |
331 | 339 | | |
| |||
Lines changed: 57 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1137 | 1137 | | |
1138 | 1138 | | |
1139 | 1139 | | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
1140 | 1197 | | |
1141 | 1198 | | |
1142 | 1199 | | |
| |||
0 commit comments