Skip to content

Commit

Permalink
Upgrade to scylla 0.10 (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jasperav committed Oct 10, 2023
1 parent cbacc3a commit 4f9babb
Show file tree
Hide file tree
Showing 17 changed files with 251 additions and 106 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/scylla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ jobs:
- ${{ github.workspace }}:/workspace
steps:
- uses: actions/checkout@v2
- name: Install stable 1.66
- name: Install stable 1.73
uses: actions-rs/toolchain@v1
with:
toolchain: 1.72.0
toolchain: 1.73.0
default: true
components: rustfmt, clippy
- name: Load .env file
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/target/
.idea
.idea
.DS_Store
4 changes: 3 additions & 1 deletion .run/Test all.run.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
<option name="withSudo" value="false" />
<option name="buildTarget" value="REMOTE" />
<option name="backtrace" value="SHORT" />
<envs />
<envs>
<env name="TRYBUILD" value="overwrite" />
</envs>
<option name="isRedirectInput" value="false" />
<option name="redirectInputPath" value="" />
<method v="2">
Expand Down
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ resolver = "2"

[workspace.package]
edition = "2021"
version = "0.1.17"
version = "0.1.18"
authors = ["Jasper Visser <jasperav@hotmail.com>"]
repository = "https://github.com/Jasperav/catalytic"
readme = "../README.md"
Expand All @@ -19,7 +19,7 @@ categories = ["database"]
license = "MIT"

[workspace.dependencies]
scylla = "0.9.0" # This crate is specifically build for this version
scylla = "0.10.0" # This crate is specifically build for this version
once_cell = "1.18"
heck = "0.4"
tokio = { version = "1", features = ["time", "rt-multi-thread", "io-util"] }
Expand Down
17 changes: 6 additions & 11 deletions catalytic_query_parser/src/extract_query_metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,11 @@ pub fn extract_query_meta_data(query: impl AsRef<str>) -> QueryMetadata {
column_type: ColumnType::Int,
value: ParameterizedValue::Limit,
});
} else {
match ttl {
Some(ttl) if ttl == Ttl::Parameterized => {
parameterized_columns_types.push(ParameterizedColumnType {
column_type: ColumnType::Int,
value: ParameterizedValue::UsingTtl,
});
}
_ => {} // Do nothing
}
} else if let Some(Ttl::Parameterized) = ttl {
parameterized_columns_types.push(ParameterizedColumnType {
column_type: ColumnType::Int,
value: ParameterizedValue::UsingTtl,
});
}

// ColumnInTable can be reused in ranges, so filter duplicates
Expand Down Expand Up @@ -123,7 +118,7 @@ pub fn replace_select_wildcard(query: &str, columns: &[ColumnInTable]) -> String
pub fn test_query(query: impl AsRef<str>) -> QueryMetadata {
let query = query.as_ref();
let qmd = extract_query_meta_data(query);
let mut values = SerializedValues::with_capacity(qmd.parameterized_columns_types.len());
let mut values = SerializedValues::new();

for parameterized_column_type in &qmd.parameterized_columns_types {
add_random_value(&mut values, parameterized_column_type);
Expand Down
9 changes: 7 additions & 2 deletions catalytic_query_parser/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,6 @@ impl Parse for Query {
.iter()
.filter(|r| r.parameterized)
.collect::<Vec<_>>();
let ident_count = idents.len();
let types_comparison = idents
.iter()
.enumerate()
Expand All @@ -205,7 +204,13 @@ impl Parse for Query {
.collect::<Vec<syn::Type>>();

let serialized_values = quote! {{
let mut serialized_values = catalytic::scylla::frame::value::SerializedValues::with_capacity(#ident_count);
let mut size = 0;

#(
size += std::mem::size_of_val(#idents);
)*

let mut serialized_values = catalytic::scylla::frame::value::SerializedValues::with_capacity(size);

#(
// Check if the type is correct
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,12 @@ pub async fn truncate(session: &CachingSession) -> ScyllaQueryResult {
impl<'a> AnotherTestTableRef<'a> {
#[doc = r" Returns a struct that can perform an insert operation"]
pub fn insert_qv(&self) -> Result<Insert, SerializeValuesError> {
let mut serialized = SerializedValues::with_capacity(4usize);
let mut size = 0;
size += std::mem::size_of_val(self.a);
size += std::mem::size_of_val(self.b);
size += std::mem::size_of_val(self.c);
size += std::mem::size_of_val(self.d);
let mut serialized = SerializedValues::with_capacity(size);
serialized.add_value(&self.a)?;
serialized.add_value(&self.b)?;
serialized.add_value(&self.c)?;
Expand All @@ -188,7 +193,13 @@ impl<'a> AnotherTestTableRef<'a> {
}
#[doc = r" Returns a struct that can perform an insert operation with a TTL"]
pub fn insert_ttl_qv(&self, ttl: TtlType) -> Result<Insert, SerializeValuesError> {
let mut serialized = SerializedValues::with_capacity(5usize);
let mut size = 0;
size += std::mem::size_of_val(self.a);
size += std::mem::size_of_val(self.b);
size += std::mem::size_of_val(self.c);
size += std::mem::size_of_val(self.d);
size += std::mem::size_of_val(&ttl);
let mut serialized = SerializedValues::with_capacity(size);
serialized.add_value(&self.a)?;
serialized.add_value(&self.b)?;
serialized.add_value(&self.c)?;
Expand Down Expand Up @@ -281,7 +292,11 @@ impl From<PrimaryKeyRef<'_>> for PrimaryKey {
impl PrimaryKeyRef<'_> {
#[doc = r" Returns a struct that can perform a unique row selection"]
pub fn select_unique_qv(&self) -> Result<SelectUnique<AnotherTestTable>, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(3usize);
let mut size = 0;
size += std::mem::size_of_val(self.a);
size += std::mem::size_of_val(self.b);
size += std::mem::size_of_val(self.c);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.a)?;
serialized_values.add_value(&self.b)?;
serialized_values.add_value(&self.c)?;
Expand All @@ -308,7 +323,11 @@ impl PrimaryKeyRef<'_> {
pub fn select_unique_expect_qv(
&self,
) -> Result<SelectUniqueExpect<AnotherTestTable>, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(3usize);
let mut size = 0;
size += std::mem::size_of_val(self.a);
size += std::mem::size_of_val(self.b);
size += std::mem::size_of_val(self.c);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.a)?;
serialized_values.add_value(&self.b)?;
serialized_values.add_value(&self.c)?;
Expand All @@ -333,7 +352,7 @@ impl PrimaryKeyRef<'_> {
impl PrimaryKeyRef<'_> {
#[doc = "Returns a struct that can perform an update operation for column d"]
pub fn update_d_qv(&self, val: &i32) -> Result<Update, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(4usize);
let mut serialized_values = SerializedValues::with_capacity(std::mem::size_of_val(val));
serialized_values.add_value(&val)?;
serialized_values.add_value(&self.a)?;
serialized_values.add_value(&self.b)?;
Expand Down Expand Up @@ -383,7 +402,7 @@ impl PrimaryKeyRef<'_> {
panic!("Empty update array")
}
let mut query = vec![];
let mut serialized_values = SerializedValues::with_capacity(val.len() + 3usize);
let mut serialized_values = SerializedValues::new();
for v in val {
match v {
UpdatableColumnRef::D(v) => {
Expand Down Expand Up @@ -423,7 +442,11 @@ impl PrimaryKeyRef<'_> {
impl PrimaryKeyRef<'_> {
#[doc = r" Returns a struct that can perform a single row deletion"]
pub fn delete_qv(&self) -> Result<DeleteUnique, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(3usize);
let mut size = 0;
size += std::mem::size_of_val(self.a);
size += std::mem::size_of_val(self.b);
size += std::mem::size_of_val(self.c);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.a)?;
serialized_values.add_value(&self.b)?;
serialized_values.add_value(&self.c)?;
Expand Down
35 changes: 26 additions & 9 deletions catalytic_table_to_struct/example/src/generated/child.rs
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,12 @@ pub async fn truncate(session: &CachingSession) -> ScyllaQueryResult {
impl<'a> ChildRef<'a> {
#[doc = r" Returns a struct that can perform an insert operation"]
pub fn insert_qv(&self) -> Result<Insert, SerializeValuesError> {
let mut serialized = SerializedValues::with_capacity(4usize);
let mut size = 0;
size += std::mem::size_of_val(self.birthday);
size += std::mem::size_of_val(self.enum_json);
size += std::mem::size_of_val(self.json);
size += std::mem::size_of_val(self.json_nullable);
let mut serialized = SerializedValues::with_capacity(size);
serialized.add_value(&self.birthday)?;
serialized.add_value(&self.enum_json)?;
serialized.add_value(&self.json)?;
Expand All @@ -188,7 +193,13 @@ impl<'a> ChildRef<'a> {
}
#[doc = r" Returns a struct that can perform an insert operation with a TTL"]
pub fn insert_ttl_qv(&self, ttl: TtlType) -> Result<Insert, SerializeValuesError> {
let mut serialized = SerializedValues::with_capacity(5usize);
let mut size = 0;
size += std::mem::size_of_val(self.birthday);
size += std::mem::size_of_val(self.enum_json);
size += std::mem::size_of_val(self.json);
size += std::mem::size_of_val(self.json_nullable);
size += std::mem::size_of_val(&ttl);
let mut serialized = SerializedValues::with_capacity(size);
serialized.add_value(&self.birthday)?;
serialized.add_value(&self.enum_json)?;
serialized.add_value(&self.json)?;
Expand Down Expand Up @@ -277,7 +288,9 @@ impl From<PrimaryKeyRef<'_>> for PrimaryKey {
impl PrimaryKeyRef<'_> {
#[doc = r" Returns a struct that can perform a unique row selection"]
pub fn select_unique_qv(&self) -> Result<SelectUnique<Child>, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(1usize);
let mut size = 0;
size += std::mem::size_of_val(self.birthday);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.birthday)?;
Ok(SelectUnique::new(Qv {
query: SELECT_UNIQUE_QUERY,
Expand All @@ -302,7 +315,9 @@ impl PrimaryKeyRef<'_> {
pub fn select_unique_expect_qv(
&self,
) -> Result<SelectUniqueExpect<Child>, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(1usize);
let mut size = 0;
size += std::mem::size_of_val(self.birthday);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.birthday)?;
Ok(SelectUniqueExpect::new(Qv {
query: SELECT_UNIQUE_QUERY,
Expand All @@ -328,7 +343,7 @@ impl PrimaryKeyRef<'_> {
&self,
val: &crate::MyJsonEnum,
) -> Result<Update, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(2usize);
let mut serialized_values = SerializedValues::with_capacity(std::mem::size_of_val(val));
serialized_values.add_value(&val)?;
serialized_values.add_value(&self.birthday)?;
Ok(Update::new(Qv {
Expand All @@ -354,7 +369,7 @@ impl PrimaryKeyRef<'_> {
impl PrimaryKeyRef<'_> {
#[doc = "Returns a struct that can perform an update operation for column json"]
pub fn update_json_qv(&self, val: &crate::MyJsonType) -> Result<Update, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(2usize);
let mut serialized_values = SerializedValues::with_capacity(std::mem::size_of_val(val));
serialized_values.add_value(&val)?;
serialized_values.add_value(&self.birthday)?;
Ok(Update::new(Qv {
Expand Down Expand Up @@ -383,7 +398,7 @@ impl PrimaryKeyRef<'_> {
&self,
val: &std::option::Option<crate::MyJsonType>,
) -> Result<Update, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(2usize);
let mut serialized_values = SerializedValues::with_capacity(std::mem::size_of_val(val));
serialized_values.add_value(&val)?;
serialized_values.add_value(&self.birthday)?;
Ok(Update::new(Qv {
Expand Down Expand Up @@ -437,7 +452,7 @@ impl PrimaryKeyRef<'_> {
panic!("Empty update array")
}
let mut query = vec![];
let mut serialized_values = SerializedValues::with_capacity(val.len() + 1usize);
let mut serialized_values = SerializedValues::new();
for v in val {
match v {
UpdatableColumnRef::EnumJson(v) => {
Expand Down Expand Up @@ -483,7 +498,9 @@ impl PrimaryKeyRef<'_> {
impl PrimaryKeyRef<'_> {
#[doc = r" Returns a struct that can perform a single row deletion"]
pub fn delete_qv(&self) -> Result<DeleteUnique, SerializeValuesError> {
let mut serialized_values = SerializedValues::with_capacity(1usize);
let mut size = 0;
size += std::mem::size_of_val(self.birthday);
let mut serialized_values = SerializedValues::with_capacity(size);
serialized_values.add_value(&self.birthday)?;
Ok(DeleteUnique::new(Qv {
query: DELETE_QUERY,
Expand Down

0 comments on commit 4f9babb

Please sign in to comment.