graphile/migrate

SQL errors lost in Javascript stacktrace

brendanmckenzie opened this issue · 1 comments

Feature description

When running migrate watch in a rather short terminal window SQL errors are lost amongst Javascript stack traces

Motivating example

There are 10 lines of JS stack trace for 2 lines of SQL errors.

graphile-migrate: Already up to date
[2020-11-04T06:48:27.687Z]: Running current.sql

🛑 Error occurred at line 12, column 1 of "current.sql":
|   alter table taxonomy_level
|     add constraint fk_taxonomy_level_parent foreign key (parent_id, project_id, environment_id)
|       references taxonomy_level (id, project_id, environment_id);
|   asdf;
| --^
| 42601: syntax error at or near "asdf"
    error: syntax error at or near "asdf"
        at Parser.parseErrorMessage (/Users/.../node_modules/pg-protocol/dist/parser.js:278:15)
        at Parser.handlePacket (/Users/.../node_modules/pg-protocol/dist/parser.js:126:29)
        at Parser.parse (/Users/.../node_modules/pg-protocol/dist/parser.js:39:38)
        at Socket.<anonymous> (/Users/.../node_modules/pg-protocol/dist/index.js:8:42)
        at Socket.emit (node:events:327:20)
        at addChunk (node:internal/streams/readable:304:12)
        at readableAddChunk (node:internal/streams/readable:279:9)
        at Socket.Readable.push (node:internal/streams/readable:218:10)
        at TCP.onStreamRead (node:internal/stream_base_commons:192:23)

    Severity:   ERROR
    Code:       42601


Breaking changes

I feel this can be implemented without much overhead.

Supporting development

I [tick all that apply]:

  • am interested in building this feature myself
  • am interested in collaborating on building this feature
  • am willing to help testing this feature before it's released
  • am willing to write a test-driven test suite for this feature (before it exists)
  • am a Graphile sponsor ❤️
  • have an active support or consultancy contract with Graphile

I'd be open to making this an option e.g. -S,--no-stack-trace, but not all errors are as beautiful as the one you have posted in this issue, sometimes they come from other sources and the stack trace is important in those cases.