create table if not exists tb_serial(
  typserial serial primary key,
  typinteger integer not null
);

create table if not exists tb_boolean(
  typboolean boolean not null
);

create table if not exists tb_float(
  typfloat real not null
);

create table if not exists tb_string(
  typstring text not null
);

create table if not exists tb_timestamp(
  dt timestamp not null,
  dtn timestamptz not null,
  dtz timestamptz not null
);

create table if not exists tb_json(
  typjson json not null
);

create table if not exists tb_composite_pk(
  pk1 integer not null,
  pk2 integer not null,
  message text not null,
  primary key (pk1, pk2)
);

create table if not exists tb_composite_fk(
  id integer not null,
  fk1 integer not null,
  fk2 integer not null,
  foreign key (fk1, fk2) references tb_composite_pk(pk1, pk2)
);

create table if not exists tb_nullable(
  id integer primary key,
  note text null
);
