MySQL table and column names should not be normalized to lowercase
Version
1.24.0
What happened?
When using mysql as the engine, the table and column names are normalized to lowercase, losing useful naming conventions from the database. It's a very postgres specific thing that table and column names should be lowercase. But in Mysql this limitation does not exist.
e.g. a column called KapNr will become Kapnr in the generated struct. If I then marshal that into a JSON, even with JSON tags in camelCase it will just become kapnr instead of kapNr.
We can use the rename configuration, but then that configuration is ignored for generating the json tag, so it is still only half a workaround.
For context (feel free to skip), to keep my code simple, the way I name my columns in a database, structs and output JSON are usually as similar as possible. The less mapping from 1 format to another, the better. However, now I am forced to put extra mappings in between with custom structs to fix this.
Relevant log output
No response
Database schema
CREATE TABLE
`Gruppen` (
`GrVon` varchar(3) NOT NULL,
`GrBis` varchar(3) DEFAULT NULL,
`KapNr` varchar(2) DEFAULT NULL,
`GrTi` varchar(255) DEFAULT NULL,
PRIMARY KEY (`GrVon`),
KEY `KapNr` (`KapNr`),
CONSTRAINT `Gruppen_ibfk_1` FOREIGN KEY (`KapNr`) REFERENCES `Kapitel` (`KapNr`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
SQL queries
No response
Configuration
version: "2"
sql:
- engine: "mysql"
queries: "sql/queries"
schema: "sql/schema"
gen:
go:
out: "internal/database"
emit_json_tags: true
json_tags_case_style: camel
rename:
kapnr: "KapNr"
Playground URL
https://play.sqlc.dev/p/28279d28759d2a8d64af19286ee73de6c27b7003d0caa821d0e311652cf01a17
What operating system are you using?
Linux
What database engines are you using?
MySQL
What type of code are you generating?
Go