Skip to content
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

fix: use existing Result types for new Result #3310

Merged
merged 3 commits into from
Oct 23, 2024

Conversation

mantariksh
Copy link
Contributor

@mantariksh mantariksh commented Sep 7, 2024

Context

Closes #3309
Related to sequelize/sequelize#17479

Approach

The issue seems to be that the _types member of Result is directly overwritten by Client.query:

query._result._types = this._types

However, in _checkForMultiRow, we then create new Results, but without the overridden types:

this._result = new Result(this._rowMode, this.types)

The approach is to reuse the types of the original Result when creating a new one.

@charmander
Copy link
Collaborator

Thanks for proposing a fix.

Client probably shouldn’t be reaching into Query and Result like that in the first place, and should forward its types to the query objects it creates instead. That would be a breaking change now, when passing query objects to Client#query, but maybe it’s possible to add the types to the options now to fix this bug and defer removing query._result._types = this._types until the next major version? @brianc

(Either way, it should also have a test.)

@mantariksh
Copy link
Contributor Author

Got it, I'll add a test. I'll try to find some time to work on it over the next couple of days.

@mantariksh
Copy link
Contributor Author

@charmander I added a test for this case in 3c1a7d1

@mantariksh
Copy link
Contributor Author

Just checking, are there any further changes I should make? No rush, just wondering if there's anything I can do to help!

@brianc
Copy link
Owner

brianc commented Sep 17, 2024

Not a huge fan of reaching into the client like that, but also I think I went a bit overboard with what was "private" in the past (particularly since not a lot is really actually private in JS). I'm okay w/ this as a quick fix for now, and since there are tests covering it it will be resilient to refactoring when that time comes. :)

@mantariksh
Copy link
Contributor Author

Seems like tests are failing for pg-native in NodeJS 20 and 22. Do you think this is related to the changes, or might it be that the tests are flaky? Noticed a recent test run for an unrelated change that failed with a similar error code: https://github.com/brianc/node-postgres/actions/runs/10098627832/job/27926116837?pr=3271

Happy to debug further if you think the changes caused the test to fail.

@mantariksh
Copy link
Contributor Author

Hey @brianc @charmander! The tests are passing for me locally on both Node 20 and 22 (see screenshots). Do you think it might be worth rerunning the actions to see if the test failures might be due flaky tests? Alternatively let me know if you think I need to debug further.

Screenshot 2024-10-19 at 11 34 41 PM Screenshot 2024-10-19 at 11 37 08 PM

@brianc
Copy link
Owner

brianc commented Oct 21, 2024

Do you think it might be worth rerunning the actions to see if the test failures might be due flaky tests?

I'll re-run! Once tests pass I'll merge this. sorry for the delay, this looks good. :)

@brianc
Copy link
Owner

brianc commented Oct 21, 2024

This has to do w/ randomly segfaulting (sometimes, but not regularly) in the native bindings, which is quite annoying. I'm unable to re-run the job? I don't see the button anywhere anyway. Mind pushing an empty or just whitespace commit & hopefully that'll trigger a re-run?

@mantariksh
Copy link
Contributor Author

@brianc Done!

@brianc brianc merged commit 1af6321 into brianc:master Oct 23, 2024
5 checks passed
@brianc
Copy link
Owner

brianc commented Oct 23, 2024

Thanks! Got it merged! Will do a release tomorrow! :)

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.

Custom type parsers do not run for multi-line statements
3 participants