Comments (5)
Good find @ns-kliu. I tracked this down to the JSON_ARRAY
function not properly handling arguments when they come in as bind vars, and I opened #1919 with the fix. Thank you for pointing out this problem and sorry about the initial delay in us investigating! 🙏
from go-mysql-server.
Can any maintainer have a look?
from go-mysql-server.
@fulghum will look today.
--Tim
from go-mysql-server.
Hey @ns-kliu, thanks for taking the time to report this and to provide such a nice repro case! I've got the repro going and am seeing the same behavior you describe. The first thing I've noticed is that the first two queries (which don't return the user that was just created) are both using prepared statements, and the third query (which works correctly) is simply being executed without being prepared and then having bind vars plugged in. Based on that, it seems like there's something going on with query preparation. I've tried disabling prepared statements to confirm that guess, but the configuration I provided doesn't seem to actually disable them.
I'll keep digging in and see what else I can find in the debugger.
from go-mysql-server.
I kept digging deeper into this one and noticed that the client/GORM is sending over the type CHAR
for the bind var, but Vitess is swallowing that info from the client and instead labeling it as VARBINARY
when it sends it to go-mysql-server for processing. I just merged in a fix to our fork of Vitess to stop overwriting CHAR
with VARBINARY
for bind vars, and I confirmed that change enables JSON_ARRAY
to handle the prepared query correctly now.
I've got a few more steps to get that change available in go-mysql-server and dolt and will close this issue once those are done.
from go-mysql-server.
Related Issues (20)
- go mod tidy error
- VSCode debug Build Error
- GolangCI does not work
- UPDATE statements are Noop HOT 4
- any plan to build new release? HOT 1
- go mod tidy error HOT 2
- add create table comment on table clause to table spec HOT 1
- Can't turn on multiStatements when using memory driver HOT 2
- Does it support `Functional Key Parts` index ? HOT 2
- Server error message compatibility when doing INSERT HOT 3
- Foreign key constraints break auto-incrementing ids in memory mode HOT 3
- Panic when executing sql statements from external command line tool after startup HOT 7
- Self-referencing foreign key constraint breaks auto-incrementing ids in memory mode HOT 2
- Potential regression: number cast to JSON no longer read as float HOT 2
- Running multiple migrations in a transaction HOT 2
- Primary key column order changes column order on insert HOT 1
- Consistent usage of variables in the example
- MemoryDB: Deleting rows silently fails if there are multiple CASCADING constraints pointing to the same parent HOT 1
- MemoryDB: UPDATE succeeds but is not reflected in subsequent SELECT
- Feature request: persistent database store HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-mysql-server.