@@ -61,21 +61,24 @@ describe('TypeCast with complex expressions', () => {
6161 const result = await expectParseDeparse ( sql ) ;
6262 // Complex expressions require CAST() syntax
6363 // Note: PostgreSQL normalizes "integer" to "int" in the AST
64- expect ( result ) . toBe ( `SELECT CAST((CASE WHEN (a > 0) THEN 1 ELSE 2 END) AS int) FROM t` ) ;
64+ // Note: Deparser removes outer parentheses from CASE expressions
65+ expect ( result ) . toBe ( `SELECT CAST(CASE WHEN (a > 0) THEN 1 ELSE 2 END AS int) FROM t` ) ;
6566 } ) ;
6667
6768 it ( 'should handle boolean expression' , async ( ) => {
6869 const sql = `SELECT (a IS NULL)::boolean FROM t` ;
6970 const result = await expectParseDeparse ( sql ) ;
7071 // Complex expressions require CAST() syntax
71- expect ( result ) . toBe ( `SELECT CAST((a IS NULL) AS boolean) FROM t` ) ;
72+ // Note: Deparser removes outer parentheses from boolean expressions
73+ expect ( result ) . toBe ( `SELECT CAST(a IS NULL AS boolean) FROM t` ) ;
7274 } ) ;
7375
7476 it ( 'should handle comparison expression' , async ( ) => {
7577 const sql = `SELECT (a > b)::boolean FROM t` ;
7678 const result = await expectParseDeparse ( sql ) ;
7779 // Complex expressions require CAST() syntax
78- expect ( result ) . toBe ( `SELECT CAST((a > b) AS boolean) FROM t` ) ;
80+ // Note: Deparser removes outer parentheses from comparison expressions
81+ expect ( result ) . toBe ( `SELECT CAST(a > b AS boolean) FROM t` ) ;
7982 } ) ;
8083} ) ;
8184
@@ -126,8 +129,8 @@ describe('TypeCast with pg_catalog.bpchar', () => {
126129 it ( 'should handle bpchar with length modifier' , async ( ) => {
127130 const sql = `SELECT 'hello'::bpchar(10)` ;
128131 const result = await expectParseDeparse ( sql ) ;
129- // bpchar with length modifier uses :: syntax
130- expect ( result ) . toBe ( `SELECT 'hello':: bpchar(10)` ) ;
132+ // bpchar with length modifier uses CAST() syntax (not :: syntax)
133+ expect ( result ) . toBe ( `SELECT CAST( 'hello' AS bpchar(10) )` ) ;
131134 } ) ;
132135} ) ;
133136
@@ -176,13 +179,15 @@ describe('TypeCast with simple constants', () => {
176179 it ( 'should handle boolean true' , async ( ) => {
177180 const sql = `SELECT true::boolean` ;
178181 const result = await expectParseDeparse ( sql ) ;
179- expect ( result ) . toBe ( `SELECT TRUE::boolean` ) ;
182+ // Boolean constants use CAST() syntax (not :: syntax)
183+ expect ( result ) . toBe ( `SELECT CAST(true AS boolean)` ) ;
180184 } ) ;
181185
182186 it ( 'should handle boolean false' , async ( ) => {
183187 const sql = `SELECT false::boolean` ;
184188 const result = await expectParseDeparse ( sql ) ;
185- expect ( result ) . toBe ( `SELECT FALSE::boolean` ) ;
189+ // Boolean constants use CAST() syntax (not :: syntax)
190+ expect ( result ) . toBe ( `SELECT CAST(false AS boolean)` ) ;
186191 } ) ;
187192
188193 it ( 'should handle NULL cast' , async ( ) => {
0 commit comments