[gdal-dev] OGR SQL: Excecuting select where column name contains "."
Odd Ragnar Lydersen
Odd-Ragnar.Lydersen at powel.no
Mon Oct 8 01:42:52 PDT 2012
I see you have been busy discussing how to handle column names which contain dot "."
My problem is that I can't get any reasonable values from the query I make, whether I use "str1.str2" or 'str1.str2' in my expression.
In my C++ code this is:
a) const char *sSqlQuery = "SELECT \"str1.str2\" FROM 'layers:layer1'\"
b) const char *sSqlQuery = "SELECT 'str1.str2' FROM 'layers:layer1'\"
The result is the same, and I get no errors, but the column name returned to me is FIELD_1, and all values are str1.str2
What am I missing here?
When I run an ordinary query like:
const char *sSqlQuery = "SELECT \"str\" FROM 'layers:layer1'\"
then I get the correct result.
I've debugged a bit and found that OGRGenSQLResultsLayer::OGRGenSQLResultsLayer(), in ogr_gensql.cpp, generates the FIELD_1 name:
if( strlen(psColDef->field_name) == 0 )
{
CPLFree( psColDef->field_name );
psColDef->field_name = (char *) CPLMalloc(40);
sprintf( psColDef->field_name, "FIELD_%d", iField+1 );
}
Please help, or confirm if I'm trying to do something illegal
>Odd-Ragnar<
-----Original Message-----
From: Even Rouault [mailto:even.rouault at mines-paris.org]
Sent: 5. oktober 2012 18:39
To: Rahkonen Jukka
Cc: gdal-dev at lists.osgeo.org
Subject: Re: [gdal-dev] OGR SQL: Excecuting select where column name contains "."
> To follow SQL, it is recommended to you double-quote characters,
> > which might require SHELL escaping since they are already in a
> double-quoted
> > string, like :
>
> Yes, that's a good theory but it is not easy to use it on Windows.
> Does anybody in the world know how should this one be escaped? I have
> already tried to use ^" as inner double quotes but without success, as
> well as having two ^^ and three ^^^.
Doh! my webmail client has changed what I have typed ! To escape double-quote in Windows shell, you need to put a backslash character before them.
More information about the gdal-dev
mailing list