Skip to content

Instantly share code, notes, and snippets.

@agarciadom
Last active November 8, 2020 14:27
Show Gist options
  • Save agarciadom/0977f2d3b2abb5247bbddcc92c04b7de to your computer and use it in GitHub Desktop.
Save agarciadom/0977f2d3b2abb5247bbddcc92c04b7de to your computer and use it in GitHub Desktop.
Gist for issue 1091 in DuckDB
CREATE SEQUENCE elems_seq;
CREATE TABLE nodes ( id BIGINT PRIMARY KEY, label VARCHAR NOT NULL);
CREATE INDEX nodes_label ON nodes (label);
CREATE TABLE edges (id BIGINT PRIMARY KEY,from_node_id BIGINT NOT NULL,to_node_id BIGINT NOT NULL,label STRING NOT NULL,UNIQUE (from_node_id, to_node_id, label));
CREATE INDEX edges_outgoing ON edges (from_node_id, label);
CREATE INDEX edges_incoming ON edges (to_node_id, label);
CREATE TABLE properties ( elem_id BIGINT NOT NULL, name VARCHAR NOT NULL, value_boolean BOOLEAN, value_long BIGINT, value_int INTEGER, value_float FLOAT, value_double DOUBLE, value_string VARCHAR, value_blob BLOB, PRIMARY KEY (elem_id, name));
CREATE INDEX properties_elemid ON properties (elem_id);
INSERT INTO nodes (id, label) SELECT nextval('elems_seq'), 'test';
SELECT * FROM nodes;
BEGIN TRANSACTION;
UPDATE properties SET value_int = 5 WHERE elem_id = 1 AND name = 'x';
INSERT INTO properties (elem_id, name, value_int) VALUES (1, 'x', 5);
SELECT value_boolean, value_long, value_int, value_float, value_double, value_string, CAST(value_blob AS VARCHAR) FROM properties WHERE elem_id = 1 AND name = 'x';
SELECT name FROM properties WHERE elem_id = 1;
DELETE FROM properties WHERE elem_id = 1 AND name = 'x';
SELECT name FROM properties WHERE elem_id = 1;
COMMIT;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment