Commit c1ea1b5
authored
feat: implement Oracle-compatible ROWNUM pseudocolumn
Add ROWNUM pseudocolumn with Oracle-compatible semantics:
- ROWNUM <= N optimized to LIMIT for simple queries
- Blocks LIMIT optimization for complex queries (ORDER BY, DISTINCT,
GROUP BY, aggregation) to preserve Oracle semantics
- Handles special Oracle edge cases: ROWNUM > N, ROWNUM >= N, ROWNUM = N
- Supports tautology cases: ROWNUM > 0, ROWNUM >= 1 return all rows
- Marks ROWNUM as volatile to ensure per-row evaluation
Includes comprehensive regression tests covering all edge cases.1 parent c51d958 commit c1ea1b5
File tree
20 files changed
+1599
-2
lines changed- src
- backend
- executor
- nodes
- optimizer
- plan
- util
- oracle_parser
- parser
- utils/adt
- include
- executor
- nodes
- oracle_parser
- oracle_test/regress
- expected
- sql
- pl/plisql/src
- expected
- sql
20 files changed
+1599
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2646 | 2646 | | |
2647 | 2647 | | |
2648 | 2648 | | |
| 2649 | + | |
| 2650 | + | |
| 2651 | + | |
| 2652 | + | |
| 2653 | + | |
| 2654 | + | |
| 2655 | + | |
| 2656 | + | |
2649 | 2657 | | |
2650 | 2658 | | |
2651 | 2659 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
552 | 552 | | |
553 | 553 | | |
554 | 554 | | |
| 555 | + | |
555 | 556 | | |
556 | 557 | | |
557 | 558 | | |
| |||
1593 | 1594 | | |
1594 | 1595 | | |
1595 | 1596 | | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
1596 | 1609 | | |
1597 | 1610 | | |
1598 | 1611 | | |
| |||
3322 | 3335 | | |
3323 | 3336 | | |
3324 | 3337 | | |
| 3338 | + | |
| 3339 | + | |
| 3340 | + | |
| 3341 | + | |
| 3342 | + | |
| 3343 | + | |
| 3344 | + | |
| 3345 | + | |
| 3346 | + | |
| 3347 | + | |
| 3348 | + | |
| 3349 | + | |
| 3350 | + | |
| 3351 | + | |
| 3352 | + | |
| 3353 | + | |
| 3354 | + | |
| 3355 | + | |
| 3356 | + | |
| 3357 | + | |
| 3358 | + | |
| 3359 | + | |
| 3360 | + | |
| 3361 | + | |
| 3362 | + | |
| 3363 | + | |
| 3364 | + | |
| 3365 | + | |
| 3366 | + | |
| 3367 | + | |
| 3368 | + | |
| 3369 | + | |
| 3370 | + | |
| 3371 | + | |
| 3372 | + | |
3325 | 3373 | | |
3326 | 3374 | | |
3327 | 3375 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
165 | 168 | | |
166 | 169 | | |
167 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
291 | 291 | | |
292 | 292 | | |
293 | 293 | | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
294 | 298 | | |
295 | 299 | | |
296 | 300 | | |
| |||
1072 | 1076 | | |
1073 | 1077 | | |
1074 | 1078 | | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
1075 | 1083 | | |
1076 | 1084 | | |
1077 | 1085 | | |
| |||
1329 | 1337 | | |
1330 | 1338 | | |
1331 | 1339 | | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
1332 | 1344 | | |
1333 | 1345 | | |
1334 | 1346 | | |
| |||
2164 | 2176 | | |
2165 | 2177 | | |
2166 | 2178 | | |
| 2179 | + | |
2167 | 2180 | | |
2168 | 2181 | | |
2169 | 2182 | | |
| |||
3045 | 3058 | | |
3046 | 3059 | | |
3047 | 3060 | | |
| 3061 | + | |
3048 | 3062 | | |
3049 | 3063 | | |
3050 | 3064 | | |
| |||
0 commit comments