Utility H2 SQL functions¶
Hawkore Advanced Indexing provides some H2 SQL functions published under PUBLIC
schema.
MultiValueIsoText functions for H2¶
Some interesting functions to work with MultiValueIsoText using SQL.
SCHEMA |
NAME |
DESCRIPTION |
---|---|---|
PUBLIC |
Returns an iso text from a MultiValueIsoText |
|
PUBLIC |
Creates/Updates a MultiValueIsoText. Allows to set a N-sequence of 3-tuples (iso, text, isMachine) |
|
PUBLIC |
Returns MultiValueIsoText's default text iso |
|
PUBLIC |
Returns MultiValueIsoText's default text |
|
PUBLIC |
Remove isos from MultiValueIsoText |
|
PUBLIC |
Retrieve meta from MultiValueIsoText |
|
PUBLIC |
Merge two MultiValueIsoTexts |
HKMV_TEXT¶
Returns an iso text from a MultiValueIsoText
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
a MultiValueIsoText |
P2 |
VARCHAR |
iso code to extract from P1 |
P3 |
VARCHAR |
Nullable. Default iso code to extract if P2 not found |
Example 1: Search pois within a radius of 20km from point (latitude: 40.416775, longitude: -3.703790) in which its name's es
text contains "aeropuerto":
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, type, -- get name's iata alternate name, if not found null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE lucene= '{ filter: [ {type: "geo_distance", field: "place", latitude: 40.416775, longitude: -3.703790, max_distance: "20km"} ], query: {type: "phrase", field: "name.es.text", value: "aeropuerto", slop: 0}, sort: [ {field: "id"} ] }' limit 10;
Example 2: Search pois in which its name's meta field has a key=iata
.
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, type, -- get name's iata alternate name, if not found null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE lucene = '{ filter: [ {type: "match", field:"name.meta._key", value: "iata"} ] }' limit 10;
Example 3: Search pois that have on theirs name's meta field a key = iata
with
prefix "iat" on its value:
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, type, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE lucene = '{ refresh:true, filter: [ {type: "match", field:"name.meta._key", value: "iata"} ], query: [ {type: "prefix", field: "name.meta.value$iata", value: "iat"} ] }' limit 10;
HKMV_UPDATE¶
Creates/Updates a MultiValueIsoText. Allows to set a N-sequence of 3-tuples (iso, text, isMachine)
iso
: an iso/alternate code. String.text
: associated text to iso/alternate code. String.isMachine
: boolean flag as String, to tells if text was generated by a machine (machine translation).
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText to update. Could be null |
P2 |
BOOLEAN |
Creates a new MultiValueIsoText if P1 is null |
P3 |
VARCHAR |
iso from provided P4 array to set as P1's default iso |
P4 |
ARRAY |
('iso','text','isMachine', more 3-tuples.. ) to set on P1 |
Example 1: Creates or update a MultiValueIsoText adding or replacing 'es' and 'iata' iso/alternate codes on name and adding or replacing 'es' on description of poi with id=57
, setting es
as default iso code on both name and description.
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE id = 57;
UPDATE "pois".poi SET name = public.hkmv_update(name, true, 'es', ('iata', 'IAT01', 'false', 'es','Aeropuerto Madrid-Barajas Adolfo Suárez', 'false')), description = public.hkmv_update(description, true, 'es', ('es', 'El aeropuerto principal de Madrid', 'false')) WHERE id = 57;
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE id = 57;
Example 2: Add 'otherCode' to poi's name.
UPDATE "pois".poi SET name = public.hkmv_update(name, true, null, ('otherCode', 'CODEX', 'false')) WHERE id = 57;
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata, public.hkmv_text(name, 'otherCode', null) as other_code FROM "pois".poi WHERE id = 57;
HKMV_DEFAULT_ISO¶
Returns MultiValueIsoText's default iso
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText from extract default iso code |
SELECT id, countryCode, -- get name's en translation, if not found get default translation public.hkmv_text(name, 'en', public.HKMV_DEFAULT_ISO(name)) as name, -- get description's en translation, if not found get default translation public.hkmv_text(description, 'en', public.HKMV_DEFAULT_ISO(description)) as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata, public.HKMV_DEFAULT_ISO(name) as defaultIso FROM "pois".poi WHERE id = 57;
HKMV_DEFAULT_TEXT¶
Returns MultiValueIsoText's default text
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText from extract default iso's text |
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata, public.HKMV_DEFAULT_ISO(name) as defaultIso, public.HKMV_DEFAULT_TEXT(name) as defaultText FROM "pois".poi WHERE id = 57;
HKMV_REMOVE_ISOS¶
Remove isos from a MultiValueIsoText.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText to update. Could be null |
P2 |
BOOLEAN |
Creates a new MultiValueIsoText if P1 is null |
P3 |
VARCHAR |
iso from provided P4 array to set as P1's default iso |
P4 |
ARRAY |
('myIso', 'myIso2', ...) isos to remove from P1 |
Example: Remove 'otherCode' from poi's name.
UPDATE "pois".poi SET name = public.hkmv_remove_isos(name, ('otherCode',)) WHERE id = 57;
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata, public.hkmv_text(name, 'otherCode', null) as other_code FROM "pois".poi WHERE id = 57;
HKMV_META¶
Returns MultiValueIsoText's meta from name.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText from extract meta |
Example: Retrieve metas from poi.
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata, public.HKMV_META(name) as metaName FROM "pois".poi WHERE id = 57;
HKMV_MERGE¶
Returns a merged MultiValueIsoText.
- If P1 is null, P2 will be returned.
- If P2 is null, P1 will be returned.
- If P1 and P2 are both null, null will be returned.
- If P1 and P2 are both not null, P1 will updated with P2 data and P1 will be returned.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
MultiValueIsoText to update |
P2 |
OTHER |
MultiValueIsoText with new data |
Example 1: Merge name and description into a MultiValueIsoText.
SELECT id, countryCode, -- get name's es translation, if not found get en translation public.hkmv_text(name, 'es', 'en') as name, -- get description's es translation, if not found get en translation public.hkmv_text(description, 'es', 'en') as description, -- get merged's 'es' translation, if not found get 'en' translation public.hkmv_text(public.hkmv_merge(name, description), 'es', 'en') as merged, -- get name's iata alternate name, if not found return null public.hkmv_text(name, 'iata', null) as iata FROM "pois".poi WHERE id = 57;
JSON functions for H2¶
Some interesting functions to work with JSON using SQL.
SCHEMA |
NAME |
DESCRIPTION |
---|---|---|
PUBLIC |
Creates a List instance from a JSON string |
|
PUBLIC |
Creates a Map instance from a JSON string |
|
PUBLIC |
Creates a Set instance from a JSON string |
HKJSON_TO_LIST¶
Creates a java.util.ArrayList
from a JSON array string. Only works with simple types on entry values.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
VARCHAR |
JSON array string |
INSERT INTO "test".user (name, gender, age, animal, food, number, bool, listz, start_date, stop_date, latitude, longitude) VALUES ( 'Joana', 'female', -2, 'dog', 'chips', 1, true, public.HKJSON_TO_LIST('["l1", "l2"]'), '2014/01/01','2014/01/31',-87.8, 0.5);
HKJSON_TO_MAP¶
Creates a java.util.HashMap
from a JSON object string. Only works with simple types on map values.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
VARCHAR |
JSON object string |
INSERT INTO "test".user (name, gender, age, animal, food, number, bool, mapz, start_date, stop_date, latitude, longitude) VALUES ( 'Javier', 'male', -2, 'monkey', 'chips', 1, true, public.HKJSON_TO_MAP('{"k1":"v1","k2":"v2"}'), '2014/01/01','2014/01/31',-87.8, 0.5);
HKJSON_TO_SET¶
Creates a java.util.HashSet
from a JSON array string. Only works with simple types on entry values.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
VARCHAR |
JSON array string |
INSERT INTO "test".user (name, gender, age, animal, food, number, bool, setz, start_date, stop_date, latitude, longitude) VALUES ( 'Jorge', 'male', 1, 'rabbit', 'bacon', 1, true, public.HKJSON_TO_SET('["s1", "s2"]'), '2014/01/01','2014/01/31',-87.8, 0.5);
Java Map functions for H2¶
Some interesting functions to work with java Maps using SQL.
SCHEMA |
NAME |
DESCRIPTION |
---|---|---|
PUBLIC |
Clear a map |
|
PUBLIC |
Whether map contains provided key |
|
PUBLIC |
Whether map contains provided value |
|
PUBLIC |
Whether map is empty |
|
PUBLIC |
Put all into a map |
|
PUBLIC |
Put an entry into a Map |
|
PUBLIC |
Remove entry from a Map |
|
PUBLIC |
Size of map |
HKMAP_CLEAR¶
Clears a map. Returns cleared target map.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
HKMAP_CONTAINSKEY¶
Returns true
if the target map contains provided key and false
otherwise.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
P2 |
OTHER |
The entry's key to search |
HKMAP_CONTAINSVALUE¶
Returns true
if the target map contains provided value and false
otherwise.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
P2 |
OTHER |
The entry's value to search |
HKMAP_ISEMPTY¶
Returns true
if the target map is empty and false
otherwise.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
HKMAP_PUT¶
Put an entry into a Map. Returns the updated map.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
P2 |
OTHER |
The entry's key |
P3 |
OTHER |
The entry's value |
HKMAP_PUTALL¶
Put all into a Map. Returns the updated target map or, if target map is null, map on P2.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Could be not null |
P2 |
OTHER |
The map to put into target map. Must not be null |
HKMAP_REMOVE¶
Removes an entry from a Map by key. Returns the updated target map.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
P2 |
OTHER |
The entry's key to remove |
HKMAP_SIZE¶
Returns the size of the target map.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target Map. Must not be null |
Java Collection functions for H2¶
Some interesting functions to work with java Collections using SQL.
SCHEMA |
NAME |
DESCRIPTION |
---|---|---|
PUBLIC |
Add all items to a collection |
|
PUBLIC |
Add an item to a collection |
|
PUBLIC |
Clear a collection |
|
PUBLIC |
Whether collection contains provided item |
|
PUBLIC |
Whether collection is empty |
|
PUBLIC |
Remove an item from a collection |
|
PUBLIC |
Retain all items to a collection |
|
PUBLIC |
Size of collection |
HKCOL_ADD¶
Add an item to a collection. Returns the updated target collection.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |
P2 |
OTHER |
The item to add |
HKCOL_ADDALL¶
Add all into a Collection. Returns the updated target collection or, if target collection is null, collection on P2.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Could be not null |
P2 |
OTHER |
The collection to add to target collection. Must not be null |
HKCOL_CLEAR¶
Clears a collection. Returns the updated target collection.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |
HKCOL_CONTAINS¶
Returns true
if the target collection contains provided item and false
otherwise.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |
P2 |
OTHER |
The item to search |
HKCOL_ISEMPTY¶
Returns true
if the target collection is empty and false
otherwise.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |
HKCOL_REMOVE¶
Removes an item from a collection. Returns the updated target collection.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |
P2 |
OTHER |
The item to remove |
HKCOL_RETAINALL¶
Retains all in a collection. Returns the updated target collection or, if target collection is null, collection on P2.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Could be not null |
P2 |
OTHER |
The collection to retain in target collection. Must not be null |
HKCOL_SIZE¶
Returns the size of the target collection.
PARAMETER |
TYPE |
DESCRIPTION |
---|---|---|
P1 |
OTHER |
Target collection. Must not be null |