mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20:25 +08:00 
			
		
		
		
	@@ -56,18 +56,18 @@ const DM_TYPE_LIST: sqlColumnType[] = [
 | 
				
			|||||||
    { udtName: 'BFILE', dataType: 'BFILE', desc: '二进制文件', space: '', range: '100G-1' },
 | 
					    { udtName: 'BFILE', dataType: 'BFILE', desc: '二进制文件', space: '', range: '100G-1' },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 达梦系统特有的字段类型  从 ALL_TYPES 表中查询得到
 | 
					    // 达梦系统特有的字段类型  从 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_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_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_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_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_MULTISURFACE', dataType: 'SYSGEO.ST_MULTISURFACE', desc: '表示多个表面的集合', space: '', range: ''},
 | 
				
			||||||
    {udtName: 'SYSGEO.ST_POINT', dataType: 'SYSGEO.ST_POINT', 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_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.CommonTypeEnum:       "TEXT",
 | 
				
			||||||
		dbi.CommonTypeJSON:       "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{}
 | 
						dataHelper   = &DataHelper{}
 | 
				
			||||||
	columnHelper = &ColumnHelper{}
 | 
						columnHelper = &ColumnHelper{}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -217,7 +233,7 @@ func (ch *ColumnHelper) FixColumn(column *dbi.Column) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (dd *ColumnHelper) GetScanDestPtr(qc *dbi.QueryColumn) any {
 | 
					func (dd *ColumnHelper) GetScanDestPtr(qc *dbi.QueryColumn) any {
 | 
				
			||||||
	if qc.Type == "st_point" {
 | 
						if dmStructTypes[strings.ToUpper(qc.Type)] {
 | 
				
			||||||
		return &dm.DmStruct{}
 | 
							return &dm.DmStruct{}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return dd.DefaultColumnHelper.GetScanDestPtr(qc)
 | 
						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)
 | 
							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)
 | 
							qs.Where = c.A_expr().Accept(v).(sqlstmt.IExpr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user