Hi Julian,

I have tested the fix posted for CALCITE-2072 and i was able to use the
geometry functions.

Thanks for the fix.

Thanks,
Vamshi.

On Fri, Dec 8, 2017 at 4:38 PM, Julian Hyde <jh...@apache.org> wrote:

> I don’t know. I don’t have time to look at the code right now.
>
> > On Dec 8, 2017, at 12:53 PM, Vamshi Krishna <vamshi.v.kris...@gmail.com>
> wrote:
> >
> > I think you meant the following:
> >
> > 1. Create a user defined operator table for spatial functions (Say
> > SpatialOperatorTable).
> > 2. Honor the newly defined operator table (SpatialOperatorTable) when
> > fun=spatial at CalciteConnectionConfiImpl.java#L102
> >
> > Regarding Step  1: I don't see a way to convert or load the functions in
> > GeoFunctions class into SqlFunction format other than manually adding
> them
> > similar to OracleSqlOperatorTable. Is my understanding right ?
> >
> >
> >
> > On Fri, Dec 8, 2017 at 2:01 PM, Julian Hyde <jh...@apache.org <mailto:
> jh...@apache.org>> wrote:
> >
> >> You’re basically running into https://issues.apache.org/ <
> https://issues.apache.org/>
> >> jira/browse/CALCITE-2072 <https://issues.apache.org/ <
> https://issues.apache.org/>
> >> jira/browse/CALCITE-2072>. The fix for that issue is straightforward - a
> >> couple of lines around https://github.com/apache/ <
> https://github.com/apache/>
> >> calcite/blob/master/core/src/main/java/org/apache/calcite/config/
> >> CalciteConnectionConfigImpl.java#L102 <https://github.com/apache/ <
> https://github.com/apache/>
> >> calcite/blob/master/core/src/main/java/org/apache/calcite/config/
> >> CalciteConnectionConfigImpl.java#L102> - so can you make that fix and
> see
> >> whether it fixes the problem.
> >>
> >>> On Dec 8, 2017, at 6:52 AM, Vamshi Krishna <vamshi.v.kris...@gmail.com
> >
> >> wrote:
> >>>
> >>> Hi Christian,
> >>>
> >>> Yes,  I have changed the conformance level to LENIENT.
> >>> I was able test the create table syntax using geometry data type.
> >>>
> >>>
> >>> Here's what i have in the code:
> >>> //create root schema
> >>> rootSchema = Frameworks.createRootSchema(true);
> >>>
> >>> //add geo functions
> >>>  ModelHandler.addFunctions(rootSchema, null,
> >> ImmutableList.<String>of(),
> >>>                        GeoFunctions.class.getName(), "*", true);
> >>>
> >>>
> >>>   // Initialize default planner
> >>>       FrameworkConfig calciteFrameworkConfig =
> >>> Frameworks.newConfigBuilder()
> >>>               .operatorTable(ChainedSqlOperatorTable.of(
> >>> OracleSqlOperatorTable.instance(),SqlStdOperatorTable.instance()))
> >>>
> >>> .parserConfig(SqlParser.configBuilder().setConformance(LENIENT)
> >>>                       // Lexical configuration defines how identifiers
> >>> are quoted, whether they are converted to upper or lower
> >>>                       // case when they are read, and whether
> >> identifiers
> >>> are matched case-sensitively.
> >>>                       .setParserFactory(SqlParserImpl.FACTORY)
> >>>                       .setLex(Lex.ORACLE)
> >>>                       .build())
> >>>               // Sets the schema to use by the planner
> >>>               .defaultSchema(rootSchema.add("CATALOG",schema))
> >>>               .traitDefs(traitDefs)
> >>>               // Context provides a way to store data within the
> planner
> >>> session that can be accessed in planner rules.
> >>>               .context(Contexts.EMPTY_CONTEXT)
> >>>               // Rule sets to use in transformation phases. Each
> >>> transformation phase can use a different set of rules.
> >>>               .ruleSets(RuleSets.ofList())
> >>>               // Custom cost factory to use during optimization
> >>>               .costFactory(null)
> >>>               .typeSystem(RelDataTypeSystem.DEFAULT)
> >>>               .build();
> >>>
> >>>       this.planner = new CustomPlannerImpl(calciteFrameworkConfig);
> >>>
> >>>       planner.parse();
> >>>
> >>>       planner.validate(); <<-- reporting error with no match found.
> >>>
> >>> Currently i am only looking for syntax and data type validation support
> >> and
> >>> not the runtime implementation of the geo functions.
> >>>
> >>>
> >>>
> >>> I am not sure if the GeoFunctions extension can be used for this
> purpose
> >>> similar to functions in OracleSqlOperator.
> >>>
> >>> Thanks,
> >>> Vamshi.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Thu, Dec 7, 2017 at 10:26 PM, Christian Tzolov <ctzo...@pivotal.io>
> >>> wrote:
> >>>
> >>>> Hi Vamshi,
> >>>>
> >>>> Have you set the conformance to such that supports Geometry? i've been
> >>>> using lenient like this: jdbc:calcite:conformance=LENIENT;
> >>>> ​model=...my model​
> >>>> ​
> >>>> ​
> >>>> ​
> >>>>
> >>>> On 7 December 2017 at 13:53, Vamshi Krishna <
> vamshi.v.kris...@gmail.com
> >>>
> >>>> wrote:
> >>>>
> >>>>> Hello Team,
> >>>>>
> >>>>> I have tried to use these functions by adding it to my schema as
> given
> >>>>> below:
> >>>>>
> >>>>> ModelHandler.addFunctions(rootSchema, null,
> >> ImmutableList.<String>of(),
> >>>>> GeoFunctions.class.getName(), "*", true);
> >>>>>
> >>>>> but i run into an validation issue when calling the planner's
> validate
> >>>>> routine with the below error:
> >>>>> No match found for function signature ST_MAKEPOINT(<NUMERIC>,
> >> <NUMERIC>,
> >>>>> <NUMERIC>)
> >>>>>
> >>>>> Do we have to register these functions manually similar to
> >>>>> OracleSqlOperatorTable or is there another way out for this ?
> >>>>>
> >>>>>
> >>>>> Thanks,
> >>>>> Vamshi.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Sat, Dec 2, 2017 at 4:33 AM, Christian Tzolov <ctzo...@pivotal.io
> >
> >>>>> wrote:
> >>>>>
> >>>>>> @Michael, sure go ahead and use the query if you find it fit. I am
> >>>>> looking
> >>>>>> forward to read this paper! If you need an "external" opinion about
> >> how
> >>>>>> Calcite fits in the broader  data management ecosystem or "patterns"
> >>>> for
> >>>>>> building Calcite adapters i can share few ideas ;)
> >>>>>>
> >>>>>> @Julian, i'm aware and agree with the approach for providing spatial
> >>>>>> support. Currently I'm only trying to make it work (somehow) in the
> >>>>> context
> >>>>>> of the Geode adapter! My goal is to mention it during my talk at
> >> Apache
> >>>>>> Geode Summit [1] on Monday.
> >>>>>>
> >>>>>> While on the topic of my talk [1], i've been looking for tempting
> >>>> reasons
> >>>>>> to engage/involve the Geode community with the project or at least
> >>>> start
> >>>>>> the argument. Here are my slides [2] (for internal use only until
> >>>>> Monday).
> >>>>>> In the pros and cons section i've shared some ideas:
> >>>>>>
> >>>>>> 1. In the context of data exploration and cleansing, an obvious
> >>>> advantage
> >>>>>> is the easiness for integration with 3rd party DMS tools and
> >>>>>>
> >>>>>> 2. In the same context the easy to correlate Geode data with data
> from
> >>>>>> multiple Sql and NoSql data stores (e.g. Data Federation).
> >>>>>>
> >>>>>> 3. But given that Geode is primarily used for OLTP-ish (e.g.
> >>>>>> transactional)  workloads, even the OQL is considered a second-class
> >>>>>> citizen. Therefore i find the concept of "SQL Stream" quite relevant
> >>>> and
> >>>>> i
> >>>>>> expect that the Geode community will find it interesting too. Geode
> >>>>> already
> >>>>>> provides limited CQ (Continues Querying) functionality and IMO the
> >> "Sql
> >>>>>> Stream" will be like advanced CQ++. Unfortunately i haven't had time
> >> to
> >>>>>> build and prototype in the context of Geode. Can you point me to
> some
> >>>>> code
> >>>>>> examples? I know about the Tests but are there and actual adapters
> or
> >>>>> other
> >>>>>> applications that use the "SQL Stream"?
> >>>>>>
> >>>>>> 4. @Julian you have mentioned the idea about dynamic
> materializations.
> >>>>> But
> >>>>>> i'm not sure i completely understand the approach and that confident
> >> to
> >>>>>> bring it for discussion. If you have some written references that
> can
> >>>>> help
> >>>>>> me i will appreciate it.
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Christian
> >>>>>>
> >>>>>>
> >>>>>> [1] Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache
> >>>> Calcite:
> >>>>>> https://springoneplatform.io/sessions/enable-sql-jdbc-
> >>>>>> access-to-apache-geode-gemfire-using-apache-calcite
> >>>>>> [2] Slides:
> >>>>>> https://docs.google.com/presentation/d/1zo473pcupWEjRXOA_
> >>>>>> W5rgaKSmS2Vmyl2U2ATKmrS26M/edit?usp=sharing
> >>>>>>
> >>>>>>
> >>>>>> On 1 December 2017 at 21:05, Julian Hyde <jh...@apache.org> wrote:
> >>>>>>
> >>>>>>> The Natural earth dataset (which https://github.com/zzolo/geo_
> >>>>>>> simple_countries_wkt_csv <https://github.com/zzolo/geo_
> >>>>>>> simple_countries_wkt_csv> is based upon) is Public Domain, which
> >>>> makes
> >>>>> it
> >>>>>>> suitable for our purposes.
> >>>>>>>
> >>>>>>>> Although inefficient (all spatial computations happen on calcite
> >>>>> side)
> >>>>>>> it is still very cool! :)
> >>>>>>>
> >>>>>>> That’s exactly what I was going for. First make it work (by adding
> >>>> all
> >>>>>>> OpenGIS functions as UDFs), then make it fast (by adding rewrite
> >>>> rules
> >>>>>> that
> >>>>>>> recognize functions and particular patterns of materialized views).
> >>>>>>>
> >>>>>>> Your query is a spatial join of polygons (cities) to polygons
> >>>>>> (countries).
> >>>>>>> I have in mind a materialized view where polygons are sliced into
> >>>>>> bounding
> >>>>>>> “tiles” and I think it should speed up this kind of query.
> >>>>>>>
> >>>>>>> Julian
> >>>>>>>
> >>>>>>>
> >>>>>>>> On Dec 1, 2017, at 9:09 AM, Christian Tzolov <ctzo...@pivotal.io>
> >>>>>> wrote:
> >>>>>>>>
> >>>>>>>> The OpenGIS Spec datasets sounds like right, "canonical" spatial
> >>>>>> dataset
> >>>>>>> to have.
> >>>>>>>>
> >>>>>>>> In the meantime for the purposes of my tests i found a dataset (
> >>>>>>> https://github.com/zzolo/geo_simple_countries_wkt_csv <
> >>>>>>> https://github.com/zzolo/geo_simple_countries_wkt_csv>) that
> >>>> contains
> >>>>>>> world country boundaries as WKT polygons along with their names,
> ISO
> >>>>>>> abbreviations  and other metadata. I've also converted the csv into
> >>>>> json
> >>>>>>> (attached) to make it easy for loading in Geode.
> >>>>>>>>
> >>>>>>>> This allows me to run crazy queries like this :)
> >>>>>>>>
> >>>>>>>> SELECT "NAME", ST_Distance("Country", ST_GeomFromText('POINT(23.
> >>>>> 288269
> >>>>>>> 42.731883)')) as "distanceToBG"
> >>>>>>>> FROM (
> >>>>>>>> SELECT
> >>>>>>>>  "NAME",
> >>>>>>>>   ST_GeomFromText('POLYGON((4.822998 52.427652, 4.971313
> >>>>> 52.427652,
> >>>>>>> 4.971313 52.333661, 4.822998 52.333661, 4.822998 52.427652))') AS
> >>>>>>> "Amsterdam",
> >>>>>>>>   ST_GeomFromText("WKT") AS "Country"
> >>>>>>>> FROM "geode"."Country"
> >>>>>>>> )
> >>>>>>>> WHERE ST_Contains("Country", "Amsterdam");
> >>>>>>>>
> >>>>>>>> E.g. retrieves the countries that contain the Amsterdam, NL area
> >>>> and
> >>>>>> for
> >>>>>>> the result computes the distances to Sofia, BG. The result is
> >>>> actually
> >>>>>>> correct :)
> >>>>>>>>
> >>>>>>>> | Netherlands | 18.93796871505074 |
> >>>>>>>>
> >>>>>>>> Although inefficient (all spatial computations happen on calcite
> >>>>> side)
> >>>>>>> it is still very cool! :)
> >>>>>>>>
> >>>>>>>> Btw the dataset license seems permissive and if you are interested
> >>>> i
> >>>>>> can
> >>>>>>> add the json version to the test-calcite project. If not mistaken
> >>>> some
> >>>>> of
> >>>>>>> the other adapters load data from json datasets too?
> >>>>>>>>
> >>>>>>>> Cheers,
> >>>>>>>> Christian
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On 30 November 2017 at 19:39, Julian Hyde <jh...@apache.org
> >>>> <mailto:
> >>>>>>> jh...@apache.org>> wrote:
> >>>>>>>> Yes, a small heterogeneous data set. The OpenGIS spec has that —
> >>>>> small
> >>>>>>> enough, in fact, create the tables and populate them in a .iq
> script.
> >>>>>>>>
> >>>>>>>> If/when we do spatial joins (points to polygons or polygons to
> >>>>>> polygons)
> >>>>>>> a larger data set would be useful, e.g. the 50 US states and their
> >>>>>> polygon
> >>>>>>> boundaries (about 5 MB compressed), major US cities, and US
> national
> >>>>>> parks.
> >>>>>>> In the past I have packaged up such data sets as hsqldb DBs
> embedded
> >>>> in
> >>>>>>> JARs - so people can get them from maven central.
> >>>>>>>>
> >>>>>>>> This is pretty fun: https://github.com/johan/
> >>>>>> world.geo.json/tree/master/
> >>>>>>> countries/USA <https://github.com/johan/
> world.geo.json/tree/master/
> >>>>>>> countries/USA><https://github.com/johan/world.geo.json/tree/
> >>>>>>> master/countries/USA <https://github.com/johan/
> >>>>>> world.geo.json/tree/master/
> >>>>>>> countries/USA>> (especially as Github can render GeoJSON as a map
> in
> >>>>> your
> >>>>>>> browser).
> >>>>>>>>
> >>>>>>>>> On Nov 30, 2017, at 9:47 AM, Michael Mior <mm...@uwaterloo.ca
> >>>>>> <mailto:
> >>>>>>> mm...@uwaterloo.ca>> wrote:
> >>>>>>>>>
> >>>>>>>>> Sounds like a good idea. I logged
> >>>>>>>>> https://issues.apache.org/jira/browse/CALCITE-2072 <
> >>>>>>> https://issues.apache.org/jira/browse/CALCITE-2072> <
> >>>>>>> https://issues.apache.org/jira/browse/CALCITE-2072 <
> >>>>>>> https://issues.apache.org/jira/browse/CALCITE-2072>>. I'd be up
> for
> >>>>>>> tackling
> >>>>>>>>> this myself. I'm just not sure how the ScalarFunctions in
> >>>>>> GeoFunctions
> >>>>>>> can
> >>>>>>>>> be converted to SqlFunctions for use in the operator table.
> >>>>>>>>>
> >>>>>>>>> As for test data, I assume for testing the best would be
> >>>> relatively
> >>>>>>> small
> >>>>>>>>> datasets (although we can subset ourselves if necessary) that
> >>>>>> contain a
> >>>>>>>>> diverse set of data types.
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Michael Mior
> >>>>>>>>> mm...@apache.org <mailto:mm...@apache.org> <mailto:
> >>>>> mm...@apache.org
> >>>>>>> <mailto:mm...@apache.org>>
> >>>>>>>>>
> >>>>>>>>> 2017-11-28 20:36 GMT-05:00 Julian Hyde <jh...@apache.org
> >>>> <mailto:
> >>>>>>> jh...@apache.org> <mailto:jh...@apache.org <mailto:
> jh...@apache.org
> >>>>>>>> :
> >>>>>>>>>
> >>>>>>>>>> There are no test data sets, I’m afraid. I would love to add a
> >>>>> data
> >>>>>>> set
> >>>>>>>>>> that includes various kinds of geometries (points, lines,
> >>>>> polygons).
> >>>>>>> One
> >>>>>>>>>> candidate is the one in the OpenGIS Simple Feature Access
> >>>> spec[1]
> >>>>>>> section
> >>>>>>>>>> C.3.1.2 onwards.
> >>>>>>>>>>
> >>>>>>>>>> There ought to be (but isn’t, right now) an easier way to import
> >>>>> the
> >>>>>>> list
> >>>>>>>>>> of GIS functions than calling ModelHandler.addFunctions. You can
> >>>>>>> currently
> >>>>>>>>>> add ‘fun=oracle’ to the JDBC URL to load the operators in
> >>>>>>>>>> OracleSqlOperatorTable; we ought to allow ‘fun=spatial’ or
> >>>>>>>>>> ‘fun=oracle,spatial’.
> >>>>>>>>>>
> >>>>>>>>>> Julian
> >>>>>>>>>>
> >>>>>>>>>> [1] http://portal.opengeospatial.org/files/?artifact_id=25354 <
> >>>>>>> http://portal.opengeospatial.org/files/?artifact_id=25354> <
> >>>>>>>>>> http://portal.opengeospatial.org/files/?artifact_id=25354 <
> >>>>>>> http://portal.opengeospatial.org/files/?artifact_id=25354> <
> >>>>>>> http://portal.opengeospatial.org/files/?artifact_id=25354 <
> >>>>>>> http://portal.opengeospatial.org/files/?artifact_id=25354>>>
> >>>>>>>>>>
> >>>>>>>>>>> On Nov 28, 2017, at 1:11 PM, Michael Mior <mm...@uwaterloo.ca
> >>>>>>> <mailto:mm...@uwaterloo.ca> <mailto:mm...@uwaterloo.ca <mailto:
> >>>>>>> mm...@uwaterloo.ca>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>> Yes, you should not use quotes if upcase is true since all
> >>>>>> functions
> >>>>>>> are
> >>>>>>>>>>> registered with uppercase names and all unquoted literals are
> >>>>> also
> >>>>>>>>>>> automatically upcased. Glad this helped!
> >>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Michael Mior
> >>>>>>>>>>> mm...@apache.org <mailto:mm...@apache.org> <mailto:
> >>>>>> mm...@apache.org
> >>>>>>> <mailto:mm...@apache.org>>
> >>>>>>>>>>>
> >>>>>>>>>>> 2017-11-28 14:18 GMT-05:00 Christian Tzolov <
> >>>> ctzo...@pivotal.io
> >>>>>>> <mailto:ctzo...@pivotal.io> <mailto:ctzo...@pivotal.io <mailto:
> >>>>>>> ctzo...@pivotal.io>>>:
> >>>>>>>>>>>
> >>>>>>>>>>>> ​Ok, ​
> >>>>>>>>>>>> I think i
> >>>>>>>>>>>> ​ solved the riddle​
> >>>>>>>>>>>> .
> >>>>>>>>>>>> ​H
> >>>>>>>>>>>> ad to remove
> >>>>>>>>>>>> ​the ​
> >>>>>>>>>>>> quotes from
> >>>>>>>>>>>> ​the ​
> >>>>>>>>>>>> function name (e.g. use ST_Point instead of "ST_Point"). This
> >>>>>>>>>>>> ​ is due to the ​
> >>>>>>>>>>>> upCase=TURE parameter
> >>>>>>>>>>>> ​in
> >>>>>>>>>>>> ​
> >>>>>>>>>>>> addFunctions
> >>>>>>>>>>>> ​ ​
> >>>>>>>>>>>> .
> >>>>>>>>>>>>
> >>>>>>>>>>>> I don't see the error anymore. Now i'm facing another issue i
> >>>>>>> believe is
> >>>>>>>>>>>> related with my adapter implementation.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thanks for the support!
> >>>>>>>>>>>>
> >>>>>>>>>>>> On 28 November 2017 at 18:43, Christian Tzolov <
> >>>>>> ctzo...@pivotal.io
> >>>>>>> <mailto:ctzo...@pivotal.io> <mailto:ctzo...@pivotal.io <mailto:
> >>>>>>> ctzo...@pivotal.io>>>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Unfortunately it didn't help still get " No match found for
> >>>>>>> function
> >>>>>>>>>>>>> signature ST_Point(<NUMERIC>, <NUMERIC>)"
> >>>>>>>>>>>>> ​.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> ​Could it be that i need to ad some schema or other prefix?
> >>>>> e.g.
> >>>>>>>>>>>>> "geode"."ST_Point"(
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Also can i check interactively what are the registered
> >>>>>> functions? ​
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On 28 November 2017 at 18:33, Michael Mior <
> >>>> mm...@uwaterloo.ca
> >>>>>>> <mailto:mm...@uwaterloo.ca>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> I believe that should work. I'll let others correct me if
> >>>> I'm
> >>>>>>> missing
> >>>>>>>>>>>> the
> >>>>>>>>>>>>>> boat here.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> --
> >>>>>>>>>>>>>> Michael Mior
> >>>>>>>>>>>>>> mm...@apache.org <mailto:mm...@apache.org>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 2017-11-28 12:31 GMT-05:00 Christian Tzolov <
> >>>>> ctzo...@pivotal.io
> >>>>>>> <mailto:ctzo...@pivotal.io>>:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Thanks @Michael!  Can i assume that
> >>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>> in
> >>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>> the SchemaFactory
> >>>>>>>>>>>>>>> ​#​
> >>>>>>>>>>>>>>> create(SchemaPlus parentSchema, String name,
> >>>>>>>>>>>>>>> ​ ...​
> >>>>>>>>>>>>>>> )
> >>>>>>>>>>>>>>> ​ method ​the root schema is constructed?  And can i use
> >>>> the
> >>>>>>>>>>>>>>> parentSchema
> >>>>>>>>>>>>>>> ​ like this:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> ModelHandler.addFunctions(parentSchema, null,
> >>>>>>>>>>>>>> ImmutableList.<String>of(),
> >>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>> GeoFunctions.class.getName(), "*", true);
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On 28 November 2017 at 16:58, Michael Mior <
> >>>>> mm...@uwaterloo.ca
> >>>>>>> <mailto:mm...@uwaterloo.ca>>
> >>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> I believe the geospatial functions are not currently
> >>>>>> registered
> >>>>>>> by
> >>>>>>>>>>>>>>> default.
> >>>>>>>>>>>>>>>> You can see an example of how to do this in
> >>>>>> CalciteAssert.java.
> >>>>>>> Once
> >>>>>>>>>>>>>> you
> >>>>>>>>>>>>>>>> have constructed the root schema, the following should be
> >>>>>>>>>>>> sufficient:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> ModelHandler.addFunctions(rootSchema, null,
> >>>>>>>>>>>>>> ImmutableList.<String>of(),
> >>>>>>>>>>>>>>>> GeoFunctions.class.getName(), "*", true);
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>> Michael Mior
> >>>>>>>>>>>>>>>> mm...@apache.org <mailto:mm...@apache.org>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> 2017-11-28 4:27 GMT-05:00 Christian Tzolov <
> >>>>>> ctzo...@pivotal.io
> >>>>>>> <mailto:ctzo...@pivotal.io>>:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> I've tried to cast the Zip's loc column into double like
> >>>>>> this:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> SELECT
> >>>>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>>>> "city",  cast("loc" [0] AS DOUBLE) AS "lon",  cast("loc"
> >>>>> [1]
> >>>>>> AS
> >>>>>>>>>>>>>> DOUBLE)
> >>>>>>>>>>>>>>>> AS
> >>>>>>>>>>>>>>>>> "lat"
> >>>>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>>>> FROM "geode"."Zips"
> >>>>>>>>>>>>>>>>> ​ ​
> >>>>>>>>>>>>>>>>> LIMIT  10;
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> ​This seems to work fine. ​But when i try to use the
> >>>>> ST_Point
> >>>>>>>>>>>>>> function
> >>>>>>>>>>>>>>> i
> >>>>>>>>>>>>>>>>> get: "No match found for function signature
> >>>>>> ST_Point(<NUMERIC>,
> >>>>>>>>>>>>>>>> <NUMERIC>)"
> >>>>>>>>>>>>>>>>> (full stack is below)
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> It seems like i've not registered a jar dependency or
> >>>>> haven't
> >>>>>>>>>>>>>> enabled
> >>>>>>>>>>>>>>>>> something else?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> jdbc:calcite:conformance=LENIENT> SELECT "city",
> >>>>>>>>>>>>>> "ST_Point"(cast("loc"
> >>>>>>>>>>>>>>>> [0]
> >>>>>>>>>>>>>>>>> AS DOUBLE), cast("loc" [1] AS DOUBLE)) FROM
> >>>>>> "geode"."Zips"LIMIT
> >>>>>>>>>>>> 10;
> >>>>>>>>>>>>>>>>> 2017-11-28 10:19:15,199 [main] ERROR -
> >>>>>>>>>>>>>>>>> org.apache.calcite.sql.validate.SqlValidatorException:
> >>>> No
> >>>>>>> match
> >>>>>>>>>>>>>> found
> >>>>>>>>>>>>>>>> for
> >>>>>>>>>>>>>>>>> function signature ST_Point(<NUMERIC>, <NUMERIC>)
> >>>>>>>>>>>>>>>>> 2017-11-28 10:19:15,199 [main] ERROR -
> >>>>>>>>>>>>>>>>> org.apache.calcite.runtime.CalciteContextException: From
> >>>>>> line
> >>>>>>> 1,
> >>>>>>>>>>>>>>> column
> >>>>>>>>>>>>>>>> 16
> >>>>>>>>>>>>>>>>> to line 1, column 79: No match found for function
> >>>> signature
> >>>>>>>>>>>>>>>>> ST_Point(<NUMERIC>, <NUMERIC>)
> >>>>>>>>>>>>>>>>> Error: Error while executing SQL "SELECT "city",
> >>>>>>>>>>>>>> "ST_Point"(cast("loc"
> >>>>>>>>>>>>>>>> [0]
> >>>>>>>>>>>>>>>>> AS DOUBLE), cast("loc" [1] AS DOUBLE)) FROM
> >>>>>> "geode"."Zips"LIMIT
> >>>>>>>>>>>> 10":
> >>>>>>>>>>>>>>> From
> >>>>>>>>>>>>>>>>> line 1, column 16 to line 1, column 79: No match found
> >>>> for
> >>>>>>>>>>>> function
> >>>>>>>>>>>>>>>>> signature ST_Point(<NUMERIC>, <NUMERIC>) (state=,code=0)
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On 28 November 2017 at 09:32, Christian Tzolov <
> >>>>>>>>>>>> ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> @Julian are there some tests, json datasets? Perhaps in
> >>>>>>>>>>>>>>>>>> calcite-test-dataset?
> >>>>>>>>>>>>>>>>>> Also I will try to cast the "loc" from Zips into DOUBLE
> >>>>>>> columns
> >>>>>>>>>>>> to
> >>>>>>>>>>>>>>> test
> >>>>>>>>>>>>>>>>>> the ST_Point
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On 28 November 2017 at 02:24, Julian Hyde <
> >>>>> jh...@apache.org
> >>>>>>> <mailto:jh...@apache.org>>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> It’s true that you can’t define a GEOMETRY column in a
> >>>>>>> foreign
> >>>>>>>>>>>>>>> table.
> >>>>>>>>>>>>>>>>> But
> >>>>>>>>>>>>>>>>>>> you can define a VARCHAR column and apply the
> >>>>>> ST_GeomFromText
> >>>>>>>>>>>> to
> >>>>>>>>>>>>>> it,
> >>>>>>>>>>>>>>>> or
> >>>>>>>>>>>>>>>>> if
> >>>>>>>>>>>>>>>>>>> you want a point you can define a pair of DOUBLE
> >>>> columns
> >>>>>> and
> >>>>>>>>>>>>>> apply
> >>>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>> ST_Point function.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> In essence, our implementation of GEOMETRY is only an
> >>>>>>> in-memory
> >>>>>>>>>>>>>>> format
> >>>>>>>>>>>>>>>>>>> right now, not an on-disk format. It’s a little less
> >>>>>>> efficient
> >>>>>>>>>>>>>> than
> >>>>>>>>>>>>>>> a
> >>>>>>>>>>>>>>>>>>> native GEOMETRY data type but hopefully over time we
> >>>> will
> >>>>>>> write
> >>>>>>>>>>>>>>>>> optimizer
> >>>>>>>>>>>>>>>>>>> rules that push down filters etc. so we don’t literally
> >>>>>>>>>>>>>> construct an
> >>>>>>>>>>>>>>>>>>> in-memory geometry object for every row, only the rows
> >>>> we
> >>>>>> are
> >>>>>>>>>>>>>>>>> interested in.
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> Julian
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> On Nov 27, 2017, at 2:59 AM, Christian Tzolov <
> >>>>>>>>>>>>>> ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Hey there,
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> I'm exploring the new Spatial (
> >>>>>>> https://calcite.apache.org/do <https://calcite.apache.org/do>
> >>>>>>>>>>>>>>>>>>> cs/spatial.html)
> >>>>>>>>>>>>>>>>>>>> functionality and i've been trying to figure out what
> >>>>> are
> >>>>>>> the
> >>>>>>>>>>>>>>>> minimal
> >>>>>>>>>>>>>>>>>>>> requirements for using it with my custom adapter.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Following the guidelines i've set LENIENT  conformance
> >>>>> in
> >>>>>> my
> >>>>>>>>>>>>>> jdbc
> >>>>>>>>>>>>>>>> URL
> >>>>>>>>>>>>>>>>> (
> >>>>>>>>>>>>>>>>>>>> jdbc:calcite:conformance=LENIENT;
> >>>>>>>>>>>>>>>>>>>> ​model=...my model​
> >>>>>>>>>>>>>>>>>>>> ​
> >>>>>>>>>>>>>>>>>>>> ​
> >>>>>>>>>>>>>>>>>>>> ​)
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> But I am not sure how define the GEOMETRY column
> >>>> types?​
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Currently my custom Schema/Table factory
> >>>> implementation
> >>>>>>>>>>>> infers
> >>>>>>>>>>>>>> the
> >>>>>>>>>>>>>>>>>>> column
> >>>>>>>>>>>>>>>>>>>> types from the underlaying system's field types.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> So it seems that i need to change my implementation
> >>>> and
> >>>>>>>>>>>>>> somehow to
> >>>>>>>>>>>>>>>>> hint
> >>>>>>>>>>>>>>>>>>>> which fields needs to be mapped to GEOMETRY types?  Or
> >>>>>>>>>>>> perhaps
> >>>>>>>>>>>>>> i
> >>>>>>>>>>>>>>> can
> >>>>>>>>>>>>>>>>>>> try to
> >>>>>>>>>>>>>>>>>>>> do some expensive casting in SQL?
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Are there any guidelines, examples ​for using Spatial
> >>>>>>>>>>>>>>> functionality
> >>>>>>>>>>>>>>>> on
> >>>>>>>>>>>>>>>>>>> 3rd
> >>>>>>>>>>>>>>>>>>>> party (e.g. custom) adapters?
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>>>>>> Christian
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov <
> >>>>>>> http://www.linkedin.com/in/tzolov>> |
> >>>>>>>>>>>> Principle
> >>>>>>>>>>>>>>>>> Software
> >>>>>>>>>>>>>>>>>> Engineer | Spring <https://spring.io/ <
> >>>> https://spring.io/
> >>>>>>>> .io
> >>>>>>> | Pivotal <
> >>>>>>>>>>>>>>>> http://pivotal.io/ <http://pivotal.io/>>
> >>>>>>>>>>>>>>>>>> | ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov <
> >>>>>>> http://www.linkedin.com/in/tzolov>> | Principle
> >>>>>>>>>>>>>>>> Software
> >>>>>>>>>>>>>>>>> Engineer | Spring <https://spring.io/ <
> >>>> https://spring.io/
> >>>>>>>> .io
> >>>>>>> | Pivotal <
> >>>>>>>>>>>>>>> http://pivotal.io/ <http://pivotal.io/>>
> >>>>>>>>>>>>>>>> |
> >>>>>>>>>>>>>>>>> ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov <
> >>>>>>> http://www.linkedin.com/in/tzolov>> | Principle
> >>>>>>>>>>>>>> Software
> >>>>>>>>>>>>>>> Engineer | Spring <https://spring.io/ <https://spring.io/
> >>>>>>> .io
> >>>>>>> | Pivotal <
> >>>>>>>>>>>> http://pivotal.io/ <http://pivotal.io/>>
> >>>>>>>>>>>>>> |
> >>>>>>>>>>>>>>> ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov <
> >>>>>>> http://www.linkedin.com/in/tzolov>> | Principle
> >>>>>>>>>>>> Software
> >>>>>>>>>>>>> Engineer | Spring <https://spring.io/ <https://spring.io/
> >>>>>> .io
> >>>>> |
> >>>>>>> Pivotal <
> >>>>>>>>>> http://pivotal.io/ <http://pivotal.io/>>
> >>>>>>>>>>>>> | ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> --
> >>>>>>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov <
> >>>>>>> http://www.linkedin.com/in/tzolov>> | Principle
> >>>>>>>>>> Software
> >>>>>>>>>>>> Engineer | Spring <https://spring.io/ <https://spring.io/
> >>>>>> .io
> >>>>> |
> >>>>>>> Pivotal <http://pivotal.io/ <http://pivotal.io/>>
> >>>>>>>>>> |
> >>>>>>>>>>>> ctzo...@pivotal.io <mailto:ctzo...@pivotal.io>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov> | Principle
> >>>>>>> Software Engineer | Spring <https://spring.io/>.io | Pivotal <
> >>>>>>> http://pivotal.io/> | ctzo...@pivotal.io <mailto:
> ctzo...@pivotal.io
> >>>>> <
> >>>>>>> wkt-countries.json.zip>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Christian Tzolov <http://www.linkedin.com/in/tzolov> | Principle
> >>>>> Software
> >>>>>> Engineer | Spring <https://spring.io/>.io | Pivotal <
> >>>> http://pivotal.io/>
> >>>>> |
> >>>>>> ctzo...@pivotal.io
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Christian Tzolov <http://www.linkedin.com/in/tzolov> | Principle
> >> Software
> >>>> Engineer | Spring <https://spring.io/>.io | Pivotal <
> http://pivotal.io/>
> >> |
> >>>> ctzo...@pivotal.io
>
>

Reply via email to