Merge remote-tracking branch 'origin/main' into validation-cleanup
This commit is contained in:
commit
fd03cc2ed4
7 changed files with 45 additions and 3 deletions
16
.gitlab-ci.yml
Normal file
16
.gitlab-ci.yml
Normal 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
1
Cargo.lock
generated
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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"] }
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue