Merge remote-tracking branch 'origin/main' into validation-cleanup

This commit is contained in:
Yuriy Dupyn 2024-01-28 20:03:33 +01:00
commit fd03cc2ed4
7 changed files with 45 additions and 3 deletions

16
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,16 @@
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

1
Cargo.lock generated
View file

@ -203,6 +203,7 @@ name = "client"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap",
"minisql", "minisql",
"parser", "parser",
"proto", "proto",

View file

@ -11,3 +11,4 @@ anyhow = "1.0.76"
proto = { path = "../proto" } proto = { path = "../proto" }
minisql = { path = "../minisql" } minisql = { path = "../minisql" }
parser = { path = "../parser" } parser = { path = "../parser" }
clap = { version = "4.4.18", features = ["derive"] }

View file

@ -1,3 +1,4 @@
use clap::Parser;
use proto::handshake::client::do_client_handshake; use proto::handshake::client::do_client_handshake;
use proto::handshake::request::HandshakeRequest; use proto::handshake::request::HandshakeRequest;
use proto::reader::protoreader::ProtoReader; use proto::reader::protoreader::ProtoReader;
@ -9,9 +10,21 @@ use proto::message::frontend::{FrontendMessage, QueryData};
use proto::reader::oneway::OneWayProtoReader; use proto::reader::oneway::OneWayProtoReader;
use proto::writer::oneway::OneWayProtoWriter; use proto::writer::oneway::OneWayProtoWriter;
#[derive(Parser)]
struct Cli {
/// Port number of the server.
#[arg(short, long, default_value_t = 5432, help = "Port number of the server")]
port: u16,
/// Host name or IP address of the server.
#[arg(short, long, default_value = "127.0.0.1", help = "Host name or IP address of the server")]
host: String,
}
#[tokio::main] #[tokio::main]
async fn main() -> anyhow::Result<()> { async fn main() -> anyhow::Result<()> {
let addr = "127.0.0.1:5432"; let cli = Cli::parse();
let addr = format!("{}:{}", cli.host, cli.port);
let mut stream = TcpStream::connect(addr).await?; let mut stream = TcpStream::connect(addr).await?;
let (reader, writer) = stream.split(); let (reader, writer) = stream.split();

View file

@ -2,6 +2,7 @@
name = "minisql" name = "minisql"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
rust-version = "1.74"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View file

@ -210,8 +210,14 @@ async fn handle_query<W>(writer: &mut W, state: &SharedDbState, query: String, t
} }
false false
}, },
Response::TableCreated => true, Response::TableCreated => {
Response::IndexCreated => true, writer.write_command_complete(CompleteStatus::CreateTable).await?;
true
},
Response::IndexCreated => {
writer.write_command_complete(CompleteStatus::CreateIndex).await?;
true
},
} }
}; };

View file

@ -13,6 +13,8 @@ pub enum CompleteStatus {
}, },
Delete(usize), Delete(usize),
Select(usize), Select(usize),
CreateTable,
CreateIndex,
} }
impl CompleteStatus { impl CompleteStatus {
@ -21,6 +23,8 @@ impl CompleteStatus {
CompleteStatus::Insert { oid, rows } => format!("INSERT {} {}", oid, rows), CompleteStatus::Insert { oid, rows } => format!("INSERT {} {}", oid, rows),
CompleteStatus::Delete(rows) => format!("DELETE {}", rows), CompleteStatus::Delete(rows) => format!("DELETE {}", rows),
CompleteStatus::Select(rows) => format!("SELECT {}", rows), CompleteStatus::Select(rows) => format!("SELECT {}", rows),
CompleteStatus::CreateTable => "CREATE TABLE".to_string(),
CompleteStatus::CreateIndex => "CREATE INDEX".to_string(),
} }
} }
} }