mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-02 15:30:25 +08:00
@@ -56,18 +56,18 @@ const DM_TYPE_LIST: sqlColumnType[] = [
|
||||
{ udtName: 'BFILE', dataType: 'BFILE', desc: '二进制文件', space: '', range: '100G-1' },
|
||||
|
||||
// 达梦系统特有的字段类型 从 ALL_TYPES 表中查询得到
|
||||
{udtName: 'SYSGEO.ST_GEOMETRY', dataType: 'SYSGEO.ST_GEOMETRY', desc: '通用几何对象类型,可以表示点、线、面等任何几何形状', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_LINESTRING', dataType: 'SYSGEO.ST_LINESTRING', desc: '表示一条或多条连续的线段', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_CURVE', dataType: 'SYSGEO.ST_CURVE', desc: '表示一条曲线,可以是圆弧、抛物线等', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_LINESTRING', dataType: 'SYSGEO.ST_LINESTRING', desc: '表示一条或多条连续的线段', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_GEOMCOLLECTION', dataType: 'SYSGEO.ST_GEOMCOLLECTION', desc: '表示一个几何对象集合,可以包含多个不同类型的几何对象', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_GEOMETRY', dataType: 'SYSGEO.ST_GEOMETRY', desc: '通用几何对象类型,可以表示点、线、面等任何几何形状', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTICURVE', dataType: 'SYSGEO.ST_MULTICURVE', desc: '表示多个曲线的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTILINESTRING', dataType: 'SYSGEO.ST_MULTILINESTRING', desc: '表示多个线串的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTIPOINT', dataType: 'SYSGEO.ST_MULTIPOINT', desc: '表示多个点的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTIPOLYGON', dataType: 'SYSGEO.ST_MULTIPOLYGON', desc: '表示多个多边形的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTISURFACE', dataType: 'SYSGEO.ST_MULTISURFACE', desc: '表示多个表面的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_POINT', dataType: 'SYSGEO.ST_POINT', desc: '表示一个点', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_SURFACE', dataType: 'SYSGEO.ST_SURFACE', desc: '表示一个表面,通常是一个多边形', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTILINESTRING', dataType: 'SYSGEO.ST_MULTILINESTRING', desc: '表示多个线串的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_MULTIPOLYGON', dataType: 'SYSGEO.ST_MULTIPOLYGON', desc: '表示多个多边形的集合', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_POLYGON', dataType: 'SYSGEO.ST_POLYGON', desc: '表示一个多边形', space: '', range: ''},
|
||||
{udtName: 'SYSGEO.ST_SURFACE', dataType: 'SYSGEO.ST_SURFACE', desc: '表示一个表面,通常是一个多边形', space: '', range: ''},
|
||||
|
||||
];
|
||||
|
||||
|
||||
@@ -77,6 +77,22 @@ var (
|
||||
dbi.CommonTypeEnum: "TEXT",
|
||||
dbi.CommonTypeJSON: "TEXT",
|
||||
}
|
||||
|
||||
dmStructTypes = map[string]bool{
|
||||
"ST_CURVE": true, // 表示一条曲线,可以是圆弧、抛物线等
|
||||
"ST_LINESTRING": true, // 表示一条或多条连续的线段
|
||||
"ST_GEOMCOLLECTION": true, // 表示一个几何对象集合,可以包含多个不同类型的几何对象
|
||||
"ST_GEOMETRY": true, // 通用几何对象类型,可以表示点、线、面等任何几何形状
|
||||
"ST_MULTICURVE": true, // 表示多个曲线的集合
|
||||
"ST_MULTILINESTRING": true, // 表示多个线串的集合
|
||||
"ST_MULTIPOINT": true, // 表示多个点的集合
|
||||
"ST_MULTIPOLYGON": true, // 表示多个多边形的集合
|
||||
"ST_MULTISURFACE": true, // 表示多个表面的集合
|
||||
"ST_POINT": true, // 表示一个点
|
||||
"ST_POLYGON": true, // 表示一个多边形
|
||||
"ST_SURFACE": true, // 表示一个表面,通常是一个多边形
|
||||
}
|
||||
|
||||
dataHelper = &DataHelper{}
|
||||
columnHelper = &ColumnHelper{}
|
||||
)
|
||||
@@ -217,7 +233,7 @@ func (ch *ColumnHelper) FixColumn(column *dbi.Column) {
|
||||
}
|
||||
|
||||
func (dd *ColumnHelper) GetScanDestPtr(qc *dbi.QueryColumn) any {
|
||||
if qc.Type == "st_point" {
|
||||
if dmStructTypes[strings.ToUpper(qc.Type)] {
|
||||
return &dm.DmStruct{}
|
||||
}
|
||||
return dd.DefaultColumnHelper.GetScanDestPtr(qc)
|
||||
|
||||
@@ -174,7 +174,7 @@ func (v *PgsqlVisitor) VisitSimple_select_pramary(ctx *pgparser.Simple_select_pr
|
||||
qs.SelectElements = c.Accept(v).(*sqlstmt.SelectElements)
|
||||
}
|
||||
|
||||
if c := ctx.Where_clause(); c != nil {
|
||||
if c := ctx.Where_clause(); c != nil && c.A_expr() != nil {
|
||||
qs.Where = c.A_expr().Accept(v).(sqlstmt.IExpr)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user