-
Notifications
You must be signed in to change notification settings - Fork 867
Using MYSQL functions ( CONVERT and CAST) result in removing column from struct #1622
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
FWIW, I'm pretty sure the root cause here is very similar to the one for #1648, namely that It seemed a bit tricky to implement because of the
but that info is not as easily accessible in the mysql engine. You can verify this by setting the
but for a |
What is this As the title said, this PR wants to add support for CAST function in MySQL. This PR is based from PR by @ryanpbrewster here (which unfortunately he didn't send here, and only exist in his repository). Why is this PR created Currently sqlc unable to infer the correct type from SQL function like MAX, MIN, SUM, etc. For those function, sqlc will return its value as interface{}. This behavior can be seen in this playground. As workaround, it advised to use CAST function to explicitly tell what is the type for that column, as mentioned in #1574. Unfortunately, currently sqlc only support CAST function in PostgreSQL and not in MySQL. Thanks to this, right now MySQL users have to parse the interface{} manually, which is not really desirable. What does this PR do? Implement convertFuncCast function for MySQL. Add better nil pointer check in some functions that related to convertFuncCast. I haven't write any test because I'm not sure how and where to put it. However, as far as I know the code that handle ast.TypeCast for PostgreSQL also don't have any test, so I guess it's fine 🤷♂️ Related issues Support CAST ... AS #687, which currently is the oldest MySQL issue that still opened. Using MYSQL functions ( CONVERT and CAST) result in removing column from struct #1622 Unable to Type Alias #1866 sum in select result in model field type interface{} #1901 MIN() returns an interface{} #1965
"Fixed" in sqlc 1.21
Obviously an all-uppercase field name with an interface{} type isn't ideal here. |
Version
1.13.0
What happened?
When creating an insert query for a json column, sqlc does not generate the column name in the golang struct if I try to add
CAST(CONVERT( ? USING utf8) AS JSON)
From playing around with MySql and Postgres in the playground, I've noticed that it works fine in Postgres but not when using MySql
Postgres playground:
https://play.sqlc.dev/p/ea800eff2a7beb25bc960f7d839ea96039b5dad0c46f16dddd97f76dc28d3388
MySql playground:
https://play.sqlc.dev/p/38ec6bf15657aa79f4a3dd7c72c559934038a591625869b2dfe59a87498f7b1f
Relevant log output
No response
Database schema
SQL queries
Configuration
Playground URL
https://play.sqlc.dev/p/ea7294bd54c9eae950221ae124b4685690c2e5328a9d6ae444bb1a455924c14e
What operating system are you using?
macOS
What database engines are you using?
MySQL
What type of code are you generating?
Go
The text was updated successfully, but these errors were encountered: