PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgresql में एक विस्तार परीक्षण बनाना

यह एक न्यूनतम उदाहरण है जो काम करता है यदि आपके पास postgresql-server . है ubuntu के लिए विकास पैकेज स्थापित

एक्सटेंशन.c
एक साधारण एक्सटेंशन

/* Postgres headers */
#include <postgres.h>
#include <utils/rel.h>

#include <stdio.h>
#include <string.h>

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

static char *
extract_string(text *word)
{
    char *head;
    char *tail;

    if (word == NULL)
        return NULL;

    head = VARDATA(word);
    tail = head + VARSIZE(word) - VARHDRSZ;
    tail[0] = '\0';

    return head;
}

PG_FUNCTION_INFO_V1(compare_strings);
Datum
compare_strings(PG_FUNCTION_ARGS)
{
    char *lhs;
    char *rhs;

    lhs = extract_string(PG_GETARG_TEXT_P(0));
    rhs = extract_string(PG_GETARG_TEXT_P(1));

    PG_RETURN_BOOL(strcmp(lhs, rhs) == 0);
}

मेकफ़ाइल
एक सरल मेकफ़ाइल यह वर्णन करने के लिए कि आप एक्सटेंशन कैसे बना सकते हैं।

CC     = gcc
OBJECT = extension.o
NAME   = my-extension.so
CFLAGS = -Wall -Werror -g3 -O0 -I$(shell pg_config --includedir-server)

all: $(OBJECT)
    $(CC) -shared -o $(NAME) $(OBJECT)

%.o: %.c
    $(CC) -c -fPIC $(CFLAGS) $<

install: all
    @install -Dv -m755 $(NAME) $(shell pg_config --pkglibdir)/$(NAME)
    @psql -U postgres -f create-function.sql

clean:
    @rm -fv *.o *.so

create-function.sql
फ़ंक्शन बनाने के लिए एक आसान स्क्रिप्ट

CREATE OR REPLACE FUNCTION 
    compare_strings(VARCHAR,VARCHAR) RETURNS integer AS 'my-extension' 
LANGUAGE C STRICT;

जैसा कि आपके प्रश्न से लगता है, आप यह समझने में सक्षम होंगे कि यह क्या करता है और इसे आपके उपयोग के मामले में कैसे काम करना है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट पंक्तियां हटाएं (सभी डुप्लिकेट हटाएं नहीं)

  2. ऑटो इंक्रीमेंट टेबल कॉलम

  3. OpenERP सर्वर त्रुटि पहुँच अस्वीकृत

  4. JDBC बैच संचालन समझ

  5. तत्वों के क्रम को अनदेखा करते हुए समानता के लिए सरणियों की तुलना करें