mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-02 17:09:18 +00:00
Adds an initial limited implementations of geo features to SQL. This implementation is based on the [OpenGIS® Implementation Standard for Geographic information - Simple feature access](http://www.opengeospatial.org/standards/sfs), which is the current standard for GIS system implementation. This effort is concentrate on SQL option AKA ISO 19125-2. Queries that are supported as a result of this initial implementation Metadata commands - `DESCRIBE table` - returns the correct column types `GEOMETRY` for geo shapes and geo points. - `SHOW FUNCTIONS` - returns a list that includes supported `ST_` functions - `SYS TYPES` and `SYS COLUMNS` display correct types `GEO_SHAPE` and `GEO_POINT` for geo shapes and geo points accordingly. Returning geoshapes and geopoints from elasticsearch - `SELECT geom FROM table` - returns the geoshapes and geo_points as libs/geo objects in JDBC or as WKT strings in console. - `SELECT ST_AsWKT(geom) FROM table;` and `SELECT ST_AsText(geom) FROM table;`- returns the geoshapes ang geopoints in their WKT representation; Using geopoints to elasticsearch - The following functions will be supported for geopoints in queries, sorting and aggregations: `ST_GeomFromText`, `ST_X`, `ST_Y`, `ST_Z`, `ST_GeometryType`, and `ST_Distance`. In most cases when used in queries, sorting and aggregations, these function are translated into script. These functions can be used in the SELECT clause for both geopoints and geoshapes. - `SELECT * FROM table WHERE ST_Distance(ST_GeomFromText(POINT(1 2), point) < 10;` - returns all records for which `point` is located within 10m from the `POINT(1 2)`. In this case the WHERE clause is translated into a range query. Limitations: Geoshapes cannot be used in queries, sorting and aggregations as part of this initial effort. In order to fully take advantage of geoshapes we would need to have access to geoshape doc values, which is coming in #37206. `ST_Z` cannot be used on geopoints in queries, sorting and aggregations since we don't store altitude in geo_point doc values. Relates to #29872 Backport of #42031
116 lines
3.7 KiB
Groovy
116 lines
3.7 KiB
Groovy
import org.elasticsearch.gradle.test.RunTask
|
|
|
|
description = 'Integration tests for SQL'
|
|
apply plugin: 'elasticsearch.build'
|
|
archivesBaseName = 'qa-sql'
|
|
group = "org.elasticsearch.x-pack.qa.sql"
|
|
|
|
dependencies {
|
|
compile "org.elasticsearch.test:framework:${version}"
|
|
|
|
// JDBC testing dependencies
|
|
compile project(path: xpackModule('sql:jdbc'), configuration: 'nodeps')
|
|
|
|
compile project(path: xpackModule('sql:sql-action'))
|
|
compile "net.sourceforge.csvjdbc:csvjdbc:${csvjdbcVersion}"
|
|
|
|
// CLI testing dependencies
|
|
compile project(path: xpackModule('sql:sql-cli'), configuration: 'nodeps')
|
|
|
|
// H2GIS testing dependencies
|
|
compile ("org.orbisgis:h2gis:${h2gisVersion}") {
|
|
exclude group: "org.locationtech.jts"
|
|
}
|
|
|
|
// select just the parts of JLine that are needed
|
|
compile("org.jline:jline-terminal-jna:${jlineVersion}") {
|
|
exclude group: "net.java.dev.jna"
|
|
}
|
|
compile "org.jline:jline-terminal:${jlineVersion}"
|
|
compile "org.jline:jline-reader:${jlineVersion}"
|
|
compile "org.jline:jline-style:${jlineVersion}"
|
|
|
|
testRuntime "org.elasticsearch:jna:${versions.jna}"
|
|
}
|
|
|
|
/* disable unit tests because these are all integration tests used
|
|
* other qa projects. */
|
|
test.enabled = false
|
|
|
|
dependencyLicenses.enabled = false
|
|
dependenciesInfo.enabled = false
|
|
|
|
// the main files are actually test files, so use the appropriate forbidden api sigs
|
|
forbiddenApisMain {
|
|
replaceSignatureFiles 'es-all-signatures', 'es-test-signatures'
|
|
}
|
|
|
|
// just a test fixture: we aren't using this jars in releases and H2GIS requires disabling a lot of checks
|
|
thirdPartyAudit.enabled = false
|
|
|
|
subprojects {
|
|
apply plugin: 'elasticsearch.standalone-rest-test'
|
|
dependencies {
|
|
|
|
/* Since we're a standalone rest test we actually get transitive
|
|
* dependencies but we don't really want them because they cause
|
|
* all kinds of trouble with the jar hell checks. So we suppress
|
|
* them explicitly for non-es projects. */
|
|
testCompile(xpackProject('plugin:sql:qa')) {
|
|
transitive = false
|
|
}
|
|
testCompile "org.elasticsearch.test:framework:${version}"
|
|
|
|
// JDBC testing dependencies
|
|
testRuntime "net.sourceforge.csvjdbc:csvjdbc:${csvjdbcVersion}"
|
|
testRuntime "com.h2database:h2:${h2Version}"
|
|
|
|
// H2GIS testing dependencies
|
|
testRuntime ("org.orbisgis:h2gis:${h2gisVersion}") {
|
|
exclude group: "org.locationtech.jts"
|
|
}
|
|
|
|
testRuntime project(path: xpackModule('sql:jdbc'), configuration: 'nodeps')
|
|
testRuntime xpackProject('plugin:sql:sql-client')
|
|
|
|
// TODO check if needed
|
|
testRuntime("org.antlr:antlr4-runtime:${antlrVersion}") {
|
|
transitive = false
|
|
}
|
|
|
|
// CLI testing dependencies
|
|
testRuntime project(path: xpackModule('sql:sql-cli'), configuration: 'nodeps')
|
|
testRuntime (xpackProject('plugin:sql:sql-action')) {
|
|
transitive = false
|
|
}
|
|
|
|
testRuntime("org.jline:jline-terminal-jna:${jlineVersion}") {
|
|
exclude group: "net.java.dev.jna"
|
|
}
|
|
testRuntime "org.jline:jline-terminal:${jlineVersion}"
|
|
testRuntime "org.jline:jline-reader:${jlineVersion}"
|
|
testRuntime "org.jline:jline-style:${jlineVersion}"
|
|
|
|
testRuntime "org.elasticsearch:jna:${versions.jna}"
|
|
}
|
|
|
|
if (project.name != 'security') {
|
|
// The security project just configures its subprojects
|
|
apply plugin: 'elasticsearch.rest-test'
|
|
|
|
integTestCluster {
|
|
setting 'xpack.monitoring.enabled', 'false'
|
|
setting 'xpack.ml.enabled', 'false'
|
|
setting 'xpack.watcher.enabled', 'false'
|
|
setting 'script.max_compilations_rate', '1000/1m'
|
|
}
|
|
|
|
task runqa(type: RunTask) {
|
|
setting 'xpack.monitoring.enabled', 'false'
|
|
setting 'xpack.ml.enabled', 'false'
|
|
setting 'xpack.watcher.enabled', 'false'
|
|
setting 'script.max_compilations_rate', '1000/1m'
|
|
}
|
|
}
|
|
}
|