Skip to content

fix: use existing Result types for new Result - #3310

Merged
brianc merged 3 commits into
brianc:masterfrom
mantariksh:fix/multi-statement-types-parser
Oct 23, 2024
Merged

fix: use existing Result types for new Result#3310
brianc merged 3 commits into
brianc:masterfrom
mantariksh:fix/multi-statement-types-parser

Conversation

@mantariksh

@mantariksh mantariksh commented Sep 7, 2024

Copy link
Copy Markdown
Contributor

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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Contributor Author

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

@mantariksh

Copy link
Copy Markdown
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

brianc commented Sep 17, 2024

Copy link
Copy Markdown
Owner

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
Copy Markdown
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
Copy Markdown
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

brianc commented Oct 21, 2024

Copy link
Copy Markdown
Owner

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

brianc commented Oct 21, 2024

Copy link
Copy Markdown
Owner

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
Copy Markdown
Contributor Author

@brianc Done!

@brianc
brianc merged commit 1af6321 into brianc:master Oct 23, 2024
@brianc

brianc commented Oct 23, 2024

Copy link
Copy Markdown
Owner

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