Re: [RFC] PDO Float Type

From: Date: Tue, 25 Apr 2017 10:06:57 +0000
Subject: Re: [RFC] PDO Float Type
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  Groups: php.internals 
Request: Send a blank email to internals+get-98873@lists.php.net to get a copy of this message
Hi Adam, On 24/04/2017 19:46, Adam Baratz wrote: > I think we're talking about different things. I'm talking about binding > parameters. It seems like you're talking about fetching column data. You > are correct that fixed-precision values are typically fetched as > strings. One thing to note is that this can be a choice made by the PDO > driver extension. With libpq, PQgetvalue[1] returns all column data as > strings. If you look at pgsql_stmt_get_col, you'll see extra logic to > cast to a zend_bool or zend_long. Other drivers, like pdo_odbc, fetch > everything as a string. Yes, I brought fetching on the table because we should try to be consistent. If numerics are received as strings, they shouldn't be bound as PARAM_FLT, unless the user is willing to potentially lose some information. > I wrote in the RFC how each API works. They all lack this ability, > because they're all limited by the C type system. This is why I was > arguing to merge floats and fixed-precision types. It's a difference > that doesn't exist when sending data to the database. I'll admit I > wasn't paying a lot of attention to retrieving data. There's a lot of > variability between PDO drivers and I didn't want to complicate the > scope of the RFC. Again, there's no limit coming from the C type system: no one is forcing you to cast fixed precision to floating point. In fact it is the opposite: they are normally sent as strings and optionally using the internal (non-float) representation. > If I can summarize our underlying arguments, mine is that PDO parameters > should correspond to zval types and C types, yours is that PDO > parameters should correspond to database column types. A lot of PDO > internals tend to assume the former, even if the latter is the > conventional wisdom. If anything, the database libraries will be using their SQL types system as a reference, specifying what is the C-type you can use to send or retrieve data. On the other hand you argue that we should bring low-level decisions to PDO users. > Honestly, I'm not very attached to having a single type for floats and > fixed-precision. If this RFC doesn't pass, which it doesn't look like it > will, I would be just as happy to cut fixed-precision values out of it. > Though I don't have a good handle on how many of the people who voted > "no" would change their minds if fixed-precision was simply left out of > scope. I don't know, but I wouldn't as I've already explained a number of times. If anything, what I see is that very few care. Cheers -- Matteo Beccati Development & Consulting - http://www.beccati.com/

« previous php.internals (#98873) next »