If SELECT_JSON returns more than one row of NULL values, SELECT_JSON should return an error.

This commit is contained in:
go-jet 2026-05-04 12:41:19 +02:00
parent a1d7684fc1
commit 159cd95599
3 changed files with 16 additions and 8 deletions

View file

@ -80,7 +80,7 @@ func GenerateDB(db *sql.DB, schema, destDir string, templates ...template.Templa
err = template.ProcessSchema(destDir, schemaMetadata, generatorTemplate) err = template.ProcessSchema(destDir, schemaMetadata, generatorTemplate)
if err != nil { if err != nil {
return fmt.Errorf("failed to generate schema %s: %d", schemaMetadata.Name, err) return fmt.Errorf("failed to generate schema %s: %w", schemaMetadata.Name, err)
} }
return nil return nil

View file

@ -131,15 +131,13 @@ func queryJson(ctx context.Context, db Queryable, query string, args []interface
return 1, err return 1, err
} }
if jsonData == nil { if jsonData != nil {
return 1, nil
}
err = GlobalConfig.JsonUnmarshalFunc(jsonData, &destPtr) err = GlobalConfig.JsonUnmarshalFunc(jsonData, &destPtr)
if err != nil { if err != nil {
return 1, fmt.Errorf("jet: invalid json, %w", err) return 1, fmt.Errorf("jet: invalid json, %w", err)
} }
}
if rows.Next() { if rows.Next() {
return 1, fmt.Errorf("jet: query returned more then one row") return 1, fmt.Errorf("jet: query returned more then one row")

View file

@ -956,3 +956,13 @@ world",
} }
`) `)
} }
func TestSelectJsonObject_NullMoreThanOneRow(t *testing.T) {
var dest map[string]any
_, err := qrm.QueryJsonObj(ctx, db, `
SELECT NULL::json AS "json"
UNION ALL
SELECT NULL::json AS "json"`, nil, &dest)
require.ErrorContains(t, err, "jet: query returned more then one row")
}