blob: 7c8cbdd595cf9433652bdf57c91711fa03f93608 [file] [log] [blame]
use crate::schema::posts::dsl::{posts, title};
use crate::schema::users::dsl::*;
use diesel::query_builder::AsQuery;
use diesel::*;
use std::cmp::max;
use std::mem;
#[test]
fn complex_queries_with_no_data_have_no_size() {
assert_eq!(0, mem::size_of_val(&users.as_query()));
assert_eq!(0, mem::size_of_val(&users.select(id).as_query()));
assert_eq!(
0,
mem::size_of_val(&users.inner_join(posts).filter(name.eq(title)))
);
}
#[test]
fn queries_with_data_are_no_bigger_than_their_variable_data() {
assert_eq!(
mem::size_of_val(&"Sean"),
mem::size_of_val(&users.inner_join(posts).filter(name.eq("Sean")))
);
assert_eq!(
mem::size_of::<i32>(),
mem::size_of_val(&users.inner_join(posts).filter(id.eq(1)))
);
let source = users
.inner_join(posts)
.filter(name.eq("Sean"))
.filter(id.eq(1));
assert_eq!(
mem::size_of_val(&"Sean") + max(mem::align_of_val(&source), mem::size_of::<i32>()),
mem::size_of_val(&source)
);
let source = users
.inner_join(posts)
.filter(name.eq("Sean").and(id.eq(1)));
assert_eq!(
mem::size_of_val(&"Sean") + max(mem::align_of_val(&source), mem::size_of::<i32>()),
mem::size_of_val(&source)
);
}