Hi Eagna,

Did you check the syntax of the INSERT statement? You either need 'VALUES
...' or a query. I don't think your expression on its own is considered a
query.

Cheers,

Steve

On Wed, Nov 23, 2022 at 8:11 AM Eagna <ea...@protonmail.com> wrote:

>
> Hi all,
>
> I'm puzzled by some behaviour of the ROW constructor that I noticed when I
> was playing around.
>
> From the documentation (
> https://www.postgresql.org/docs/current/sql-expressions.html#SQL-SYNTAX-ROW-CONSTRUCTORS),
> we have
>
> NUMBER 1
>
> > SELECT ROW(1,2.5,'this is a test') = ROW(1, 3, 'not the same') AS test1;
>
> result:
>
> > test1
> > f
>
> This is fine.
>
> and then
>
> NUMBER 2
>
> > SELECT ROW(1, 2.5, 'this is a test') = (VALUES (1, 2.5, 'this is a
> test')) AS test2;
>
> result:
>
> > test2
> > t
>
> OK - notice the equivalence of a ROW constructor and a VALUES clause.
>
> So, then I create this table:
>
> > CREATE TABLE test
> > (
> >  a INT NOT NULL,
> >  b INT NOT NULL,
> >  c TEXT NOT NULL
> > );
>
> and then tried:
>
> NUMBER 3
>
> > INSERT INTO test ((ROW (1, 2.4, 'test...')));
>
> and I get:
>
> > ERROR:  syntax error at or near "ROW"
> > LINE 1: INSERT INTO test ((ROW (1, 2.4, 'test...')));
>
>
> I tried various permutations of brackets and whatnot but nothing doing.
>
>
> My question is that if a ROW constructor works for a VALUES clause in
> statement NUMBER 2, then why not NUMBER 3?
>
>
> TIA and rgs,
>
> E.
>
>
>
>
>

Reply via email to