<div dir="ltr">So it's this code fragment?<div><div>419     /* Requirement 6: The SQLite PRAGMA integrity_check SQL command SHALL return â??okâ? */</div><div>420<span class="" style="white-space:pre">    </span>    /* <a href="http://opengis.github.io/geopackage/#_file_integrity">http://opengis.github.io/geopackage/#_file_integrity</a> */</div>
<div>421<span class="" style="white-space:pre"> </span>    if( strncmp(pszFilename, "/vsicurl/", strlen("/vsicurl/")) != 0 &&</div><div>422<span class="" style="white-space:pre">    </span>        OGRERR_NONE != PragmaCheck("integrity_check", "ok", 1) )</div>
</div><div><br></div><div>Looks strange to me why a single file check woold be the bottlenet since this should be a single call.</div><div><br></div><div>I would have expected that some repeated calls (like reading objects/records and checking SRID or data types) would be the bottleneck since SQlite is not performant when used with PRAGMA checks. This would be a check one could disable with a parameter.</div>
<div><br></div><div>--S.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-17 10:29 GMT+02:00 Jeremy Palmer <span dir="ltr"><<a href="mailto:JPalmer@linz.govt.nz" target="_blank">JPalmer@linz.govt.nz</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">HI Stefan,<br>
<br>
Call from QGIS is here: <a href="https://github.com/qgis/QGIS/blob/master/src/providers/ogr/qgsogrfeatureiterator.cpp#L45" target="_blank">https://github.com/qgis/QGIS/blob/master/src/providers/ogr/qgsogrfeatureiterator.cpp#L45</a><br>

<br>
GDAL code is here:<br>
<br>
<a href="http://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp#L421" target="_blank">http://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp#L421</a><br>

<br>
My profiler says all the time is in OGRGeoPackageDataSource::Open.<br>
<br>
Also a simple check via the command line for the given database:<br>
<br>
qlite3 test_parcels.gpkg<br>
sqlite> .timer ON<br>
sqlite> PRAGMA integrity_check;<br>
ok<br>
CPU Time: user 3.384211 sys 0.756047<br>
<br>
Cheers,<br>
Jeremy<br>
________________________________________<br>
From: Stefan Keller [<a href="mailto:sfkeller@gmail.com">sfkeller@gmail.com</a>]<br>
Sent: Saturday, 17 May 2014 8:20 p.m.<br>
To: Jeremy Palmer<br>
Cc: <a href="mailto:qgis-developer@lists.osgeo.org">qgis-developer@lists.osgeo.org</a><br>
Subject: Re: [Qgis-developer] Geospackage Slow in QGIS<br>
<div class=""><br>
Hi Jeremy<br>
<br>
Is this PRAGMA integrity_check really the bottle neck?<br>
Is it an integrity check on a data type (e.g. integer - its probably actually an integrity check on SRID)?<br>
Can you point to the code?<br>
<br>
Yours, Stefan<br>
<br>
<br>
<br>
</div>2014-05-17 9:32 GMT+02:00 Jeremy Palmer <<a href="mailto:JPalmer@linz.govt.nz">JPalmer@linz.govt.nz</a><mailto:<a href="mailto:JPalmer@linz.govt.nz">JPalmer@linz.govt.nz</a>>>:<br>
<div class="">I've just been using the new implementation of Geopackage in QGIS :) However each map render or feature info is very slow for large database files - even with the new GDAL/OGR Geopackage spatial index support. Each time QGIS renders a new map view or executes a feature info it re-opens the Geopackage file in QgsOgrFeatureIterator via OGROpen, and the Geopackage driver open method runs PRAGMA integrity_check which is very slow (4 secs with my 2GB test file). This integrity check is actually a Geopackage requirement.<br>

<br>
How can this be fixed? At the in QGIS or GDAL/OGR level?<br>
<br>
Cheers,<br>
Jeremy<br>
<br>
</div>This message contains information, which may be in confidence and may be subject to legal privilege. If you are not the intended recipient, you must not peruse, use, disseminate, distribute or copy this message. If you have received this message in error, please notify us immediately (Phone 0800 665 463 or <a href="mailto:info@linz.govt.nz">info@linz.govt.nz</a><mailto:<a href="mailto:info@linz.govt.nz">info@linz.govt.nz</a>>) and destroy the original message. LINZ accepts no responsibility for changes to this email, or for any attachments, after its transmission from LINZ. Thank You.<br>

_______________________________________________<br>
Qgis-developer mailing list<br>
<a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><mailto:<a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a>><br>
<a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
</blockquote></div><br></div>