Skip to content

feat(codegen/go): support emit_pointers_for_null_types for nullable enums#4386

Open
winens wants to merge 2 commits intosqlc-dev:mainfrom
winens:claude/emit-pointers-for-nullable-enums
Open

feat(codegen/go): support emit_pointers_for_null_types for nullable enums#4386
winens wants to merge 2 commits intosqlc-dev:mainfrom
winens:claude/emit-pointers-for-nullable-enums

Conversation

@winens
Copy link
Copy Markdown

@winens winens commented Apr 18, 2026

Summary

  • Extends emit_pointers_for_null_types to nullable enum columns — generates *EnumType pointers instead of NullEnumType wrapper structs
  • PostgreSQL: activates with PGX driver only (consistent with existing non-enum behavior)
  • MySQL: activates unconditionally when setting is enabled
  • Default behavior unchanged when setting is false

Closes #3276

Test plan

  • Existing enum endtoend tests pass (no regressions)
  • Existing emit_pointers_for_null_types tests pass (no regressions)
  • New test fixtures added:
    • emit_pointers_for_null_types_enum/postgresql/pgx/v5 — verifies *Size pointer, no NullSize struct
    • emit_pointers_for_null_types_enum/mysql — verifies *UsersShirtSize pointer, no NullUsersShirtSize struct
  • filterUnusedStructs updated to handle pointer-prefixed enum types (found via code review)

winens added 2 commits April 18, 2026 03:05
…nums

When emit_pointers_for_null_types is enabled, nullable enum columns now
generate *EnumType pointers instead of NullEnumType wrapper structs.
Previously, this setting only affected built-in types (sql.NullString ->
*string), leaving enum types unaffected.

Closes sqlc-dev#3276
…y files

Use schema.sql and query.sql as separate files instead of a shared sql/
directory, matching the pattern used by other enum tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support generating pointers for nullable enum types (emit_pointers_for_null_types for enums)

1 participant