Skip to content

the method of ExpressionDeParser#visit(SubSelect subSelect) ignor subSelect#withItemsList #406

@yangzhi-yzh

Description

@yangzhi-yzh

test demo:

INSERT INTO task_9675646654458216_5187031(task_id, mesh, roadh, road_id)
SELECT nextval('id_seq') task_id,
task_road.mesh,
task_road.length AS roadh,
task_road.road_id
FROM grid_road_1000 gr,
road_conf task_road
WHERE gr.gid= task_road.gid
AND gr.direction IN(2, 3)
AND NOT EXISTS(WITH v AS(
SELECT _tr.gid, geom, fway, fc, roads
FROM task_road _tr, grid_road_1000 _gr
WHERE _tr.gid= _gr.gid), v1 AS(
SELECT gid, geom
FROM v
WHERE fway IN(2, 1)), v2 AS(
SELECT gid, geom
FROM v
WHERE fc IN(1, 2)
AND roads IN(410000))
SELECT 1
FROM v1
WHERE v1.gid= gr.gid
AND NOT EXISTS(
SELECT 1
FROM v2
WHERE st_scale(v2.geom, 1 / 3600.0, 1 / 3600.0, 4326) ::geography) <= 20))


changed with:

@Override
public void visit(SubSelect subSelect) {
    buffer.append("(");
    if (selectVisitor != null) {
        
        /*  InsertDeParser.java line 109 */
        if (subSelect.getWithItemsList() != null) {
            buffer.append("WITH ");
            
            List<WithItem> list = subSelect.getWithItemsList();
            for (int i = 0; i < list.size(); i++) {
                list.get(i).accept(selectVisitor);
                buffer.append(((i < list.size() - 1) ? ", " : ""));
            }
            
            buffer.append(" ");
        }

        subSelect.getSelectBody().accept(selectVisitor);
    }

    buffer.append(")");
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions