-
Notifications
You must be signed in to change notification settings - Fork 671
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PG17 compatibility: Fix Test Failure in multi_name_lengths multi_create_table_constraints #7726
base: naisila/pg17_support
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## naisila/pg17_support #7726 +/- ##
=========================================================
- Coverage 89.61% 34.05% -55.57%
=========================================================
Files 274 274
Lines 59689 59352 -337
Branches 7446 7387 -59
=========================================================
- Hits 53490 20211 -33279
- Misses 4069 36085 +32016
- Partials 2130 3056 +926 |
s/\|[[:space:]]*CHECK[[:space:]]*\((date_col_[a-zA-Z0-9_]+[[:space:]]*[>=<]+[[:space:]].*)\)/| CHECK \1/g | ||
|
||
# Specifically remove outer parentheses from CHECK constraints for int_col_* columns, ensuring proper formatting. | ||
s/\|[[:space:]]*CHECK[[:space:]]*\((int_col_[a-zA-Z0-9_]+[[:space:]]*[>=<]+[[:space:]].*)\)/| CHECK \1/g |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that these two normalization lines are specific to the column name, hence they don't take care of the following failure in multi_create_table_constraints
:
https://github.com/citusdata/citus/actions/runs/11775359161/attempts/1#summary-32795798881
SELECT "Constraint", "Definition" FROM table_checks WHERE relid='public.check_example_365068'::regclass;
Constraint | Definition
-------------------------------------+-----------------------------------
- check_example_other_col_check | CHECK (other_col >= 100)
- check_example_other_other_col_check | CHECK (abs(other_other_col) >= 100)
+ check_example_other_col_check | CHECK other_col >= 100
+ check_example_other_other_col_check | CHECK abs(other_other_col) >= 100
(2 rows)
So we have date_col
, int_col
, other_col
and abs(other_other_col)
I think we can rename these columns to make the normalization rules apply to them?
Example:
date_col_
to column_date
int_col_
to column_int
other_col
to column_other
And then have two normalization lines: one for CHECK column_...
and one for CHECK abs(...
?
There might be a better way, just thoughts from the top of my head. But definitely in this PR we should fix both multi_create_table_constraints
and multi_name_lengths
tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to combine the rules into a single, more comprehensive one, but it didn't work out. A more general rule could potentially work, but it carries the risk of affecting other tests as well.
7e63f00
to
1b3cfdc
Compare
Relevant PG commit:
e59fcbd712c777eb2987d7c9ad542a7e817954ec