暂无描述
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: rectify the request Signed-off-by: jasonboyan <jialinbo2@h-partners.com> | 6 个月前 | |
差异同步 Signed-off-by: ZhaoJinghui <zhaojinghui5@h-partners.com> | 5 个月前 | |
docs: AGENTS.md 标题层级修正、rdb_native.md 错字修正 Signed-off-by: guochao95 <guochao76@h-partners.com> Co-Authored-By: Agent 🤖 AI[0%] 👌 AI Adopted[0%] 🧑 Human[100%] | 19 天前 | |
appdatamgr分仓relational_store Signed-off-by: PaDaBoo <xuejianwu@huawei.com> | 3 年前 | |
!3435 merge fix/sync-result-code-enum-typo into master fix: SyncResultCode枚举拼写修正 Created-by: deng-1jun Commit-by: deng-1jun Merged-by: openharmony_ci Description: ## 相关的Issue #2665 * **IssueNo**: * **Description**: * **Sig**: SIG_DataManagement * **Feature or Bugfix**: * **Binary Source**:No/Yes * **TDD**:Pass/Fail/NA * **XTS**:Pass * **Pretest**:Pass/Fail/NA ### 稳定性排查: - [ ] 【规则】禁止在锁内向其他进程发送IPC(进程间通信); - [ ] 【规则】禁止将捕获**栈变量引用**的lambda函数**异步到其他线程执行**; - [ ] 【规则】禁止传递this指针至其他模块或线程(特别是eventhandler任务); - [ ] 【规则】禁止存储string的c_str()方法获取到的指针; - [ ] 【规则】成员变量进行赋值或创建需要排查并发; - [ ] 【规则】谨慎在未经拷贝的情况下使用外部传入的string、C字符串; - [ ] 【规则】map\vector\list\set等stl模板类使用时需要排查并发; - [ ] 【规则】谨慎考虑加锁范围,尽可能的小范围加锁; - [ ] 【规则】在IPC通信中谨慎使用同步通信方式; - [ ] 【规则】禁止将外部传入的裸指针在内部直接构造智能指针; - [ ] 【规则】禁止多个独立创建的智能指针管理同一地址; - [ ] 【规则】禁止在析构函数中抛异步任务; - [ ] 【规则】禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁; - [ ] 【规则】禁止在对外接口中未经判空直接使用外部传入的指针; - [ ] 【规则】监听回调要确保,回调触发和取消注册并发时无生命周期问题; - [ ] 【规则】遍历容器进行删除或插入时注意迭代器失效问题; ### 日志打印排查: - [ ] 【规则】禁止打印内存地址,如:%p; - [ ] 【规则】禁止明文打印密钥、文件路径、数据库名称、表名、列名、udidhash、设备名称、账号id等敏感信息; - [ ] 【规则】禁止不作匿名化直接打印udid/networkid/uuid/ip/mac等敏感信息; - [ ] 【规则】非必要不要在循环内打印日志,防止日志超限; ### 安全编码自检: - [ ] 【内存管理】内存申请前必须对内存大小进行合法性校验; - [ ] 【内存管理】内存申请后必须判空,判断内存申请是否成功; - [ ] 【内存管理】分配和释放内存(or fd等资源)的函数需要成对出现; - [ ] 【内存管理】申请内存后异常退出前需要及时进行内存释放; - [ ] 【内存管理】禁止使用realloc、alloca函数; - [ ] 【内存管理】strdup使用需要注意内存释放; - [ ] 【内存管理】正则表达式构造后需释放资源,regcomp/regexec与regfree必须成对使用; - [ ] 【内存管理】realpath使用时如果resolved_path为NULL需要注意内存释放; - [ ] 【外部输入校验】外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验; - [ ] 【外部输入校验】按TLV格式解析时需校验解析长度值是否小于等于缓冲区实际值,并校验是否符合业务数据范围; - [ ] 【外部输入校验】解析数据后拷贝时需校验源buffer实际缓冲区大小,避免越界读写; - [ ] 【外部输入校验】使用外部输入作为循环变量时,需要校验循环变量上限是否合理,防止出现超大循环; - [ ] 【外部输入校验】禁止直接使用外部输入作为数组下标,防止出现内存越界; - [ ] 【敏感信息】堆、栈中保存密钥、口令(包括加密后的变量)变量使用完后必须显式覆盖或清空; - [ ] 【加密算法】禁止使用私有加密算法或不安全加密算法; - [ ] 【变量初始化】指针变量、表示资源描述符的变量、bool变量必须赋初值; - [ ] 【指针】IPC流程中ReadCString、ReadRawData、readParcelable等结果必须判空; - [ ] 【整数运算】整数之间运算时必须严格检查,确保不会出现溢出、反转、除0; - [ ] 【整数运算】禁止对有符号整数进行位操作符运算; - [ ] 【循环变量】循环次数如果受外部数据控制,需要检验其合法性; - [ ] 【循环变量】循环变量和中止条件的数据类型定义保持一致; - [ ] 【安全函数】安全函数必须检查返回值,并进行正确处理; - [ ] 【安全函数】安全函数目标缓冲区入参大小与目标缓冲区实际大小必须一致; - [ ] 【安全函数】禁止封装或者自定义安全函数; - [ ] 【常见问题】修改单个函数时,如果涉及新增异常返回分支,必须排查是否需要释放锁、内存、fd等资源; - [ ] 【常见问题】函数返回值需与函数签名相同,参数定义需在同一范畴(不能定义bool,返回int32_t),或同一枚举类型; - [ ] 【常见问题】格式化打印类型需匹配,例如:int32_t %d; uint32_t %u; long %ld; unsigned long %lu; long long PRId64;<br> unsigned long long PRIu64; ### 新增TDD用例时请自检,排查是否涉及如下不合规场景: - [ ] 【虚假断言】断言的两个数值相等,或两个变量都为固定值,断言结果恒成功,断言是否非空; - [ ] 【中途退出】检查测试用例中有return或goto等中途退出测试; - [ ] 【缺少断言】检查是否存在断言关键字; ### L0新增用例自检结果 - [ ] 是,有新增L0用例,且完成自检 - [ ] 否 ### 代码开发保证基本逻辑正常,以对象实例为粒度实现功能 - [ ] 是 - [ ] 否 See merge request: openharmony/distributeddatamgr_relational_store!3435 | 2 天前 | |
!3429 merge fix/errmsg-concurrent-map into master fix: GetLastErrorMsg并发安全重构,ErrMsgStore替换为ConcurrentMap Created-by: guochao95 Commit-by: guochao95 Merged-by: openharmony_ci Description: * **IssueNo**: [#2636](https://gitcode.com/openharmony/distributeddatamgr_relational_store/issues/2636) * **Description**: GetLastErrorMsg并发安全重构,ErrMsgStore全局单例替换为线程隔离ConcurrentMap,错误消息拼接匿名dbPath * **Sig**: SIG_DataManagement * **Feature or Bugfix**: Bugfix * **Binary Source**: No * **TDD**: NA * **XTS**: pass  * **Pretest**: NA ### 主要改动: - 删除ErrMsgStore全局单例,改为线程隔离存储 - RdbStoreImpl/SqliteConnection: ConcurrentMap<thread_id, string> lastErrMsg_ - StepResultSet: std::string lastErrMsg_ + mutable globalMtx_ lock_guard - SqliteConnection::GetLastErrorMsg() 拼接匿名dbPath (SqliteUtils::Anonymous) - E_SQLITE_ERROR测试增加***断言验证匿名路径拼接 - 删除ErrMsgStoreTest测试target和err_msg_store.h/test文件 - abs_result_set.h: globalMtx_改为mutable ### 稳定性排查: - [x] 禁止在锁内向其他进程发送IPC - [x] 禁止将捕获栈变量引用的lambda函数异步到其他线程执行 - [x] 禁止传递this指针至其他模块或线程 - [x] 禁止存储string的c_str()方法获取到的指针 - [x] 成员变量进行赋值或创建需要排查并发 - [x] 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 - [x] map/vector/list/set等stl模板类使用时需要排查并发 - [x] 谨慎考虑加锁范围,尽可能的小范围加锁 - [x] 在IPC通信中谨慎使用同步通信方式 - [x] 禁止将外部传入的裸指针在内部直接构造智能指针 - [x] 禁止多个独立创建的智能指针管理同一地址 - [x] 禁止在析构函数中抛异步任务 - [x] 禁止js对象在非js线程创建、使用或销毁 - [x] 禁止在对外接口中未经判空直接使用外部传入的指针 - [x] 监听回调要确保,回调触发和取消注册并发时无生命周期问题 - [x] 遍历容器进行删除或插入时注意迭代器失效问题 ### 日志打印排查: - [x] 禁止打印内存地址 - [x] 禁止明文打印密钥、文件路径等敏感信息 - [x] 禁止不作匿名化直接打印敏感信息 - [x] 非必要不要在循环内打印日志 ### 安全编码自检: - [x] 内存申请前必须对内存大小进行合法性校验 - [x] 内存申请后必须判空 - [x] 分配和释放内存的函数需要成对出现 - [x] 禁止使用realloc、alloca函数 - [x] 外部传入的路径要做规范化校验 - [x] 指针变量、表示资源描述符的变量必须赋初值 - [x] IPC流程中ReadCString等结果必须判空 - [x] 整数之间运算时必须严格检查确保不会出现溢出 - [x] 安全函数必须检查返回值并进行正确处理 - [x] 格式化打印类型需匹配 ### L0新增用例自检结果: - [x] 是,有新增L0用例,且完成自检 ### 代码开发保证基本逻辑正常: - [x] 是 See merge request: openharmony/distributeddatamgr_relational_store!3429 | 3 天前 | |
为各共享库开启PAC返回地址保护 在cj、ets/taihe、js/napi、rdb_crypt、samgr等模块的BUILD.gn中 为ohos_shared_library/taihe_shared_library/ohos_static_library 添加 branch_protector_ret = "pac_ret",启用指针认证返回地址保护, 提升二进制安全加固能力。不影响上层接口。 Co-Authored-By: Agent Signed-off-by: ZhaoJinghui <zhaojinghui5@h-partners.com> Change-Id: Ic5afc7a002a7a6c8e77f637c2252d15af215bb3e | 4 天前 | |
!3429 merge fix/errmsg-concurrent-map into master fix: GetLastErrorMsg并发安全重构,ErrMsgStore替换为ConcurrentMap Created-by: guochao95 Commit-by: guochao95 Merged-by: openharmony_ci Description: * **IssueNo**: [#2636](https://gitcode.com/openharmony/distributeddatamgr_relational_store/issues/2636) * **Description**: GetLastErrorMsg并发安全重构,ErrMsgStore全局单例替换为线程隔离ConcurrentMap,错误消息拼接匿名dbPath * **Sig**: SIG_DataManagement * **Feature or Bugfix**: Bugfix * **Binary Source**: No * **TDD**: NA * **XTS**: pass  * **Pretest**: NA ### 主要改动: - 删除ErrMsgStore全局单例,改为线程隔离存储 - RdbStoreImpl/SqliteConnection: ConcurrentMap<thread_id, string> lastErrMsg_ - StepResultSet: std::string lastErrMsg_ + mutable globalMtx_ lock_guard - SqliteConnection::GetLastErrorMsg() 拼接匿名dbPath (SqliteUtils::Anonymous) - E_SQLITE_ERROR测试增加***断言验证匿名路径拼接 - 删除ErrMsgStoreTest测试target和err_msg_store.h/test文件 - abs_result_set.h: globalMtx_改为mutable ### 稳定性排查: - [x] 禁止在锁内向其他进程发送IPC - [x] 禁止将捕获栈变量引用的lambda函数异步到其他线程执行 - [x] 禁止传递this指针至其他模块或线程 - [x] 禁止存储string的c_str()方法获取到的指针 - [x] 成员变量进行赋值或创建需要排查并发 - [x] 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 - [x] map/vector/list/set等stl模板类使用时需要排查并发 - [x] 谨慎考虑加锁范围,尽可能的小范围加锁 - [x] 在IPC通信中谨慎使用同步通信方式 - [x] 禁止将外部传入的裸指针在内部直接构造智能指针 - [x] 禁止多个独立创建的智能指针管理同一地址 - [x] 禁止在析构函数中抛异步任务 - [x] 禁止js对象在非js线程创建、使用或销毁 - [x] 禁止在对外接口中未经判空直接使用外部传入的指针 - [x] 监听回调要确保,回调触发和取消注册并发时无生命周期问题 - [x] 遍历容器进行删除或插入时注意迭代器失效问题 ### 日志打印排查: - [x] 禁止打印内存地址 - [x] 禁止明文打印密钥、文件路径等敏感信息 - [x] 禁止不作匿名化直接打印敏感信息 - [x] 非必要不要在循环内打印日志 ### 安全编码自检: - [x] 内存申请前必须对内存大小进行合法性校验 - [x] 内存申请后必须判空 - [x] 分配和释放内存的函数需要成对出现 - [x] 禁止使用realloc、alloca函数 - [x] 外部传入的路径要做规范化校验 - [x] 指针变量、表示资源描述符的变量必须赋初值 - [x] IPC流程中ReadCString等结果必须判空 - [x] 整数之间运算时必须严格检查确保不会出现溢出 - [x] 安全函数必须检查返回值并进行正确处理 - [x] 格式化打印类型需匹配 ### L0新增用例自检结果: - [x] 是,有新增L0用例,且完成自检 ### 代码开发保证基本逻辑正常: - [x] 是 See merge request: openharmony/distributeddatamgr_relational_store!3429 | 3 天前 | |
修复多线程下close可能导致的crash Signed-off-by: changjiaxing <changjiaxing2@huawei.com> Change-Id: Id628a1cee6347c5b62b0bcdb6bb4123ae37297ed | 1 年前 | |
update OpenHarmony 2.0 Canary | 5 年前 | |
rdb v9 error code fix bug Signed-off-by: PaDaBoo <xuejianwu@huawei.com> | 3 年前 | |
docs: AGENTS.md 标题层级修正、rdb_native.md 错字修正 Signed-off-by: guochao95 <guochao76@h-partners.com> Co-Authored-By: Agent 🤖 AI[0%] 👌 AI Adopted[0%] 🧑 Human[100%] | 19 天前 | |
add code owner Signed-off-by: suoqilong <suoqilong@huawei.com> | 1 年前 | |
update OpenHarmony 2.0 Canary | 5 年前 | |
拆分rdb system test app Signed-off-by: bigteer <zhangdi126@huawei.com> | 3 个月前 | |
fix README link Signed-off-by: ZhaoJinghui <zhaojinghui5@h-partners.com> | 5 个月前 | |
chore: remove unused deps in cloud_extension chore: remove unused deps in cloud_extension Remove unused libuv dependency from bundle.json and cloud_extension BUILD.gn external_deps, and remove unused native_engine/native_engine.h include from cloud_extension.cpp. Fixes #2654 Co-Authored-By: Agent Signed-off-by: @baijidong <baijidong@huawei.com> Change-Id: I57787271fcd038b77fdc9e6fe695d516de5e33ea | 9 天前 | |
feat: ROM optimization — cflags/ldflags/version_script for 19 .so modules Add -Oz, -fvisibility=hidden, -fvisibility-inlines-hidden, -fno-unwind-tables, -fno-asynchronous-unwind-tables cflags and -Wl,--exclude-libs,ALL ldflags to all shared library targets. Add version_script GN attribute to 13 modules to restrict symbol export. Remove hmac_sha256.cpp from relational_store.gni sources list (not in upstream). Remove unused features from bundle.json. Signed-off-by: guochao <guochao76@h-partners.com> Co-Authored-By: Agent Signed-off-by: guochao95 <guochao76@h-partners.com> 🤖 AI[100%] 👌 AI Adopted[100%] 🧑 Human[0%] Co-authored-by: opencode (glm-5.1) <ai@local> Change-Id: Ia2482f3abb57c0d8d0c99ff1b860f2e826b1d287 | 1 个月前 |
关系型数据库(Relational Database,RDB)部件
简介
关系型数据库(Relational Database,RDB) 是一种基于关系模型来管理数据的数据库。OpenHarmony关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制。
OpenHarmony关系型数据库底层使用SQLite作为持久化存储引擎,支持SQLite具有的所有数据库特性,包括但不限于事务、索引、视图、触发器、外键、参数化查询和预编译SQL语句。
以下是几个基本概念:
-
关系型数据库
创建在关系模型基础上的数据库,以行和列的形式存储数据。
-
结果集
指用户查询之后的结果集合,可以对数据进行访问。结果集提供了灵活的数据访问方式,可以更方便的拿到用户想要的数据。
-
SQLite数据库
一款轻量级的数据库,是遵守ACID的关系型数据库组件。它是一个开源的项目。
图 1 关系型数据库部件架构图

用户程序通过JS接口调用关系型数据库部件,关系型数据库部件调用SQLite组件读写对应的数据库。
目录
//foundation/distributeddatamgr/relational_store/
├── frameworks # 框架层代码
│ └── js # JS API的实现
│ │ └── napi # napi代码实现
│ └── native # 内部接口实现
├── interfaces # 接口代码
│ └── inner_api # 内部接口声明
└── test # 测试用例
├── js # js用例
└── native # C++用例
约束
数据库中连接池的最大数量是4个,用以管理用户的读写操作。
为保证数据的准确性,数据库同一时间只能支持一个写操作。