Thread: default values

default values

From
"Thomas G. Lockhart"
Date:
In transcribing Jose's reference page docs, I've come across examples
where Jose has exposed deficiencies in Postgres' support of SQL92. I've
fixed several (easier than transcribing more words :) and I've run into
a bit of trouble on the latest one with the

  CREATE TABLE tablename DEFAULT VALUES

statement. I changed the parser to allow this syntax and just use a nil
pointer for the column list. Everything works OK except that the first
column's default value is not assigned correctly.

Any ideas on where to look? I'll probably commit the changes to gram.y
anyway, since it almost works. Examples below...

                        - Tom

postgres=> create table t (x text default 'default',
postgres->  i int default 1);
CREATE
postgres=> insert into t default values;
INSERT 143693 1
postgres=> select * from t;
x|i
-+-
 |1
(1 row)

postgres=> insert into t (i) values (2);
INSERT 143694 1
postgres=> select * from t;
x      |i
-------+-
       |1
default|2
(2 rows)

postgres=> create table t3 (x text default 'default',
postgres->  i int default 1, j int default 2);
CREATE
postgres=> insert into t3 default values;
INSERT 143709 1
postgres=> select * from t3;
x|i|j
-+-+-
 |1|2
(1 row)

Re: [HACKERS] default values

From
Bruce Momjian
Date:
> In transcribing Jose's reference page docs, I've come across examples
> where Jose has exposed deficiencies in Postgres' support of SQL92. I've
> fixed several (easier than transcribing more words :) and I've run into
> a bit of trouble on the latest one with the
>
>   CREATE TABLE tablename DEFAULT VALUES
>
> statement. I changed the parser to allow this syntax and just use a nil
> pointer for the column list. Everything works OK except that the first
> column's default value is not assigned correctly.
>
> Any ideas on where to look? I'll probably commit the changes to gram.y
> anyway, since it almost works. Examples below...
>

I thought you did the default values additions?  Isn't it all done in
parser/analyze.c?  My guess is that is is looking at the number of
attributes specified in the target list, while in your case you really
want it look at the number of entries NOT in the target list.


>                         - Tom
>
> postgres=> create table t (x text default 'default',
> postgres->  i int default 1);
> CREATE
> postgres=> insert into t default values;
> INSERT 143693 1
> postgres=> select * from t;
> x|i
> -+-
>  |1
> (1 row)
>
> postgres=> insert into t (i) values (2);
> INSERT 143694 1
> postgres=> select * from t;
> x      |i
> -------+-
>        |1
> default|2
> (2 rows)
>
> postgres=> create table t3 (x text default 'default',
> postgres->  i int default 1, j int default 2);
> CREATE
> postgres=> insert into t3 default values;
> INSERT 143709 1
> postgres=> select * from t3;
> x|i|j
> -+-+-
>  |1|2
> (1 row)
>
>


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] default values

From
"Thomas G. Lockhart"
Date:
> I thought you did the default values additions?  Isn't it all done in
> parser/analyze.c?  My guess is that is is looking at the number of
> attributes specified in the target list, while in your case you really
> want it look at the number of entries NOT in the target list.

I just helped rewrite the gram.y parts of the default value grammar to
do full parsing on the clause. All of the hard work (and real knowledge)
was Vadim's...

                     - Tom

Re: [HACKERS] default values

From
"Thomas G. Lockhart"
Date:
> >   CREATE TABLE tablename DEFAULT VALUES
> I thought you did the default values additions?

Sheesh. Of course, what I meant was

  INSERT INTO table DEFAULT VALUES

Sorry for the misinformation :(

                   - Tom

Re: default values

From
Vadim Mikheev
Date:
Thomas G. Lockhart wrote:
>
> In transcribing Jose's reference page docs, I've come across examples
> where Jose has exposed deficiencies in Postgres' support of SQL92. I've
> fixed several (easier than transcribing more words :) and I've run into
> a bit of trouble on the latest one with the
>
>   CREATE TABLE tablename DEFAULT VALUES
>
> statement. I changed the parser to allow this syntax and just use a nil
> pointer for the column list. Everything works OK except that the first
> column's default value is not assigned correctly.
>
> Any ideas on where to look? I'll probably commit the changes to gram.y
> anyway, since it almost works. Examples below...

DEFAULT is handled in parser/analyze.c:transformInsertStmt()...

Vadim