برنامه نویسی

نحوه نوشتن پسوندهای PostgreSQL در C++

ایجاد یک پسوند کاملاً جدید برای PostgreSQL شامل چندین مرحله است.
در اینجا ما یک پسوند پایه ایجاد خواهیم کرد که تابع SQL را برای محاسبه فاکتوریل یک عدد صحیح اضافه می کند. کد پسوند را در c++ می نویسیم.

پسوند فاکتوریل را ایجاد کنید

1 سپتامبر:
پوشه factorial_extension را در آن ایجاد کنید share دایرکتوری در پوشه نصب postgres.
ساختار پوشه را تنظیم کنید. این پوشه حاوی فایل است factorial_extension.control، factorial_extension--1.0.sql، factorial_extension.cpp و MakeFile.

factorial_extension/
    |
    +-- factorial_extension.control
    |
    +-- factorial_extension.cpp
    |
    +-- factorial_extension--1.0.sql
    |
    +-- Makefile
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2 سپتامبر:
کد فاکتوریل را در C++ بنویسید

#include <postgres.h>
#include <fmgr.h>
#include <utils/numeric.h>

#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

extern "C" {
    PG_FUNCTION_INFO_V1(factorial);

    Datum factorial(PG_FUNCTION_ARGS) {
        int32 arg = PG_GETARG_INT32(0);

        if (arg < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("Factorial input must be a non-negative integer")));

        int64 result = 1;
        for (int i = 2; i <= arg; ++i)
            result *= i;

        PG_RETURN_INT64(result);
    }
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3 سپتامبر:
فایل کنترل را بنویسید. فایل کنترلی برای یک برنامه افزودنی، همچنین به عنوان فایل .control شناخته می شود، یک فایل فراداده است که اطلاعاتی را در مورد پسوند ارائه می دهد. این شامل جزئیاتی مانند نام، نسخه، نویسنده، مسیر ماژول، وابستگی ها و سایر ویژگی های مهم برنامه افزودنی است.

# factorial_extension.control
comment="Extension to calculate factorial"
default_version = '1.0'
module_pathname="$libdir/factorial_extension"
relocatable = false
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4:
اسکریپت SQL را بنویسید (factorial_extension–1.0.sql):

-- factorial_extension--1.0.sql

-- Create the extension schema
CREATE SCHEMA factorial_extension;

-- Create the SQL function
CREATE OR REPLACE FUNCTION factorial_extension.factorial(integer)
RETURNS bigint AS 'factorial_extension', 'factorial'
LANGUAGE C STRICT;

-- Grant execute permission to public (change to appropriate roles if needed)
GRANT EXECUTE ON FUNCTION factorial_extension.factorial(integer) TO PUBLIC;

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 4:
MakeFile را بنویسید:

MODULES = factorial_extension
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Extension را اجرا کنید

مرحله 1: سرور PostgreSQL را راه اندازی یا راه اندازی مجدد کنید
گام 2: به پایگاه داده ای که می خواهید افزونه را نصب کنید وصل شوید
مرحله 3: برای نصب افزونه دستور زیر را اجرا کنید.

CREATE EXTENSION factorial_extension;
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از افزونه استفاده کنید

SELECT factorial_extension.factorial(5);
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا