From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Cc: | Tim Landscheidt <tim(at)tim-landscheidt(dot)de> |
Subject: | Re: Implizite lossy Typecasts bei INSERTs |
Date: | 2008-12-27 11:28:21 |
Message-ID: | 200812271328.21667.peter_e@gmx.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
On Friday 26 December 2008 19:48:19 Tim Landscheidt wrote:
> Hallo,
>
> mir fiel neulich auf, dass:
> | tim=# SELECT version();
> | version
> | -------------------------------------------------------------------------
> |------------------------------ PostgreSQL 8.3.5 on i386-redhat-linux-gnu,
> | compiled by GCC gcc (GCC) 4.3.2 20081007 (Red Hat 4.3.2-6) (1 Zeile)
> |
> | tim=# CREATE TABLE Test (i INT);
> | CREATE TABLE
> | tim=# INSERT INTO Test (i) VALUES (3.1415);
> | INSERT 0 1
> | tim=# SELECT * FROM Test;
> | i
> | ---
> | 3
> | (1 Zeile)
> |
> | tim=#
>
> ohne Fehlermeldung durchläuft. Irgendwo in meinem Gedächtnis
> schlummert die Erinnerung, dass das früher anders war. Ehe
> ich die release notes der letzten Jahre noch einmal durchge-
> he :-): War das wirklich jemals anders?
Nur mal um das Verständnis vielleicht zu verbessern: Obiger Fall ist
kein "impliziter" Typecast im Sinne von CREATE CAST ... AS IMPLICIT, sondern
AS ASSIGNMENT, weil hier die Zuweisung eines Wertes in einen Speicherort mit
festgelegtem Typ stattfindet. Implizite Typecasts, die "lossy" sind, sollte
es nicht geben (zumindest in neueren Versionen), aber im Fall AS ASSIGNMENT
kann das schon vorkommen, hauptsächlich, wenn der SQL-Standard danach
verlangt.
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas 'ads' Scherbaum | 2008-12-29 10:19:01 | == Wöchentlicher PostgreSQL Newsletter - 28. Dezember 2008 == |
Previous Message | Andreas 'ads' Scherbaum | 2008-12-26 21:17:35 | Re: Implizite lossy Typecasts bei INSERTs |