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)
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

View file

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

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")
}