The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

CREATE TABLE "artist" (
"artistid" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100),
"rank" integer NOT NULL DEFAULT 13,
"charfield" char(10)
);
CREATE INDEX "artist_name_hookidx" ON "artist" ("name");
CREATE UNIQUE INDEX "artist_name" ON "artist" ("name");
CREATE UNIQUE INDEX "u_nullable" ON "artist" ("charfield", "rank");
CREATE TABLE "bindtype_test" (
"id" INTEGER PRIMARY KEY NOT NULL,
"bytea" blob,
"blob" blob,
"clob" clob,
"a_memo" memo
);
CREATE TABLE "collection" (
"collectionid" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL
);
CREATE TABLE "encoded" (
"id" INTEGER PRIMARY KEY NOT NULL,
"encoded" varchar(100)
);
CREATE TABLE "event" (
"id" INTEGER PRIMARY KEY NOT NULL,
"starts_at" date NOT NULL,
"created_on" timestamp NOT NULL,
"varchar_date" varchar(20),
"varchar_datetime" varchar(20),
"skip_inflation" datetime,
"ts_without_tz" datetime
);
CREATE TABLE "fourkeys" (
"foo" integer NOT NULL,
"bar" integer NOT NULL,
"hello" integer NOT NULL,
"goodbye" integer NOT NULL,
"sensors" character(10) NOT NULL,
"read_count" int,
PRIMARY KEY ("foo", "bar", "hello", "goodbye")
);
CREATE TABLE "genre" (
"genreid" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL
);
CREATE UNIQUE INDEX "genre_name" ON "genre" ("name");
CREATE TABLE "link" (
"id" INTEGER PRIMARY KEY NOT NULL,
"url" varchar(100),
"title" varchar(100)
);
CREATE TABLE "money_test" (
"id" INTEGER PRIMARY KEY NOT NULL,
"amount" money
);
CREATE TABLE "noprimarykey" (
"foo" integer NOT NULL,
"bar" integer NOT NULL,
"baz" integer NOT NULL
);
CREATE UNIQUE INDEX "foo_bar" ON "noprimarykey" ("foo", "bar");
CREATE TABLE "onekey" (
"id" INTEGER PRIMARY KEY NOT NULL,
"artist" integer NOT NULL,
"cd" integer NOT NULL
);
CREATE TABLE "owners" (
"id" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL
);
CREATE UNIQUE INDEX "owners_name" ON "owners" ("name");
CREATE TABLE "producer" (
"producerid" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL
);
CREATE UNIQUE INDEX "prod_name" ON "producer" ("name");
CREATE TABLE "self_ref" (
"id" INTEGER PRIMARY KEY NOT NULL,
"name" varchar(100) NOT NULL
);
CREATE TABLE "sequence_test" (
"pkid1" integer NOT NULL,
"pkid2" integer NOT NULL,
"nonpkid" integer NOT NULL,
"name" varchar(100),
PRIMARY KEY ("pkid1", "pkid2")
);
CREATE TABLE "serialized" (
"id" INTEGER PRIMARY KEY NOT NULL,
"serialized" text NOT NULL
);
CREATE TABLE "timestamp_primary_key_test" (
"id" timestamp NOT NULL DEFAULT current_timestamp,
PRIMARY KEY ("id")
);
CREATE TABLE "treelike" (
"id" INTEGER PRIMARY KEY NOT NULL,
"parent" integer,
"name" varchar(100) NOT NULL,
FOREIGN KEY ("parent") REFERENCES "treelike"("id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "treelike_idx_parent" ON "treelike" ("parent");
CREATE TABLE "twokeytreelike" (
"id1" integer NOT NULL,
"id2" integer NOT NULL,
"parent1" integer NOT NULL,
"parent2" integer NOT NULL,
"name" varchar(100) NOT NULL,
PRIMARY KEY ("id1", "id2"),
FOREIGN KEY ("parent1", "parent2") REFERENCES "twokeytreelike"("id1", "id2")
);
CREATE INDEX "twokeytreelike_idx_parent1_parent2" ON "twokeytreelike" ("parent1", "parent2");
CREATE UNIQUE INDEX "tktlnameunique" ON "twokeytreelike" ("name");
CREATE TABLE "typed_object" (
"objectid" INTEGER PRIMARY KEY NOT NULL,
"type" varchar(100) NOT NULL,
"value" varchar(100) NOT NULL
);
CREATE TABLE "artist_undirected_map" (
"id1" integer NOT NULL,
"id2" integer NOT NULL,
PRIMARY KEY ("id1", "id2"),
FOREIGN KEY ("id1") REFERENCES "artist"("artistid") ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY ("id2") REFERENCES "artist"("artistid")
);
CREATE INDEX "artist_undirected_map_idx_id1" ON "artist_undirected_map" ("id1");
CREATE INDEX "artist_undirected_map_idx_id2" ON "artist_undirected_map" ("id2");
CREATE TABLE "bookmark" (
"id" INTEGER PRIMARY KEY NOT NULL,
"link" integer,
FOREIGN KEY ("link") REFERENCES "link"("id") ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE INDEX "bookmark_idx_link" ON "bookmark" ("link");
CREATE TABLE "books" (
"id" INTEGER PRIMARY KEY NOT NULL,
"source" varchar(100) NOT NULL,
"owner" integer NOT NULL,
"title" varchar(100) NOT NULL,
"price" integer,
FOREIGN KEY ("owner") REFERENCES "owners"("id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "books_idx_owner" ON "books" ("owner");
CREATE UNIQUE INDEX "books_title" ON "books" ("title");
CREATE TABLE "employee" (
"employee_id" INTEGER PRIMARY KEY NOT NULL,
"position" integer NOT NULL,
"group_id" integer,
"group_id_2" integer,
"group_id_3" integer,
"name" varchar(100),
"encoded" integer,
FOREIGN KEY ("encoded") REFERENCES "encoded"("id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "employee_idx_encoded" ON "employee" ("encoded");
CREATE TABLE "forceforeign" (
"artist" INTEGER PRIMARY KEY NOT NULL,
"cd" integer NOT NULL,
FOREIGN KEY ("artist") REFERENCES "artist"("artistid")
);
CREATE TABLE "self_ref_alias" (
"self_ref" integer NOT NULL,
"alias" integer NOT NULL,
PRIMARY KEY ("self_ref", "alias"),
FOREIGN KEY ("alias") REFERENCES "self_ref"("id"),
FOREIGN KEY ("self_ref") REFERENCES "self_ref"("id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "self_ref_alias_idx_alias" ON "self_ref_alias" ("alias");
CREATE INDEX "self_ref_alias_idx_self_ref" ON "self_ref_alias" ("self_ref");
CREATE TABLE "track" (
"trackid" INTEGER PRIMARY KEY NOT NULL,
"cd" integer NOT NULL,
"position" int NOT NULL,
"title" varchar(100) NOT NULL,
"last_updated_on" datetime,
"last_updated_at" datetime,
FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "track_idx_cd" ON "track" ("cd");
CREATE UNIQUE INDEX "track_cd_position" ON "track" ("cd", "position");
CREATE UNIQUE INDEX "track_cd_title" ON "track" ("cd", "title");
CREATE TABLE "cd" (
"cdid" INTEGER PRIMARY KEY NOT NULL,
"artist" integer NOT NULL,
"title" varchar(100) NOT NULL,
"year" varchar(100) NOT NULL,
"genreid" integer,
"single_track" integer,
FOREIGN KEY ("artist") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("single_track") REFERENCES "track"("trackid") ON DELETE CASCADE,
FOREIGN KEY ("genreid") REFERENCES "genre"("genreid") ON DELETE SET NULL ON UPDATE CASCADE
);
CREATE INDEX "cd_idx_artist" ON "cd" ("artist");
CREATE INDEX "cd_idx_single_track" ON "cd" ("single_track");
CREATE INDEX "cd_idx_genreid" ON "cd" ("genreid");
CREATE UNIQUE INDEX "cd_artist_title" ON "cd" ("artist", "title");
CREATE TABLE "collection_object" (
"collection" integer NOT NULL,
"object" integer NOT NULL,
PRIMARY KEY ("collection", "object"),
FOREIGN KEY ("collection") REFERENCES "collection"("collectionid") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("object") REFERENCES "typed_object"("objectid") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "collection_object_idx_collection" ON "collection_object" ("collection");
CREATE INDEX "collection_object_idx_object" ON "collection_object" ("object");
CREATE TABLE "lyrics" (
"lyric_id" INTEGER PRIMARY KEY NOT NULL,
"track_id" integer NOT NULL,
FOREIGN KEY ("track_id") REFERENCES "track"("trackid") ON DELETE CASCADE
);
CREATE INDEX "lyrics_idx_track_id" ON "lyrics" ("track_id");
CREATE TABLE "cd_artwork" (
"cd_id" INTEGER PRIMARY KEY NOT NULL,
FOREIGN KEY ("cd_id") REFERENCES "cd"("cdid") ON DELETE CASCADE
);
CREATE TABLE "liner_notes" (
"liner_id" INTEGER PRIMARY KEY NOT NULL,
"notes" varchar(100) NOT NULL,
FOREIGN KEY ("liner_id") REFERENCES "cd"("cdid") ON DELETE CASCADE
);
CREATE TABLE "lyric_versions" (
"id" INTEGER PRIMARY KEY NOT NULL,
"lyric_id" integer NOT NULL,
"text" varchar(100) NOT NULL,
FOREIGN KEY ("lyric_id") REFERENCES "lyrics"("lyric_id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "lyric_versions_idx_lyric_id" ON "lyric_versions" ("lyric_id");
CREATE UNIQUE INDEX "lyric_versions_lyric_id_text" ON "lyric_versions" ("lyric_id", "text");
CREATE TABLE "tags" (
"tagid" INTEGER PRIMARY KEY NOT NULL,
"cd" integer NOT NULL,
"tag" varchar(100) NOT NULL,
FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "tags_idx_cd" ON "tags" ("cd");
CREATE UNIQUE INDEX "tagid_cd" ON "tags" ("tagid", "cd");
CREATE UNIQUE INDEX "tagid_cd_tag" ON "tags" ("tagid", "cd", "tag");
CREATE UNIQUE INDEX "tags_tagid_tag" ON "tags" ("tagid", "tag");
CREATE UNIQUE INDEX "tags_tagid_tag_cd" ON "tags" ("tagid", "tag", "cd");
CREATE TABLE "cd_to_producer" (
"cd" integer NOT NULL,
"producer" integer NOT NULL,
"attribute" integer,
PRIMARY KEY ("cd", "producer"),
FOREIGN KEY ("cd") REFERENCES "cd"("cdid") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("producer") REFERENCES "producer"("producerid")
);
CREATE INDEX "cd_to_producer_idx_cd" ON "cd_to_producer" ("cd");
CREATE INDEX "cd_to_producer_idx_producer" ON "cd_to_producer" ("producer");
CREATE TABLE "images" (
"id" INTEGER PRIMARY KEY NOT NULL,
"artwork_id" integer NOT NULL,
"name" varchar(100) NOT NULL,
"data" blob,
FOREIGN KEY ("artwork_id") REFERENCES "cd_artwork"("cd_id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "images_idx_artwork_id" ON "images" ("artwork_id");
CREATE TABLE "twokeys" (
"artist" integer NOT NULL,
"cd" integer NOT NULL,
PRIMARY KEY ("artist", "cd"),
FOREIGN KEY ("artist") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("cd") REFERENCES "cd"("cdid")
);
CREATE INDEX "twokeys_idx_artist" ON "twokeys" ("artist");
CREATE TABLE "artwork_to_artist" (
"artwork_cd_id" integer NOT NULL,
"artist_id" integer NOT NULL,
PRIMARY KEY ("artwork_cd_id", "artist_id"),
FOREIGN KEY ("artist_id") REFERENCES "artist"("artistid") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("artwork_cd_id") REFERENCES "cd_artwork"("cd_id") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "artwork_to_artist_idx_artist_id" ON "artwork_to_artist" ("artist_id");
CREATE INDEX "artwork_to_artist_idx_artwork_cd_id" ON "artwork_to_artist" ("artwork_cd_id");
CREATE TABLE "fourkeys_to_twokeys" (
"f_foo" integer NOT NULL,
"f_bar" integer NOT NULL,
"f_hello" integer NOT NULL,
"f_goodbye" integer NOT NULL,
"t_artist" integer NOT NULL,
"t_cd" integer NOT NULL,
"autopilot" character NOT NULL,
"pilot_sequence" integer,
PRIMARY KEY ("f_foo", "f_bar", "f_hello", "f_goodbye", "t_artist", "t_cd"),
FOREIGN KEY ("f_foo", "f_bar", "f_hello", "f_goodbye") REFERENCES "fourkeys"("foo", "bar", "hello", "goodbye") ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY ("t_artist", "t_cd") REFERENCES "twokeys"("artist", "cd") ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE INDEX "fourkeys_to_twokeys_idx_f_foo_f_bar_f_hello_f_goodbye" ON "fourkeys_to_twokeys" ("f_foo", "f_bar", "f_hello", "f_goodbye");
CREATE INDEX "fourkeys_to_twokeys_idx_t_artist_t_cd" ON "fourkeys_to_twokeys" ("t_artist", "t_cd");
CREATE VIEW "year2000cds" AS
SELECT cdid, artist, title, year, genreid, single_track FROM cd WHERE year = "2000";