diff --git a/.gitignore b/.gitignore index e28629e..eaee896 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .idea -/target +target tmp_repl.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 27f39e7..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,16 +0,0 @@ -stages: - - primary - -build-and-test: - stage: primary - image: rust:1.74.0 - tags: - - shared-fi - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - script: - # build and test in single job for faster execution - # because shared runner doesn't allow caching - - cargo build --verbose - - cargo test --verbose diff --git a/demo-1.sql b/demo-1.sql index d624727..7e33ca7 100644 --- a/demo-1.sql +++ b/demo-1.sql @@ -1,10 +1,13 @@ -- Create the users table + CREATE TABLE users (id UUID PRIMARY KEY, name STRING, surname STRING); -- Create the cars table with vid as an optional type + CREATE TABLE cars (id UUID PRIMARY KEY, vid Option(STRING), brand STRING, model STRING); -- Insert entries into users + INSERT INTO users (id, name, surname) VALUES (u1001, "Jiří", "Novák"); INSERT INTO users (id, name, surname) VALUES (u1002, "Petr", "Svoboda"); INSERT INTO users (id, name, surname) VALUES (u1003, "Marek", "Dvořák"); @@ -17,6 +20,7 @@ INSERT INTO users (id, name, surname) VALUES (u1009, "ゆうた", "わたなべ" INSERT INTO users (id, name, surname) VALUES (u1010, "あやか", "おかもと"); -- Insert entries into cars + INSERT INTO cars (id, vid, brand, model) VALUES (u2001, None, "Toyota", "Corolla"); INSERT INTO cars (id, vid, brand, model) VALUES (u2002, None, "Ford", "Fiesta"); INSERT INTO cars (id, vid, brand, model) VALUES (u2003, Some("WBAKB0C52AC111480"), "Volkswagen", "Golf"); @@ -29,16 +33,29 @@ INSERT INTO cars (id, vid, brand, model) VALUES (u2009, None, "Kia", "Optima"); INSERT INTO cars (id, vid, brand, model) VALUES (u2010, Some("1G4GG5E35DF715445"), "Audi", "A4"); -- SELECT and DELETE commands for users and cars -SELECT * FROM users; -SELECT name FROM users; -SELECT name, surname FROM users; -SELECT * FROM users WHERE name = "さくら"; -DELETE FROM users WHERE surname = "Novák"; + SELECT * FROM users; +SELECT name FROM users; + +SELECT name, surname FROM users; + +SELECT * FROM users WHERE name = "さくら"; + +DELETE FROM users WHERE surname = "Novák"; + +SELECT * FROM users; + + + SELECT * FROM cars; + SELECT brand FROM cars; + SELECT brand, model FROM cars; + SELECT * FROM cars WHERE brand = "Ford"; + DELETE FROM cars WHERE brand = "Ford"; + SELECT * FROM cars; diff --git a/demo-2.sql b/demo-2.sql index 3216756..60d1713 100644 --- a/demo-2.sql +++ b/demo-2.sql @@ -1,9 +1,13 @@ -- Create the people table -- (not using the "users" name so that you can use this file in the same -- DB instance as demo-3.sql) + CREATE TABLE people (id UUID PRIMARY KEY, first_name STRING, surname STRING); -- Insert entries into people + +SELECT * FROM people; + INSERT INTO people (id, first_name, surname) VALUES (u1, "Ranice", "Hardman"); INSERT INTO people (id, first_name, surname) VALUES (u2, "Amara", "Fieldsend"); INSERT INTO people (id, first_name, surname) VALUES (u3, "Stillmann", "Metzing"); @@ -1005,7 +1009,22 @@ INSERT INTO people (id, first_name, surname) VALUES (u998, "James", "Dinning"); INSERT INTO people (id, first_name, surname) VALUES (u999, "Alvina", "Varcoe"); INSERT INTO people (id, first_name, surname) VALUES (u1000, "James", "Postance"); + +INSERT INTO people (id, first_name, surname) VALUES (u1001, "James", "Postance"); + -- SELECT commands for people + +SELECT * FROM people; + +INSERT INTO people (id, first_name, surname) VALUES (u1001, "Foo", "Bar"); + SELECT * FROM people WHERE first_name = "James"; + CREATE INDEX PeopleName ON people (first_name); + SELECT * FROM people WHERE first_name = "James"; + + +DELETE FROM people; + + diff --git a/demo-3.sql b/demo-3.sql index 1998e7a..ae8e273 100644 --- a/demo-3.sql +++ b/demo-3.sql @@ -1,8 +1,10 @@ -- Create the numbers table -- Useless table, but it contains many rows, which free Mockaroo cannot do + CREATE TABLE numbers (id UUID PRIMARY KEY, number_as_string STRING); -- Insert entries into people + INSERT INTO numbers (id, number_as_string) VALUES (u1, "1"); INSERT INTO numbers (id, number_as_string) VALUES (u2, "2"); INSERT INTO numbers (id, number_as_string) VALUES (u3, "3"); @@ -10005,6 +10007,17 @@ INSERT INTO numbers (id, number_as_string) VALUES (u9999, "9999"); INSERT INTO numbers (id, number_as_string) VALUES (u10000, "10000"); -- SELECT commands for numbers + +SELECT * FROM numbers; + SELECT * FROM numbers WHERE number_as_string = "42"; + CREATE INDEX NumbersNumberAsString ON numbers (number_as_string); + + SELECT * FROM numbers WHERE number_as_string = "42"; + + +DELETE FROM numbers; + + diff --git a/demo.txt b/demo.txt new file mode 100644 index 0000000..7e4be99 --- /dev/null +++ b/demo.txt @@ -0,0 +1,103 @@ + +:kill-pane + +cargo build + +cargo test + + +rm -rf db_demo + +cargo run --bin server -- + +cargo run --bin server -- --folder db_demo + +rlwrap cargo run --bin client -- + + +======================Games Table======================================== + +SELECT * FROM games; + + +REATE TABLE games (id UUID PRIMARY KEY, name STRING, year INT, price NUMBER); + +INSERT INTO games (id, name, year, price) VALUES (u1, "skyrim", 2011, 1024.5); + +INSERT INTO games (id, name, year, price) VALUES (u2, "DOOM 2", 1994, 350.0); + +DELETE FROM games; + +WHERE name = "Christina"; + +SELECT * FROM games; + +SELECT * FROM games WHERE id=u2; + +SELECT * FROM games WHERE name="skyrim"; + +SELECT name, year, year, year, name FROM games; + + +SELECT * FROM games WHERE id=u3; + +===================Users Table====================== +// Optionals + + +CREATE TABLE users (id UUID PRIMARY KEY, name STRING, surname STRING, email Option(STRING)); + + +INSERT INTO users (id, name, surname, email) VALUES (u1, "Hero", "Protagonist 😊", Some("snow_crash@gmail.com")); + + + +INSERT INTO users (id, name, surname, email) VALUES (u26, "Arnold", "schwarzenegger", Some("gettothechoppa@yahoo.com")); + +INSERT INTO users (id, name, surname, email) VALUES (u27, "Arnold", "Vosloo", None); + + +INSERT INTO users (id, name, surname, email) VALUES (u29, "New", "Guy", None); + + +"hello" : String + +Some("hello") : Option(String) + +None : Option(String) + + +SELECT * FROM users; + + +SELECT * FROM users WHERE email=None; + +SELECT * FROM users WHERE email=Some("gettothechoppa@yahoo.com"); + + + +DELETE FROM users WHERE id=u1; + +DELETE FROM users WHERE id=u27; + + +CREATE TABLE users1 (id UUID PRIMARY KEY, name STRING, surname STRING, email Option(Option(STRING))); + +INSERT INTO users1 (id, name, surname, email) VALUES (u1, "Hero", "Protagonist 😊", None); + +INSERT INTO users1 (id, name, surname, email) VALUES (u26, "Arnold", "schwarzenegger", Some(Some("gettothechoppa@yahoo.com"))); + +SELECT * FROM users1; + +SELECT * FROM users1 WHERE email=None; + +DELETE FROM users; + +// ==============Indexes, Concurrency, Garbage Collection================ + + + +CREATE INDEX CarsYear ON cars (year); + + +