summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
b3b44d9)
Recursive SQL queries are incorrectly returning maxDepth + 1 levels
of fragments due to incorrect comparison in the WHERE clause.
This code is used by getDataNodes and queryDataNodes to
prefetch the descendants before converting to datanodes.
Prefetching extra descendants causes high memory usage.
Issue-ID: CPS-1716
Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech>
Change-Id: Ie22215c0c7018cd293f73cf75adca2cd55f218a6
+ " UNION "\r
+ " SELECT c.id, depth + 1 "\r
+ " FROM fragment c INNER JOIN parent_search p ON c.parent_id = p.id"\r
+ " UNION "\r
+ " SELECT c.id, depth + 1 "\r
+ " FROM fragment c INNER JOIN parent_search p ON c.parent_id = p.id"\r
- + " WHERE depth <= (SELECT CASE WHEN :maxDepth = -1 THEN " + Integer.MAX_VALUE + " ELSE :maxDepth END) "\r
+ + " WHERE depth < (SELECT CASE WHEN :maxDepth = -1 THEN " + Integer.MAX_VALUE + " ELSE :maxDepth END) "\r
+ ") "\r
+ "SELECT f.id, anchor_id AS anchorId, xpath, f.parent_id AS parentId, CAST(attributes AS TEXT) AS attributes "\r
+ "FROM fragment f INNER JOIN parent_search p ON f.id = p.id",\r
+ ") "\r
+ "SELECT f.id, anchor_id AS anchorId, xpath, f.parent_id AS parentId, CAST(attributes AS TEXT) AS attributes "\r
+ "FROM fragment f INNER JOIN parent_search p ON f.id = p.id",\r
+ " UNION "\r
+ " SELECT c.id, depth + 1 "\r
+ " FROM fragment c INNER JOIN parent_search p ON c.parent_id = p.id"\r
+ " UNION "\r
+ " SELECT c.id, depth + 1 "\r
+ " FROM fragment c INNER JOIN parent_search p ON c.parent_id = p.id"\r
- + " WHERE depth <= (SELECT CASE WHEN :maxDepth = -1 THEN " + Integer.MAX_VALUE + " ELSE :maxDepth END) "\r
+ + " WHERE depth < (SELECT CASE WHEN :maxDepth = -1 THEN " + Integer.MAX_VALUE + " ELSE :maxDepth END) "\r
+ ") "\r
+ "SELECT f.id, anchor_id AS anchorId, xpath, f.parent_id AS parentId, CAST(attributes AS TEXT) AS attributes "\r
+ "FROM fragment f INNER JOIN parent_search p ON f.id = p.id",\r
+ ") "\r
+ "SELECT f.id, anchor_id AS anchorId, xpath, f.parent_id AS parentId, CAST(attributes AS TEXT) AS attributes "\r
+ "FROM fragment f INNER JOIN parent_search p ON f.id = p.id",\r