PHP-PoloDB系列之PLDBValue结构

背景

上文提到,在导出的动态库中,并没有实现头文件所申明的那些 PLDBValue 结构相关的接口。

本文主要基于以下几个问题和目标展开:

  1. 实现 PLDBValue 相关(创建、销毁)的接口;
  2. 研究这个结构在数据库底层的具体用途;

PLDBValue 结构

上面分别是开发者在头文件(headers/polodb.h)和 FFI 导出文件(src/polodb_clib/lib.rs)中的实现,这是相互对应的。

同时,我又在 src/polodb_bson/Value.rs文件中发现了polodb引擎中最终使用的 Value 结构体定义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#[derive(Debug, Clone)]
pub enum Value {
Null,
Double(f64),
Boolean(bool),

// memory represent should use i64,
// compress int when store on disk
Int(i64),

String(Rc<String>),
ObjectId(Rc<ObjectId>),
Array(Rc<Array>),
Document(Rc<Document>),

Binary(Rc<Vec<u8>>),

UTCDateTime(Rc<UTCDateTime>),
}

TODO

  • Copyrights © 2019-2024 Klusfq
  • Visitors: | Views: