bugfix varint of 0
This commit is contained in:
parent
75020726dc
commit
5acc000a11
3 changed files with 16 additions and 4 deletions
|
|
@ -20,10 +20,11 @@ mod tests {
|
||||||
fn test_build() -> Result<(), Error> {
|
fn test_build() -> Result<(), Error> {
|
||||||
let mut builder = DatabaseBuilder::new();
|
let mut builder = DatabaseBuilder::new();
|
||||||
builder.schema("foo", "create table foo(bar varchar(10))");
|
builder.schema("foo", "create table foo(bar varchar(10))");
|
||||||
let mut record = Record::new(1);
|
for i in 0..100 {
|
||||||
record.add_value(values::string("helloworld"));
|
let mut record = Record::new(i);
|
||||||
builder.add_record(record);
|
record.add_value(values::string("helloworld"));
|
||||||
|
builder.add_record(record);
|
||||||
|
}
|
||||||
let database: Database = builder.into();
|
let database: Database = builder.into();
|
||||||
let file = File::create("foo.db")?;
|
let file = File::create("foo.db")?;
|
||||||
let writer = BufWriter::new(file);
|
let writer = BufWriter::new(file);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ pub struct Record {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Record {
|
impl Record {
|
||||||
|
/// Users have to supply the rowid. In the java version this can be done automatically
|
||||||
pub fn new(rowid: u64) -> Self {
|
pub fn new(rowid: u64) -> Self {
|
||||||
Self {
|
Self {
|
||||||
rowid,
|
rowid,
|
||||||
|
|
@ -78,5 +79,7 @@ mod tests {
|
||||||
fn test() {
|
fn test() {
|
||||||
let mut record = Record::new(1);
|
let mut record = Record::new(1);
|
||||||
record.add_value(string("hello"));
|
record.add_value(string("hello"));
|
||||||
|
let bytes: Vec<u8> = record.into();
|
||||||
|
assert_eq!(bytes, vec![7, 1, 2, 23, 104, 101, 108, 108, 111]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ pub fn write(value: u64) -> Vec<u8> {
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
} else {
|
} else {
|
||||||
|
if v == 0 {
|
||||||
|
return vec![0];
|
||||||
|
}
|
||||||
let mut result = Vec::new();
|
let mut result = Vec::new();
|
||||||
while v != 0 {
|
while v != 0 {
|
||||||
result.push(((v & 0x7f) | 0x80) as u8);
|
result.push(((v & 0x7f) | 0x80) as u8);
|
||||||
|
|
@ -39,4 +42,9 @@ mod tests {
|
||||||
fn test_write1() {
|
fn test_write1() {
|
||||||
assert_eq!(vec![1], write(0x01));
|
assert_eq!(vec![1], write(0x01));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_write0() {
|
||||||
|
assert_eq!(vec![0], write(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue