@@ -34,6 +34,7 @@ import (
3434 "github.com/dolthub/go-mysql-server/server"
3535 "github.com/dolthub/go-mysql-server/sql"
3636 "github.com/dolthub/go-mysql-server/sql/analyzer"
37+ "github.com/dolthub/go-mysql-server/sql/expression"
3738 "github.com/dolthub/go-mysql-server/sql/plan"
3839 "github.com/dolthub/go-mysql-server/sql/types"
3940 "github.com/dolthub/vitess/go/mysql"
@@ -45,6 +46,7 @@ import (
4546 "github.com/dolthub/doltgresql/core/id"
4647 "github.com/dolthub/doltgresql/postgres/parser/uuid"
4748 pgexprs "github.com/dolthub/doltgresql/server/expression"
49+ pgtransform "github.com/dolthub/doltgresql/server/transform"
4850 pgtypes "github.com/dolthub/doltgresql/server/types"
4951)
5052
@@ -158,14 +160,33 @@ func (h *DoltgresHandler) ComPrepareParsed(ctx context.Context, c *mysql.Conn, q
158160 return nil , nil , err
159161 }
160162
161- analyzed , err := h .e .PrepareParsedQuery (sqlCtx , query , query , parsed )
163+ node , err := h .e .PrepareParsedQuery (sqlCtx , query , query , parsed )
162164 if err != nil {
163165 if printErrorStackTraces {
164166 fmt .Printf ("unable to prepare query: %+v\n " , err )
165167 }
166168 logrus .WithField ("query" , query ).Errorf ("unable to prepare query: %s" , err .Error ())
167- err := sql .CastSQLError (err )
168- return nil , nil , err
169+ return nil , nil , sql .CastSQLError (err )
170+ }
171+ analyzed := node
172+ // We do not analyze expressions with bind variables, since that step comes later and analysis will return invalid results
173+ hasBindVars := false
174+ pgtransform .InspectNodeExprs (node , func (expr sql.Expression ) bool {
175+ if _ , ok := expr .(* expression.BindVar ); ok {
176+ hasBindVars = true
177+ return true
178+ }
179+ return false
180+ })
181+ if ! hasBindVars {
182+ analyzed , err = h .e .Analyzer .Analyze (sqlCtx , node , nil , nil )
183+ if err != nil {
184+ if printErrorStackTraces {
185+ fmt .Printf ("unable to prepare query: %+v\n " , err )
186+ }
187+ logrus .WithField ("query" , query ).Errorf ("unable to prepare query: %s" , err .Error ())
188+ return nil , nil , sql .CastSQLError (err )
189+ }
169190 }
170191
171192 var fields []pgproto3.FieldDescription
0 commit comments