@@ -153,11 +153,17 @@ COALESCE(x, y) <> ALL (SELECT z FROM w);
153153SELECT NOT (2 <> ALL (SELECT 2 UNION ALL SELECT 3 ));
154154SELECT 2 = ANY(SELECT 2 UNION ALL SELECT 3 );
155155
156- x AND TRUE;
157- x ;
156+ SELECT t_bool . b AND TRUE FROM t_bool ;
157+ SELECT t_bool . b FROM t_bool ;
158158
159- TRUE AND x;
160- x;
159+ SELECT TRUE AND t_bool .b FROM t_bool;
160+ SELECT t_bool .b FROM t_bool;
161+
162+ SELECT t_bool .b OR FALSE FROM t_bool;
163+ SELECT t_bool .b FROM t_bool;
164+
165+ SELECT FALSE OR t_bool .b FROM t_bool;
166+ SELECT t_bool .b FROM t_bool;
161167
162168-- ------------------------------------
163169-- Absorption
166172(A OR B) AND (C OR NOT A);
167173
168174A AND (A OR B);
169- A;
175+ A AND TRUE ;
170176
171177A AND D AND E AND (B OR A);
172- A AND D AND E;
178+ A AND D AND E AND TRUE ;
173179
174180D AND A AND E AND (B OR A);
175- A AND D AND E;
181+ A AND D AND E AND TRUE ;
176182
177183(A OR B) AND A;
178- A;
184+ A AND TRUE ;
179185
180186C AND D AND (A OR B) AND E AND F AND A;
181- A AND C AND D AND E AND F;
187+ A AND C AND D AND E AND F AND TRUE ;
182188
183189A OR (A AND B);
184- A;
190+ A OR FALSE ;
185191
186192(A AND B) OR A;
187- A;
193+ A OR FALSE ;
188194
189195A AND (NOT A OR B);
190- A AND B ;
196+ A AND (B OR FALSE) ;
191197
192198(NOT A OR B) AND A;
193- A AND B ;
199+ A AND (B OR FALSE) ;
194200
195201A OR (NOT A AND B);
196- A OR B ;
202+ A OR (B AND TRUE) ;
197203
198204(A OR C) AND ((A OR C) OR B);
199- A OR C;
205+ ( A OR C) AND TRUE ;
200206
201207(A OR C) AND (A OR B OR C);
202- A OR C;
208+ ( A OR C) AND TRUE ;
203209
204210A AND (B AND C) AND (D AND E);
205211A AND B AND C AND D AND E;
206212
207213A AND (A OR B) AND (A OR B OR C);
208- A;
214+ A AND TRUE ;
209215
210216(A OR B) AND (A OR C) AND (A OR B OR C);
211- (A OR B) AND (A OR C);
217+ (A OR B) AND (A OR C) AND TRUE ;
212218
213219-- ------------------------------------
214220-- Elimination
@@ -863,41 +869,41 @@ COALESCE(x);
863869x;
864870
865871COALESCE(x, 1 ) = 2 ;
866- NOT x IS NULL AND x = 2 ;
872+ FALSE OR ( NOT x IS NULL AND x = 2 ) ;
867873
868874# dialect: redshift
869875COALESCE(x, 1 ) = 2 ;
870876COALESCE(x, 1 ) = 2 ;
871877
8728782 = COALESCE(x, 1 );
873- NOT x IS NULL AND x = 2 ;
879+ FALSE OR ( NOT x IS NULL AND x = 2 ) ;
874880
875881COALESCE(x, 1 , 1 ) = 1 + 1 ;
876- NOT x IS NULL AND x = 2 ;
882+ FALSE OR ( NOT x IS NULL AND x = 2 ) ;
877883
878884COALESCE(x, 1 , 2 ) = 2 ;
879- NOT x IS NULL AND x = 2 ;
885+ FALSE OR ( NOT x IS NULL AND x = 2 ) ;
880886
881887COALESCE(x, 3 ) <= 2 ;
882- NOT x IS NULL AND x <= 2 ;
888+ FALSE OR ( NOT x IS NULL AND x <= 2 ) ;
883889
884890COALESCE(x, 1 ) <> 2 ;
885- x <> 2 OR x IS NULL ;
891+ (NOT x IS NULL AND x <> 2 ) OR (TRUE AND x IS NULL ) ;
886892
887893COALESCE(x, 1 ) <= 2 ;
888- x <= 2 OR x IS NULL ;
894+ (NOT x IS NULL AND x <= 2 ) OR (TRUE AND x IS NULL ) ;
889895
890896COALESCE(x, 1 ) = 1 ;
891- x = 1 OR x IS NULL ;
897+ (NOT x IS NULL AND x = 1 ) OR (TRUE AND x IS NULL ) ;
892898
893899COALESCE(x, 1 ) IS NULL ;
894900FALSE;
895901
896902COALESCE(ROW() OVER (), 1 ) = 1 ;
897- ROW() OVER () = 1 OR ROW() OVER () IS NULL ;
903+ (NOT ROW() OVER () IS NULL AND ROW() OVER () = 1 ) OR (TRUE AND ROW() OVER () IS NULL ) ;
898904
899905a AND b AND COALESCE(ROW() OVER (), 1 ) = 1 ;
900- (ROW() OVER () = 1 OR ROW() OVER () IS NULL ) AND a AND b;
906+ ((NOT ROW() OVER () IS NULL AND ROW() OVER () = 1 ) OR (TRUE AND ROW() OVER () IS NULL ) ) AND a AND b;
901907
902908COALESCE(1 , 2 );
9039091 ;
0 commit comments