default value CURRENT_TIMESTAMP in TIMESTAMP is a string value 'CURRENT_TIMESTAMP' in pgsql >= 10.0

Started by Bogdan Stepanenkoover 8 years ago1 messagesbugs
Jump to latest
#1Bogdan Stepanenko
bscheshir@gmail.com

related
https://github.com/yiisoft/yii2/issues/15247
https://github.com/yiisoft/yii2/issues/15254
https://github.com/yiisoft/yii2/issues/15265
<https://github.com/yiisoft/yii2/issues/15254&gt;

1. create table with

CREATE TABLE "type" (
int_col integer NOT NULL,
int_col2 integer DEFAULT '1',
smallint_col smallint DEFAULT '1',
char_col char(100) NOT NULL,
char_col2 varchar(100) DEFAULT 'something',
char_col3 text,
float_col double precision NOT NULL,
float_col2 double precision DEFAULT '1.23',
blob_col bytea,
numeric_col decimal(5,2) DEFAULT '33.22',
time timestamp NOT NULL DEFAULT '2002-01-01 00:00:00',
bool_col boolean NOT NULL,
bool_col2 boolean DEFAULT TRUE,
ts_default TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
bit_col BIT(8) NOT NULL DEFAULT B'10000010',
bigint_col BIGINT
);

2. Get declaration of `types` from the information schema throw PDO
3. Get data about `ts_default`
Result: Default value of `ts_default` is a raw string 'CURRENT_TIMESTAMP',
not a expression `now()`

I try with this versions (official docker images like `image:
postgres:10.0`):
9.6.6 is a expression `now()`.
10.0 and 10.1 is not use string instead of expression `now()`.