@@ -41,6 +41,8 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
4141{{end}}
4242
4343{{if eq .Cmd ":many"}}
44+ var columnRegex = regexp.MustCompile(`SELECT\s+([\w,\s]+)\s+FROM`);
45+
4446{{range .Comments}}//{{.}}
4547{{end -}}
4648{{- if emitSchemaName }}
@@ -58,7 +60,7 @@ type {{.MethodName}}FilterParams struct {
5860 MaxParams []{{.MethodName}}Filter
5961}
6062
61- func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, filterParams {{.MethodName}}FilterParams, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
63+ func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, filterParams {{.MethodName}}FilterParams, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {;
6264{{- else }}
6365func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
6466{{- end }}
@@ -153,6 +155,10 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
153155{{define "queryCodeStdExec"}}
154156 {{- if .Arg.HasSqlcSlices }}
155157 query := strings.ReplaceAll({{.ConstantName}}, "%s", schema)
158+
159+ // Extract the columns from the query;
160+ columns := columnRegex.FindString(query);
161+
156162 var queryParams []interface{}
157163
158164 {{- if .Arg.Struct }}
@@ -207,6 +213,9 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
207213 {{- if emitSchemaName }}
208214 query := strings.ReplaceAll({{.ConstantName}}, "%s", schema);
209215
216+ // Extract the columns from the query;
217+ columns := columnRegex.FindString(query);
218+
210219 {{- /**
211220 If the query has a filter, we need to add the filter to the query
212221 and the query params.
@@ -216,6 +225,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
216225 var queryParams []interface{};
217226
218227 for _, filter := range filterParams.ExactParams {
228+ // Is the filter in the columns?
229+ if !strings.Contains(columns, filter.FieldName) {
230+ continue
231+ }
232+
219233 if isFirstFilter {
220234 query += " WHERE "
221235 isFirstFilter = false
@@ -228,6 +242,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
228242 };
229243
230244 for _, filter := range filterParams.InParams {
245+ // Is the filter in the columns?
246+ if !strings.Contains(columns, filter.FieldName) {
247+ continue
248+ }
249+
231250 if isFirstFilter {
232251 query += " WHERE "
233252 isFirstFilter = false
@@ -240,6 +259,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
240259 };
241260
242261 for _, filter := range filterParams.LikeParams {
262+ // Is the filter in the columns?
263+ if !strings.Contains(columns, filter.FieldName) {
264+ continue
265+ }
266+
243267 if isFirstFilter {
244268 query += " WHERE "
245269 isFirstFilter = false
@@ -252,6 +276,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
252276 };
253277
254278 for _, filter := range filterParams.SinceParams {
279+ // Is the filter in the columns?
280+ if !strings.Contains(columns, filter.FieldName) {
281+ continue
282+ }
283+
255284 if isFirstFilter {
256285 query += " WHERE "
257286 isFirstFilter = false
@@ -264,6 +293,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
264293 };
265294
266295 for _, filter := range filterParams.MaxParams {
296+ // Is the filter in the columns?
297+ if !strings.Contains(columns, filter.FieldName) {
298+ continue
299+ }
300+
267301 if isFirstFilter {
268302 query += " WHERE "
269303 isFirstFilter = false
@@ -274,7 +308,6 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
274308 query += filter.FieldName + " < ?"
275309 queryParams = append(queryParams, filter.Value)
276310 };
277-
278311
279312 {{- queryRetval . }} {{ queryMethod . }}(ctx, query, {{.Arg.Params}})
280313
0 commit comments