map - show geometry in MySQL

This commit is contained in:
Jan Prochazka
2022-06-11 09:45:23 +02:00
parent 0a0ce6ad98
commit 343cf84a58
9 changed files with 248 additions and 14 deletions

View File

@@ -2,6 +2,18 @@ const { driverBase } = global.DBGATE_TOOLS;
const { mysqlSplitterOptions } = require('dbgate-query-splitter/lib/options');
const Dumper = require('./Dumper');
const spatialTypes = [
'POINT',
'LINESTRING',
'POLYGON',
'GEOMETRY',
'MULTIPOINT',
'MULTILINESTRING',
'MULTIPOLYGON',
'GEOMCOLLECTION',
'GEOMETRYCOLLECTION',
];
/** @type {import('dbgate-types').SqlDialect} */
const dialect = {
rangeSelect: true,
@@ -68,6 +80,23 @@ const dialect = {
'time',
'year',
],
createColumnViewExpression(columnName, dataType, source, alias) {
if (dataType && spatialTypes.includes(dataType.toUpperCase())) {
return {
exprType: 'call',
func: 'ST_AsText',
alias: alias || columnName,
args: [
{
exprType: 'column',
columnName,
source,
},
],
};
}
},
};
const mysqlDriverBase = {