Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The purpose of this guide is to describe the available functionality of HarperDB as it relates to supported SQL functionality. The SQL parser is still actively being developed and this document will be updated as more features and functionality becomes available. A high-level view of supported features can be found here.
HarperDB adheres to the concept of schemas & tables. This allows developers to isolate table structures from each other all within one database.
HarperDB supports updating existing table row(s) via UPDATE statements. Multiple conditions can be applied to filter the row(s) to update. At this time selecting from one table to update another is not supported.
This SQL keywords reference contains the SQL functions available in HarperDB.
Keyword | Syntax | Description |
---|---|---|
*For more information on ARRAY() and DISTINCT_ARRAY() see this blog.
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
Keyword | Syntax | Description |
---|---|---|
AVG
AVG(expression)
Returns the average of a given numeric expression.
COUNT
SELECT COUNT(column_name) FROM schema.table WHERE condition
Returns the number records that match the given criteria. Nulls are not counted.
GROUP_CONCAT
GROUP_CONCAT(expression)
Returns a string with concatenated values that are comma separated and that are non-null from a group. Will return null when there are non-null values.
MAX
SELECT MAX(column_name) FROM schema.table WHERE condition
Returns largest value in a specified column.
MIN
SELECT MIN(column_name) FROM schema.table WHERE condition
Returns smallest value in a specified column.
SUM
SUM(column_name)
Returns the sum of the numeric values provided.
ARRAY*
ARRAY(expression)
Returns a list of data as a field.
DISTINCT_ARRAY*
DISTINCT_ARRAY(expression)
When placed around a standard ARRAY() function, returns a distinct (deduplicated) results set.
CAST
CAST(expression AS datatype(length))
Converts a value to a specified datatype.
CONVERT
CONVERT(data_type(length), expression, style)
Converts a value from one datatype to a different, specified datatype.
CURRENT_DATE
CURRENT_DATE()
Returns the current date in UTC in “YYYY-MM-DD” String format.
CURRENT_TIME
CURRENT_TIME()
Returns the current time in UTC in “HH:mm:ss.SSS” string format.
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
Referencing this variable will evaluate as the current Unix Timestamp in milliseconds. For more information, go here.
DATE
DATE([date_string])
Formats and returns the date_string argument in UTC in ‘YYYY-MM-DDTHH:mm:ss.SSSZZ’ string format. If a date_string is not provided, the function will return the current UTC date/time value in the return format defined above. For more information, go here.
DATE_ADD
DATE_ADD(date, value, interval)
Adds the defined amount of time to the date provided in UTC and returns the resulting Unix Timestamp in milliseconds. Accepted interval values: Either string value (key or shorthand) can be passed as the interval argument. For more information, go here.
DATE_DIFF
DATEDIFF(date_1, date_2[, interval])
Returns the difference between the two date values passed based on the interval as a Number. If an interval is not provided, the function will return the difference value in milliseconds. For more information, go here.
DATE_FORMAT
DATE_FORMAT(date, format)
Formats and returns a date value in the String format provided. Find more details on accepted format values in the moment.js docs. For more information, go here.
DATE_SUB
DATE_SUB(date, format)
Subtracts the defined amount of time from the date provided in UTC and returns the resulting Unix Timestamp in milliseconds. Accepted date_sub interval values- Either string value (key or shorthand) can be passed as the interval argument. For more information, go here.
DAY
DAY(date)
Return the day of the month for the given date.
DAYOFWEEK
DAYOFWEEK(date)
Returns the numeric value of the weekday of the date given(“YYYY-MM-DD”).NOTE: 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, and 6=Saturday.
EXTRACT
EXTRACT(date, date_part)
Extracts and returns the date_part requested as a String value. Accepted date_part values below show value returned for date = “2020-03-26T15:13:02.041+000” For more information, go here.
GETDATE
GETDATE()
Returns the current Unix Timestamp in milliseconds.
GET_SERVER_TIME
GET_SERVER_TIME()
Returns the current date/time value based on the server’s timezone in YYYY-MM-DDTHH:mm:ss.SSSZZ
String format.
OFFSET_UTC
OFFSET_UTC(date, offset)
Returns the UTC date time value with the offset provided included in the return String value formatted as YYYY-MM-DDTHH:mm:ss.SSSZZ
. The offset argument will be added as minutes unless the value is less than 16 and greater than -16, in which case it will be treated as hours.
NOW
NOW()
Returns the current Unix Timestamp in milliseconds.
HOUR
HOUR(datetime)
Returns the hour part of a given date in range of 0 to 838.
MINUTE
MINUTE(datetime)
Returns the minute part of a time/datetime in range of 0 to 59.
MONTH
MONTH(date)
Returns month part for a specified date in range of 1 to 12.
SECOND
SECOND(datetime)
Returns the seconds part of a time/datetime in range of 0 to 59.
YEAR
YEAR(date)
Returns the year part for a specified date.
IF
IF(condition, value_if_true, value_if_false)
Returns a value if the condition is true, or another value if the condition is false.
IIF
IIF(condition, value_if_true, value_if_false)
Returns a value if the condition is true, or another value if the condition is false.
IFNULL
IFNULL(expression, alt_value)
Returns a specified value if the expression is null.
NULLIF
NULLIF(expression_1, expression_2)
Returns null if expression_1 is equal to expression_2, if not equal, returns expression_1.
ABS
ABS(expression)
Returns the absolute value of a given numeric expression.
CEIL
CEIL(number)
Returns integer ceiling, the smallest integer value that is bigger than or equal to a given number.
EXP
EXP(number)
Returns e to the power of a specified number.
FLOOR
FLOOR(number)
Returns the largest integer value that is smaller than, or equal to, a given number.
RANDOM
RANDOM(seed)
Returns a pseudo random number.
ROUND
ROUND(number,decimal_places)
Rounds a given number to a specified number of decimal places.
SQRT
SQRT(expression)
Returns the square root of an expression.
CONCAT
CONCAT(string_1, string_2, ...., string_n)
Concatenates, or joins, two or more strings together, resulting in a single string.
CONCAT_WS
CONCAT_WS(separator, string_1, string_2, ...., string_n)
Concatenates, or joins, two or more strings together with a separator, resulting in a single string.
INSTR
INSTR(string_1, string_2)
Returns the first position, as an integer, of string_2 within string_1.
LEN
LEN(string)
Returns the length of a string.
LOWER
LOWER(string)
Converts a string to lower-case.
REGEXP
SELECT column_name FROM schema.table WHERE column_name REGEXP pattern
Searches column for matching string against a given regular expression pattern, provided as a string, and returns all matches. If no matches are found, it returns null.
REGEXP_LIKE
SELECT column_name FROM schema.table WHERE REGEXP_LIKE(column_name, pattern)
Searches column for matching string against a given regular expression pattern, provided as a string, and returns all matches. If no matches are found, it returns null.
REPLACE
REPLACE(string, old_string, new_string)
Replaces all instances of old_string within new_string, with string.
SUBSTRING
SUBSTRING(string, string_position, length_of_substring)
Extracts a specified amount of characters from a string.
TRIM
TRIM([character(s) FROM] string)
Removes leading and trailing spaces, or specified character(s), from a string.
UPPER
UPPER(string)
Converts a string to upper-case.
BETWEEN
SELECT column_name(s) FROM schema.table WHERE column_name BETWEEN value_1 AND value_2
(inclusive) Returns values(numbers, text, or dates) within a given range.
IN
SELECT column_name(s) FROM schema.table WHERE column_name IN(value(s))
Used to specify multiple values in a WHERE clause.
LIKE
SELECT column_name(s) FROM schema.table WHERE column_n LIKE pattern
Searches for a specified pattern within a WHERE clause.
DISTINCT
SELECT DISTINCT column_name(s) FROM schema.table
Returns only unique values, eliminating duplicate records.
FROM
FROM schema.table
Used to list the schema(s), table(s), and any joins required for a SQL statement.
GROUP BY
SELECT column_name(s) FROM schema.table WHERE condition GROUP BY column_name(s) ORDER BY column_name(s)
Groups rows that have the same values into summary rows.
HAVING
SELECT column_name(s) FROM schema.table WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s)
Filters data based on a group or aggregate function.
SELECT
SELECT column_name(s) FROM schema.table
Selects data from table.
WHERE
SELECT column_name(s) FROM schema.table WHERE condition
Extracts records based on a defined condition.
CROSS JOIN
SELECT column_name(s) FROM schema.table_1 CROSS JOIN schema.table_2
Returns a paired combination of each row from table_1 with row from table_2. Note: CROSS JOIN can return very large result sets and is generally considered bad practice.
FULL OUTER
SELECT column_name(s) FROM schema.table_1 FULL OUTER JOIN schema.table_2 ON table_1.column_name = table_2.column_name WHERE condition
Returns all records when there is a match in either table_1 (left table) or table_2 (right table).
[INNER] JOIN
SELECT column_name(s) FROM schema.table_1 INNER JOIN schema.table_2 ON table_1.column_name = table_2.column_name
Return only matching records from table_1 (left table) and table_2 (right table). The INNER keyword is optional and does not affect the result.
LEFT [OUTER] JOIN
SELECT column_name(s) FROM schema.table_1 LEFT OUTER JOIN schema.table_2 ON table_1.column_name = table_2.column_name
Return all records from table_1 (left table) and matching data from table_2 (right table). The OUTER keyword is optional and does not affect the result.
RIGHT [OUTER] JOIN
SELECT column_name(s) FROM schema.table_1 RIGHT OUTER JOIN schema.table_2 ON table_1.column_name = table_2.column_name
Return all records from table_2 (right table) and matching data from table_1 (left table). The OUTER keyword is optional and does not affect the result.
IS NOT NULL
SELECT column_name(s) FROM schema.table WHERE column_name IS NOT NULL
Tests for non-null values.
IS NULL
SELECT column_name(s) FROM schema.table WHERE column_name IS NULL
Tests for null values.
DELETE
DELETE FROM schema.table WHERE condition
Deletes existing data from a table.
INSERT
INSERT INTO schema.table(column_name(s)) VALUES(value(s))
Inserts new records into a table.
UPDATE
UPDATE schema.table SET column_1 = value_1, column_2 = value_2, ...., WHERE condition
Alters existing records in a table.
HarperDB supports inserting 1 to n records into a table. The primary key must be unique (not used by any other record). If no primary key is provided, it will be assigned an auto-generated UUID. HarperDB does not support selecting from one table to insert into another at this time.
HarperDB supports deleting records from a table with condition support.
HarperDB provides access to most SQL functions, and we’re always expanding that list. Check below to see if we cover what you need. If not, feel free to .
INSERT |
---|
UPDATE |
---|
DELETE |
---|
SELECT |
---|
FROM |
---|
HarperDB has robust SELECT support, from simple queries all the way to complex joins with multi-conditions, aggregates, grouping & ordering.
All results are returned as JSON object arrays.
Query for all records and attributes in the dev.dog table:
Query specific columns from all rows in the dev.dog table:
Query for all records and attributes in the dev.dog table ORDERED BY age in ASC order:
*The ORDER BY keyword sorts in ascending order by default. To sort in descending order, use the DESC keyword.
HarperDB allows developers to join any number of tables and currently supports the following join types:
INNER JOIN LEFT
INNER JOIN LEFT
OUTER JOIN
Here’s a basic example joining two tables from our Get Started example- joining a dogs table with a breeds table:
HarperDB utilizes in all internal SQL operations. This means that date values passed into any of the functions below will be assumed to be in UTC or in a format that can be translated to UTC.
When parsing date values passed to SQL date functions in HDB, we first check for formats, then for date-time format and then fall back to new Date(date_string)if a known format is not found.
Returns the current date in UTC in YYYY-MM-DD
String format.
Returns the current time in UTC in HH:mm:ss.SSS
String format.
Referencing this variable will evaluate as the current Unix Timestamp in milliseconds.
Formats and returns the date_string argument in UTC in YYYY-MM-DDTHH:mm:ss.SSSZZ
String format.
If a date_string is not provided, the function will return the current UTC date/time value in the return format defined above.
Adds the defined amount of time to the date provided in UTC and returns the resulting Unix Timestamp in milliseconds. Accepted interval values: Either string value (key or shorthand) can be passed as the interval argument.
Returns the difference between the two date values passed based on the interval as a Number. If an interval is not provided, the function will return the difference value in milliseconds.
Accepted interval values:
years
months
weeks
days
hours
minutes
seconds
Subtracts the defined amount of time from the date provided in UTC and returns the resulting Unix Timestamp in milliseconds. Accepted date_sub interval values- Either string value (key or shorthand) can be passed as the interval argument.
Extracts and returns the date_part requested as a String value. Accepted date_part values below show value returned for date = “2020-03-26T15:13:02.041+000”
Returns the current Unix Timestamp in milliseconds.
Returns the current date/time value based on the server’s timezone in YYYY-MM-DDTHH:mm:ss.SSSZZ
String format.
Returns the UTC date time value with the offset provided included in the return String value formatted as YYYY-MM-DDTHH:mm:ss.SSSZZ
. The offset argument will be added as minutes unless the value is less than 16 and greater than -16, in which case it will be treated as hours.
Returns the current Unix Timestamp in milliseconds.
This is a list of reserved words in the SQL Parser. Use of these words or symbols may result in unexpected behavior or inaccessible tables/attributes. If any of these words must be used, any SQL call referencing a schema, table, or attribute must have backticks (…
) or brackets ([…]) around the variable.
For Example, for a table called ASSERT in the dev schema, a SQL select on that table would look like:
Alternatively:
ABSOLUTE
ACTION
ADD
AGGR
ALL
ALTER
AND
ANTI
ANY
APPLY
ARRAY
AS
ASSERT
ASC
ATTACH
AUTOINCREMENT
AUTO_INCREMENT
AVG
BEGIN
BETWEEN
BREAK
BY
CALL
CASE
CAST
CHECK
CLASS
CLOSE
COLLATE
COLUMN
COLUMNS
COMMIT
CONSTRAINT
CONTENT
CONTINUE
CONVERT
CORRESPONDING
COUNT
CREATE
CROSS
CUBE
CURRENT_TIMESTAMP
CURSOR
DATABASE
DECLARE
DEFAULT
DELETE
DELETED
DESC
DETACH
DISTINCT
DOUBLEPRECISION
DROP
ECHO
EDGE
END
ENUM
ELSE
EXCEPT
EXISTS
EXPLAIN
FALSE
FETCH
FIRST
FOREIGN
FROM
GO
GRAPH
GROUP
GROUPING
HAVING
HDB_HASH
HELP
IF
IDENTITY
IS
IN
INDEX
INNER
INSERT
INSERTED
INTERSECT
INTO
JOIN
KEY
LAST
LET
LEFT
LIKE
LIMIT
LOOP
MATCHED
MATRIX
MAX
MERGE
MIN
MINUS
MODIFY
NATURAL
NEXT
NEW
NOCASE
NO
NOT
NULL
OFF
ON
ONLY
OFFSET
OPEN
OPTION
OR
ORDER
OUTER
OVER
PATH
PARTITION
PERCENT
PLAN
PRIMARY
PRIOR
QUERY
READ
RECORDSET
REDUCE
REFERENCES
RELATIVE
REPLACE
REMOVE
RENAME
REQUIRE
RESTORE
RETURN
RETURNS
RIGHT
ROLLBACK
ROLLUP
ROW
SCHEMA
SCHEMAS
SEARCH
SELECT
SEMI
SET
SETS
SHOW
SOME
SOURCE
STRATEGY
STORE
SYSTEM
SUM
TABLE
TABLES
TARGET
TEMP
TEMPORARY
TEXTSTRING
THEN
TIMEOUT
TO
TOP
TRAN
TRANSACTION
TRIGGER
TRUE
TRUNCATE
UNION
UNIQUE
UPDATE
USE
USING
VALUE
VERTEX
VIEW
WHEN
WHERE
WHILE
WITH
WORK
WHERE |
---|
GROUP BY |
---|
HAVING |
---|
ORDER BY |
---|
Key | Shorthand |
---|
Formats and returns a date value in the String format provided. Find more details on accepted format values in the .
Key | Shorthand |
---|
date_part | Example return value* |
---|
Multi-Conditions | ✔ |
Wildcards | ✔ |
IN | ✔ |
LIKE | ✔ |
Bit-wise Operators AND, OR | ✔ |
Bit-wise Operators NOT | ✔ |
NULL | ✔ |
BETWEEN | ✔ |
EXISTS,ANY,ALL | ✔ |
Compare columns | ✔ |
Compare constants | ✔ |
Date Functions* | ✔ |
Math Functions | ✔ |
Sub-SELECT | ✗ |
Multi-Column GROUP BY | ✔ |
Aggregate function conditions | ✔ |
Multi-Column ORDER BY | ✔ |
Aliases | ✔ |
Date Functions* | ✔ |
Math Functions | ✔ |
years | y |
quarters | Q |
months | M |
weeks | w |
days | d |
hours | h |
minutes | m |
seconds | s |
milliseconds | ms |
years | y |
quarters | Q |
months | M |
weeks | w |
days | d |
hours | h |
minutes | m |
seconds | s |
milliseconds | ms |
year | “2020” |
month | “3” |
day | “26” |
hour | “15” |
minute | “13” |
second | “2” |
millisecond | “41” |
Values - multiple values supported | ✔ |
Sub-SELECT | ✗ |
SET | ✔ |
Sub-SELECT | ✗ |
Conditions | ✔ |
Date Functions* | ✔ |
Math Functions | ✔ |
FROM | ✔ |
Sub-SELECT | ✗ |
Conditions | ✔ |
Column SELECT | ✔ |
Aliases | ✔ |
Aggregator Functions | ✔ |
Date Functions* | ✔ |
Math Functions | ✔ |
Constant Values | ✔ |
Distinct | ✔ |
Sub-SELECT | ✗ |
Multi-table JOIN | ✔ |
INNER JOIN | ✔ |
LEFT OUTER JOIN | ✔ |
LEFT INNER JOIN | ✔ |
RIGHT OUTER JOIN | ✔ |
RIGHT INNER JOIN | ✔ |
FULL JOIN | ✔ |
UNION | ✗ |
Sub-SELECT | ✗ |
TOP | ✔ |
HarperDB geospatial features require data to be stored in a single column using the GeoJSON standard, a standard commonly used in geospatial technologies. Geospatial functions are available to be used in SQL statements.
If you are new to GeoJSON you should check out the full specification here: http://geojson.org/. There are a few important things to point out before getting started.
All GeoJSON coordinates are stored in [longitude, latitude]
format.
Coordinates or GeoJSON geometries must be passed as string when written directly in a SQL statement.
Note if you are using Postman for you testing. Due to limitations in the Postman client, you will need to escape quotes in your strings and your SQL will need to be passed on a single line.
In the examples contained in the left-hand navigation, schema and table names may change, but all GeoJSON data will be stored in a column named geo_data.
HarperDB automatically indexes all top level attributes in a row / object written to a table. However, any attributes which holds JSON does not have its nested attributes indexed. In order to make searching and/or transforming these JSON documents easy, HarperDB offers a special SQL function called SEARCH_JSON. The SEARCH_JSON function works in SELECT & WHERE clauses allowing queries to perform powerful filtering on any element of your JSON by implementing the JSONata library into our SQL engine.
SEARCH_JSON(expression, attribute)
Executes the supplied string expression against data of the defined top level attribute for each row. The expression both filters and defines output from the JSON document.
Here are two records in the database:
Here is a simple query that gets any record with "Harper" found in the name.
The purpose of this query is to give us every movie where at least two of our favorite actors from Marvel films have acted together. The results will return the movie title, the overview, release date and an object array of the actor’s name and their character name in the movie.
Both function calls evaluate the credits.cast attribute, this attribute is an object array of every cast member in a movie.
A sample of this data from the movie The Avengers looks like
Let’s break down the SEARCH_JSON function call in the SELECT:
The first argument passed to SEARCH_JSON is the expression to execute against the second argument which is the cast attribute on the credits table. This expression will execute for every row. Looking into the expression it starts with “$[…]” this tells the expression to iterate all elements of the cast array.
Then the expression tells the function to only return entries where the name attribute matches any of the actors defined in the array:
So far, we’ve iterated the array and filtered out rows, but we also want the results formatted in a specific way, so we’ve chained an expression on our filter with: {“actor”: name, “character”: character}. This tells the function to create a specific object for each matching entry.
Sample Result
Just having the SEARCH_JSON function in our SELECT is powerful, but given our criteria it would still return every other movie that doesn’t have our matching actors, in order to filter out the movies we do not want we also use SEARCH_JSON in the WHERE clause.
This function call in the WHERE clause is similar, but we don’t need to perform the same transformation as occurred in the SELECT:
As seen above we execute the same name filter against the cast array, the primary difference is we are wrapping the filtered results in $count(…). As it looks this returns a count of the results back which we then use against our SQL comparator of >= 2.
To see further SEARCH_JSON examples in action view our Postman Collection that provides a sample schema & data with query examples: https://api.harperdb.io/
To learn more about how to build expressions check out the JSONata documentation: http://docs.jsonata.org/overview
Takes a GeoJSON and measures its length in the specified units (default is kilometers).
geoLength(geoJSON[, units])
Parameter | Description |
---|---|
Calculate the length, in kilometers, of a manually passed GeoJSON linestring.
Find all data plus the calculated length in miles of the GeoJSON, restrict the response to only lengths less than 5 miles, and return the data in order of lengths smallest to largest.
The geoArea() function returns the area of one or more features in square meters.
geoArea(geoJSON)
Parameter | Description |
---|---|
Calculate the area, in square meters, of a manually passed GeoJSON polygon.
Find all records that have an area less than 1 square mile (or 2589988 square meters).
Determines if point1 and point2 are within a specified distance from each other, default units are kilometers. Returns a Boolean.
geoNear(point1, point2, distance[, units])
Parameter | Description |
---|---|
Return all locations within 50 miles of a given point.
Return all locations within 2 degrees of the earth of a given point. (Each degree lat/long is about 69 miles [111 kilometers]). Return all data and the distance in miles, sorted by ascending distance.
Determines if two GeoJSON features are the same type and have identical X,Y coordinate values. For more information see https://developers.arcgis.com/documentation/spatial-references/. Returns a Boolean.
geoEqual(geo1, geo2)
Parameter | Description |
---|---|
Find HarperDB Headquarters within all locations within the database.
#geoDistance Calculates the distance between two points in units (default is kilometers).
geoDistance(point1, point2[, units])
Parameter | Description |
---|
Calculate the distance, in miles, between HarperDB’s headquarters and the Washington Monument.
Find all locations that are within 40 kilometers of a given point, return that distance in miles, and sort by distance in an ascending order.
geoJSON
Required. GeoJSON to measure.
units
Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’.
geoJSON
Required. One or more features.
point1
Required. GeoJSON Point specifying the origin.
point2
Required. GeoJSON Point specifying the destination.
distance
Required. The maximum distance in units as an integer or decimal.
units
Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’.
geo1
Required. GeoJSON geometry or feature.
geo2
Required. GeoJSON geometry or feature.
point1 | Required. GeoJSON Point specifying the origin. |
point2 | Required. GeoJSON Point specifying the destination. |
units | Optional. Specified as a string. Options are ‘degrees’, ‘radians’, ‘miles’, or ‘kilometers’. Default is ‘kilometers’. |
polygon1 | Required. Polygon or MultiPolygon GeoJSON feature. |
polygon2 | Required. Polygon or MultiPolygon GeoJSON feature to remove from polygon1. |
coordinates | Required. One or more coordinates |
geo_type | Required. GeoJSON geometry type. Options are ‘point’, ‘lineString’, ‘multiLineString’, ‘multiPoint’, ‘multiPolygon’, and ‘polygon’ |
properties | Optional. Escaped JSON array with properties to be added to the GeoJSON output. |
geo1 | Required. Polygon or MultiPolygon GeoJSON feature. |
geo2 | Required. Polygon or MultiPolygon GeoJSON feature tested to be contained by geo1. |
geo1 | Required. GeoJSON geometry or feature. |
geo2 | Required. GeoJSON geometry or feature. |