Opened 15 years ago
Closed 15 years ago
#646 closed defect (fixed)
Sqlite SelectAggregates on non featureclass does not apply filter
Reported by: | bscott | Owned by: | romicadascalescu |
---|---|---|---|
Priority: | blocker | Milestone: | 3.6.0 |
Component: | SQLite Provider | Version: | 3.5.0 |
Severity: | 3 | Keywords: | |
Cc: | External ID: |
Description
I have 2 table , created the same way using FDO One is a point featureclass ( with a geometry column) and the other is point_xy non feature class ( with x and y)
If i run SelectAggregates against the feature class "select count(1) from point where key_1 = 1" it works fine ( return 1 )
But if i try the same thing on the non feature class "select count(1) from point_xy where key_1 = 1" it returns the total amount of record in the table just like if it skipped the where clause
I'm trying to locate the problem in the code but not found anything wrong yet.
Attachments (1)
Change History (5)
by , 15 years ago
Attachment: | SelectAggregatesOnNonFeatureClass.patch added |
---|
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Owner: | changed from | to
---|
comment:3 by , 15 years ago
While this patch probably fixes the problem, it will make queries by ID slow, since it will trigger generic SQL evalauation. A better fix would probably be to not optimize away the filter in the case of an aggregate query on a non-feature class. There are two code paths in the provider for aggregates, one is optimized for geometry-based classes and the other is generic, and you are probably hitting a bug in the generic code path.
comment:4 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fixed by the following change: Date: 2010-05-10 13:19:37 -0400 (Mon, 10 May 2010) New Revision: 5501
Modified:
trunk/Providers/SQLite/Src/Provider/SltQueryTranslator.cpp
I have found a way to fix the defect. I don't exacly know if this could produce some side effets. But from our unit test (quite complete) point of view it works fine
Could you check this pacth.
Thanks Bruno