Opened 12 years ago

Closed 12 years ago

#558 closed defect (fixed)

SQLite filter processing can output filters that result in sqlite parser stack overflow

Reported by: traianstanev Owned by: romicadascalescu
Priority: major Milestone: 3.5.0
Component: SQLite Provider Version: 3.4.0
Severity: 3 Keywords:
Cc: External ID:

Description

The SQLite filter processor converts this:

Below is what we get from FDO when we call ToString?

UNIQUEID = 400 OR UNIQUEID = 1789 OR UNIQUEID = 1790 OR UNIQUEID = 1791 OR UNIQUEID = 1792 OR UNIQUEID = 1793 OR ..... to this (notice the nested ()):

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((UNIQUEID = 400) OR (UNIQUEID = 1789)) OR (UNIQUEID = 1790)) OR (UNIQUEID = 1791)) OR (UNIQUEID = 1792)) OR (UNIQUEID = 1793)) OR (UNIQUEID = 1794)) OR (UNIQUEID = 1795)) OR (UNIQUEID = 1796)) OR (UNIQUEID = 1797)) OR (UNIQUEID = 1798)) OR (UNIQUEID = 1799)) OR (UNIQUEID = 1800)) OR (UNIQUEID = 1801)) OR (UNIQUEID = 1802)) OR (UNIQUEID = 1803)) OR (UNIQUEID = 1804)) OR (UNIQUEID = 1805)) OR (UNIQUEID = 1806)) OR (UNIQUEID = 1807)) OR (UNIQUEID = 1962)) OR (UNIQUEID = 1963)) OR (UNIQUEID = 1966)) OR .....

For large queries, this results in parser stack overflow inside sqlite.

Change History (2)

comment:1 Changed 12 years ago by traianstanev

Owner: changed from traianstanev to romicadascalescu

Romy has a fix for this.

comment:2 Changed 12 years ago by gregboone

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.