首页
开源
资讯
活动
开源许可证
软件工程云服务
软件代码质量检测云服务
持续集成与部署云服务
社区个性化内容推荐服务
贡献审阅人推荐服务
群体化学习服务
重睛鸟代码扫描工具
登录
注册
代码拉取完成,页面将自动刷新
Watch
1
Star
3
Fork
1
黃正雄
/
思库可思 sqxclib
Fork 仓库
加载中
取消
确认
代码
Issues
0
Pull Requests
0
Wiki
0
统计
发行版
最新版
v1.0
9d72f37
2024-07-11 08:26
对比
v1.0
黃正雄
重大更改: 更改 API 参数 和 结构字段 以支持复合外键。 1 C 函数 sq_column_reference() 和 sq_table_add_foreign() 参数更改。 sq_column_reference() 和 sq_table_add_foreign() 的最后一个参数必须为 NULL。 2 C++ 不受此更改的影响。 3 如果静态定义 SQL 外键,请将 SqColumn::foreign 的数据类型替换为以 NULL 结尾的字符串数组。 请参阅下面的示例来更改您的代码。 3.1 列 "column" 和 删除时的操作 "onDeleteAction" 必须用空字符串 "" 分隔。 3.2 如果未指定 ON DELETE 操作,请将其设为空字符串 "" ,如下所示。 原来的: .foreign = &(SqForeign) {"table", "column"} 改成: .foreign = (char *[]) {"table", "column", NULL} 原来的: .foreign = &(SqForeign) {"table", "column", "onDeleteAction", "onUpdateAction"} 改成: .foreign = (char *[]) {"table", "column", "", "onDeleteAction", "onUpdateAction", NULL} 原来的: .foreign = &(SqForeign) {"table", "column", NULL, "onUpdateAction"} 改成: .foreign = (char *[]) {"table", "column", "", "", "onUpdateAction", NULL} --------------------------------------- 用户添加新命令时不需要派生 SqCommandValue 结构。 与 SqCommandValue 相关的旧代码必须修改。 原有结构: struct MyCommandValue : SqCommandValueMethod { SQ_COMMAND_VALUE_MEMBERS; int myOption; }; 将结构更改为: struct MyCommandOptions { int myOption; }; 原始处理函数: static void mycommand_handle(SqCommandValue *commandValue, SqConsole *console, void *data) { MyCommandValue *values = (MyCommandValue*)commandValue; } 将处理函数更改为: static void mycommand_handle(SqCommandValue *commandValue, SqConsole *console, void *data) { MyCommandOptions *options = (MyCommandOptions*)commandValue->options; } 其他相关变更: SqCommandCommon.h 重命名为 SqAppOptions.h SqCommandCommon.c 重命名为 SqAppOptions.c SqCommandMigrate.h 重命名为 SqAppCommands.h SqCommandMigrate.c 重命名为 SqAppCommands-migrate.c SqCommandMake.c 重命名为 SqAppCommands-make.c --------------------------------------- Type Mapping: SqColumn 添加 SQL 类型映射字段。更改字段的某些数据类型。 如果您使用 C++ 聚合初始化来初始化 SqColumn,您的代码可能会受到影响。 Query-only column: 为 SQL 指令「SELECT length(BlobColumn), * FROM table」新增仅查询列 SqConfig.h 加入 SQ_CONFIG_QUERY_ONLY_COLUMN 来启用/停用此功能。 BLOB, CLOB, TEXT 为 C SqBuffer 和 SQL BLOB 添加 SQ_TYPE_BUFFER 为 C++ std::vector<char> 和 SQL BLOB 添加 SQ_TYPE_STD_VECTOR。 SqPostgre: 在删除表之前删除触发函数。 SqType: 添加 setName() 和 useConstant()。 Sqdb: 迁移后,按名称对表和列进行排序。 SqTable: 添加主键缓存。 SqStorage: 添加使用原始字符串进行查询的功能。 SqStorage: 为 Sq::QueryMethod 和 Sq::QueryProxy 添加了便捷的 C++ 方法。 Sqxc: 为二进位和几何等 SQL 资料类型新增 SQXC_TYPE_RAW 类型。 Sqxc: 添加缺少的 C++ 方法 eraseNested() SqxcSql 现在不访问 SqColumn::default_value,它可以使用 SqEntry 来输出 SQL 语句。 SqConsole: 无需命令名即可运行。 添加 C++ 方法。 SqCommand: 命令选项可以使用 Sqxc 输出 JSON 或 SQL。 SqOption: 添加将选项值设置为指针类型的函数。 SqApp: 禁用包含表 "User" 的示例迁移。默认情况下不会对其进行编译。 添加 sq_type_copy() 来替换 sq_type_copy_static() 添加 sq_column_copy() 来替换 sq_column_copy_static() 添加 sq_command_copy() 来替换 sq_command_copy_static() sq_type_copy_static()、sq_column_copy_static()、sq_command_copy_static() 已弃用。 加入巨集 SQ_N_ELEMENTS() 来计算数组中存在的元素数量。 巨集 SQ_N_PTRS() 和 SQ_N_COLUMNS() 已弃用。 添加 sq_type_entry_array() 来替换 sq_type_get_ptr_array(),它获取 SqType 中的 SqEntry 数组。 sq_type_get_ptr_array() 已弃用。 sq_column_foreign() 已弃用。 删除 0.11 之前已弃用的代码 ------------- 此版本中已弃用的符号 SQCODE_NOT_SUPPORT SQCODE_TYPE_NOT_MATCH SQCODE_TYPE_NOT_SUPPORT SQ_N_PTRS() SQ_N_COLUMNS() SQ_PTR_ARRAY_MEMBERS() sq_buffer_insert_n() sq_buffer_write_n() SQ_BUFFER_WRITE_N SQ_BUFFER_INSERT_N Sq::Type::copyStatic() Sq::Command::copyStatic() sq_type_get_ptr_array() sq_type_copy_static() sq_column_foreign() sq_column_copy_static() sq_command_copy_static()
最后提交信息为:
bump version to 1.0
v0.11
13d7a6e
2023-07-06 08:20
对比
v0.11
黃正雄
此版本主要修改了基础数据结构,下一个版本将删除已弃用的代码。 添加 SqArray、SqIntArray 和它们的静态 SqType:SQ_TYPE_ARRAY、SQ_TYPE_INT_ARRAY。 SqType-PtrArray.c 更名为 SqType-array.c SqPtrArray: 移除 sq_ptr_array_init_full() SqPtrArray: 更改 C 函数名称以对应 SqArray 的函数名称。 sq_ptr_array_append 重命名为 sq_ptr_array_push sq_ptr_array_insert 重命名为 sq_ptr_array_push_to sq_ptr_array_append_n 重命名为 to sq_ptr_array_append sq_ptr_array_insert_n 重命名为 to sq_ptr_array_insert SQ_PTR_ARRAY_APPEND_N 重命名为 SQ_PTR_ARRAY_APPEND SQ_PTR_ARRAY_INSERT_N 重命名为 SQ_PTR_ARRAY_INSERT SqStrArray: 更改 C 函数名称以对应 SqArray 的函数名称。 sq_str_array_append 重命名为 sq_str_array_push sq_str_array_insert 重命名为 sq_str_array_push_to sq_str_array_append_n 重命名为 sq_str_array_append sq_str_array_insert_n 重命名为 sq_str_array_insert sq_str_array_dup_n 重命名为 sq_str_array_strdup SqPairs: sq_pairs_find() 重命名为 sq_pairs_get() SqPairs: 添加 C++ 類 Sq::Pairs SqRow:添加 shareCols() 以节省内存。 SqArray 现在是 SqRow 的基本结构。 SqSchema:添加 new_ver() 和 init_ver() 以在初始化时指定版本。 SqTable、SqColumn:为其派生结构/类添加 init() 和 final()。 Sql::Table 添加方法 stdstr (stdstring 的别名) SqType 定义 SQ_TYPE_STD_STR (SQ_TYPE_STD_STRING 的别名) 弃用以下类型: SQ_TYPE_INTPTR SQ_TYPE_INTPTR_ARRAY SqStringArray SqIntptrArray SqUintptrArray
最后提交信息为:
bump version to 0.11
v0.10
8b5abe9
2023-03-03 08:27
对比
v0.10
黃正雄
SqQuery:添加方便的 C++ 類 Sq::select 和 Sq::from。 SqTypeRow:添加 SQ_TYPE_ROW。它是 SqTypeRow 的內置常量靜態類型。 SqApp:添加 SQ_APP_DEFAULT_xxx 系列 SqType:添加銷毀通知程序。它由派生的 SqType 使用。 SqEntry:添加函數 sq_entry_set_name() 來設置 SqEntry.name。 SqStorage:添加重載的查詢方法。它可以與 Sq::select 和 Sq::from 一起使用。 SqConfig:默認禁用 SQ_CONFIG_QUERY_USE_OLD_CONDITION。 添加 SqStrArray 文件。 它們與 SqPtrArray 文件分開。 對於 C 語言: SqStrArray 由 SqStringArray 更改而來。 它在附加和插入時復製字符串,這與 SqStringArray 不同。 對於 C++ 語言: Sq::StrArray 與舊版本的 Sq::StringArray 幾乎相同。 保留 SqStringArray 和 Sq::StringArray 的定義是為了與舊版本兼容。
最后提交信息为:
bump version to 0.10
v0.9
05ae8ef
2022-11-11 12:29
对比
v0.9
黃正雄
SqQuery 重大变化: [已弃用] 如果列名包含 % 字符,则作为 printf 格式字符串处理。 (以后不支持) 用户必须在传递条件值之前传递 printf 格式字符串。 C 函数 sq_query_xxx_raw() 和 C++ 方法 xxxRaw() 现在支持 printf 格式字符串。 请参阅 doc/SqQuery.md 以获取更多信息。 将来会删除与旧版本兼容的代码。 SqConfig.h 有选项 SQ_CONFIG_QUERY_USE_OLD_CONDITION 来启用/禁用兼容代码。 例如: // C 旧版 sq_query_where(query, "id", ">", "100"); sq_query_where(query, "id > %d", 10); // C 新版本 sq_query_where(query, "id", ">", "%d", 100); sq_query_where_raw(query, "id > %d", 10); // C++ 旧版 query->where("id", ">", "100"); query->where("id > %d", 10); // C++ 新版本 query->where("id", ">", 100); query->whereRaw("id > %d", 10); SqQuery 其他变化: 更改节点的链接方式。 添加 C 宏 sq_query_xxxx_sub() 用于在 C 语言中使用子查询。 添加 C 函数 sq_query_last() 和 C++ 方法 last() 添加 C 函数和 C++ 方法,例如 whereNot() 和 whereNull()。 为 lambda std::function<void(SqQuery &query)> 添加 C++ 重载函数 为 join()、on()、where() 和 have() 添加 C++ 重载函数以省略 printf 格式字符串。 现在不需要在 sq_query_select()、sq_query_group_by()、sq_query_order_by() 的最后一个参数处传递 NULL。 sq_query_where_in() 可以通过宏计算 printf 格式字符串后的值个数。 sq_query_raw() 支持 printf 格式字符串并使用宏来计算参数的数量。 在使用变量参数的宏的注释中添加声明。 C++ 方法 whereBetween() 和 whereIn() 应该在 C 字符串中添加引号。 SqQuery 修复: sq_query_select_table_as()中使用AS名替换表名 SqQuery 不能在括号中使用 sq_query_on() 和 sq_query_having()。
最后提交信息为:
bump version to 0.9
v0.8
0c9e9a4
2022-09-19 08:42
对比
v0.8
黃正雄
支持 PostgreSQL SqStorage 为 C++ 类 'where'、'whereRaw' 和 'QueryProxy' 添加方法。 SqColumn 为 C 语言添加列修饰符。 SqColumn 删除字段 'check' 并添加字段 'reserve'。 SqColumn 将 sq_column_default() 和 sq_column_raw() 更改为内联函数。 SqQuery 添加 limit() 和 offset() 来支持 LIMIT 和 OFFSET。 SqQuery 添加 whereNotExists()。 SqQuery 添加 whereBetween(), whereNotBetween(), orWhereBetween(), orWhereNotBetween()。 SqQuery 添加 whereIn(), whereNotIn(), orWhereIn(), orWhereNotIn()。 SqRow 添加 sq_row_free_cols_name() 以释放列的名称。 SqType、SqEntry、SqCommand 和 SqOption:添加函数来设置字符串。 为方便起见,添加 C++ 类 WhereExists、WhereBetween 和 WhereIn 系列。 修复:SqQuery.whereExists() 不能与其他 where() 方法一起使用。 安装此版本后,请重新编译之前版本编译的应用程序代码。
最后提交信息为:
bump version to 0.8
v0.7.1
8bfe070
2022-07-27 08:18
对比
v0.7.1
黃正雄
此版本主要修复文档和生成文件。 CMake:为 (Apple) CLang 指定 C 或 C++ 语言标准的版本。 CMake & meson:不要为用户指定 C 或 C++ 语言标准的版本。 CMake & meson:避免链接未使用的共享库。 meson:修复未找到 MySQL 或 SQLite 时的构建错误。 在 SqConfig.h 中添加 SQ_CONFIG_ERASE_FAKE_TYPE_WHEN_SYNC_DB 添加翻译文件。 修复文档和评论中的错误。 不推荐使用的错误代码: SQCODE_DB_VERSION_0 (被 SQCODE_DB_SCHEMA_VERSION_0 取代) SQCODE_DB_VERSION_MISMATCH (被 SQCODE_DB_WRONG_MIGRATIONS 取代)
最后提交信息为:
bump version to 0.7.1
v0.7
ab72d84
2022-07-06 08:15
对比
v0.7
黃正雄
此版本提供共享库和项目模板以供开发使用。 请在编译此版本之前删除 CMake & meson build 目录中的所有文件和目录。 1. sq_storage_get() 和 sq_storage_remove() 可以与 SqTypeRow(未知的表类型)一起使用。 2. 因为 sqxclib 将来可能会支持更多的 SQL 产品,所以添加函数 sq_schema_update()。 3. 从 'sqxc' 共享库中分离 'sqxc_sqlite' 和 'sqxc_mysql' 这 2 个共享库。 4. 添加项目模板目录。 5. CMake:添加选项 BUILD_SHARED_LIBS。 6. CMake:它可以在没有 CMAKE_CXX_COMPILER 的情况下构建项目。 7. CMake & meson:为 pkg-config 添加 sqxclib.pc。 8. sq_type_string_parse():不要释放容器中存在的字符串。它可能会导致内存损坏。 9. sqxctool 'make:migration' 可以处理来自命令行参数的长表名。 10. 修复 sq_str_camel()、sq_str_snake()、sq_str_singular() 和 sq_str_plural() 中的内存损坏。 11. 修复:如果用户传递单数字符串, sq_plural2singular() 会得到错误的结果。
最后提交信息为:
bump version to 0.7
v0.6.2
35b68f2
2022-04-24 08:05
对比
v0.6.2
黃正雄
SqQuery 添加更方便的重载函数来处理 SQL 原始语句。 添加 SqValue。 由 Sqxc 分離出來。 添加 sq_query_c()。 它返回由 SqQuery 管理的 SQL 语句。 添加 C++ 类 Sq::Where 和 Sq::WhereRaw。 方便由 Sq::Storage 使用。 添加子目录 sqxcsupport,它包含 sqxcstructs、sqxconsole 和 sqxctest。 添加 SqType.free() 并删除 SqType.ref()/SqType.unref() 。 这些函数由动态类型使用。 修复:如果 sq_query_init() 的参数 table_name 不是 NULL,则程序崩溃。 修复:sq_query_clear() 中的内存泄漏。 修复:如果 sq_query_node_new() 用完回收节点,会导致内存损坏。 修复:sqdb_sqlite_exec() 中的内存泄漏。
最后提交信息为:
bump version to 0.6.2
v0.6.1
c14a219
2022-03-23 08:50
对比
v0.6.1
黃正雄
SqQuery 添加 raw()、leftJoin()、rightJoin()、fullJoin()、crossJoin() 和 union()。 SqStorage 在 get() 和 remove() 中将参数“id”的类型从 int 更改为 int64_t。 SqStorage 添加 updateAll() 和 updateField() 删除 MSVC 中的编译警告 将测试添加到 CMakeLists.txt 修复:如果 SqQuery 用很多 orderBy() + desc(),则生成错误的 SQL 语句 修复:解析未知数组和对象时,SqxcValue 可能会崩溃。 修复:调用 close() 后 SqdbMysql 崩溃。 修复:MySQL 迁移必须使用“MODIFY COLUMN”
最后提交信息为:
bump version to 0.6.1
v0.6
2b9758c
2022-02-22 08:06
对比
v0.6
黃正雄
SqStorage 删除无用的函数和参数。 添加 SQ_TYPE_UNKNOWN。 SqxcValue 现在可以处理未定义的列或字段。 添加 SQ_TYPE_CHAR。 对应SQL数据类型:CHAR 将 SqColumn 源文件和头文件与 SqTable 分开。 修复 v0.5.1 以来的许多错误 添加更多测试代码 C++ 变化: 将构造函数和析构函数从 SqXxx 移动到 sqxclib 中的 Sq::Xxx。 添加更多 Sq::XxxMethod 和 SQ_XXX_MEMBERS,用户可以将这些用于衍生结构。 在此版本之后,我将尝试稳定 C 函数和 C++ 方法。下一个稳定版本不是 1.0。
最后提交信息为:
bump version to 0.6
v0.5.1
8fd6f79
2022-01-04 03:47
对比
v0.5.1
黃正雄
gitee 首次发布
最后提交信息为:
bump version to 0.5.1
下载
请输入验证码,防止盗链导致资源被占用
取消
下载