Обсуждение: Help convincing a vendor....
to include PostgreSQL in addition to MySQL in an enhancement package. I'm involved in a beta for some extensions for said vendor, and am looking for COGENT arguments for them to include BOTH MySQL (they already include MySQL in the package, and for the "other OS" may "have" to do PG for stability reasons). Anyone on this list have arguments I can use? I can't say the vendors name due to NDA, but if you've seen my postings, you can guess. LER -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: ler@lerctr.org US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
On Tue, 15 Jul 2003, Larry Rosenman wrote: > to include PostgreSQL in addition to MySQL in an enhancement package. > > I'm involved in a beta for some extensions for said vendor, and am looking > for COGENT > arguments for them to include BOTH MySQL (they already include MySQL in the > package, and > for the "other OS" may "have" to do PG for stability reasons). > > Anyone on this list have arguments I can use? > > I can't say the vendors name due to NDA, but if you've seen my postings, > you can guess. 1: MySQL 4.1 GPLs the connect libs. I.e. either you buy a commercial license or you GPL your code. Hence, all installations this vendor wants to sell will need to include a commercially licensed MySQL. 2: supporting ANSI standard SQL is a good idea (TM) because it makes it that much easier to port to other databases. I.e. the initial cost of porting to Postgresql makes porting to the third, fourth, etc... databases that much easier. 3: Stability and load handling are better in Postgresql. But you already kinda mentioned that one.
On Tue, Jul 15, 2003 at 11:28:32AM -0500, Larry Rosenman wrote:
> I'm involved in a beta for some extensions for said vendor, and am looking
> for COGENT
> arguments for them to include BOTH MySQL (they already include MySQL in the
> package, and
> for the "other OS" may "have" to do PG for stability reasons).
Well, what about, "We have to use PostgreSQL, because our accounting
department requires stability in numeric data. In MySQL, numeric()
gets stored internally as a float, and that leads to potential
problems in accounting applications."
I didn't know about the numeric/float issue in MySQL, but I know for
sure that it would automatically disqualify it for anything we'd use
it for.
A
--
----
Andrew Sullivan 204-4141 Yonge Street
Liberty RMS Toronto, Ontario Canada
<andrew@libertyrms.info> M2P 2A8
+1 416 646 3304 x110
--On Tuesday, July 15, 2003 15:49:47 -0400 Andrew Sullivan <andrew@libertyrms.info> wrote: > On Tue, Jul 15, 2003 at 11:28:32AM -0500, Larry Rosenman wrote: > >> I'm involved in a beta for some extensions for said vendor, and am >> looking for COGENT >> arguments for them to include BOTH MySQL (they already include MySQL in >> the package, and >> for the "other OS" may "have" to do PG for stability reasons). > > Well, what about, "We have to use PostgreSQL, because our accounting > department requires stability in numeric data. In MySQL, numeric() > gets stored internally as a float, and that leads to potential > problems in accounting applications." > > I didn't know about the numeric/float issue in MySQL, but I know for > sure that it would automatically disqualify it for anything we'd use > it for. > > A Good one. I hadn't seen that till recently on one list here or another. Keep 'em coming folks. I'm forwarding to the beta coordinator. LER -- Larry Rosenman http://www.lerctr.org/~ler Phone: +1 972-414-9812 E-Mail: ler@lerctr.org US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749
On Tue, 15 Jul 2003, Andrew Sullivan wrote: > On Tue, Jul 15, 2003 at 11:28:32AM -0500, Larry Rosenman wrote: > > > I'm involved in a beta for some extensions for said vendor, and am looking > > for COGENT > > arguments for them to include BOTH MySQL (they already include MySQL in the > > package, and > > for the "other OS" may "have" to do PG for stability reasons). > > Well, what about, "We have to use PostgreSQL, because our accounting > department requires stability in numeric data. In MySQL, numeric() > gets stored internally as a float, and that leads to potential > problems in accounting applications." > > I didn't know about the numeric/float issue in MySQL, but I know for > sure that it would automatically disqualify it for anything we'd use > it for. See my recent correction about this. however, it wouldn't surprise me to find out that while they get stored as strings, they quite likely get operated on as floats...
On Tue, 15 Jul 2003, scott.marlowe wrote:
> On Tue, 15 Jul 2003, Andrew Sullivan wrote:
>
> > On Tue, Jul 15, 2003 at 11:28:32AM -0500, Larry Rosenman wrote:
> >
> > > I'm involved in a beta for some extensions for said vendor, and am looking
> > > for COGENT
> > > arguments for them to include BOTH MySQL (they already include MySQL in the
> > > package, and
> > > for the "other OS" may "have" to do PG for stability reasons).
> >
> > Well, what about, "We have to use PostgreSQL, because our accounting
> > department requires stability in numeric data. In MySQL, numeric()
> > gets stored internally as a float, and that leads to potential
> > problems in accounting applications."
> >
> > I didn't know about the numeric/float issue in MySQL, but I know for
> > sure that it would automatically disqualify it for anything we'd use
> > it for.
>
> See my recent correction about this. however, it wouldn't surprise me to
> find out that while they get stored as strings, they quite likely get
> operated on as floats...
OK, I did some testing. This script produces different output on mysql
than on postgresql (testing the mysql 3.23.xx version that comes with
RH7.2, and postgresql 7.3.3 installed from .tar.gz):
create table test (i1 numeric (10,2), i2 numeric(10,2));
insert into test values (123.123,123.123);
insert into test values (123.13,123.12);
select i1*i2 from test;
Postgresql produces this:
?column?
------------
15158.5344
15159.7656
While MySQL produces this:
+----------+
| i1*i2 |
+----------+
| 15158.53 |
| 15159.77 |
+----------+
Note that the mysql result is constrained by the numeric, and it's rounded
off.
Changing the select in postgresql to:
select (i1*i2)::numeric(10,2) from test;
gets the output in numeric format.
This loss of scale is against SQL spec, which states (SQL92 draft):
(QUOTE)
1) If the data type of both operands of a dyadic arithmetic operator is
exact numeric, then the data type of the result is exact numeric, with
precision and scale determined as follows:
a) Let S1 and S2 be the scale of the first and second operands
respectively.
b) The precision of the result of addition and subtraction is
implementation-defined, and the scale is the maximum of S1
and S2.
c) The precision of the result of multiplication is implementation
defined, and the scale is S1 + S2.
(/QUOTE)
Note that the result should therefore have a precion of (x,4)