Aura.SqlQuery icon indicating copy to clipboard operation
Aura.SqlQuery copied to clipboard

Quoting problem with cast() on postgres

Open inghamn opened this issue 7 years ago • 2 comments

I'm on postgres and am writing a select that converts an integer field to varchar, so I can compare using "like". The 2.x branch misquotes the cast structure's datatype.

<?php
$select = $this->queryFactory->newSelect();
$select->cols(['street_number'])
        ->from('addresses')
        ->where('cast(street_number as varchar) like ?', '10%');
return $select->getStatement();
SELECT
    street_number
FROM
    "addresses"
WHERE
    cast(street_number AS "varchar) like :_1_"

inghamn avatar Feb 01 '18 18:02 inghamn

3.x does this as well - the issue is with naive quoting on the AS statement - see

https://github.com/auraphp/Aura.SqlQuery/blob/3.x/src/Common/Quoter.php#L88

I'm doing a getStatement and regexing the fix out of the final query for now, as fixing this is not a small thing Probably need to change the strripos check to be smarter( regex?) or change the CAST to be a pgsql specific builder

auroraeosrose avatar May 04 '22 19:05 auroraeosrose

@auroraeosrose as you mentioned this recently, does this have the same problem for the PR https://github.com/auraphp/Aura.SqlQuery/pull/142 . Or does this resolve the issue ? If possible could you do a test on that branch ? There were some requests for releasing 3.x and I was just looking into the issues and PR's.

harikt avatar May 21 '22 12:05 harikt