[GRASS-dev] [GRASS GIS] #3397: db.select - reading multiline SQL statements from file fails
GRASS GIS
trac at osgeo.org
Fri Aug 11 03:17:56 PDT 2017
#3397: db.select - reading multiline SQL statements from file fails
--------------------------+-----------------------------------
Reporter: maitl | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.4.0
Component: Database | Version: 7.2.1
Resolution: | Keywords: db.select, db.execute
CPU: Unspecified | Platform: All
--------------------------+-----------------------------------
Changes (by mlennert):
* milestone: 7.2.2 => 7.4.0
Comment:
Replying to [ticket:3397 maitl]:
> It is convenient to store longer SQL statements into file.
>
> If each statement is not exactly one line in input file, then db.select
ends with error.
>
This is due to the fact that db.select reads the input file line by line,
and then uses all text before a semi-colon as the SQL statement.
This means that with a file test.sql that contains
{{{
SELECT count(*) FROM boundary_county WHERE Z_MEAN > 38;
SELECT count(*) FROM boundary_county;
}}}
you get
{{{
count(*)
333
count(*)
926
}}}
while if the file contains
{{{
SELECT count(*) FROM boundary_county WHERE Z_MEAN > 38; SELECT count(*)
FROM boundary_county;
}}}
you only get
{{{
count(*)
333
}}}
The same happens when you do this:
{{{
echo "SELECT count(*) FROM boundary_county WHERE Z_MEAN > 38; SELECT
count(*) FROM boundary_county;" | db.select input=-
}}}
and I cannot integrate a newline ('\n') character:
{{{
echo "SELECT count(*) FROM boundary_county WHERE Z_MEAN > 38\n; SELECT
count(*) FROM boundary_county;" | db.select input=-
DBMI-SQLite erreur de pilote :
Error in sqlite3_prepare():
SELECT count(*) FROM boundary_county WHERE Z_MEAN > 38\n; SELECT count(*)
FROM boundary_county;
unrecognized token: "\"
}}}
A rewrite of this to more flexibly parse the SQL, be it with one statement
over several lines, or several statements on one line would be nice, but I
would consider this too invasive to go into 7.2.2.
So, I propose that for 7.2.2 we just amend the manual. I've taken the
liberty to add one sentence about that in trunk and release72 (r71389 and
r71390).
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3397#comment:2>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list