Skip to content

New unexprected behaviour in 2.0 version #1140

@sartor

Description

@sartor

Description

Same expression with same names param are now renamed and this breaks all queries with select and groups by same expression. In prepared statement params names are different and PostgreSQL serer refuses to execute such query.

How reproduce:

    public function testQuery(): void
    {
        $expr = new Expression("(site_id = :site)", ['site' => 1]);
        $sql = new Query($this->db())
            ->select($expr)
            ->from('users')
            ->groupBy($expr)
            ->createCommand()
            ->getSql();


        $this->assertSame('SELECT (site_id = :site) FROM "users" GROUP BY (site_id = :site)', $sql);
    }
Failed asserting that two strings are identical.
--- Expected
+++ Actual
@@ @@
-'SELECT (site_id = :site) FROM "users" GROUP BY (site_id = :site)'
+'SELECT (site_id = :site) FROM "users" GROUP BY (site_id = :site_0)'

Package version

2.0

PHP version

8.5

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