Scan placeholders as 0x3F when no params present

Also bumped version to 0.8.0-beta.4
next
Sayan Nandan 8 months ago
parent 2d2ef40b0b
commit 3f2b464975
No known key found for this signature in database
GPG Key ID: 0EBD769024B24F0A

10
Cargo.lock generated

@ -607,7 +607,7 @@ checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
[[package]]
name = "libsky"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
[[package]]
name = "linux-raw-sys"
@ -1165,7 +1165,7 @@ dependencies = [
[[package]]
name = "sky-bench"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
dependencies = [
"crossbeam-channel",
"env_logger",
@ -1178,7 +1178,7 @@ dependencies = [
[[package]]
name = "sky_macros"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
dependencies = [
"libsky",
"proc-macro2",
@ -1188,7 +1188,7 @@ dependencies = [
[[package]]
name = "skyd"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
dependencies = [
"bytes",
"crc",
@ -1214,7 +1214,7 @@ dependencies = [
[[package]]
name = "skysh"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
dependencies = [
"crossterm",
"libsky",

@ -1,6 +1,6 @@
[package]
name = "skysh"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
authors = ["Sayan Nandan <ohsayan@outlook.com>"]
edition = "2021"
description = "The Skytable Shell (skysh)"

@ -1,4 +1,4 @@
skysh 0.8.0-beta.3
skysh 0.8.0-beta.4
Sayan N. <ohsayan@outlook.com>
The Skytable interactive shell (skysh)

@ -2,7 +2,7 @@
authors = ["Sayan Nandan <ohsayan@outlook.com>"]
edition = "2021"
name = "libsky"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

@ -2,7 +2,7 @@
authors = ["Sayan Nandan <ohsayan@outlook.com>"]
edition = "2021"
name = "skyd"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
description = "Skytable is a modern NoSQL database powered by BlueQL that aims to deliver performance, scalability and flexibility with data"
license = "AGPL-3.0"

@ -371,7 +371,7 @@ impl<'a> SecureLexer<'a> {
};
match b {
b if b.is_ascii_alphabetic() | (b == b'_') => self.l.scan_ident_or_keyword(),
b'?' => {
b'?' if !self.param_buffer.eof() => {
// skip the param byte
unsafe {
// UNSAFE(@ohsayan): loop invariant

@ -182,6 +182,43 @@ fn make_safe_query(a: &[u8], b: &[u8]) -> (Vec<u8>, usize) {
(s, a.len())
}
#[test]
fn safe_query_param_empty() {
for i in 0..100 {
let (query, query_window) = make_safe_query(&b"?".repeat(i), b"");
let ret = lex_secure(&query, query_window).unwrap();
assert_eq!(
ret,
(0..i).map(|_| Token![?]).collect::<Vec<Token<'static>>>()
);
}
}
#[test]
fn safe_query_less_param() {
for i in 1..=10 {
/*
test placeholder combinations:
- 1PH 1P
- 2PH 1P, 2PH 2P
- 3PH 1P, 3PH 2P, 3PH 3P
*/
for j in 1..=i {
let (query, query_window) =
make_safe_query(&b"?".repeat(i), &b"\x065\nsayan".repeat(j));
let ret = lex_secure(&query, query_window).unwrap();
// check
let exp_params = (0..j)
.map(|_| Token::Lit(Lit::new_str("sayan")))
.collect::<Vec<Token<'static>>>();
let exp_placeholders = (0..i - j)
.map(|_| Token![?])
.collect::<Vec<Token<'static>>>();
assert_eq!(ret, [exp_params, exp_placeholders].concat());
}
}
}
#[test]
fn safe_query_all_literals() {
let (query, query_window) = make_safe_query(

@ -2,7 +2,7 @@
authors = ["Sayan Nandan <ohsayan@outlook.com>"]
edition = "2021"
name = "sky-bench"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
description = "The Skytable benchmark tool can be used to benchmark Skytable installations"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

@ -1,4 +1,4 @@
sky-bench 0.8.0-beta.3
sky-bench 0.8.0-beta.4
Sayan N. <ohsayan@outlook.com>
Skytable benchmark tool

@ -2,7 +2,7 @@
authors = ["Sayan Nandan <ohsayan@outlook.com>"]
edition = "2021"
name = "sky_macros"
version = "0.8.0-beta.3"
version = "0.8.0-beta.4"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

Loading…
Cancel
Save