sqlc-dev / sqlc

Generate type-safe code from SQL
https://sqlc.dev
MIT License
12.32k stars 779 forks source link

Column 'key' not found when using postgres json_each PostgreSQL 14.1 #1480

Open vmantese opened 2 years ago

vmantese commented 2 years ago

Version

1.12.0

What happened?

When running sqlc v1.12.0

➜ sqlc compile # package db sql/query/advanced.sql:3:84: column "key" does not exist

It appears sqlc compile is not aware of the emitted columns by the json_each function (key and value)

Relevant log output

No response

Database schema

No schema required in this mini example.

SQL queries

--GetInput :one
WITH input as(
    select kv.key category,json_array_elements_text(kv.value) keyword from (select key,value from  json_each(?)) kv
)
select * from input;

Configuration

version: "1"
packages:
  - name: "db"
    sql_package: "pgx/v4"
    path: "internal/db"
    queries: "./sql/query/"
    schema: "./sql/init/"
    engine: "postgresql"
    emit_prepared_queries: true
    emit_interface: false
    emit_exact_table_names: false
    emit_empty_slices: false
    emit_exported_queries: false
    emit_json_tags: true
    emit_result_struct_pointers: false
    emit_params_struct_pointers: false
    emit_methods_with_db_argument: false
    json_tags_case_style: "camel"
    output_db_file_name: "db.go"
    output_models_file_name: "models.go"
    output_querier_file_name: "querier.go"

Playground URL

https://play.sqlc.dev/p/dcd22b0f5a67e13b2138885ec1afe23d566d9928203bbf4afabc1dea9f9110fd

What operating system are you using?

macOS

What database engines are you using?

PostgreSQL

What type of code are you generating?

Go

kyleconroy commented 11 months ago

Should be fixed once sqlc supports composite and record types #2760

tardisx commented 10 months ago

Can I confirm that I have the same problem (which will be resolved with #2760) here, with this example:

https://play.sqlc.dev/p/89b4d32c161e16bcd34d78b9b2f9998eced1e1961ce561be891643074647df78 ?

Is there any workaround? I don't care about these views (in that I don't need sqlc to generated any code for queries based on these views or their descendants). But they are part of my migration history (tern) and I'd prefer not to temporarily change historical migrations if there is a simpler way.