On Wednesday, 23 October 2024 at 17:36, Calvin Buckley <cal...@cmpct.info> wrote:
> Hi internals, > > I've been debugging some recent issues users have had, as well as > discussing some related ones. I've come to the conclusion there's a lot > issues with applications trying to access binary data via PDO drivers. > > For example > > - Binary data when quoting in SQL Server can easily get mangled, as the > quoter can't handle binary data and truncates the string. It's > possible other drivers are like this too. > - ODBC drivers can be unpredictable behaviour wise when binding binary > data as SQL_C_CHAR (like what the get_col handler does). In the case > of one driver, it will hex encode the data and can confuse the size > handling in the get_col handler. > > I've thought about overriding the LOB semantics for quick fixes, but > this isn't the right solution, as a LOB and binary data are orthogonal; > i.e. CLOBs are LOB strings and VARBINARY doesn't have LOB semantics. A > binary type (or modifier, i.e. like intl/natl, not to bikeshed tho) can > also be used w/ string columns in the database to possibly override i.e. > automatic charset encoding changes from an ODBC driver. > > I had previously made an issue and PR (links below), but I'm discussing > on internals to revitalize the conversation after being motivated by > recent issues. I'd like to hear from users, database extn. developers, > and userland database library extension developers if this is the right > approach, and if I should move forward dusting off the PR and probably > writing an RFC. Said PR includes the changes needed for DBLIB, ODBC, and > SQLite driver wise, as well as some tests. MySQL/Postgres/Firebird > support would need to be added. > > ~calvinb > > [issue]: https://github.com/php/php-src/issues/11462 > [pr]: https://github.com/php/php-src/pull/11674 Sorry for the late reply, I think this makes a lot of sense and would be in favour of including this in PDO. Best regards, Gina P. Banyard