From 9a4c9e3a4bc5c8439531bc890a1a735b40dffff7 Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Thu, 23 Jun 2022 10:58:36 +0800 Subject: [PATCH 1/3] 8.9.10.13-enmotech-developed document --- mogdb-docs | 1 + 1 file changed, 1 insertion(+) create mode 160000 mogdb-docs diff --git a/mogdb-docs b/mogdb-docs new file mode 160000 index 00000000..f99b3226 --- /dev/null +++ b/mogdb-docs @@ -0,0 +1 @@ +Subproject commit f99b32260f6f25754ab581768fdc9807d32eaad1 -- Gitee From b32cb66272aff49028a7f4c60a95a4d8b57f55b6 Mon Sep 17 00:00:00 2001 From: zcp100_zcp100 Date: Thu, 23 Jun 2022 11:25:39 +0800 Subject: [PATCH 2/3] add(mogdb):enterprise feature update(mogdb):function guc params --- .../open-source-components/PostGIS.md | 306 ++++++++++++++++++ .../MogDB-MySQL-compatibility.md | 24 ++ .../MogDB-Oracle-compatibility.md | 24 ++ .../fault-diagnosis.md | 34 ++ .../10-geometric-functions-and-operators.md | 23 ++ .../13.1-hll-functions-and-operators.md | 20 +- .../1-configuration-settings-functions.md | 41 +++ .../7-advisory-lock-functions.md | 54 ++++ ...cter-processing-functions-and-operators.md | 229 +++++++++---- .../7-mathematical-functions-and-operators.md | 36 ++- ...time-processing-functions-and-operators.md | 74 ++++- .../guc-parameters/SQL-mode.md | 21 ++ .../reference-guide/sql-syntax/ALTER-TABLE.md | 40 +-- .../sql-syntax/CREATE-TABLE.md | 27 +- .../v3.0/reference-guide/sql-syntax/INSERT.md | 16 +- .../tool-reference/server-tools/1-gs_check.md | 44 ++- .../server-tools/gs_gucquery.md | 50 +++ .../tool-reference/server-tools/gs_watch.md | 52 +++ .../16-gstrace.md | 94 ++++-- 19 files changed, 1065 insertions(+), 144 deletions(-) create mode 100644 product/zh/docs-mogdb/v3.0/about-mogdb/open-source-components/PostGIS.md create mode 100644 product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md create mode 100644 product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md create mode 100644 product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md create mode 100644 product/zh/docs-mogdb/v3.0/reference-guide/guc-parameters/SQL-mode.md create mode 100644 product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_gucquery.md create mode 100644 product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_watch.md diff --git a/product/zh/docs-mogdb/v3.0/about-mogdb/open-source-components/PostGIS.md b/product/zh/docs-mogdb/v3.0/about-mogdb/open-source-components/PostGIS.md new file mode 100644 index 00000000..4d83e269 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/about-mogdb/open-source-components/PostGIS.md @@ -0,0 +1,306 @@ +--- +title: PostGIS +summary: PostGIS +author: Zhang Cuiping +date: 2022-06-17 +--- + +# PostGIS + +## 背景 + +PostGIS 是一个空间数据库,在 PostgreSQL 上以插件的形式提供,为 PostgreSQL 提供了存储空间地理数据的支持,PostGIS 提供的功能包括:空间对象、空间索引、空间操作函数和空间操作符等。PostGIS 遵循 OpenGIS 规范,遵循 GNU General Public License(GPLv2 or later)。 + +随着信息技术及GIS应用的不断发展,大气科学、海洋科学、地质学、环境科学、交通管理等逐步应用 GIS 作为一种技术手段,处理和分析复杂的空间数据,并进行制图。同时,随着移动通信、移动定位、移动互联网的不断发展,一切事物都联系在了一起。空间数据库在城市管理、灾害响应、资源开发等方面都有非常大的应用前景。 + +PostGIS 多年的发展为 PostgreSQL 提供了强大空间数据处理能力。MogDB内核发源于 PostgreSQL,因此MogDB将首选PostGIS提供空间数据处理。 + +## 功能特性 + +在MogDB 3.0版本中,PostGIS将支持postgis、postgis_raster 和 postgis_topology 三个模块的主要功能。PostGIS只支持行存表,不支持BRIN索引。 + +| 编号 | 功能 | 目的及参考 | +| ---- | ------------------------------------- | ------------------------------------------------------------ | +| 1 | 支持PostGIS中的geometry类型及关联函数 | 支持 PostGIS 中的geometry类型及关联函数
具体类型和关联函数参考:
[http://postgis.net/workshops/postgis-intro/geometries.html](http://postgis.net/workshops/postgis-intro/geometries.html)
[http://postgis.net/workshops/postgis-intro/geography.html](http://postgis.net/workshops/postgis-intro/geography.html)
[https://livebook.manning.com/book/postgis-in-action/chapter-2/167](https://livebook.manning.com/book/postgis-in-action/chapter-2/167)
[https://gitee.com/opengauss/openGauss-third_party/tree/master/gpl_dependency/postgis](https://gitee.com/opengauss/openGauss-third_party/tree/master/gpl_dependency/postgis) | +| 2 | 支持 Raster及关联函数 | 支持 PostGIS 中的 raster 类型及关联函数。Raster 是 PostGIS 中的一种类型,用于存储和处理栅格数据。
具体类型和关联函数参考:
[https://postgis.net/docs/RT_reference.html](https://postgis.net/docs/RT_reference.html) | +| 3 | 支持 Topology 类型及其关联函数 | 支持 PostGIS 中的 topology 类型及关联函数。Topology 用于管理拓扑对象,如 faces、edges、nodes等。
具体类型和关联函数参考:
[https://postgis.net/docs/Topology.html#Topology_Types](https://postgis.net/docs/Topology.html#Topology_Types)
[https://trac.osgeo.org/postgis/wiki/UsersWikiPostgisTopology](https://trac.osgeo.org/postgis/wiki/UsersWikiPostgisTopology) | + +## 安装PostGIS + +### 安装准备 + +PostGIS依赖下列工具 (最低版本要求): + +- GCC-7.3. zlib.autoconf.automake +- Geos 3.6.2 +- Proj 4.9.2 +- Json 0.12.1 +- Libxml2 2.7.1 +- Gdal 1.11.0 + +> 注意:本文档仅提供*Geos.Proj.Json.Libxml.Gdal 1.11.0*安装脚本,您可以在之后选择通过脚本安装 *GCC-7.3.zlib.autoconf.automake*。 + +### 获取安装包 + +访问[该网站](https://opengauss.obs.cn-south-1.myhuaweicloud.com/dependency/postgis-xc-master-2020-09-17.tar.gz)下载postgis-xc-master-2020-09-17.tar.gz压缩包执行安装。 + +### 安装步骤 + +1. 将下载的压缩包拷贝到 *$GAUSSHOME* 路径下,解压缩,将目录重命名为 postgis-xc。 + +2. 设置必要的环境变量。 + + ``` + export CODE_BASE=________ # Path of the MogDB-server file + export PostGIS=________ # Path of the MogDB/PostGIS file + export BINARYLIBS=________ # Path of the binarylibs file + export GAUSSHOME=________ # Path of MogDB installation + export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GAUSSHOME/install/geos/lib:$GAUSSHOME/install/proj4/lib:$GAUSSHOME/install/gdal/lib:$GAUSSHOME/install/libxml2/lib/:$LD_LIBRARY_PATH + ``` + +3. 编译安装 PostGIS。 + + 执行以下命令进行安装,编译安装过程中,生成的文件会放在 *$GAUSSHOME/install* 路径下。 + + - 如果使用openeuler_aarch64操作系统,在以下执行 ./configure 的地方需要加上 "*--build=aarch64-unknown-linux-gnu*" 选项。 + - 编译安装过程中依赖第三方工具,如automake、autoconf 等。如果有编译环境,理论上已经安装过。如果未安装,请按照提示安装。 + + ``` + cd $GAUSSHOME/postgis-xc + + #apply patch + cd postgis-xc + patch -p1 < $PostGIS/postgis_2.4.2-1.patch + + #copy the dependent file: + cp $PostGIS/extension_dependency.h $GAUSSHOME/include/postgresql/server/ + + 此处需要替换为本机的PostGIS路径 + 编译 MogDB 3.0.0 和 openGauss 3.0.0 使用的 extension_dependency.h 文件不一样,主要是 MogDB 和 openGauss 内核在一些接口上有差异 + + 主要有以下接口: + SPI_execute + SPI_exec + SPI_cursor_open_with_args + + #install geos + cd $GAUSSHOME/postgis-xc/geos-3.6.2 + chmod +x ./configure + ./configure --prefix=$GAUSSHOME/install/geos + make -sj + make install -sj + + #install proj + cd $GAUSSHOME/postgis-xc/proj-4.9.2 + chmod +x ./configure + ./configure --prefix=$GAUSSHOME/install/proj + make -sj + make install -sj + + #install json + cd $GAUSSHOME/postgis-xc/json-c-json-c-0.12.1-20160607 + chmod +x ./configure + ./configure --prefix=$GAUSSHOME/install/json + + 执行make前需要在Makefile文件中将CFLAGS = CFLAGS = -g -O2 修改为CFLAGS = CFLAGS = -g -O2 -w + + make -sj + make install -sj + + #install libxml2 + cd $GAUSSHOME/postgis-xc/libxml2-2.7.1 + chmod +x ./configure + ./configure --prefix=$GAUSSHOME/install/libxml2 + make -sj + make install -sj + + #install gdal + cd $GAUSSHOME/postgis-xc/gdal-1.11.0 + chmod +x ./configure + chmod +x ./install-sh + ./configure --prefix=$GAUSSHOME/install/gdal --with-xml2=$GAUSSHOME/install/libxml2/bin/xml2-config --with-geos=$GAUSSHOME/install/geos/bin/geos-config --with-static_proj4=$GAUSSHOME/install/proj CFLAGS='-O2 -fpermissive -pthread' + make -sj + make install -sj + + #install postgis + cd $GAUSSHOME/postgis-xc/postgis-2.4.2 + sed -i -e 's/-Werror//g' $GAUSSHOME/lib/postgresql/pgxs/src/Makefile.global + ./configure --prefix=$GAUSSHOME/install/pggis2.4.2 --with-pgconfig=$GAUSSHOME/bin/pg_config --with-projdir=$GAUSSHOME/install/proj --with-geosconfig=$GAUSSHOME/install/geos/bin/geos-config --with-jsondir=$GAUSSHOME/install/json --with-xml2config=$GAUSSHOME/install/libxml2/bin/xml2-config --with-raster --with-gdalconfig=$GAUSSHOME/install/gdal/bin/gdal-config --with-topology --without-address-standardizer CFLAGS='-O2 -fpermissive -DPGXC -pthread -D_THREAD_SAFE -D__STDC_FORMAT_MACROS -DMEMORY_CONTEXT_CHECKING -w' CC=g++ + make -sj + make install -sj + + # copy the essential files to opengauss install folders: + cp $GAUSSHOME/install/json/lib/libjson-c.so.2 $GAUSSHOME/lib/libjson-c.so.2 + cp $GAUSSHOME/install/geos/lib/libgeos_c.so.1 $GAUSSHOME/lib/libgeos_c.so.1 + cp $GAUSSHOME/install/proj/lib/libproj.so.9 $GAUSSHOME/lib/libproj.so.9 + cp $GAUSSHOME/install/geos/lib/libgeos-3.6.2.so $GAUSSHOME/lib/libgeos-3.6.2.so + cp $GAUSSHOME/install/gdal/lib/libgdal.so.1.18.0 $GAUSSHOME/lib/libgdal.so.1 + cp $GAUSSHOME/install/pggis2.4.2/lib/liblwgeom-2.4.so.0 $GAUSSHOME/lib/liblwgeom-2.4.so.0 + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis.control $GAUSSHOME/share/postgresql/extension/ + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis--2.4.2.sql $GAUSSHOME/share/postgresql/extension/ + rm -f $GAUSSHOME/share/postgresql/extension/postgis_raster--2.*.sql + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis_raster--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis_raster--2.4.2.sql + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/postgis_raster.control $GAUSSHOME/share/postgresql/extension/postgis_raster.control + rm -f $GAUSSHOME/share/postgresql/extension/postgis_topology--2.*.sql + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/extensions/postgis_topology/sql/postgis_topology--2.4.2.sql $GAUSSHOME/share/postgresql/extension/postgis_topology--2.4.2.sql + cp $GAUSSHOME/postgis-xc/postgis-2.4.2/extensions/postgis_topology/postgis_topology.control $GAUSSHOME/share/postgresql/extension/postgis_topology.control + ``` + +4. 执行安装插件的命令 + + ``` + CREATE EXTENSION postgis; // 执行时间可能较长 + CREATE EXTENSION postgis_raster; + set behavior_compat_options='bind_procedure_searchpath'; + CREATE EXTENSION postgis_topology; + ``` + +## 使用PostGIS + +### 创建Extension + +- 使能PostGIS中的postgis功能 + + ``` + CREATE EXTENSION postgis; + ``` + +- 使能PostGIS中的栅格功能 + + ``` + CREATE EXTENSION postgis_raster; + ``` + +- 使能PostGIS中的拓扑功能 + + ``` + set behavior_compat_options='bind_procedure_searchpath'; + CREATE EXTENSION postgis_topology; + ``` + +### 使用Extension + +调用PostGIS Extension函数 + +```sql +SELECT GisFunction (Param1, Param2,......); +``` + +> 注意:GisFunction为函数名,Param1、Param2等为函数参数名。有关其他函数的具体使用,请参考[postgis-2.4.2](https://download.osgeo.org/postgis/docs/postgis-2.4.2.pdf)。 + +### 删除Extension + +删除PostGIS Extension。 + +``` +DROP EXTENSION postgis [CASCADE]; +``` + +> 注意: +> +> - 如果Extension被其它对象依赖(如创建的几何表),需要加入CASCADE(级联)关键字,删除所有依赖对象。 +> +> - 如果要完全删除PostGIS Extension,则需由omm用户使用gs_om工具移除PostGIS及其依赖的动态链接库,格式如下: +> +> ``` +> gs_om -t postgis -m rmlib +> ``` + +## PostGIS使用限制 + +### 支持的操作符和函数列表 + +| 函数分类 | 包含函数 | +| -------------------------------------- | ------------------------------------------------------------ | +| Management Functions | AddGeometryColumn、DropGeometryColumn、DropGeometryTable、PostGIS_Full_Version、PostGIS_GEOS_Version、PostGIS_Liblwgeom_Version、PostGIS_Lib_Build_Date、PostGIS_Lib_Version、PostGIS_PROJ_Version、PostGIS_Scripts_Build_Date、PostGIS_Scripts_Installed、PostGIS_Version、PostGIS_LibXML_Version、PostGIS_Scripts_Released、Populate_Geometry_Columns 、UpdateGeometrySRID | +| Geometry Constructors | ST_BdPolyFromText 、ST_BdMPolyFromText 、ST_Box2dFromGeoHash、ST_GeogFromText、ST_GeographyFromText、ST_GeogFromWKB、ST_GeomCollFromText、ST_GeomFromEWKB、ST_GeomFromEWKT、ST_GeometryFromText、ST_GeomFromGeoHash、ST_GeomFromGML、ST_GeomFromGeoJSON、ST_GeomFromKML、ST_GMLToSQL、ST_GeomFromText 、ST_GeomFromWKB、ST_LineFromMultiPoint、ST_LineFromText、ST_LineFromWKB、ST_LinestringFromWKB、ST_MakeBox2D、ST_3DMakeBox、ST_MakeEnvelope、ST_MakePolygon、ST_MakePoint、ST_MakePointM、ST_MLineFromText、ST_MPointFromText、ST_MPolyFromText、ST_Point、ST_PointFromGeoHash、ST_PointFromText、ST_PointFromWKB、ST_Polygon、ST_PolygonFromText、ST_WKBToSQL、ST_WKTToSQL | +| Geometry Accessors | GeometryType、ST_Boundary、ST_CoordDim、ST_Dimension、ST_EndPoint、ST_Envelope、ST_ExteriorRing、ST_GeometryN、ST_GeometryType、ST_InteriorRingN、ST_IsClosed、ST_IsCollection、ST_IsEmpty、ST_IsRing、ST_IsSimple、ST_IsValid、ST_IsValidReason、ST_IsValidDetail、ST_M、ST_NDims、ST_NPoints、ST_NRings、ST_NumGeometries、ST_NumInteriorRings、ST_NumInteriorRing、ST_NumPatches、ST_NumPoints、ST_PatchN、ST_PointN、ST_SRID、ST_StartPoint、ST_Summary、ST_X、ST_XMax、ST_XMin、ST_Y、ST_YMax、ST_YMin、ST_Z、ST_ZMax、ST_Zmflag、ST_ZMin | +| Geometry Editors | ST_AddPoint、ST_Affine、ST_Force2D、ST_Force3D、ST_Force3DZ、ST_Force3DM、ST_Force4D、ST_ForceCollection、ST_ForceSFS、ST_ForceRHR、ST_LineMerge、ST_CollectionExtract、ST_CollectionHomogenize、ST_Multi、ST_RemovePoint、ST_Reverse、ST_Rotate、ST_RotateX、ST_RotateY、ST_RotateZ、ST_Scale、ST_Segmentize、ST_SetPoint、ST_SetSRID、ST_SnapToGrid、ST_Snap、ST_Transform、ST_Translate、ST_TransScale | +| Geometry Outputs | ST_AsBinary、ST_AsEWKB、ST_AsEWKT、ST_AsGeoJSON、ST_AsGML、ST_AsHEXEWKB、ST_AsKML、ST_AsLatLonText 、ST_AsSVG、ST_AsText、ST_AsX3D、ST_GeoHash | +| Operators | &&、&&&、&<、&<\|>\|、=、>>、@ 、\|&> 、\|>>、~、~=、<->、<#> | +| Spatial Relationships and Measurements | ST_3DClosestPoint、ST_3DDistance、ST_3DDWithin、ST_3DDFullyWithin、ST_3DIntersects、ST_3DLongestLine、ST_3DMaxDistance、ST_3DShortestLine、ST_Area、ST_Azimuth、ST_Centroid、ST_ClosestPoint、ST_Contains、ST_ContainsProperly、ST_Covers、ST_CoveredBy、ST_Crosses、ST_LineCrossingDirection、ST_Disjoint、ST_Distance、ST_HausdorffDistance、ST_MaxDistance、ST_DistanceSphere、ST_DistanceSpheroid、ST_DFullyWithin、ST_DWithin、ST_Equals、ST_HasArc、ST_Intersects、ST_Length、ST_Length2D、ST_3DLength、ST_Length_Spheroid、ST_Length2D_Spheroid、ST_3DLength_Spheroid、ST_LongestLine、ST_OrderingEquals、ST_Overlaps、ST_Perimeter、ST_Perimeter2D、ST_3DPerimeter、ST_PointOnSurface、ST_Project、ST_Relate、ST_RelateMatch、ST_ShortestLine、ST_Touches、ST_Within | +| Geometry Processing | ST_Buffer、ST_BuildArea、ST_Collect、ST_ConcaveHull、ST_ConvexHull、ST_CurveToLine、ST_DelaunayTriangles、ST_Difference、ST_Dump、ST_DumpPoints、ST_DumpRings、ST_FlipCoordinates、ST_Intersection、ST_LineToCurve、ST_MakeValid、ST_MemUnion、ST_MinimumBoundingCircle、ST_Polygonize、ST_Node、ST_OffsetCurve、ST_RemoveRepeatedPoints、ST_SharedPaths、ST_Shift_Longitude、ST_Simplify、ST_SimplifyPreserveTopology、ST_Split、ST_SymDifference、ST_Union、ST_UnaryUnion | +| Linear Referencing | ST_LineInterpolatePoint、ST_LineLocatePoint、ST_LineSubstring、ST_LocateAlong、ST_LocateBetween、ST_LocateBetweenElevations、ST_InterpolatePoint、ST_AddMeasure | +| Miscellaneous Functions | ST_Accum、Box2D、Box3D、ST_Expand、ST_Extent、ST_3Dextent、Find_SRID、ST_MemSize | +| Exceptional Functions | PostGIS_AddBBox、PostGIS_DropBBox、PostGIS_HasBBox | +| Raster Management Functions | AddRasterConstraints、DropRasterConstraints、AddOverviewConstraints、DropOverviewConstraints、PostGIS_GDAL_Version、PostGIS_Raster_Lib_Build_Date、PostGIS_Raster_Lib_Version、ST_GDALDrivers、UpdateRasterSRID | +| Raster Constructors | ST_AddBand、ST_AsRaster、ST_Band、ST_MakeEmptyRaster、ST_Tile、ST_FromGDALRaster | +| Raster Accessors | ST_GeoReference、ST_Height、ST_IsEmpty、ST_MetaData、ST_NumBands、ST_PixelHeight、ST_PixelWidth、ST_ScaleX、ST_ScaleY、ST_RasterToWorldCoord、ST_RasterToWorldCoordX、ST_RasterToWorldCoordY、ST_Rotation、ST_SkewX、ST_SkewY、ST_SRID、ST_Summary、ST_UpperLeftX、ST_UpperLeftY、ST_Width、ST_WorldToRasterCoord、ST_WorldToRasterCoordX、ST_WorldToRasterCoordY | +| Raster Band Accessors | ST_BandMetaData、ST_BandNoDataValue、ST_BandIsNoData、ST_BandPath、ST_BandPixelType、ST_HasNoBand | +| Raster Pixel Accessors and Setters | ST_PixelAsPolygon、ST_PixelAsPolygons、ST_PixelAsPoint、ST_PixelAsPoints、ST_PixelAsCentroid、ST_PixelAsCentroids、ST_Value、ST_NearestValue、ST_Neighborhood、ST_SetValue、ST_SetValues、ST_DumpValues、ST_PixelOfValue | +| Raster Editors | ST_SetGeoReference、ST_SetRotation、ST_SetScale、ST_SetSkew、ST_SetSRID、ST_SetUpperLeft、ST_Resample、ST_Rescale、ST_Reskew、ST_SnapToGrid、ST_Resize、ST_Transform | +| Raster Band Editors | ST_SetBandNoDataValue、ST_SetBandIsNoData | +| Raster Band Statistics and Analytics | ST_Count、ST_CountAgg、ST_Histogram、ST_Quantile、ST_SummaryStats、ST_SummaryStatsAgg、ST_ValueCount | +| Raster Outputs | ST_AsBinary、ST_AsGDALRaster、ST_AsJPEG、ST_AsPNG、ST_AsTIFF | +| Raster Processing | ST_Clip、ST_ColorMap、ST_Intersection、ST_MapAlgebra、ST_Reclass、ST_Union、ST_Distinct4ma、ST_InvDistWeight4ma、ST_Max4ma、ST_Mean4ma、ST_Min4ma、ST_MinDist4ma、ST_Range4ma、ST_StdDev4ma、ST_Sum4ma、ST_Aspect、ST_HillShade、ST_Roughness、ST_Slope、ST_TPI、ST_TRI、Box3D、ST_ConvexHull、ST_DumpAsPolygons、ST_Envelope、ST_MinConvexHull、ST_Polygon、ST_Contains、ST_ContainsProperly、ST_Covers、ST_CoveredBy、ST_Disjoint、ST_Intersects、ST_Overlaps、ST_Touches、ST_SameAlignment、ST_NotSameAlignmentReason、ST_Within、ST_DWithin、ST_DFullyWithin | +| Raster Operators | &&、&<、&>、=、@、~=、~ | + +### 空间索引 + +GaussDB A数据库的PostGIS Extension支持GIST (Generalized Search Tree) 空间索引(分区表除外)。相比于B-tree索引,GIST索引适用于任意类型的非常规数据结构,可有效提高几何和地理数据信息的检索效率。 + +使用如下命令创建GIST索引: + +```sql +MogDB=# CREATE INDEX indexname ON tablename USING GIST ( geometryfield ); +``` + +### 扩展限制 + +- 只支持行存表; + +- spatial_ref_sys表在扩容期间只支持查询操作; + +- 目前不支持 window 函数; + +- long_xact 不支持; + +- 不支持 Interrupt 操作; + +## 示例 + +- geometry类型 + + ```sql + MogDB=# CREATE TABLE testgeomobj (id serial, geom geometry NOT NULL); + MogDB=# INSERT INTO testgeomobj (geom) VALUES ('SRID=4326;POINT(-95.363151 29.763374)'); + ``` + +- raster类型 + + ```sql + MogDB=# CREATE TABLE dummy_rast(rid integer, rast raster); + MogDB=# INSERT INTO dummy_rast(rid, rast) + VALUES (1, + ('01' -- little endian (uint8 ndr) + || + '0000' -- version (uint16 0) + || + '0000' -- nBands (uint16 0) + || + '0000000000000040' -- scaleX (float64 2) + || + '0000000000000840' -- scaleY (float64 3) + || + '000000000000E03F' -- ipX (float64 0.5) + || + '000000000000E03F' -- ipY (float64 0.5) + || + '0000000000000000' -- skewX (float64 0) + || + '0000000000000000' -- skewY (float64 0) + || + '00000000' -- SRID (int32 0) + || + '0A00' -- width (uint16 10) + || + '1400' -- height (uint16 20) + )::raster + ); + ``` + +- topology类型 + + ```sql + MogDB=# SELECT topology.CreateTopology(name, [srid], [tolerance]); + ``` diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md new file mode 100644 index 00000000..6c8ac724 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md @@ -0,0 +1,24 @@ +--- +title: 兼容MySQL +summary: 兼容MySQL +author: Zhang Cuiping +date: 2022-06-21 +--- + +# 兼容MySQL + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +本特性主要从三方面增强MogDB与MySQL的兼容性。首先是用户锁,允许用户通过sql加自定义的锁,可以让多个程序之间完成加锁相关的交互过程,使得客户端从任何位置访问都可以得到一致性的锁视图。其次,支持建表插入数据时默认记录插入当前时间;更新数据时,如果未指定更新时间,默认显示数据变更的当前时间。最后是支持设置会话级SQL模式,允许运行时变更、全局变更以及会话内变更。同时,支持兼容Insert语法,Insert into可以简写为insert。 + +## 客户价值 + +通过设置用户锁,对数据、数据结构或者某些字符串进行保护,避免会话之间相互干扰,保证了信息的一致性和安全性。解决了用户业务数据写入与修改时,记录其操作时间戳的问题。通过设置sql模式,可以解决早期版本遗留问题与后期版本的兼容性。 + +## 相关页面 + +[CREATE TABLE](CREATE-TABLE), [ALTER TABLE](ALTER-TABLE), [INSERT](INSERT) \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md new file mode 100644 index 00000000..539e2b14 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md @@ -0,0 +1,24 @@ +--- +title: 兼容Oracle +summary: 兼容Oracle +author: Zhang Cuiping +date: 2022-06-17 +--- + +# 兼容Oracle + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +本特性的目标是使用MogDB去替换Oracle的过程中,做到不修改业务代码或尽量减少修改业务代码。所有SQL使用方法以oracle数据库为参考,结果不同则视为有缺陷,结果顺序不同不视为缺陷(除非语句中明确指定排序),扩展功能不视为缺陷。 + +## 客户价值 + +本特性通过减少业务代码的修改,增强MogDB与Oracle的兼容性。 + +## 相关页面 + +[compat-tools仓库页面](https://gitee.com/enmotech/compat-tools) diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md new file mode 100644 index 00000000..8d8ec984 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md @@ -0,0 +1,34 @@ +--- +title: 故障诊断 +summary: 故障诊断 +author: Zhang Cuiping +date: 2022-06-17 +--- + +# 故障诊断 + +## 可获得性 + +本特性自MogDB 3.0.0版本开始引入。 + +## 特性简介 + +为了快速定位故障、收集系统故障信息、导出故障数据,进而修复故障,MogDB 3.0增强了OM功能以及gstrace诊断能力。 + +## 客户价值 + +故障诊断能力的增强,可以方便研发人员及时修复故障,保证系统的正常运行。 + +## 特性描述 + +gs_check工具可以对场景检查结果进行差异比较,并输出差异分析报告,帮助用户快速定位问题。 + +gs_watch工具可监测MogDB进程,当发现进程崩溃时,自动触发调用gs_collector对系统状态进行收集,以便后期分析。 + +gs_gucquery工具可自动收集整理并导出GUC值,比较不同时刻GUC值的变化。 + +gstrace诊断能力增强。支持按模块名和方法名打开一个或多个component(模块)和function(方法)的trace项;提升代码中gstrace点数量,增强gstrace输出信息表达能力;支持新的对关键数据结构PGPROC和user session数据的导出;支持gstrace点暂定并继续或崩溃功能,增强与测试框架整合实现精确控制注错;实现故障注入,包括系统调用报错模拟和变量内容攒写。 + +## 相关页面 + +[gs_check](1-gs_check),[gs_gucquery](gs_gucquery),[gstrace](16-gstrace),[gs_watch](gs_watch) diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/10-geometric-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/10-geometric-functions-and-operators.md index 6068bcce..83436930 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/10-geometric-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/10-geometric-functions-and-operators.md @@ -623,6 +623,29 @@ date: 2021-04-20 (1 row) ``` +- ratio_to_report + + 描述:计算一个值与一组值之和的比率。 + + 返回类型:float + + 示例: + + ```sql + MogDB=# SELECT last_name, salary, RATIO_TO_REPORT(salary) OVER () AS rr + FROM employees + WHERE job_id = 'PU_CLERK' + ORDER BY last_name, salary, rr; + ----------------------------------------------- + LAST_NAME SALARY RR + ------------------------- ---------- ---------- + Baida 2900 .208633094 + Colmenares 2500 .179856115 + Himuro 2600 .18705036 + Khoo 3100 .223021583 + Tobias 2800 .201438849 + ``` + - width(box) 描述:计算矩形的水平尺寸。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13.1-hll-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13.1-hll-functions-and-operators.md index 3e8446ad..f7f3a78e 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13.1-hll-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/13.1-hll-functions-and-operators.md @@ -57,7 +57,7 @@ date: 2021-06-07 (1 row) ``` -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: 数值大小相同的参数使用不同数据类型的哈希函数计算,最后结果会不一样,因为不同类型哈希函数会选取不同的哈希计算策略。 +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 数值大小相同的参数使用不同数据类型的哈希函数计算,最后结果会不一样,因为不同类型哈希函数会选取不同的哈希计算策略。 - hll_hash_smallint(smallint, int32) @@ -273,6 +273,22 @@ date: 2021-06-07 (1 row) ``` +- ora_hash + + 描述:计算给定表达式的哈希值。 + + 返回值类型:integer + + 示例: + + ```sql + MogDB=# select ORA_HASH('abcdAbcdasd'); + ora_hash + ------------ + 1844255371 + (1 row) + ``` + ## 日志函数 hll主要存在三种模式Explicit、Sparse、Full。当数据规模比较小的时候会使用Explicit模式,这种模式下distinct值的计算是没有误差的;随着distinct值越来越多,hll会先后转换为Sparse模式和Full模式,这两种模式在计算结果上没有任何区别,只影响hll函数的计算效率和hll对象的存储空间。下面的函数可以用于查看hll的一些参数。 @@ -724,7 +740,7 @@ hll主要存在三种模式Explicit、Sparse、Full。当数据规模比较小 (1 row) ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > 注意:当两个或者多个hll数据结构做union的时候,必须要保证其中每一个hll里面的精度参数一样,否则将不可以进行union。同样的约束也适用于函数hll_union(hll,hll)。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/1-configuration-settings-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/1-configuration-settings-functions.md index 6d7755b1..88a547a1 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/1-configuration-settings-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/1-configuration-settings-functions.md @@ -60,3 +60,44 @@ date: 2021-04-20 off (1 row) ``` + +- show(in str text) [执行出错,需要研发说明] + + 描述:返回该GUC变量当前设置的值。 + + 返回值类型:SETOF RECORD + + 示例: + + ```sql + MogDB=# select SHOW('enable_custom_parser') from dual; + show + ---------------------------------------------------- + name | set | description + ---------------------+-----+---------------------- + enable_custom_parser | off | Enables custom parser + (3 rows) + ``` + +- show_parameter(in str text) [执行出错,需要研发说明] + + 描述:返回该GUC变量当前设置的值。 + + 返回值类型:SETOF RECORD + + 示例: + + ```sql + MogDB=# select show_parameter('enable_default'); + show_parameter + + -------------------------------------------------------------------------------------- + name | set | description + ---------------------------------+-----+--------------------------------------------- + enable_default_cfunc_libpath | on | Enable check for c function lib path. + enable_default_compression_table | off | Enables create table default compression tab + le or not. + enable_default_ustore_table | off | Creates all user-defined tables with orienta + tion inplace + (5 rows) + ``` \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/7-advisory-lock-functions.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/7-advisory-lock-functions.md index b18559e2..6e3b6932 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/7-advisory-lock-functions.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/24-system-management-functions/7-advisory-lock-functions.md @@ -188,3 +188,57 @@ date: 2021-04-20 描述: 尝试对数据库主节点会话级别的排他咨询锁。 返回值类型: Boolean + +- pg_catalog.get_lock(text,text) + + 描述:用指定的字符串在数据库加用户锁,第二个参数是加锁等待时间。 + + 返回值类型:Int + +- pg_catalog.get_lock(text,double) + + 描述:用指定的字符串在数据库加用户锁,第二个参数是加锁等待时间。 + + 返回值类型:Int + +- pg_catalog.get_lock(text) + + 描述:用指定的字符串在数据库加用户锁。 + + 返回值类型:Int + +- pg_catalog.release_lock(text) + + 描述:释放指定的锁,如果释放成功,返回1,如果当前会话并未持有指定锁,返回0,如果当前锁并不存在(锁必须有人持有才会出现),返回NULL。 + + 返回值类型:Int + +- pg_catalog.is_free_lock(text) + + 描述:检查字符串是否空闲,如果没有被加锁返回1,否则返回0,如果检查期间出现其他错误,返回NULL。 + + 返回值类型:Int + +- pg_catalog.is_used_lock(text) + + 描述:检查字符串的锁被谁持有,返回对应的用户的会话id,如果指定锁无人持有,返回NULL。 + + 返回值类型:Bigint + +- pg_catalog.clear_all_invalid_locks() + + 描述:清除lockname HASH表中无效锁的信息,返回清除的锁的数量。 + + 返回值类型:Bigint + +- pg_catalog.release_all_locks() + + 描述:释放当前会话持有的所有的锁,返回释放的次数(对于单个字符串持有多个的情况,按对应数字计算而非只计算一次)。 + + 返回值类型:Bigint + +- pg_catalog.get_all_locks() + + 描述:查询当前库中的所有用户锁,以记录的形式返回所有用户锁的名字和持有人信息。 + + 返回值类型:Record \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md index be5260b6..4cb0e7d1 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/3-character-processing-functions-and-operators.md @@ -73,6 +73,39 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` +- instrb(searchstr text, substring text, int64 position, int64 occurrence) + + 描述:返回字符串中指定出现的子字符串的第一个字节的位置。 + + 返回值类型:int64 + + 示例: + + ```sql + MogDB=# select INSTRB('123456123', '123', 4); + instrb + -------- + 7 + (1 row) + ``` + +- insert(str,pos,len,newstr) + + 描述:返回字符串str,开头在pos位置的子串,并且用newstr代替len个字符长的字符串。 + + 返回值类型:string + + 示例: + + ```sql + MogDB=# SELECT INSERT("begtut.com", 1, 6, "Example"); + -------- + Example.com + (1 row) + ``` + + > 注意:如果pos不在字符串的长度范围内,则返回原始字符串。如果len不在字符串的其余部分的长度范围内,从位置pos替换字符串的其余部分。如果参数为NULL返回NULL。 + - lengthb(text/bpchar) 描述:获取指定字符串的字节数。 @@ -121,7 +154,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > 如果是查询bytea类型的长度,指定utf8编码时,最大长度只能为536870888。 @@ -141,6 +174,70 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` +- nls_charset_id(p1 name, p2 name default 'SQL_ASCII', P3 name default "SQL_ASCII") + + 描述:返回指定字符集p1对应的ID。 + + 返回值类型:integer + + 示例: + + ```sql + MogDB=# SELECT NLS_CHARSET_ID('gbk'); + nls_charset_id + ---------------- + 6 + (1 row) + ``` + +- nls_charset_name(p1 integer, p2 integer default 0) + + 描述:返回ID对应的字符集名称。 + + 返回值类型:name + + 示例: + + ```sql + MogDB=# SELECT NLS_CHARSET_NAME(6); + nls_charset_name + ------------------ + GBK + (1 row) + ``` + +- nls_lower + + 描述:返回所有字母的小写。 + + 返回值类型:string + + 示例: + + ```sql + MogDB=# SET search_path to whale; + MogDB=# SELECT NLS_LOWER(‘AbC’) FROM dual; + ------- + abc + (1 row) + ``` + +- NLS_UPPER + + 描述:返回所有字母的大写。 + + 返回值类型:string + + 示例: + + ```sql + MogDB=# SET search_path to whale; + MogDB=# SELECT NLS_UPPER(‘AbC’) FROM dual; + ------- + ABC + (1 row) + ``` + - notlike(x bytea name text, y bytea text) 描述:比较x和y是否不一致。 @@ -474,7 +571,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 如果POSIX正则表达式模式包含任何圆括号,那么将返回匹配第一对子表达式(对应第一个左圆括号的) 的文本。如果你想在表达式里使用圆括号而又不想导致这个例外,那么你可以在整个表达式外边放上一对圆括号。 - substring(string from *pattern* for *escape*) @@ -549,13 +646,13 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 MogDB=# SELECT regexp_substr('str','[ac]'); regexp_substr --------------- - + (1 row) - - MogDB=# SELECT regexp_substr('foobarbaz', 'b(..)', 3, 2) AS RESULT; - result - -------- - baz + + MogDB=# SELECT regexp_substr('foobarbaz', 'b(..)', 3, 2) AS RESULT; + result + -------- + baz (1 row) ``` @@ -578,10 +675,10 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ``` - MogDB=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT; - result - -------- - 1 + MogDB=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT; + result + -------- + 1 (1 row) ``` @@ -591,33 +688,33 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 参数说明: - − string:用于匹配的源字符串。 + - string:用于匹配的源字符串。 - − pattern:用于匹配的正则表达式模式串。 + - pattern:用于匹配的正则表达式模式串。 - − position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 + - position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 - − occurrence:可选参数,表示获取第occurrence个匹配子串的位置,默认值为1。 + - occurrence:可选参数,表示获取第occurrence个匹配子串的位置,默认值为1。 - − return_opt:可选参数,用于控制返回匹配子串的首字符位置还是尾字符位置。取值为0时,返回匹配子串的第一个字符的位置(从1开始计算),取值为大于0的值时,返回匹配子串的尾字符的下一个字符的位置。默认值为0。 + - return_opt:可选参数,用于控制返回匹配子串的首字符位置还是尾字符位置。取值为0时,返回匹配子串的第一个字符的位置(从1开始计算),取值为大于0的值时,返回匹配子串的尾字符的下一个字符的位置。默认值为0。 - − flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 + - flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m表示按照多行模式匹配。SQL语法兼容A和B的情况下,n选项在GUC参数behavior_compat_options值包含aformat_regexp_match时,表示“.”能够匹配 '\n' 字符,flags中没有指定n时,默认“.”不能匹配 '\n' 字符;值不包含aformat_regexp_match时,“.”默认能匹配'\n'字符。n选项的含义与m选项一致。 返回值类型:int 示例: - ``` - MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; - result - -------- - 4 - (1 row) - - MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; - result - -------- - 7 + ```sql + MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; + result + -------- + 4 + (1 row) + + MogDB=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; + result + -------- + 7 (1 row) ``` @@ -627,7 +724,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 flags参数为可选参数,包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > 如果提供了最后一个参数,但参数值是空字符串("),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为空集。这是因为A兼容模式将"作为NULL处理,避免此类行为的方式有如下几种: > > - 将数据库SQL兼容模式改为C; @@ -707,7 +804,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 由于数据库内存分配机制限制单次内存分配不可超过1GB,因此number最大值不应超过(1G-x)/lengthb(string) - 1。x为头信息长度,通常大于4字节,其具体值在不同的场景下存在差异。 - replace(string text, from text, to text) @@ -739,10 +836,28 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ```sql - MogDB=# SELECT replace('abcdefabcdef', 'cd'); - replace - ---------------- - abefabef + MogDB=# SELECT replace('abcdefabcdef', 'cd'); + replace + ---------------- + abefabef + (1 row) + ``` + +- replace(string, null) + + 描述:返回原字符串。 + + string类型:text + + 返回值类型:text + + 示例: + + ```sql + MogDB=# select replace('abcd', null); + replace + --------- + abcd (1 row) ``` @@ -1328,7 +1443,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 描述:将字符串str1和str2连接并返回。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**:数据库SQL兼容模式设置为MY的情况下,参数str1或str2为NULL会导致返回结果为NULL。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:**数据库SQL兼容模式设置为MY的情况下,参数str1或str2为NULL会导致返回结果为NULL。 返回值类型:varchar @@ -1427,10 +1542,10 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 示例: ``` - MogDB=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 2, 2, 'n') AS RESULT; - result - ------------ - foobarXazY + MogDB=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 2, 2, 'n') AS RESULT; + result + ------------ + foobarXazY (1 row) ``` @@ -1438,7 +1553,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 描述:以第一个参数为分隔符,链接第二个以后的所有参数。NULL参数被忽略。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > > - 如果第一个参数值是NULL,会导致返回结果为NULL。 > - 如果第一个参数值是空字符串("),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为NULL。这是因为A兼容模式>将"作为NULL处理,避免此类行为,可以将数据库SQL兼容模式改为B、C或者PG。 @@ -1464,23 +1579,23 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 sort_method类型:text 返回值类型:text - + 示例: - + ``` - MogDB=# SELECT nlssort('A', 'nls_sort=schinese_pinyin_m'); - nlssort + MogDB=# SELECT nlssort('A', 'nls_sort=schinese_pinyin_m'); + nlssort ---------------- - 01EA0000020006 - (1 row) - - MogDB=# SELECT nlssort('A', 'nls_sort=generic_m_ci'); - nlssort - ---------------- - 01EA000002 + 01EA0000020006 + (1 row) + + MogDB=# SELECT nlssort('A', 'nls_sort=generic_m_ci'); + nlssort + ---------------- + 01EA000002 (1 row) ``` - + - convert(string bytea, src_encoding name, dest_encoding name) 描述:以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式,在该编码下,string必须是合法的。 @@ -1497,7 +1612,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 如果源编码格式到目标编码格式的转化规则不存在,则字符串不进行任何转换直接返回,如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。 > 示例: > @@ -1655,7 +1770,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 描述:将string使用MD5加密,并以16进制数作为返回值。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > MD5加密算法安全性低,存在安全风险,不建议使用。 返回值类型:text @@ -1750,7 +1865,7 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 (1 row) ``` -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > - 若字符串中存在换行符,如字符串由一个换行符和一个空格组成,在MogDB中LENGTH和LENGTHB的值为2。 > @@ -1764,5 +1879,5 @@ MogDB提供的字符处理函数和操作符主要用于字符串与字符串、 > ----------- > (1 row) > ``` -> +> > 这是因为内核在调用相应的函数进行处理前,会判断所输入的参数中是否含有NULL,假如 有,则不会调用相应的函数,因此会没有输出。而在PG模式下,字符串的处理方式与PostgreSQL保持一致,因此不会有上述问题产生。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md index e452ae89..9a948b17 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/7-mathematical-functions-and-operators.md @@ -829,6 +829,22 @@ date: 2021-04-20 (1 row) ``` +- remainder(n2 numeric,n1 numeric) + + 描述:返回n2 除以 n1 的余数。 + + 返回值类型:numeric + + 示例: + + ```sql + MogDB=# select REMAINDER(11,3); + remainder + ----------- + -1 + (1 row) + ``` + - round(x) 描述:离输入参数最近的整数。 @@ -839,16 +855,16 @@ date: 2021-04-20 ```sql MogDB=# SELECT round(42.4); - round - ------- - 42 - (1 row) - - MogDB=# SELECT round(42.6); - round - ------- - 43 - (1 row) + round + ------- + 42 + (1 row) + + MogDB=# SELECT round(42.6); + round + ------- + 43 + (1 row) ``` - round(v numeric, s int) diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md index 492d6e30..e8d4a25f 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/functions-and-operators/8-date-and-time-processing-functions-and-operators.md @@ -640,6 +640,66 @@ date: 2021-04-20 (1 row) ``` +- to_timestamp + + 描述:将入参的字符串的时间转换成不带时区的TIMESTAMP。 + + 返回值类型:timestamp + + 示例: + + ```sql + MogDB=# SELECT to_timestamp('1997/Feb/16 --> 08:14:30', 'YYYY/Mon/DD --> HH:MI:SS'); + to_timestamp + --------------------- + 1997-02-16 08:14:30 + (1 row) + ``` + +- to_yminterval + + 描述:将入参转换为包含年月的interval。 + + 返回值类型:interval + + 示例: + + ```sql + MogDB=# SELECT TO_YMINTERVAL('15-11'); + to_yminterval + ------------------ + 15 years 11 mons + (1 row) + + MogDB=# SELECT TO_YMINTERVAL('P15Y11M'); + to_yminterval + ------------------ + 15 years 11 mons + (1 row) + ``` + +- TZ_OFFSET(var) + + 描述:返回入参地址的时区偏移量。 + + 返回值类型:interval + + 示例: + + ```sql + MogDB=# SELECT TZ_OFFSET('Asia/Hong_Kong') FROM dual; + tz_offset + ----------- + 08:00:00 + (1 row) + + MogDB=# SELECT TZ_OFFSET('+14:00') FROM dual; + tz_offset + ----------- + 14:00 + (1 row) + ``` + - smalldatetime_ge 描述:判断是否第一个参数大于等于第二个参数。 @@ -784,7 +844,7 @@ date: 2021-04-20 返回值类型:character varying - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > 获取当前时间有多种方式,请根据实际业务从场景选择合适的接口: > @@ -1313,18 +1373,18 @@ MogDB=# SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); | 儒略日 | J | 儒略日(自公元前 4712 年 1 月 1 日来的天数) | | 季度 | Q | 季度 | -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > 上表中RR计算年的规则如下: > > - 输入的两位年份在00~49之间: -> +> > 当前年份的后两位在00~49之间,返回值年份的前两位和当前年份的前两位相同; -> +> > 当前年份的后两位在50~99之间,返回值年份的前两位是当前年份的前两位加1。 -> +> > - 输入的两位年份在50~99之间: -> +> > 当前年份的后两位在00\~49之间,返回值年份的前两位是当前年份的前两位减1; -> +> > 当前年份的后两位在50~99之间,返回值年份的前两位和当前年份的前两位相同。 diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/guc-parameters/SQL-mode.md b/product/zh/docs-mogdb/v3.0/reference-guide/guc-parameters/SQL-mode.md new file mode 100644 index 00000000..3f5f883f --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/reference-guide/guc-parameters/SQL-mode.md @@ -0,0 +1,21 @@ +--- +title: SQL模式 +summary: SQL模式 +author: Zhang Cuiping +date: 2022-06-21 +--- + +# SQL模式 + +当了避免数据库出现非法数据影响变更周期或者代码迁移过程中避免修改老代码时,可以设置以下参数实现。 + +## sql_mode + +**参数说明**:设置SQL模式。 + +**取值范围**:string 或者null + +- **Strict SQL Mode**:对于不合法或者缺失的指定值,设置合适的值。 +- **ONLY_FULL_GROUP_BY**:允许group by的时候,select列中包含非group by的列。 + +**默认值**:**Strict SQL Mode**,**ONLY_FULL_GROUP_BY** \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/ALTER-TABLE.md b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/ALTER-TABLE.md index 71d5d66a..9f981fba 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/ALTER-TABLE.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/ALTER-TABLE.md @@ -70,8 +70,8 @@ date: 2021-05-17 | NOT OF | REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING } ``` - - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > - **ADD table_constraint [ NOT VALID ]** 给表增加一个新的约束。 > - **ADD table_constraint_using_index** 根据已有唯一索引为表增加主键约束或唯一约束。 @@ -102,12 +102,12 @@ date: 2021-05-17 > - **OF type_name** 将表连接至一种复合类型,与CREATE TABLE OF选项创建表一样。表的字段的名称和类型必须精确匹配复合类型中的定义,不过oid系统字段允许不一样。表不能是从任何其他表继承的。这些限制确保CREATE TABLE OF选项允许一个相同的表定义。 > - **NOT OF** 将一个与某类型进行关联的表进行关联的解除。 > - **REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }** DEFAULT记录主键的列的旧值。USING INDEX记录命名索引覆盖的列的旧值,这些值必须是唯一的,不局部的,不可延迟的,并且仅包括标记为NOT NULL的列。FULL记录该行中所有列的旧值。NOTHING不记录有关旧行的信息。在所有情况下,除非该行的新旧版本中至少要记录的列之一不同,否则不会记录任何旧值。 - + - 其中列相关的操作column_clause可以是以下子句之一: ```ebnf+diagram column_clause ::= ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ] - | MODIFY column_name data_type + | MODIFY column_name data_type [ ON UPDATE update_expr ] | MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | MODIFY column_name [ CONSTRAINT constraint_name ] NULL | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] @@ -121,14 +121,14 @@ date: 2021-05-17 | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] ) | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ``` - - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > - **ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]** 向表中增加一个新的字段。用ADD COLUMN增加一个字段,所有表中现有行都初始化为该字段的缺省值(如果没有声明DEFAULT子句,值为NULL)。 > > - **ADD ( { column_name data_type [ compress_mode ] } [, ... ] )** 向表中增加多列。 > - > - **MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ... ] )** 修改表已存在字段的数据类型。 + > - **MODIFY ( { column_name data_type [ ON UPDATE update_expr ] | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ... ] )** 修改表已存在字段的数据类型和约束属性。ON UPDATE expr只能在MySQL兼容性下使用。 > > - **DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]** 从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如视图。 DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。 > @@ -151,7 +151,7 @@ date: 2021-05-17 > - **ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] )** **ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )** 设置/重置属性选项。 目前,属性选项只定义了n_distinct和n_distinct_inherited。n_distinct影响表本身的统计值,而n_distinct_inherited影响表及其继承子表的统计。目前,只支持SET/RESET n_distinct参数,禁止SET/RESET n_distinct_inherited参数。 > > - **ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }** 为一个字段设置存储模式。这个设置控制这个字段是内联保存还是保存在一个附属的表里,以及数据是否要压缩。仅支持对行存表的设置;对列存表没有意义,执行时报错。SET STORAGE本身并不改变表上的任何东西,只是设置将来的表操作时,建议使用的策略。 - + - 其中列约束column_constraint为: ```ebnf+diagram @@ -166,13 +166,13 @@ date: 2021-05-17 REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ``` - + - 其中压缩可选项compress_mode为: ```ebnf+diagram compress_mode ::= [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ] ``` - + - 其中根据已有唯一索引为表增加主键约束或唯一约束table_constraint_using_index为: ```ebnf+diagram @@ -180,7 +180,7 @@ date: 2021-05-17 { UNIQUE | PRIMARY KEY } USING INDEX index_name [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ``` - + - 其中表约束table_constraint为: ```ebnf+diagram @@ -193,14 +193,14 @@ date: 2021-05-17 [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] } [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ``` - + 其中索引参数index_parameters为: ```ebnf+diagram index_parameters ::= [ WITH ( {storage_parameter = value} [, ... ] ) ] [ USING INDEX TABLESPACE tablespace_name ] ``` - + - 重命名表。对名称的修改不会影响所存储的数据。 ```ebnf+diagram @@ -229,7 +229,7 @@ date: 2021-05-17 SET SCHEMA new_schema; ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > - 这种形式把表移动到另外一个模式。相关的索引、约束都跟着移动。目前序列不支持改变schema。 若该表拥有序列,需要将序列删除,重建,或者取消拥有关系, 才能将表schema更改成功。 > - 要修改一个表的模式,用户必须在新模式上拥有CREATE权限。要把该表添加为一个父表的新子表,用户必须同时又是父表的所有者。要修改所有者,用户还必须是新的所有角色的直接或间接成员,并且该成员必须在此表的模式上有CREATE权限。这些限制规定了该用户不能做出了重建和删除表之外的事情。不过,系统管理员可以以任何方式修改任意表的所有权限。 @@ -248,7 +248,7 @@ date: 2021-05-17 ```ebnf+diagram AlterTable ::= ALTER TABLE [ IF EXISTS ] table_name - MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] ); + MODIFY ( { column_name data_type [ ON UPDATE update_expr ] | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] ); ``` ## 参数说明 @@ -267,6 +267,10 @@ date: 2021-05-17 要删除的现有约束的名称。 +- **on update update_expr** + + 设置字段on update表达式,可以添加,删除,修改 on update 属性。 + - **index_name** 索引名称。 @@ -284,7 +288,7 @@ date: 2021-05-17 表示创建索引时起的bgworker线程数量,例如2就表示将会起2个bgworker线程并发创建索引。 如果未设置,启动bgworker线程数量与表大小相关,一般不超过4个线程。 - + - hasuids(bool类型) 默认值:off @@ -319,7 +323,7 @@ date: 2021-05-17 USING子句声明如何从旧的字段值里计算新的字段值;如果省略,缺省从旧类型向新类型的赋值转换。如果从旧数据类型到新类型没有隐含或者赋值的转换,则必须提供一个USING子句。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > ALTER TYPE的USING选项实际上可以声明涉及该行旧值的任何表达式,即它可以引用除了正在被转换的字段之外其他的字段。这样,就可以用ALTER TYPE语法做非常普遍性的转换。因为这个灵活性,USING表达式并没有作用于该字段的缺省值(如果有的话),结果可能不是缺省表达式要求的常量表达式。这就意味着如果从旧类型到新类型没有隐含或者赋值转换的话,即使存在USING子句,ALTER TYPE也可能无法把缺省值转换成新的类型。在这种情况下,应该用DROP DEFAULT先删除缺省,执行ALTER TYPE,然后使用SET DEFAULT增加一个合适的新缺省值。类似的考虑也适用于涉及该字段的索引和约束。 @@ -401,7 +405,7 @@ date: 2021-05-17 - INITIALLY IMMEDIATE:那么每条语句之后就立即检查它。 - INITIALLY DEFERRED:只有在事务结尾才检查它。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif)**说明**: Ustore表不支持新增DEFERRABLE以及INITIALLY DEFERRED约束。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif)**说明:** Ustore表不支持新增DEFERRABLE以及INITIALLY DEFERRED约束。 - **PARTIAL CLUSTER KEY** diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/CREATE-TABLE.md b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/CREATE-TABLE.md index f24d0dee..94b2d979 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/CREATE-TABLE.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/CREATE-TABLE.md @@ -20,7 +20,7 @@ date: 2021-05-10 - 创建列存表的数量建议不超过1000个。 - 如果在建表过程中数据库系统发生故障,系统恢复后可能无法自动清除之前已创建的、大小为0的磁盘文件。此种情况出现概率小,不影响数据库系统的正常运行。 - 列存表的表级约束只支持PARTIAL CLUSTER KEY、UNIQUE、PRIAMRY KEY,不支持外键等表级约束。 -- 列存表的字段约束只支持NULL、NOT NULL、DEFAULT常量值、UNIQUE和PRIMARY KEY。 +- 列存表的字段约束只支持NULL、NOT NULL、DEFAULT常量值、ON UPDATE表达式(MySQL兼容特性)、UNIQUE和PRIMARY KEY。 - 列存表支持delta表,受参数enable_delta_store控制是否开启,受参数deltarow_threshold控制进入delta表的阀值。 - 使用JDBC时,支持通过PrepareStatement对DEFAUTL值进行参数化设置。 - 每张表的列数最大为1600,具体取决于列的类型,所有列的大小加起来不能超过8192 byte,text、varchar、char等长度可变的类型除外。 @@ -50,6 +50,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA NULL | CHECK ( expression ) | DEFAULT default_expr | + ON UPDATE update_expr | UNIQUE index_parameters | ENCRYPTED WITH ( COLUMN_ENCRYPTION_KEY = column_encryption_key, ENCRYPTION_TYPE = encryption_type_value) | PRIMARY KEY index_parameters | @@ -112,7 +113,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > > - 本地临时表通过每个会话独立的以pg_temp开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg_temp,pg_toast_temp开头的schema。 > - 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg_temp_开头的schema,则此表会被创建为临时表。 @@ -130,7 +131,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 要创建的表名。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif)**须知**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif)**须知:** > > 物化视图的一些处理逻辑会通过表名的前缀来识别是不是物化视图日志表和物化视图关联表,因此,用户不要创建表名以mlog\_或matviewmap\_为前缀的表,否则会影响此表的一些功能。 @@ -169,7 +170,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA - 如果指定了INCLUDING RELOPTIONS,则源表的存储参数(即源表的WITH子句)会复制到新表中。默认情况下,不复制源表的存储参数。 - INCLUDING ALL包含了INCLUDING DEFAULTS、INCLUDING CONSTRAINTS、INCLUDING INDEXES、INCLUDING STORAGE、INCLUDING COMMENTS、INCLUDING PARTITION和INCLUDING RELOPTIONS的内容。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** > > - 如果源表包含serial、bigserial、smallserial、largeserial类型,或者源表字段的默认值是sequence,且sequence属于源表(通过CREATE SEQUENCE … OWNED BY创建),这些Sequence不会关联到新表中,新表中会重新创建属于自己的sequence。这和之前版本的处理逻辑不同。如果用户希望源表和新表共享Sequence,需要首先创建一个共享的Sequence(避免使用OWNED BY),并配置为源表字段默认值,这样创建的新表会和源表共享该Sequence。 > - 不建议将其他表私有的Sequence配置为源表字段的默认值,尤其是其他表只分布在特定的NodeGroup上,这可能导致CREATE TABLE … LIKE执行失败。另外,如果源表配置其他表私有的Sequence,当该表删除时Sequence也会连带删除,这样源表的Sequence将不可用。如果用户希望多个表共享Sequence,建议创建共享的Sequence。 @@ -179,7 +180,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 这个子句为表或索引指定一个可选的存储参数。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: 使用任意精度类型Numeric定义列时,建议指定精度p以及刻度s。在不指定精度和刻度时,会按输入的显示出来。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 使用任意精度类型Numeric定义列时,建议指定精度p以及刻度s。在不指定精度和刻度时,会按输入的显示出来。 参数的详细描述如下所示。 @@ -323,7 +324,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 取值范围: 字符串。 默认值:不开启加密时默认为空。 - + - hasuids 参数开启:更新表元组时,为元组分配表级唯一标识id。 @@ -375,7 +376,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 声明为字段约束的检查约束应该只引用该字段的数值,而在表约束里出现的表达式可以引用多个字段。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: expression表达式中,如果存在“<>NULL”或“!=NULL”,这种写法是无效的,需要写成“is NOT NULL”。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** expression表达式中,如果存在“<>NULL”或“!=NULL”,这种写法是无效的,需要写成“is NOT NULL”。 - **DEFAULT default_expr** @@ -383,6 +384,10 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。 +- **ON UPDATE update_expr** + + ON UPDATE子句给字段指定更新时的缺省时间截。该字段必须是时间类型,且缺省数值只能是更新操作的执行时间截,即current_timestamp。在create table中,ON UPDATE表达式可以是current_timestamp的同等替换。该语法特性只能在MySQL兼容性下才能使用。 + - **UNIQUE index_parameters** **UNIQUE ( column_name [, ...] ) index_parameters** @@ -423,7 +428,7 @@ CreateTable ::= CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] TA 这两个关键字设置该约束是否可推迟。一个不可推迟的约束将在每条命令之后马上检查。可推迟约束可以推迟到事务结尾使用SET CONSTRAINTS命令检查。缺省是NOT DEFERRABLE。目前,UNIQUE约束、主键约束、外键约束可以接受这个子句。所有其他约束类型都是不可推迟的。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif)**说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif)**说明:** > > Ustore表不支持**DEFERRABLE**以及**INITIALLY DEFERRED**关键字。 @@ -844,7 +849,7 @@ MogDB=# CREATE TABLE table_3213 c_state char(2), c_zip char(9), c_phone char(16), - c_since timestamp, + c_since timestamp on update current_timestamp, c_middle char(2), c_data varchar(500) ) WITH (COMPRESSION = YES); @@ -1077,7 +1082,7 @@ MogDB=# DROP SCHEMA IF EXISTS joe CASCADE; - LIKE INCLUDING DEFAULTS -- 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是不包含缺省表达式的,即新表中的所有字段的缺省值都是NULL。 +- 源表上的字段缺省表达式只有在指定INCLUDING DEFAULTS时,才会复制到新表中。缺省是包含缺省表达式的,即新表中的所有字段的缺省值,如果在原表中是表达式,则新表中也是表达式。 - LIKE INCLUDING CONSTRAINTS @@ -1099,7 +1104,7 @@ MogDB=# DROP SCHEMA IF EXISTS joe CASCADE; - 如果指定了INCLUDING PARTITION,则源表的分区定义会复制到新表中,同时新表将不能再使用PARTITION BY子句。默认情况下,不拷贝源表的分区定义。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知**: 列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-notice.gif) **须知:** 列表/哈希分区表暂不支持LIKE INCLUDING PARTITION。 - LIKE INCLUDING RELOPTIONS diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/INSERT.md b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/INSERT.md index 4f96b2c5..06c45620 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/INSERT.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/sql-syntax/INSERT.md @@ -23,18 +23,18 @@ date: 2021-05-18 - 当连接到TD兼容的数据库时,td_compatible_truncation参数设置为on时,将启用超长字符串自动截断功能,在后续的insert语句中(不包含外表的场景下),对目标表中char和varchar类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > 如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。 ## 语法格式 ```ebnf+diagram Insert ::= [ WITH [ RECURSIVE ] with_query [, ...] ] -INSERT [/*+ plan_hint */] INTO table_name [partition_clause] [ AS alias ] [ ( column_name [, ...] ) ] +INSERT [INTO] table_name [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } - [ ON DUPLICATE KEY UPDATE { NOTHING | { column_name = { expression | DEFAULT } } [, ...] [ WHERE condition ] }] + [ ON DUPLICATE KEY UPDATE {{ column_name = { expression | DEFAULT } } [, ...] | NOTHING} ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ]; ``` @@ -57,14 +57,14 @@ INSERT [/*+ plan_hint */] INTO table_name [partition_clause] [ AS alias ] [ ( co - column_name指定子查询结果集中显示的列名。 - 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 - + - 用户可以使用MATERIALIZED / NOT MATERIALIZED对CTE进行修饰。 - + - 如果声明为MATERIALIZED,WITH查询将被物化,生成一个子查询结果集的拷贝,在引用处直接查询该拷贝,因此WITH子查询无法和主干SELECT语句进行联合优化(如谓词下推、等价类传递等),对于此类场景可以使用NOT MATERIALIZED进行修饰,如果WITH查询语义上可以作为子查询内联执行,则可以进行上述优化。 - + - 如果用户没有显示声明物化属性则遵守以下规则:如果CTE只在所属主干语句中被引用一次,且语义上支持内联执行,则会被改写为子查询内联执行,否则以CTE Scan的方式物化执行。 - - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: + + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** > > INSERT ON DUPLICATE KEY UPDATE不支持WITH及WITH RECURSIVE子句。 - **plan_hint子句** diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/1-gs_check.md b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/1-gs_check.md index 1fbb3544..8c722289 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/1-gs_check.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/1-gs_check.md @@ -9,7 +9,7 @@ date: 2021-06-07 ## 背景信息 -gs_check改进增强,统一化当前系统中存在的各种检查工具,例如gs_check,gs_checkos等,帮助用户在MogDB运行过程中,全量的检查MogDB运行环境,操作系统环境,网络环境及数据库执行环境,也有助于在MogDB重大操作之前对各类环境进行全面检查,有效保证操作执行成功。 +gs_check改进增强,统一化当前系统中存在的各种检查工具,例如gs_check,gs_checkos等,帮助用户在MogDB运行过程中,全量的检查MogDB运行环境,操作系统环境,网络环境及数据库执行环境;根据场景scene定义检测项,进行可定制的检测项执行,实现检测结果保存,以及两个检测结果的差异比较;也有助于在MogDB重大操作之前对各类环境进行全面检查,有效保证操作执行成功。 ## 注意事项 @@ -30,7 +30,13 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 - 场景检查: ```bash - gs_check -e SCENE_NAME [-U USER] [-L] [-l LOGFILE] [-o OUTPUTDIR] [--skip-root-items] [--time-out=SECS][--set][--routing][--skip-items] + gs_check -e SCENE_NAME [-U USER] [-L] [-l LOGFILE] [-o OUTPUTDIR] [--skip-root-items] [--time-out=SECS] [--set] [--routing] [--skip-items] + ``` + +- 场景比较: + + ```bash + gs_check --compare --source-output-dir=OUTPUTDIR --target-output-dir=OUTPUTDIR --diff-output-dir=OUTPUTDIR ``` - 显示帮助信息: @@ -113,6 +119,22 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 显示版本号信息。 +- --source-output-dir + + 指定被比较文件(前一次场景检查的结果)存在的路径,需包含文件名。 + +- --target-output-dir + + 指定比较文件(本次场景检查的结果)存在的路径,需包含文件名。 + +- --diff-output-dir + + 指定差异比较结果的输出路径。 + +- --compare + + 如果指定了--compare参数,则表示指定gs_check进行场景比较。 + ### MogDB状态检查表 - OS @@ -817,7 +839,7 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 否 - + - Others @@ -833,7 +855,7 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例
-> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: CheckNetSpeed检查项: +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** CheckNetSpeed检查项: > > - CheckNetSpeed不支持-L本地检查模式,-L模式无法构造网络压力,检查的结果不准确。 > - 在节点数小于6时,speed_test构造的网络压力可能无法跑满带宽,可能会造成检查结果不准确。 @@ -859,7 +881,7 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 item name为检查项名称 - 注:用户需自行保证自定义xml的正确性 + 注意:用户需自行保证自定义xml的正确性 4. 在home/package/script/gspylib/inspection/config执行如下命令,将此文件分发至执行检查的各个节点 @@ -867,7 +889,7 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 scp scene_upgrade.xml SIA1000068994:home/package/script/gspylib/inspection/config/ ``` - > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: home/package/script/gspylib/inspection/config就是新建的场景配置文件的绝对路径。 + > ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** home/package/script/gspylib/inspection/config就是新建的场景配置文件的绝对路径。 5. 换至omm用户,执行以下命令查看检查结果。 @@ -1035,8 +1057,8 @@ gs_check改进增强,统一化当前系统中存在的各种检查工具,例 | net.core.netdev_max_backlog | 在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 | 65535 | | net.ipv4.tcp_max_syn_backlog | 记录的那些尚未收到客户端确认信息的连接请求的最大值。 | 65535 | | net.ipv4.tcp_fin_timeout | 系统默认的超时时间。 | 60 | -| kernel.shmall | 内核可用的共享内存总量。 | 1073741824 | -| kernel.shmmax | 内核参数定义单个共享内存段的最大值。 | 4398046511104 | +| kernel.shmall | 内核可用的共享内存总量。 | 1152921504606846720 | +| kernel.shmmax | 内核参数定义单个共享内存段的最大值。 | 18446744073709551615 | | net.ipv4.tcp_sack | 启用有选择的应答,通过有选择地应答乱序接受到的报文来提高性能,让发送者只发送丢失的报文段(对于广域网来说)这个选项应该启用,但是会增加对CPU的占用。
- 0表示关闭。
- 1表示开启。 | 1 | | net.ipv4.tcp_timestamps | TCP时间戳(会在TCP包头增加12节),以一种比重发超时更精确的方式(参考RFC 1323)来启用对RTT的计算,启用可以实现更好的性能。
- 0表示关闭。
- 1表示开启。 | 1 | | vm.extfrag_threshold | 系统内存不够用时,linux会为当前系统内存碎片情况打分,如果超过vm.extfrag_threshold的值,kswapd就会触发memory compaction。所以这个值设置的接近1000,说明系统在内存碎片的处理倾向于把旧的页换出,以符合申请的需要,而设置接近0,表示系统在内存碎片的处理倾向做memory compaction。 | 500 | @@ -1129,6 +1151,12 @@ Failed. All check items run completed. Total:57 Success:49 Warning:5 NG:3 For more information please refer to /opt/huawei/wisequery/script/gspylib/inspection/output/CheckReport_inspect_201902207129254785.tar.gz ``` +执行场景: + +```bash +gs_check --compare --source-output-dir=/data/scene_result/CheckResult_202202044003451613 --target-output-dir=/data/scene_result/CheckResult_202203044003451613 --diff-output-dir=/data/diff_report +``` + ## 相关命令 [gs_checkos](2-gs_checkos),[gs_checkperf](3-gs_checkperf) diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_gucquery.md b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_gucquery.md new file mode 100644 index 00000000..3670fa39 --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_gucquery.md @@ -0,0 +1,50 @@ +--- +title: gs_gucquery +summary: gs_gucquery +author: Zhang Cuiping +date: 2022-06-22 +--- + +# gs_gucquery + +## 功能介绍 + +gs_gucquery工具可自动收集、整理、导出GUC值,并进行差异比较。 + +## 语法 + +- 导出GUC值 + + ```bash + gs_gucquery -t query [-o OUTPUTFILE] [-p PORT] + ``` + +- 比较GUC值 + + ```bash + gs_gucquery -t compare --source-file=OUTPUTFILE --target-file=OUTPUTFILE --diff-file=OUTPUTDIR + ``` + +## 参数说明 + +| 参数 | 说明 | +| ------------- | ------------------------------------------------------------ | +| -t | 指定控制参数的类型。
取值范围:query或者compare | +| --source-file | 指定被比较文件(前一次GUC值导出的结果)存在的路径,需包含文件名。 | +| --target-file | 指定比较文件(本次GUC值导出的结果)存在的路径,需包含文件名。 | +| -o | 指定收集的GUC值的结果输出文件路径。
如果不指定-o参数,则会在屏幕上输出结果。 | +| -p | 指定要收集的GUC值所对应的MogDB进程。 | + +## 示例 + +1. 导出GUC值 + + ```bash + gs_gucquery -t query -o /data/gucRes + ``` + +2. 比较GUC值 + + ```bash + gs_gucquery -t compare --source-file=/data/gucRes/GucQuery_20220203091229.csv --target-file /data/gucRes/GucQuery_20220204101330.csv --diff-file /data/gucRes/diffRes + ``` diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_watch.md b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_watch.md new file mode 100644 index 00000000..3dc9a29c --- /dev/null +++ b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/server-tools/gs_watch.md @@ -0,0 +1,52 @@ +--- +title: gs_watch +summary: gs_watch +author: Zhang Cuiping +date: 2022-06-22 +--- + +# gs_watch + +## 功能介绍 + +gs_watch工具可监测MogDB进程。当监测到MogDB发生故障崩溃导致它从process list消失时,gs_watch会通过调用gs_collector,自动触发对系统状态的收集。 + +## 语法 + +- 启动自动触发 + + ```bash + gs_watch -t start [-o OUTDIR] [--pid=PID] + ``` + +- 关闭自动触发 + + ```bash + gs_watch -t stop [--pid=PID] + ``` + +## 参数说明 + +| 参数 | 说明 | +| ----- | ------------------------------------------------------------ | +| -t | 指定操作类型。
取值范围:start或者stop | +| -o | 指定系统崩溃时,gs_collector收集结果的导出路径。
根据gs_collector触发时间创建时间数字为命名的子文件夹,支持多次收集结果放置不同子路径。具体子文件夹路径为yyyymmddhhMMss。
注意:gs_collector如果不指定-o参数,则检查结果会默认以压缩包的形式输出到$GAUSSLOG路径中。 | +| --pid | 指定进程ID。
如果有多个进程时,需要设置该参数指定要监测或停止的具体进程。否则参数会报错。 | + +## 示例 + +1. 启动自动触发 + + ```bash + gs_watch -t start -o /opt/mogdb3/data --pid 23550 + ``` + +2. 关闭自动触发 + + ```bash + gs_watch -t stop --pid=23550 + ``` + +## 相关命令 + +[gs_collector](4-gs_collector) \ No newline at end of file diff --git a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/tools-used-in-the-internal-system/16-gstrace.md b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/tools-used-in-the-internal-system/16-gstrace.md index b7f77884..83e8fb0e 100644 --- a/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/tools-used-in-the-internal-system/16-gstrace.md +++ b/product/zh/docs-mogdb/v3.0/reference-guide/tool-reference/tools-used-in-the-internal-system/16-gstrace.md @@ -9,9 +9,9 @@ date: 2021-06-07 ## 功能介绍 -gstrace是MogDB提供的用来跟踪内核代码执行路径、记录内核数据结构、分析代码性能的工具。Trace的有限点位和数据在版本中被固化,无法动态添加和删除。 +gstrace是MogDB提供的用来跟踪内核代码执行路径、记录内核数据结构、分析代码性能的工具。gstrace允许用户指定一个或多个模块和方法进行追踪。Trace的有限点位和数据在版本中被固化,无法动态添加和删除。 -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **警告**: +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-warning.gif) **警告:** > > 1. 对内核dump指定内存变量的数据用于诊断分析,不存在直接指定任意寄存器或者内存地址的行为。读取的内存地址均是在开发阶段硬编码,没有任意地读取或者修改寄存器或内存的操作。 > 2. Trace点可能涉及敏感数据,收集trace信息前需要同用户协商,授权和许可后方可收集。 @@ -19,33 +19,57 @@ gstrace是MogDB提供的用来跟踪内核代码执行路径、记录内核数 > 4. Trace仅用于诊断目的,开启trace将对性能产生一定影响,影响的大小视负载的高低,trace的模块而不同。 > 5. Trace工具的权限为0700,仅限于数据库用户读、写和执行。 > -> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明**: 如果进程异常终止,/dev/shm/ 目录下将会有gstrace_trace_cfg_*残留,可以手动清除。 +> ![img](https://cdn-mogdb.enmotech.com/docs-media/icon/icon-note.gif) **说明:** 如果进程异常终止,/dev/shm/ 目录下将会有gstrace_trace_cfg_*残留,可以手动清除。 ## 语法 -```bash -gstrace [start|stop|config|dump|detailcodepath|analyze] [-p ][-s ] [-f ] [-o ] [-t ] -``` +- 模块开关 + + ```bash + gstrace start [-p ] [-s ][-o ] [-q [,]*] -> .[ALL|[[&]*]] + ``` + + 注意:由于语法定义中使用了‘,’,‘.’,‘&’作为分隔符,因此定义模块名时不可包括这些符号。除此之外,-q参数不能和原有的内部trace -m参数同时定义,因为两个选项都会影响trace结果,当同时定义时,会返回对应错误信息。 + +- 连接执行状态导出 + + ```bash + gstrace dump_usess -p -o + gstrace analyze_usess -f -o + ``` ## 参数说明 -**表 1** gs_trace参数说明 - -| 参数 | 说明 | -| :------------- | :----------------------------------------------------------- | -| start | 开始记录trace。 | -| stop | 停止trace,释放存储信息的共享内存trace buffer。注意:trace buffer中已捕获trace信息会丢失。 | -| config | 显示trace的配置信息。 | -| dump | 将共享内存中的trace信息写入指定文件。若没有启动trace将报错。 | -| detail | 将dump出来的二进制文件解析成文本文件,显示trace点的线程、时间信息。 | -| codepath | 提取dump文件中的函数调用信息,按照调用栈的方式显示。 | -| analyze | 统计各个函数的执行次数、总耗时、平均耗时、最长耗时、最短耗时。 | -| -p PORT | 指定启动trace功能的实例侦听的端口号。 | -| -f DUMP_FILE | 指定dump导出的trace文件。 | -| -o OUTPUT_FILE | 指定写入的文件。 | -| -t STEP_SIZE | 指定分片分析的时间跨度(秒),可选。将生成单独的{OUTPUT_FILE}.step文件。 | -| -m MASK | 指定哪些模块、函数需要追踪,如果参数为空,则追踪添加trace接口的所有模块的所有函数。
格式:[comp…][ALL].[func…][ALL]
描述:
- comp 是模块列表,使用‘,’分隔,例如:executer,mogdb。也可以使用序号,例如:executer,2。
- func 是function列表,使用‘,’ 分隔。 例如:sql_execute_ddl, sql_execute_dcl。也可以使用序号指代模块中第几个function,例如:2。
- 设置成ALL表示所有模块或所有function被trace。
示例:
- executer,mogdb.ALL :所有定义定义在executer和mogdb模块下的function被trace。
- executer,mogdb.sql_execute_ddl :定义在executer 下的Function sql_execute_ddl被trace. mogdb模块被忽略,因为下面没有该function 。
- executer,mogdb.1 :定义在模块executer和mogdb下的第一个function被trace。
ALL.1,2 :定义在所有模块下的第一,二个function被trace。 | -| -s BUFFER_SIZE | 指定用于trace功能的共享内存大小,默认为1G。如果指定的BUFFER_SIZE小于最小值2048,系统将自动调整为最小值。如果指定的BUFFER_SIZE不是2^N^(二的N次方),则向下对齐2^N^;例如:指定BUFFER_SIZE=3072,由于2^11^<3072<2^12^,系统将调整为2048。 | +- 模块开关参数 + +| 参数 | 说明 | +| :---------------- | :----------------------------------------------------------- | +| start | 开始记录trace。 | +| stop | 停止trace,释放存储信息的共享内存trace buffer。注意:trace buffer中已捕获trace信息会丢失。 | +| config | 显示trace的配置信息。 | +| dump | 将共享内存中的trace信息写入指定文件。若没有启动trace将报错。 | +| detail | 将dump出来的二进制文件解析成文本文件,显示trace点的线程、时间信息。 | +| codepath | 提取dump文件中的函数调用信息,按照调用栈的方式显示。 | +| analyze | 统计各个函数的执行次数、总耗时、平均耗时、最长耗时、最短耗时。 | +| -p PORT | 指定启动trace功能的实例侦听的端口号。 | +| -f DUMP_FILE | 指定dump导出的trace文件。 | +| -o OUTPUT_FILE | 指定写入的文件。 | +| -t STEP_SIZE | 指定分片分析的时间跨度(秒),可选。将生成单独的{OUTPUT_FILE}.step文件。 | +| -m MASK | 指定哪些模块、函数需要追踪,如果参数为空,则追踪添加trace接口的所有模块的所有函数。
格式:[comp…][ALL].[func…][ALL]
描述:
- comp 是模块列表,使用‘,’分隔,例如:executer,mogdb。也可以使用序号,例如:executer,2。
- func 是function列表,使用‘,’ 分隔。 例如:sql_execute_ddl, sql_execute_dcl。也可以使用序号指代模块中第几个function,例如:2。
- 设置成ALL表示所有模块或所有function被trace。
示例:
- executer,mogdb.ALL :所有定义定义在executer和mogdb模块下的function被trace。
- executer,mogdb.sql_execute_ddl :定义在executer 下的Function sql_execute_ddl被trace. mogdb模块被忽略,因为下面没有该function 。
- executer,mogdb.1 :定义在模块executer和mogdb下的第一个function被trace。
ALL.1,2 :定义在所有模块下的第一,二个function被trace。 | +| -s BUFFER_SIZE | 指定用于trace功能的共享内存大小,默认为1G。如果指定的BUFFER_SIZE小于最小值2048,系统将自动调整为最小值。如果指定的BUFFER_SIZE不是2^N^(二的N次方),则向下对齐2^N^;例如:指定BUFFER_SIZE=3072,由于2^11^<3072<2^12^,系统将调整为2048。 | +| -q COMP_FUNC_PAIR | 指定一对或多对模块和方法。 | +| COMP_NAME | 指定模块名称。 | +| FUNC_NAME | 指定方法名称。 | + +- 连接执行状态导出参数 + +| 参数 | 说明 | +| ------------- | ------------------------------------------------------------ | +| dump_usess | 表示导出连接相关状态数据信息。
采用原始二进制格式。 | +| analyze_usess | 表示分析生成可阅读文件。
采用文本可阅读格式。 | +| -p | 指定控制MogDB服务器端口。 | +| -o | 指定输出的文件,可包含路径。输出文件需要不存在,否则报错。 | +| -f | 指定输入的文件,可包含路径。输入文件必须存在且符合格式要求,否则报错。 | ## 示例 @@ -96,3 +120,27 @@ gstrace [start|stop|config|dump|detailcodepath|analyze] [-p ][-s Date: Thu, 23 Jun 2022 12:53:18 +0800 Subject: [PATCH 3/3] update(mogdb):move oracle compatibility to application interface --- .../MogDB-MySQL-compatibility.md | 0 .../MogDB-Oracle-compatibility.md | 0 .../fault-diagnosis.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename product/zh/docs-mogdb/v3.0/characteristic-description/{enterprise-level-features => application-development-interfaces}/MogDB-MySQL-compatibility.md (100%) rename product/zh/docs-mogdb/v3.0/characteristic-description/{enterprise-level-features => application-development-interfaces}/MogDB-Oracle-compatibility.md (100%) rename product/zh/docs-mogdb/v3.0/characteristic-description/{enterprise-level-features => maintainability}/fault-diagnosis.md (100%) diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/MogDB-MySQL-compatibility.md similarity index 100% rename from product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-MySQL-compatibility.md rename to product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/MogDB-MySQL-compatibility.md diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md b/product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/MogDB-Oracle-compatibility.md similarity index 100% rename from product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/MogDB-Oracle-compatibility.md rename to product/zh/docs-mogdb/v3.0/characteristic-description/application-development-interfaces/MogDB-Oracle-compatibility.md diff --git a/product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md b/product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/fault-diagnosis.md similarity index 100% rename from product/zh/docs-mogdb/v3.0/characteristic-description/enterprise-level-features/fault-diagnosis.md rename to product/zh/docs-mogdb/v3.0/characteristic-description/maintainability/fault-diagnosis.md -- Gitee