-- We will update on fname, so we can't have it as a distribution key,
-- which in turn means it can't be part of a primary key
CREATE TABLE users (
	fname text not null,
	lname text not null,
	username text,
	userid serial
	-- , PRIMARY KEY(lname, fname)
	) DISTRIBUTED BY (userid);

CREATE INDEX users_username_idx ON users(username);
CREATE INDEX users_fname_idx ON users(fname);
CREATE INDEX users_lname_idx ON users(lname);
CREATE INDEX users_userid_idx ON users(userid);


CREATE TABLE taxonomy (
	id serial primary key,
	name text
	) DISTRIBUTED BY (id);

CREATE TABLE entry (
	accession text not null primary key,
	eid serial,
	txid int2 not null
	) DISTRIBUTED BY (accession);

CREATE TABLE sequences (
	eid int4 not null,
	pid serial primary key,
	product text not null,
	sequence text not null,
	multipart bool default 'false'
	) DISTRIBUTED BY (pid);
CREATE INDEX sequences_product_idx ON sequences(product) ;

CREATE TABLE xsequences (
	pid int4 not null,
	sequence text not null
	) DISTRIBUTED BY (pid);
CREATE INDEX xsequences_pid_idx ON xsequences(pid) ;

CREATE TYPE ab_tuple as (
	a int8, 
	b int8
	);
