[gdal-dev] OGR SQL and lother dialects?

Even Rouault even.rouault at spatialys.com
Fri Dec 4 08:20:47 PST 2015


Le vendredi 04 décembre 2015 17:04:12, Jürgen E. Fischer a écrit :
> Hi Even,
> 
> On Fri, 04. Dec 2015 at 14:29:47 +0100, Even Rouault wrote:
> > Le vendredi 04 décembre 2015 14:08:40, Paolo Cavallini a écrit :
> > > Hi all,
> > > apparently the OGR SQL dialect is different from others:
> > > https://hub.qgis.org/issues/7380
> > > Any hope to bring them to common ground?
> > 
> > I believe x = NULL is an extension of the SQL standard that may
> > be supported or not by the various SQL engines.
> > AFAIK, the SQL 92 standard only accepts the "x IS NULL" syntax.
> > 
> > From my tests:
> > 
> > - SQLite rejects "x = NULL" syntax.
> 
> Not here.
> 
> SELECT 1 WHERE ''=NULL

Ah indeed when trying directly with SQLite. My initial test was through -
dialect SQLite which uses a SQLite virtual table mechanism, and that might be 
in its implementation in OGR that it is rejected.

> 
> returns no rows in sqlite3 - consistent with what I found in PostgreSQL and
> Oracle (add "FROM dual" there).
> 
> > - OGR SQL accepts it (does not error on it), but it's more in the
> > unspecified behaviour category and apparently doesn't behave like x IS
> > NULL. I guess this must be evaluated like x = '' internally.
> 
> That might have been the original behaviour which caused the problem - but
> it seems to have changed.

Actually when trying with GDAL 1.10, it seems = NULL behaves like IS NULL. And 
starting with 1.11, it returns empty result set. I doubt any of the 2 
behaviour was really intended since there's no test in the regression suite 
for the = NULL syntax.

> 
> I found that OGR SQL (if that's still the default dialect) now behaves like
> the others in that regard and x=NULL is different from x IS NULL.   I
> updated the ticket accordingly.
> 
> 
> Jürgen

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list