You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When pg-minify fails, Graphile Migrate outputs pg-minify's error, but doesn't relate it to the file that actually caused the problem. This is particularly problematic if you have a large (e.g. initial) migration and you're using the current/ folder - you don't know which file the error occurred in.
Steps to reproduce
current/12000-insert_iso3166_countries.sql:
COPY countries (name, alpha_2, code) FROM stdin DELIMITER '|';
Kyrgyzstan|KG|417
Lao People's Democratic Republic|LA|418Latvia|LV|428\.
Expected results
Error on line 3 of 12000-insert_iso3166_countries.sql (we don't support COPY syntax).
Actual results
🛑 Error occurred whilst processing migration
SQLParsingError: Error parsing SQL at {line:24153,col:11}: Unclosed text block.
Additional context
graphile-migrate 1.0.1; linux; current/ folder.
Possible Solution
The following mod to dist/commands/watch.js gives more information:
letcurrentBodyMinified;try{currentBodyMinified=pgMinify(currentBodyFromDryRun);}catch(e){constmatches=e.message.match(/Error parsing SQL at \{line:(\d+),col:(\d+)\}/);if(matches){const[_,ln,col]=matches;constlines=currentBodyFromDryRun.split("\n");constleadingLines=lines.slice(0,+ln);constlastSplit=[...leadingLines].reverse().find(l=>l.match(/^--! split/));letfilename=null;letoffset=0;if(lastSplit){filename=lastSplit.split(':')[1].trim();constindex=leadingLines.indexOf(lastSplit);offset=index+1;}constpreviousLine=lines[+ln-2];constline=lines[+ln-1];constnextLine=lines[+ln];constdetails=filename ? `current/${filename} line ${+ln-offset}-ish` : `current.sql line ${ln}-ish`console.error(`Error happened around here ${details}:`);console.error();console.error(previousLine||"");console.error(line||"");console.error("-".repeat(+col-1)+"^");console.error(nextLine||"");}throwe;}
produces:
Error happened around here current/12000-insert_iso3166_countries.sql line 3-ish:
Kyrgyzstan|KG|417
Lao People's Democratic Republic|LA|418
----------^
Latvia|LV|428
🛑 Error occurred whilst processing migration
SQLParsingError: Error parsing SQL at {line:24153,col:11}: Unclosed text block.
The text was updated successfully, but these errors were encountered:
Summary
When pg-minify fails, Graphile Migrate outputs pg-minify's error, but doesn't relate it to the file that actually caused the problem. This is particularly problematic if you have a large (e.g. initial) migration and you're using the
current/
folder - you don't know which file the error occurred in.Steps to reproduce
current/12000-insert_iso3166_countries.sql
:Expected results
Error on line 3 of
12000-insert_iso3166_countries.sql
(we don't supportCOPY
syntax).Actual results
Additional context
graphile-migrate 1.0.1; linux;
current/
folder.Possible Solution
The following mod to
dist/commands/watch.js
gives more information:produces:
The text was updated successfully, but these errors were encountered: