diff --git a/generator/postgres/postgres_generator.go b/generator/postgres/postgres_generator.go index 08bdb8d..e413abe 100644 --- a/generator/postgres/postgres_generator.go +++ b/generator/postgres/postgres_generator.go @@ -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 diff --git a/qrm/qrm.go b/qrm/qrm.go index cf44044..e09d2d9 100644 --- a/qrm/qrm.go +++ b/qrm/qrm.go @@ -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() { diff --git a/tests/postgres/select_json_test.go b/tests/postgres/select_json_test.go index 6c19ad3..b03b814 100644 --- a/tests/postgres/select_json_test.go +++ b/tests/postgres/select_json_test.go @@ -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") +}