@@ -438,18 +438,42 @@ export class Deparser implements DeparserVisitor {
438438 'ALL' ,
439439 this . formatter . parens ( this . visit ( rexpr , context ) )
440440 ] ) ;
441- case 'AEXPR_DISTINCT' :
441+ case 'AEXPR_DISTINCT' : {
442+ let leftExpr = this . visit ( lexpr , context ) ;
443+ let rightExpr = this . visit ( rexpr , context ) ;
444+
445+ // Add parentheses for complex expressions
446+ if ( lexpr && this . isComplexExpression ( lexpr ) ) {
447+ leftExpr = this . formatter . parens ( leftExpr ) ;
448+ }
449+ if ( rexpr && this . isComplexExpression ( rexpr ) ) {
450+ rightExpr = this . formatter . parens ( rightExpr ) ;
451+ }
452+
442453 return this . formatter . format ( [
443- this . visit ( lexpr , context ) ,
454+ leftExpr ,
444455 'IS DISTINCT FROM' ,
445- this . visit ( rexpr , context )
456+ rightExpr
446457 ] ) ;
447- case 'AEXPR_NOT_DISTINCT' :
458+ }
459+ case 'AEXPR_NOT_DISTINCT' : {
460+ let leftExpr = this . visit ( lexpr , context ) ;
461+ let rightExpr = this . visit ( rexpr , context ) ;
462+
463+ // Add parentheses for complex expressions
464+ if ( lexpr && this . isComplexExpression ( lexpr ) ) {
465+ leftExpr = this . formatter . parens ( leftExpr ) ;
466+ }
467+ if ( rexpr && this . isComplexExpression ( rexpr ) ) {
468+ rightExpr = this . formatter . parens ( rightExpr ) ;
469+ }
470+
448471 return this . formatter . format ( [
449- this . visit ( lexpr , context ) ,
472+ leftExpr ,
450473 'IS NOT DISTINCT FROM' ,
451- this . visit ( rexpr , context )
474+ rightExpr
452475 ] ) ;
476+ }
453477 case 'AEXPR_NULLIF' :
454478 return this . formatter . format ( [
455479 'NULLIF' ,
0 commit comments