Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.6k
[Lock] Fix using fractional TTLs#61085
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:6.4
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
$platform instanceof \Doctrine\DBAL\Platforms\MySQL57Platform => 'UNIX_TIMESTAMP()', | ||
$platform instanceof \Doctrine\DBAL\Platforms\SqlitePlatform => 'strftime(\'%s\',\'now\')', | ||
$platform instanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform, | ||
$platform instanceof \Doctrine\DBAL\Platforms\PostgreSQL94Platform => 'CAST(EXTRACT(epoch FROM NOW()) ASINT)', | ||
$platform instanceof \Doctrine\DBAL\Platforms\PostgreSQL94Platform => 'CAST(EXTRACT(epoch FROM NOW()) ASDOUBLE PRECISION)', | ||
$platform instanceof \Doctrine\DBAL\Platforms\OraclePlatform => '(SYSDATE - TO_DATE(\'19700101\',\'yyyymmdd\'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3))*3600', | ||
$platform instanceof \Doctrine\DBAL\Platforms\SQLServerPlatform, | ||
$platform instanceof \Doctrine\DBAL\Platforms\SQLServer2012Platform => 'DATEDIFF(s, \'1970-01-01\', GETUTCDATE())', |
nicolas-grekasJul 15, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Let's provide the same precision on other platforms then:
$platforminstanceof \Doctrine\DBAL\Platforms\MySQL57Platform =>'UNIX_TIMESTAMP()', | |
$platforminstanceof \Doctrine\DBAL\Platforms\SqlitePlatform =>'strftime(\'%s\',\'now\')', | |
$platforminstanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform, | |
$platforminstanceof \Doctrine\DBAL\Platforms\PostgreSQL94Platform =>'CAST(EXTRACT(epoch FROM NOW()) ASINT)', | |
$platforminstanceof \Doctrine\DBAL\Platforms\PostgreSQL94Platform =>'CAST(EXTRACT(epoch FROM NOW())ASDOUBLE PRECISION)', | |
$platforminstanceof \Doctrine\DBAL\Platforms\OraclePlatform =>'(SYSDATE - TO_DATE(\'19700101\',\'yyyymmdd\'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone), 1, 3))*3600', | |
$platforminstanceof \Doctrine\DBAL\Platforms\SQLServerPlatform, | |
$platforminstanceof \Doctrine\DBAL\Platforms\SQLServer2012Platform=>'DATEDIFF(s,\'1970-01-01\', GETUTCDATE())', | |
$platforminstanceof \Doctrine\DBAL\Platforms\MySQL57Platform =>'UNIX_TIMESTAMP(NOW(6))', | |
$platforminstanceof \Doctrine\DBAL\Platforms\SqlitePlatform =>"(julianday('now') - 2440587.5) * 86400.0", | |
$platforminstanceof \Doctrine\DBAL\Platforms\PostgreSQLPlatform, | |
$platforminstanceof \Doctrine\DBAL\Platforms\PostgreSQL94Platform =>'CAST(EXTRACT(epoch FROM NOW()) ASDOUBLE PRECISION)', | |
$platforminstanceof \Doctrine\DBAL\Platforms\OraclePlatform =>"(CAST(systimestamp AT TIME ZONE 'UTC'ASDATE) - DATE '1970-01-01') * 86400 + TO_NUMBER(TO_CHAR(systimestamp AT TIME ZONE 'UTC', 'SSSSS.FF'))", | |
$platforminstanceof \Doctrine\DBAL\Platforms\SQLServerPlatform, | |
$platforminstanceof \Doctrine\DBAL\Platforms\SQLServer2012Platform =>"CAST(DATEDIFF_BIG(ms, '1970-01-01', SYSUTCDATETIME()) AS FLOAT) / 1000.0", | |
default=>(new \DateTimeImmutable())->format('U.u'), |
nicolas-grekas left a comment• edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Looks like PdoStore also needs to be patched
Discussion
Solves issue#59938
When using the PostgreSQLDBALStore with Scheduler it will cast an invalid result. Scheduler generates a TTL as float and PostgreSQL expects an integer.
https://github.com/manuelderuiter/symfony_59938/actions/runs/16187766978
after the fix
https://github.com/manuelderuiter/symfony_59938/actions/runs/16187926234