- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在实现一个用户定义的数据类型 - 一个链接列表,它模仿名为 intList.c 的文件中的一组整数,并希望与 intList.source 一起使用以将其安装到我的 Postgres 服务器上。
所以我的问题如下:
我能否在我的代码中编写 C 函数,例如 (link newNode) 和 (link InsertEnd),其中它们不是要在源文件中声明和创建的 postgres 函数?
我可以在从我的输入函数调用的函数中使用 palloc
吗? (在这种情况下链接 newNode)?或者我应该在我的输入函数中这样做吗?
我的 intList.c 代码如下:这些函数都可以在 C 中使用,但我还没有在我的 PostgreSQL 服务器中安装它们,所以我不知道结果如何:
// Defining struct for linked list
typedef struct intSet *link;
typedef struct intList {
int num;
link next;
} intList;
// Create a new node
link newNode(int item) {
link n = (link) palloc(sizeof(*n));
n->num = item;
n->next = NULL;
return n;
}
link insertEnd(link list, link n){
link curr;
// Empty list
if(list == NULL){
list = n;
n->next = NULL;
// If list not empty, iterate to end of list, then append
} else {
for(curr = list; curr->next != NULL; curr = curr->next) {
}
curr->next = n;
n->next = NULL;
}
return list;
}
PG_FUNCTION_INFO_V1(intList_in);
Datum
intList_in(PG_FUNCTION_ARGS)
{
char *str = PG_GETARG_CSTRING(0);
char *token;
// Create an empty linked list
link newList;
newList = NULL;
// Get individual ints from a set e.g. {1, 2, 3, 4}
token = strtok(str, ",{} ");
// For each int, create a new node then
// append to list
while (token != NULL) {
link a = NULL;
a = newNode(atoi(token));
newList = insertEnd(newList, a);
token = strtok(NULL, ",{} ");
}
PG_RETURN_POINTER(newList);
}
Datum
intList_out(PG_FUNCTION_ARGS)
{
// Start our string
char* out = "{";
char* num;
// Retrieve our list from arg(0)
link List = PG_GETARG_POINTER(0);
link curr;
// Traverse list till last node, add commas after each node
for (curr = List; curr->next != NULL; curr = curr->next) {
num = itoa(curr->num);
strcat(num, ", ");
strcat(out, num);
}
// At last node, add closing bracket to close list
num = itoa(curr->num);
strcat(num, "}");
strcat(out, num);
// Psprintf to result then return it
char *result;
result = psprintf("%s", out);
PG_RETURN_CSTRING(result);
}
这只是我整个代码的一部分,我将实现运算符和其他函数,因此非常感谢任何提示和指示。
最佳答案
Can I write C functions such as (link newNode) and (link InsertEnd) in my code wherein they're not postgres functions to be declared & created in the source file?
我假设你的意思是你可以在没有 palloc
的情况下编写它们吗? .你当然可以。虽然不建议这样做。 PostgreSQL 包装 malloc
出于性能原因和完整性原因(确保在 txn 结束时释放内存)。如果没有palloc
,你将不得不处理这个问题,我不确定您会遇到什么样的挑战。
Can I use
palloc
in a function called from my input function? (in this case link newNode)? Or should I do it in my input function?
当然,如果您在服务器上运行那是您应该做的。就#include <postres.h>
关于postgresql - C/Postgres - 在非 PG 函数中使用 palloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52077895/
运行马里奥游戏时此文件出现错误当我尝试运行文件 super_mario.py 时,我从以下链接( https://github.com/Ja1r0/DQN-play-SuperMario )下载了代码
来自pg module doc ,似乎连接到 PG 数据库的正确方法是使用: conn = PG::Connection.open(dbname: 'test') 但是,我发现 other examp
嘿,所以我试图让 Nodejs Koa 使用 Koa-pg 模块与 postgres 对话,但我一直收到“找不到模块 pg”错误。我已尝试遵循 koa-pg 示例,但效果不佳……因此,我们将不胜感激任
我需要一些关于 pg npm 的帮助。 我已经阅读了许多文章和示例,并且对以正确的方式使用 pg 池感到非常困惑。许多文章都是我读过的旧文章。 我想向您展示我的一些代码以及我是如何围绕 db 构建所有
我有一个 postgresql 表,每天都有数千条时间序列数据。我有一个应用程序允许用户检索这些数据。查询可能需要 200 毫秒到 30 秒,具体取决于时间范围,因此这些查询必须是可取消的,以避免对生
我不确定我的 heroku postgres 发生了什么,但是当我尝试使用命令行访问它时 pg:info和 pg:psql ,我得到“未找到”。 我什至单击 heroku 上的按钮也为我的应用程序创建
给定一个包含 jsonb[] 类型列的表,如何将 json 数组插入到该列中? 使用提供的格式化程序 :array、:json 在这种情况下将不起作用 - 除非我缺少正确的组合或其他内容。 const
我是 node 和 pg-promise 的新手,一直无法弄清楚如何将三个相关查询的结果合并到一个 json 结果中。 给定三个相关表: 父实体 create table parent ( id bi
在开发时,我需要拉取最新的数据库,以便我知道我正在使用最新的数据。但是,我们保留了一张表,里面装满了我不需要费心下载的文件,因为它是一个非常大的表。 我知道 pg_dump 允许自定义参数,这些参数可
当我运行时(作为 root) gem install pg -v '0.12.0' -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config 我得到以下输出:
我在尝试使用annotation@type(type=“pg uuid”)时遇到了一些问题。它抛出此异常: Caused by: java.lang.ClassNotFoundException: C
我按照这个线程 (Cannot install pg gem in Mavericks with Postgres.app) 获得了 'pg' gem 成功地与 Mavericks 上的 Postgr
正在获取 pg:找不到模型 id="," 的 dst 值 我定义了以下模型 // omitting fields which don't seem relevant to the issue // c
如何在Ruby pg gem 中使用PG::Connection 类的公共(public)实例方法send_query? 它可以帮助加快这样的程序的执行时间吗? a = [1,2,3,4,5,6,..
大家好,我一直在尝试使用 capistrano 部署我的应用程序。但是,我始终收到以下错误,并且不知道如何解决它。 * executing "cd /var/www/html/mysite.com/r
在我的 TestLogger 类中,require 'pg'(版本 0.16.0)返回 true,但 PGconn 未注册。 到目前为止,只有服务器有这个问题,而且只在TestLogger。其他确实需
使用 VSCode。为 Windows 安装了最新的 Node.js(首次用户)以及所需的模块,其中一个是“pg”(npm install pg) 在我的脚本顶部有这样的内容:const pg = r
我写了一个简单的脚本:。This.db对应于一个Pool对象。所以我在数据库中选择了一个特定的对象,在它的旁边我试图取回相同的对象,但这次使用了creation_date字段。。我尝试了许多结果变量更
我做了一个简单的脚本:。This.db对应于Pool对象。因此,我使用他的ID在我的数据库中选择了一个特定的对象。在它旁边,我试图取回相同的对象,但这次使用的是Creation_Date字段。。我尝试
我希望执行以下操作。 使用 group by 查询查询大型表以执行值汇总。 通过例程运行这些记录以添加一些附加数据 将它们高效地插入数据库。 我尝试使用 pg-query-stream 将数据作为流读
我是一名优秀的程序员,十分优秀!