Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/columnar_customscan.c
Original file line number Diff line number Diff line change
Expand Up @@ -963,9 +963,10 @@ pgcolumnar_clause_to_scankey(Node *clause, Index scanrelid, TupleDesc tupdesc,
*exact = false;

/*
* `col IN (...)` / `col = ANY(array)` becomes a [min, max] range (#704). Its
* keys are conservative, so this returns with exact still false and the fold
* refuses them (#715).
* `col IN (...)` / `col = ANY(array)` becomes one set key, with a bounded
* [min,max] fallback above the element limit (#704, #752). Both forms are
* conservative pruning keys, so exact remains false and the fold refuses
* them as its complete row filter (#715).
*/
if (IsA(clause, ScalarArrayOpExpr))
return pgcolumnar_saop_scankey((ScalarArrayOpExpr *) clause,
Expand Down
1 change: 1 addition & 0 deletions src/columnar_reader.c
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,7 @@ pgcolumnar_make_predicates(SkipPredicate *out, int nkeys, ScanKey keys,
bool elmbyval;
char elmalign;

Assert(ARR_ELEMTYPE(arr) == key->sk_subtype);
get_typlenbyvalalign(ARR_ELEMTYPE(arr), &elmlen, &elmbyval,
&elmalign);
deconstruct_array(arr, ARR_ELEMTYPE(arr), elmlen, elmbyval,
Expand Down
5 changes: 3 additions & 2 deletions src/columnar_vector.c
Original file line number Diff line number Diff line change
Expand Up @@ -3367,8 +3367,9 @@ pgcolumnar_batch_gates_ok(const PgColumnarAggSpec *specs, int naggs,
*
* The gate below is exactly the exactness marker the conservative keys need
* kept out of the fold: PgColumnarBuildScanKeys emits keys WEAKER than their
* clause for a ScalarArrayOpExpr ([min, max] range, #704) and for an anchored
* LIKE (#426), and pgcolumnar_clause_to_scankey now reports that inexactness.
* clause for a ScalarArrayOpExpr (a set key with a bounded [min,max]
* fallback, #704/#752) and for an anchored LIKE (#426), and
* pgcolumnar_clause_to_scankey reports that inexactness.
* PgColumnarQualsExactlyKeyed demands one EXACT key per clause, so those keys
* never serve as the fold's WHERE even if pgcolumnar_clause_to_predicate were
* later taught to accept a SAOP. The byval gather guard below is a second,
Expand Down
Loading