postgresql - 如何使扩展可重定位?
问题描述
我不知道如何使扩展名可重定位。问题:如何使扩展移动到另一个方案。下面,开始描述。之后是运算符、函数、方差、数学期望的创建。
create schema IF NOT EXISTS complex;
--Mathematical expectation
--creating a complex data type
create type complex.complex as (re float, im float);
--creation of complex data type with the sum of complex numbers and the amount of numbers--
create type complex.complexSumAndCount as (complexSumVar complex.complex, complexCount integer);
--Creating the function of adding complex numbers
CREATE or REPLACE function complex.complexSumFunction (sum complex.complex, complexTempVar complex.complex)
RETURNS complex.complex as
$$
BEGIN
IF sum is not null and complexTempVar is not null then
sum.re := coalesce(sum.re, 0) + coalesce(complexTempVar.re, 0);
sum.im := coalesce(sum.im, 0) + coalesce(complexTempVar.im, 0);
end IF;
RETURN sum;
end; $$LANGUAGE plpgSQL;
解决方案
好的,发布指向 github 存储库的链接可能不是改进问题的推荐方法。您还没有告诉我您是否真的在尝试编写扩展程序。
我猜你不是,因为你似乎没有 .control 文件。
如果你想要做的是能够写
select '(6,44)'::complex;
而不是
select '(6,44)'::complex.complex;
那么您需要了解的是search_path。
当您没有明确指定模式时,这控制了将在哪些模式中搜索对象(类型、表、函数等)。
所以 - 你有两个选择。当你想运行查询时,你可以将你的“复杂”模式添加到你的 search_path 中。或者你可以将你的“复杂”类型和函数放在你当前的 search_path 中。
您可以使用以下方法临时设置您的 search_path(针对当前事务或会话):
SET search_path = public, complex;
您可以使用以下内容更改用户或数据库的默认值:
ALTER USER myuser SET search_path = public, complex;
ALTER USER mydatabase SET search_path = public complex;
第二个选项是将您的“复杂”代码加载到您的 search_path 中已经存在的模式中。为此,您将从script1.sql
文件中删除对模式的所有引用。
create type complex as (re float, im float);
create type complexSumAndCount as (complexSumVar complex.complex, complexCount integer);
...
然后,当您加载它时,您的类型和函数将在您的 search_path 中可以找到的第一个模式中创建。最好将其设置为您想要的。
SET search_path = public;
\i script1.sql
或从命令行
PGOPTIONS="--search_path=public" psql -U myuser -d mydb -f script1.sql
我希望这会有所帮助。如果这不是您所追求的,那么恐怕您将需要发布一个新问题并准确解释您要做什么。如果您想就您的问题进行更长时间的对话,那么 postgresql 邮件列表可能是一个不错的尝试。
推荐阅读
- java - 为什么我在线程“main”java.lang.NoClassDefFoundError 错误中得到 LWJGL 异常
- wagtail - Wagtail - 页面外的流场问题?
- java - Spring Boot 中嵌入式 H2 数据库的默认名称是什么?
- python - 如果我指向其中的一个方法,GC 会清理我的对象吗?
- xml - Python lxml gives entities for cyrillic characters
- python - QSpinBox fix up down buttons
- reactjs - React: Framer Motion / onClick activate only the animation
- c - Raspberry Pi operating system kills the compiled qt4 executable without any error
- flutter - Gradient on top of blurred image (flutter)
- sql - BigQuery - Same query, REGEXP_CONTAINS processed 3X less data than IN Operator? Details inside