[gdal-dev] SQLite dialect in OGRDataSource::ExecuteSQL

Pierluigi Guasqui guasqui at actgate.com
Tue Feb 10 09:20:12 PST 2015


Even,

I set the environment variable CPL_DEBUG=ON and rerun my code. I found 
the statement you mentioned:

    SQLITE: OGR style SQLite DB found !
    SQLITE: Spatialite not available. Implementing a few functions
    OGR2SQLITE: sqlite3_declare_vtab(CREATE TABLE
    "xrs_2010jan21_mf2_geometry_polygons"("et" FLOAT,"utc" VARCHAR(25), ...

but then it printed the following error:

    ERROR 1: Cannot create virtual table for layer
    'xrs_2010jan21_mf2_geometry_polygons' : CREATE VIRTUAL: invalid SQL
    statement : CREATE TABLE "xrs_2010jan21_mf2_geometry_polygons"("et"
    FLOAT,"utc" VARCHAR(25), ...
    SQLITE: OGR style SQLite DB found !
    ERROR 1: In ExecuteSQL(): sqlite3_prepare(select * from
    xrs_2010jan21_mf2_geometry_polygons):
       no such table: xrs_2010jan21_mf2_geometry_polygons
    OGR: Unloading VirtualOGR module

Any idea why I am getting this error?

Thank you!
Pierluigi

Il 10/02/2015 13:42, Even Rouault ha scritto:
> Le mardi 10 février 2015 12:47:46, Pierluigi Guasqui a écrit :
>> Hi All!
>>
>> I am using the GDAL/OGR functions to query a shapefile. This is a sample
>> code I have been successfully running so far:
>>
>>      OGRDataSource *poDS = OGRSFDriverRegistrar::Open(
>>      "some/path/to/myshapefile.shp" );
>>      OGRLayer *poLayer = poDS->ExecuteSQL( "select * from myshapefile",
>>      NULL, NULL );
>>      // ...
>>      // fetching result features from "poLayer"
>>      // ...
>>      poDS->ReleaseResultSet( poLayer );
>>      OGRDataSource::DestroyDataSource(poDS);
>>
>>
>> As you can see, I am currently using the OGR SQL dialect, as I am
>> passing NULL as the third parameter of the OGRDataSource::ExecuteSQL
>> function.
>>
>> Now I am trying to extend the SQL syntax to be able to use the OGR
>> SQLite dialect. I have successfully recompiled GDAL 1.11.1 with SQLite
>> support (version 3.8.5) but when I try to execute the same sample code
>> (passing "SQLITE" as the 3rd argument of the OGRDataSource::ExecuteSQL
>> function) I am getting the following error:
>>
>>      In ExecuteSQL(): sqlite3_prepare(select * from myshapefile): no such
>>      table: myshapefile
>>
>>
>> What is the table name that contains the shapefile features that I can
>> use in my SQL queries?
> Pierluigi,
>
> That should work... If you tried to configure GDAL several times, perhaps you
> should do a make clean.
>
> Could you try defining CPL_DEBUG=ON as environment variable and rerun your
> code. You should normally see a statement like the following one to create the
> SQLite virtual table that matches the shapefile layer :
>
> OGR2SQLITE: sqlite3_declare_vtab(CREATE TABLE "poly"("AREA" FLOAT,"EAS_ID"
> FLOAT,"PRFEDEA" VARCHAR(16),OGR_STYLE VARCHAR HIDDEN,"GEOMETRY"
> BLOB_POLYGON_2D_50000))
>
> Even
>

-- 
Pierluigi Guasqui
Software Engineer

Applied Coherent Technology Corporation (ACT)
www.actgate.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150210/5326208c/attachment-0001.html>


More information about the gdal-dev mailing list