wecisecode 1 tydzień temu
rodzic
commit
65a047a678

+ 34 - 9
odbctest/mql/basic/mdb/0100class.mql

@@ -24,29 +24,45 @@ CREATE DB IF NOT EXISTS msqldb (
 create class if not exists /mdb () with namespace='mdb'
 ;
 
+-- 固定映射(指定固定条件或无条件映射数据),
+-- 当主类中没有数据时,查询时自动赋值默认对象属性:
 --  class: 类名/mdb/dba1,
 --  id:    组合映射表主键为字符串,
 --  name:  与id相同,
 --  day:   当前日期,
 --  vtime: 当前时间
+-- 映射表查询结果按 id 匹配关联主对象
+-- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象
 -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
+-- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素
 -- 支持 bucket 链式表达式
 create class if not exists /mdb/dba1 (
 	rdb             bucket {
-                        -- 全表映射
+                        -- 必须:固定映射
                         "type"  : "msqldb",
-                        -- 指定表名
-                        "table" : "T__matrix__test___422YX2FPSXSLVDA9"
+                        -- 必须:指定表名
+                        -- TODO 前期 指定结构化查询信息,方便实现,后期可解析 sql 语句,方便应用开发
+                        "table" : "T__matrix__test___422YX2FPSXSLVDA9",
+                        -- 可选:字段信息,不指定或指定空数组时,选择全部字段,相当于 "*"
+                        "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
+                        -- 可选:固定条件信息,不指定条件或指定空对象时,按无条件处理
+                        -- 注意:固定条件指的是不包含变量条件,即与主对象中的字段不存在任何指定关系
+                        "conds" : {
+                            "and": [{ -- 多条件组合
+                                "like": ["文本","%合法%"]},{ -- 常量条件
+                                "or": [{
+                                    "=": ["name", "7884235075310994619"]},{ -- 常量条件
+                                    "=": ["字符串", "*abc*"]},{
+                                    "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", "2026-10-10"]}]}]}, -- sql函数支持,不校验参数语法
+                        -- 可选:默认按主键顺序排序
+                        "orderby" : ["字符串", {"name":"vdouble","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
+                        -- TODO "groupby","having"
                     },
 ) with nickname='dba1'
 ;
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
 -- 支持 bucket 链式表达式
@@ -58,19 +74,23 @@ create class if not exists /mdb/dba2 (
     xdouble         double,
     xdate           date,
     xrdb            bucket {
-                        -- 条件映射
+                        -- 必须:映射名
                         "type"  : "msqldb",
-                        -- 指定结构化查询信息表、字段、条件
-                        -- TODO 后期可解析 sql 语句,方便应用开发
+                        -- 必须:指定表名
+                        -- TODO 前期 指定结构化查询信息,方便实现,后期可解析 sql 语句,方便应用开发
                         "table" : "T__matrix__test___422YX2FPSXSLVDA9",
+                        -- 可选:字段信息,不指定或指定空数组时,选择全部字段,相当于 "*"
                         "fields": ["字符串", "大整数", "整数", "浮点", {"name":"双浮点","asname":"vdouble"}],
+                        -- 必须:带有变量的条件信息
+                        -- 变量指的是主类字段,以 json对象 形式表示,{"field":"xvarchar"}
                         "conds" : {
                             "and": [{ -- 多条件组合
-                                "like": ["_tokens","%/mtest/%"]},{ -- 常量条件
+                                "like": ["文本","%合法%"]},{ -- 常量条件
                                 "or": [{
-                                    "=": ["name", {"field":"xvarchar"}]},{ -- 变量条件
+                                    "=": ["name", {"field":"xvarchar"}]},{ -- 变量条件,条件中的字段对象指的是主类字段
                                     "=": ["字符串", {"field":"xvarchar"}]},{
-                                    "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", {"field":"xdate"}]}]}]}, -- sql函数支持
+                                    "between": ["strftime('%Y-%m-%d',cast(day as integer)/1000.0+28800,'unixepoch')", "2026-01-01", {"field":"xdate"}]}]}]}, -- sql函数支持,不校验参数语法
+                        -- 可选:默认按主键顺序排序
                         "orderby" : ["字符串", {"name":"vdouble","reverse":true}] -- 指定排序,保证 last row 输出稳定结果
                         -- TODO "groupby","having"
                     } "rdb test",

+ 18 - 0
odbctest/mql/basic/mdb/0300valid.mql

@@ -4,6 +4,7 @@
 select * from /msqldb/sqlite_master
 /**
 output()
+match('name','T__matrix__test___422YX2FPSXSLVDA9')
 **/
 ;
 
@@ -11,28 +12,34 @@ select * from /msqldb/T__matrix__test___422YX2FPSXSLVDA9
 where day between '2026-01-01' and '2026-10-10'
 /**
 output()
+count(1)
+match('id','7884235075310994619')
+match('字符串','*abc*')
 **/
 ;
 
+-- 固定映射(指定固定条件或无条件映射数据),
+-- 当主类中没有数据时,查询时自动赋值默认对象属性:
 --  class: 类名/mdb/dba1,
 --  id:    组合映射表主键为字符串,
 --  name:  与id相同,
 --  day:   当前日期,
 --  vtime: 当前时间
+-- 映射表查询结果按 id 匹配关联主对象
+-- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象
+-- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
+-- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素
 -- 支持 bucket 链式表达式
 select id,rdb from /mdb/dba1
 /**
 output()
+count(1)
+match('id','7884235075310994619')
 **/
 ;
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
 -- 支持 bucket 链式表达式
@@ -44,9 +51,9 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
+-- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
 -- 支持 bucket 链式表达式
 select id,xvarchar,xrdb.find(整数>1) from /mdb/dba2
 /**
@@ -56,7 +63,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系
 -- 支持 bucket 链式表达式
@@ -69,7 +76,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系
 -- 支持 bucket 链式表达式
@@ -83,7 +90,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- TODO 重组 xrdb 指定字段,输出平表
 -- TODO 允许 bucket 与普通类操作方式一致
 -- TODO assert(AEXP) 可转换为 id in bucketfield.exps(...).find(AEXP).ids(),

+ 8 - 2
odbctest/mql/mdbx/0100class.mql

@@ -24,29 +24,30 @@ CREATE DB IF NOT EXISTS mdbxdb (
 create class if not exists /mdbx () with namespace='mdbx'
 ;
 
+-- 固定映射(指定固定条件或无条件映射数据),
+-- 当主类中没有数据时,查询时自动赋值默认对象属性:
 --  class: 类名/mdbx/dba1,
 --  id:    组合映射表主键为字符串,
 --  name:  与id相同,
 --  day:   当前日期,
 --  vtime: 当前时间
+-- 映射表查询结果按 id 匹配关联主对象
+-- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象
 -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型
+-- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素
 -- 支持 bucket 链式表达式
 create class if not exists /mdbx/dba1 (
 	rdb             bucket {
-                        -- 全表映射
+                        -- 固定映射
                         "type"  : "mdbxdb",
-                        -- 指定表名
+                        -- 必须:指定表名
                         "table" : "T__project_0_1000119_0_harness_0_draft__paper_0_trade_0_record"
                     },
 ) with nickname='mdbx_dba1'
 ;
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
 -- 支持 bucket 链式表达式

+ 10 - 0
odbctest/mql/mdbx/0300valid.mql

@@ -32,16 +32,17 @@ count(920706)
 -- **/
 -- ;
 
+-- 固定映射(指定固定条件或无条件映射数据),
+-- 当主类中没有数据时,查询时自动赋值默认对象属性:
 --  class: 类名/mdbx/dba1,
 --  id:    组合映射表主键为字符串,
 --  name:  与id相同,
 --  day:   当前日期,
 --  vtime: 当前时间
+-- 映射表查询结果按 id 匹配关联主对象
+-- 当主类中存在数据时,直接按主对象 id 与 组合映射表主键得到的字符串 进行匹配关联主对象
 -- rdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序或相应表字段定义顺序一致
+-- rdb 数据 与 id 一一对应,实际 二维数组中的第一维 最多只有 一个元素
 -- 支持 bucket 链式表达式
 select id,rdb from /mdbx/dba1
 /**
@@ -50,7 +51,7 @@ output()
 ;
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系,默认输出第一条记录,需要在 bucket 定义时明确数据唯一排序,否则数据输出可能不稳定
 -- 支持 bucket 链式表达式
@@ -62,7 +63,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系
 -- 支持 bucket 链式表达式
@@ -74,7 +75,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系
 -- 支持 bucket 链式表达式
@@ -87,7 +88,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- xrdb 输出为二维数组,兼容 promdb 等已有 bucket 类型,输出字段顺序与 bucket 定义的字段顺序一致
 -- xrdb 数据 与 id 为多对一关系
 -- 支持 bucket 链式表达式
@@ -101,7 +102,7 @@ output()
 
 
 -- 条件映射
+-- 主类中需要有数据,按指定条件映射数据,条件与主类数据有关联
 -- TODO 重组 xrdb 指定字段,输出平表
 -- TODO 允许 bucket 与普通类操作方式一致
 -- TODO assert(AEXP) 可转换为 id in bucketfield.exps(...).find(AEXP).ids(),

+ 23 - 0
odbctest/mql/problem/createclass/01.mql

@@ -0,0 +1,23 @@
+
+
+drop class if exists /aTK8Q04B8Z3/org
+;
+
+drop class if exists /aTK8Q04B8Z3
+;
+
+create class if not exists /aTK8Q04B8Z3 ( )
+with autosearch=true , version=false , key=manu, alias='aTK8Q04B8Z3' , namespace='aTK8Q04B8Z3z'
+;
+
+create class if not exists /aTK8Q04B8Z3/org ( 
+ id varchar ,
+ name varchar ,
+ up varchar ,
+ dept_sort_name varchar ,
+ dwjb_name varchar ,
+
+ index( id,name,up,dept_sort_name,dwjb_name) 
+ )with core=local , autosearch=true , version=false , key=manu , nickname='aTK8Q04B8Z3_org'
+;
+