英文:
What if PostgreSql introduce a new function with name "cypher" then how to distingush between cypher and sql query with cypher function
问题
目前,Apache-age 查询的结构如下:
SELECT * FROM cypher(<graph_name>, <cypher_query>)
我不确定在加载age扩展之后,PostgreSQL如何能够区分常规的SQL查询和Cypher查询。
目前,解析器可以通过查看选择语句的from子句中的cypher函数来区分Cypher查询和普通SQL查询。[我们正在使用这种方法来区分Cypher和普通查询]
但我担心如果PostgreSQL引入一个名为"cypher"的新函数,用于某些功能,就像我们在下面的示例中在from子句中使用generate_series一样,那么就会发生冲突。在开发中,我们该如何解决这个问题?
英文:
Currently, the structure of Apache-age query is:
SELECT * FROM cypher(<graph_name>, <cypher_query>)
I am not sure how PostgreSQL is able to distinguish between regular sql queries and Cypher queries after loading age extension.
For now parsers can differentiate between cypher query and normal SQL queries by looking at cypher function in the from clause of select statement. [We are using this approach to distinguish between cypher and normal queries]
But I was concerned that if PostgreSql introduce a new function with the name "cypher" for some functionality, let's say that cypher function can be used in from-clause like we use generate_series in from-clause in the following example.
SELECT * FROM generate_series(1, 10) AS number;
Then there will be conflict in between. How can we resolve that in development?
答案1
得分: 2
如果PostgreSQL引入了一个新的系统函数,该函数将位于系统模式pg_catalog
中。您可以通过在函数名称前加上模式来消除这样一个函数与您的函数之间的歧义,例如
SELECT myschema.cypher(...);
英文:
If PostgreSQL introduces a new system function, that function will be in the system schema pg_catalog
. You can disambiguate between such a function and your function by qualifying the function name with the schema, for example
SELECT myschema.cypher(...);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论