关于不同数据类型在不同数据库的适配

最后更新:2024-09-06 05:30:00 | 状态:未完成
*TypeMetadataAlias类中维护了 每个数据类型在每个数据库中对应的实际类型以及长度、有效位数、小数位数的支持
如mysql环境中在设置类型时调用column.setType("DOUBLE(10)")
会先到alias中找到DOUBLE在mysql对应的的实际类型
再判断是否支持长度、有效位数、小数位数
格式如下
枚举变量                             代码中输入的类型                    对应的标准类型                                         是否忽略 长度、有效位、小数位
                                                                       ILLEGAL表示不支持,会抛出异常                          (0:不忽略必须有; 1:忽略; 2:有值就不忽略,没值就忽略; 
                                                                                                                             3:有效位与小数位相互依赖,少一个值就全忽略或者说要么都有要么都没有)
TINYTEXT                           ("TINYTEXT"                         ,StandardTypeMetadata.TINYTEXT                           , 1, 1, 1),
VARBINARY                          ("VARBINARY"                        ,StandardTypeMetadata.VARBINARY                          , 0, 1, 1),
VARCHAR                            ("VARCHAR"                          ,StandardTypeMetadata.VARCHAR                            , 0, 1, 1),
YEAR                               ("YEAR"                             ,StandardTypeMetadata.YEAR                               , 1, 1, 1),
ACLITEM                            ("ACLITEM"                          ,StandardTypeMetadata.NONE                               ),
AGG_STATE                          ("AGG_STATE"                        ,StandardTypeMetadata.NONE                               ),
AGGREGATE_METRIC_DOUBLE            ("aggregate_metric_double"          ,StandardTypeMetadata.NONE                               ),
ALIAS                              ("alias"                            ,StandardTypeMetadata.NONE                               ),
ARRAY                              ("ARRAY"                            ,StandardTypeMetadata.NONE                               ),
BFILE                              ("BFILE"                            ,StandardTypeMetadata.ILLEGAL                            , -1, -1, -1),
BIGSERIAL                          ("BIGSERIAL"                        ,StandardTypeMetadata.BIGINT                             , 1, 1, 1),
BINARY_DOUBLE                      ("BINARY_DOUBLE"                    ,StandardTypeMetadata.DOUBLE                             , 1, 3, 3),
BINARY_FLOAT                       ("BINARY_FLOAT"                     ,StandardTypeMetadata.FLOAT                              , 1, 2, 3),
INTERVAL_DAY_MINUTE                ("INTERVAL DAY TO MINUTE"           ,StandardTypeMetadata.NONE                               ),
INTERVAL_DAY_SECOND                ("INTERVAL DAY TO SECOND"           ,StandardTypeMetadata.NONE                               ),
INTERVAL_HOUR                      ("INTERVAL HOUR"                    ,StandardTypeMetadata.NONE                               ),


首页 最近更新 搜索 提交 回复