This commit is contained in:
Yura Dupyn 2026-05-03 16:18:49 +02:00
parent e6002df18e
commit 72013ac9d3
6 changed files with 158 additions and 22 deletions

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
.idea .idea
/target target
tmp_repl.txt tmp_repl.txt

View file

@ -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

View file

@ -1,10 +1,13 @@
-- Create the users table -- Create the users table
CREATE TABLE users (id UUID PRIMARY KEY, name STRING, surname STRING); CREATE TABLE users (id UUID PRIMARY KEY, name STRING, surname STRING);
-- Create the cars table with vid as an optional type -- Create the cars table with vid as an optional type
CREATE TABLE cars (id UUID PRIMARY KEY, vid Option(STRING), brand STRING, model STRING); CREATE TABLE cars (id UUID PRIMARY KEY, vid Option(STRING), brand STRING, model STRING);
-- Insert entries into users -- Insert entries into users
INSERT INTO users (id, name, surname) VALUES (u1001, "Jiří", "Novák"); 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 (u1002, "Petr", "Svoboda");
INSERT INTO users (id, name, surname) VALUES (u1003, "Marek", "Dvořák"); 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 INTO users (id, name, surname) VALUES (u1010, "あやか", "おかもと");
-- Insert entries into cars -- Insert entries into cars
INSERT INTO cars (id, vid, brand, model) VALUES (u2001, None, "Toyota", "Corolla"); 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 (u2002, None, "Ford", "Fiesta");
INSERT INTO cars (id, vid, brand, model) VALUES (u2003, Some("WBAKB0C52AC111480"), "Volkswagen", "Golf"); 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"); INSERT INTO cars (id, vid, brand, model) VALUES (u2010, Some("1G4GG5E35DF715445"), "Audi", "A4");
-- SELECT and DELETE commands for users and cars -- 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 * 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 * FROM cars;
SELECT brand FROM cars; SELECT brand FROM cars;
SELECT brand, model FROM cars; SELECT brand, model FROM cars;
SELECT * FROM cars WHERE brand = "Ford"; SELECT * FROM cars WHERE brand = "Ford";
DELETE FROM cars WHERE brand = "Ford"; DELETE FROM cars WHERE brand = "Ford";
SELECT * FROM cars; SELECT * FROM cars;

View file

@ -1,9 +1,13 @@
-- Create the people table -- Create the people table
-- (not using the "users" name so that you can use this file in the same -- (not using the "users" name so that you can use this file in the same
-- DB instance as demo-3.sql) -- DB instance as demo-3.sql)
CREATE TABLE people (id UUID PRIMARY KEY, first_name STRING, surname STRING); CREATE TABLE people (id UUID PRIMARY KEY, first_name STRING, surname STRING);
-- Insert entries into people -- 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 (u1, "Ranice", "Hardman");
INSERT INTO people (id, first_name, surname) VALUES (u2, "Amara", "Fieldsend"); INSERT INTO people (id, first_name, surname) VALUES (u2, "Amara", "Fieldsend");
INSERT INTO people (id, first_name, surname) VALUES (u3, "Stillmann", "Metzing"); 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 (u999, "Alvina", "Varcoe");
INSERT INTO people (id, first_name, surname) VALUES (u1000, "James", "Postance"); 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 commands for people
SELECT * FROM people;
INSERT INTO people (id, first_name, surname) VALUES (u1001, "Foo", "Bar");
SELECT * FROM people WHERE first_name = "James"; SELECT * FROM people WHERE first_name = "James";
CREATE INDEX PeopleName ON people (first_name); CREATE INDEX PeopleName ON people (first_name);
SELECT * FROM people WHERE first_name = "James"; SELECT * FROM people WHERE first_name = "James";
DELETE FROM people;

View file

@ -1,8 +1,10 @@
-- Create the numbers table -- Create the numbers table
-- Useless table, but it contains many rows, which free Mockaroo cannot do -- Useless table, but it contains many rows, which free Mockaroo cannot do
CREATE TABLE numbers (id UUID PRIMARY KEY, number_as_string STRING); CREATE TABLE numbers (id UUID PRIMARY KEY, number_as_string STRING);
-- Insert entries into people -- Insert entries into people
INSERT INTO numbers (id, number_as_string) VALUES (u1, "1"); 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 (u2, "2");
INSERT INTO numbers (id, number_as_string) VALUES (u3, "3"); 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"); INSERT INTO numbers (id, number_as_string) VALUES (u10000, "10000");
-- SELECT commands for numbers -- SELECT commands for numbers
SELECT * FROM numbers;
SELECT * FROM numbers WHERE number_as_string = "42"; SELECT * FROM numbers WHERE number_as_string = "42";
CREATE INDEX NumbersNumberAsString ON numbers (number_as_string); CREATE INDEX NumbersNumberAsString ON numbers (number_as_string);
SELECT * FROM numbers WHERE number_as_string = "42"; SELECT * FROM numbers WHERE number_as_string = "42";
DELETE FROM numbers;

103
demo.txt Normal file
View file

@ -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);