@@ -52,6 +52,9 @@ func convertToRangeVarList(list *ast.List, result *ast.List) {
5252 if ! ok {
5353 if list , check := rel .Larg .(* ast.List ); check {
5454 convertToRangeVarList (list , result )
55+ } else if subselect , check := rel .Larg .(* ast.RangeSubselect ); check {
56+ // Handle subqueries in JOIN clauses
57+ result .Items = append (result .Items , subselect )
5558 } else {
5659 panic ("expected range var" )
5760 }
@@ -64,6 +67,9 @@ func convertToRangeVarList(list *ast.List, result *ast.List) {
6467 if ! ok {
6568 if list , check := rel .Rarg .(* ast.List ); check {
6669 convertToRangeVarList (list , result )
70+ } else if subselect , check := rel .Rarg .(* ast.RangeSubselect ); check {
71+ // Handle subqueries in JOIN clauses
72+ result .Items = append (result .Items , subselect )
6773 } else {
6874 panic ("expected range var" )
6975 }
@@ -75,6 +81,9 @@ func convertToRangeVarList(list *ast.List, result *ast.List) {
7581 case * ast.RangeVar :
7682 result .Items = append (result .Items , rel )
7783
84+ case * ast.RangeSubselect :
85+ result .Items = append (result .Items , rel )
86+
7887 default :
7988 panic ("expected range var" )
8089 }
0 commit comments