gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: fix SPI build


From: gnunet
Subject: [taler-exchange] branch master updated: fix SPI build
Date: Sun, 16 Apr 2023 22:07:39 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 8463572b fix SPI build
8463572b is described below

commit 8463572beae5c5e8df59e12107a8cecee3ea8680
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Apr 16 22:07:36 2023 +0200

    fix SPI build
---
 src/exchangedb/spi/Makefile     |   1 +
 src/exchangedb/spi/README.md    |  48 +++++++--------
 src/exchangedb/spi/own_test.c   |  36 +++++------
 src/exchangedb/spi/own_test.sql | 131 ++++++++++++++++++----------------------
 4 files changed, 99 insertions(+), 117 deletions(-)

diff --git a/src/exchangedb/spi/Makefile b/src/exchangedb/spi/Makefile
index 9c84bf75..d654d91e 100644
--- a/src/exchangedb/spi/Makefile
+++ b/src/exchangedb/spi/Makefile
@@ -1,6 +1,7 @@
 EXTENSION = own_test
 MODULES = own_test
 DATA = own_test.sql
+PG_CPPFLAGS = -I /usr/include/postgresql
 
 # postgresql build stuff
 PG_CONFIG = pg_config
diff --git a/src/exchangedb/spi/README.md b/src/exchangedb/spi/README.md
index ec6a9016..47eb37b9 100644
--- a/src/exchangedb/spi/README.md
+++ b/src/exchangedb/spi/README.md
@@ -1,41 +1,37 @@
-                           Server Programming Interface (SPI)
+                Server Programming Interface (SPI)
 
 
-Dependencies:
-=============
+Overview
+========
 
-These are the direct dependencies for running SPI functions :
+This folder contains results from an experiment by Joseph Xu
+to use the Postgres SPI. They are not currently used at all
+by the GNU Taler exchange.
 
 
+Dependencies
+============
 
-Step 1:
-"postgresql-server-dev-<depends on your postgresql version>"
--- sudo apt-get install libpq-dev postgresql-server-dev-13
+These are the direct dependencies for compiling the code:
 
-Step 2:
-To solve gssapi/gssapi.h, use the following command:
-apt-get install libkrb5-dev
+# apt-get install libpq-dev postgresql-server-dev-13
+# apt-get install libkrb5-dev
+# apt-get install libssl-dev
 
-Step 3:
-apt-cache search openssl | grep -- -dev
-apt-get install libssl-dev
 
-Compile:
-========
-gcc -shared -o <file_name>.so <file_name>.c
+Compilation
+===========
 
-CALL FUNCTIONS:
-===============
+$ make
 
-psql -c "SELECT <function_name>();" db_name
+Loading functions
+=================
 
-Structure:
-==========
+# make install
+$ psql "$DB_NAME" < own_test.sql
 
-usr/include/postgres/
 
-usr/include/postgres/13/server/
+Calling functions
+==================
 
-make
-make install
-psql
\ No newline at end of file
+$ psql -c "SELECT $FUNCTION_NAME($ARGS);" "$DB_NAME"
diff --git a/src/exchangedb/spi/own_test.c b/src/exchangedb/spi/own_test.c
index 7da89cbd..ac72fad7 100644
--- a/src/exchangedb/spi/own_test.c
+++ b/src/exchangedb/spi/own_test.c
@@ -2,17 +2,17 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <libpq-fe.h>
-#include <internal/libpq-int.h>
+#include <postgresql/libpq-fe.h>
+#include <libpq-int.h>
 #include <catalog/pg_type.h>
 #include <executor/spi.h>
 #include <funcapi.h>
 #include <fmgr.h>
 #include <utils/builtins.h>
-#include "utils/array.h"
+#include <utils/array.h>
 #include <sys/time.h>
-#include "utils/numeric.h"
-#include "utils/timestamp.h"
+#include <utils/numeric.h>
+#include <utils/timestamp.h>
 #include <utils/bytea.h>
 
 #ifdef PG_MODULE_MAGIC
@@ -66,7 +66,7 @@ pg_spi_prepare_example (PG_FUNCTION_ARGS)
   {
     if (prepared_plan == NULL)
     {
-      new_plan = SPI_prepare ("SELECT 1 FROM joseph_test.X", 0, NULL);
+      new_plan = SPI_prepare ("SELECT 1 FROM X", 0, NULL);
       prepared_plan = SPI_saveplan (new_plan);
 
       if (prepared_plan == NULL)
@@ -112,7 +112,7 @@ pg_spi_prepare_example_without_saveplan (PG_FUNCTION_ARGS)
   }
 
   {
-    new_plan = SPI_prepare ("SELECT 1 FROM joseph_test.X", 0, NULL);
+    new_plan = SPI_prepare ("SELECT 1 FROM X", 0, NULL);
     ret = SPI_execute_plan (new_plan, NULL, 0,false, 0);
     if (ret != SPI_OK_SELECT)
     {
@@ -142,7 +142,7 @@ Datum
 pg_spi_select_from_x (PG_FUNCTION_ARGS)
 {
   int ret;
-  char *query = "SELECT 1 FROM joseph_test.X";
+  char *query = "SELECT 1 FROM X";
   uint64 proc;
   ret = SPI_connect ();
 
@@ -172,7 +172,7 @@ pg_spi_insert_int (PG_FUNCTION_ARGS)
   int nargs;
   Oid argtypes[1];
   Datum values[1];
-  char *query = "INSERT INTO joseph_test.X (a) VALUES ($1)";
+  char *query = "INSERT INTO X (a) VALUES ($1)";
 
   ret = SPI_connect ();
   if (ret != SPI_OK_CONNECT)
@@ -204,7 +204,7 @@ pg_spi_prepare_insert (PG_FUNCTION_ARGS)
   int nargs;
   Oid argtypes[1];
   Datum values[1];
-  char *query = "INSERT INTO joseph_test.X (a) VALUES ($1)";
+  const char *query = "INSERT INTO X (a) VALUES ($1)";
   SPIPlanPtr new_plan;
   ret = SPI_connect ();
   if (ret != SPI_OK_CONNECT)
@@ -252,7 +252,7 @@ pg_spi_prepare_insert_bytea(PG_FUNCTION_ARGS)
   Datum values[1];
   Oid argtypes2[1];
   Datum val[1];
-  char *query = "INSERT INTO joseph_test.X (a) VALUES ($1)";
+  char *query = "INSERT INTO X (a) VALUES ($1)";
   SPIPlanPtr new_plan;
   ret = SPI_connect();
   if (ret != SPI_OK_CONNECT)
@@ -296,7 +296,7 @@ pg_spi_prepare_insert_without_saveplan (PG_FUNCTION_ARGS)
   int nargs;
   Oid argtypes[1];
   Datum values[1];
-  char *query = "INSERT INTO joseph_test.X (a) VALUES ($1)";
+  const char *query = "INSERT INTO X (a) VALUES ($1)";
   SPIPlanPtr new_plan;
   ret = SPI_connect ();
   if (ret != SPI_OK_CONNECT)
@@ -333,7 +333,7 @@ pg_spi_select_pair_from_y(PG_FUNCTION_ARGS)
   int ret;
   valuest result;
   bool isnull;
-  char *query = "SELECT 1,1 FROM joseph_test.Y";
+  char *query = "SELECT 1,1 FROM Y";
   result.col1 = 0;
   result.col2 = 0;
 
@@ -368,7 +368,7 @@ pg_spi_select_with_cond(PG_FUNCTION_ARGS)
     Oid argtypes[1];
     Datum values[1];
     uint64 proc;
-    query = "SELECT col1 FROM joseph_test.Y WHERE col2 = $1";
+    query = "SELECT col1 FROM Y WHERE col2 = $1";
 
     ret = SPI_connect();
     if (ret != SPI_OK_CONNECT) {
@@ -401,7 +401,7 @@ Datum pg_spi_prepare_select_with_cond(PG_FUNCTION_ARGS) {
   uint64 proc;
   int nargs;
   Oid argtypes[1];
-  char *query = "SELECT col1 FROM joseph_test.Y WHERE col1 = $1";
+  char *query = "SELECT col1 FROM Y WHERE col1 = $1";
   int result = 0;
 
   ret = SPI_connect();
@@ -461,7 +461,7 @@ pg_spi_prepare_select_with_cond_without_saveplan 
(PG_FUNCTION_ARGS)
   uint64 proc;
   int nargs;
   Oid argtypes[1];
-  char *query = "SELECT col1 FROM joseph_test.Y WHERE col2 = $1";
+  char *query = "SELECT col1 FROM Y WHERE col2 = $1";
   int result = 0;
 
   ret = SPI_connect ();
@@ -519,7 +519,7 @@ pg_spi_update_y (PG_FUNCTION_ARGS)
   int nargs;
   Oid argtypes[1];
   Datum values[1];
-  char *query = "UPDATE joseph_test.Y SET col1 = 4 WHERE (col2 = $1)";
+  const char *query = "UPDATE Y SET col1 = 4 WHERE (col2 = $1)";
 
   ret = SPI_connect ();
   if (ret != SPI_OK_CONNECT)
@@ -552,7 +552,7 @@ pg_spi_prepare_update (PG_FUNCTION_ARGS)
   int nargs;
   Oid argtypes[1];
   Datum values[1];
-  char *query = "UPDATE joseph_test.Y SET col1 = 4 WHERE (col2 = $1)";
+  const char *query = "UPDATE Y SET col1 = 4 WHERE (col2 = $1)";
 
   ret = SPI_connect ();
   if (ret != SPI_OK_CONNECT)
diff --git a/src/exchangedb/spi/own_test.sql b/src/exchangedb/spi/own_test.sql
index 9fe42c0a..12729d06 100644
--- a/src/exchangedb/spi/own_test.sql
+++ b/src/exchangedb/spi/own_test.sql
@@ -1,42 +1,20 @@
-
-DROP TABLE joseph_test.X;
-CREATE TABLE joseph_test.X (
+DROP TABLE IF EXISTS X;
+CREATE TABLE X (
   a integer
 );
 
-INSERT INTO joseph_test.X (a) VALUES (1), (2), (3), (4), (5), (6), (7);
-
-DROP TABLE joseph_test.Y;
-CREATE TABLE joseph_test.Y (col1 INT, col2 INT);
-INSERT INTO joseph_test.Y (col1,col2) VALUES (1,2), (2,0), (0,4), (4,0), 
(0,6), (6,7), (7,8);
-
-DROP TABLE joseph_test.Z;
-CREATE TABLE joseph_test.Z(col1 BYTEA);
-DROP TABLE deposits;
-/*CREATE TABLE deposits(
-       deposit_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY
-      ,shard INT8 NOT NULL
-      ,coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32)
-      ,known_coin_id INT8 NOT NULL
-      ,amount_with_fee_val INT8 NOT NULL
-      ,amount_with_fee_frac INT4 NOT NULL
-      ,wallet_timestamp INT8 NOT NULL
-      ,exchange_timestamp INT8 NOT NULL
-      ,refund_deadline INT8 NOT NULL
-      ,wire_deadline INT8 NOT NULL
-      ,merchant_pub BYTEA NOT NULL CHECK (LENGTH(merchant_pub)=32)
-      ,h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)
-      ,coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)
-      ,wire_salt BYTEA NOT NULL CHECK (LENGTH(wire_salt)=16)
-      ,wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)
-      ,done BOOLEAN NOT NULL DEFAULT FALSE
-      ,policy_blocked BOOLEAN NOT NULL DEFAULT FALSE
-      ,policy_details_serial_id INT8);
-*/
---INSERT INTO deposits VALUES ();
+INSERT INTO X (a)
+  VALUES (1), (2), (3), (4), (5), (6), (7);
 
+DROP TABLE IF EXISTS Y;
+CREATE TABLE Y (col1 INT, col2 INT);
+INSERT INTO Y (col1,col2)
+  VALUES (1,2), (2,0), (0,4), (4,0), (0,6), (6,7), (7,8);
 
+DROP TABLE IF EXISTS Z;
+CREATE TABLE Z (col1 BYTEA);
 
+DROP TABLE IF EXISTS deposits;
 CREATE TABLE deposits(
        deposit_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY
       ,shard INT8 NOT NULL
@@ -58,79 +36,81 @@ CREATE TABLE deposits(
       ,policy_details_serial_id INT8);
 
 
-CREATE OR REPLACE FUNCTION pg_spi_insert_int()
+DROP FUNCTION IF EXISTS pg_spi_insert_int;
+CREATE FUNCTION pg_spi_insert_int()
   RETURNS VOID
-  LANGUAGE c COST 100
+  LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_insert_int';
-DROP FUNCTION pg_spi_select_from_x();
-CREATE OR REPLACE FUNCTION pg_spi_select_from_x()
+
+DROP FUNCTION IF EXISTS pg_spi_select_from_x;
+CREATE FUNCTION pg_spi_select_from_x()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_select_from_x';
 
-/*DROP FUNCTION pg_spi_select_pair_from_y();
-CREATE OR REPLACE FUNCTION pg_spi_select_pair_from_y()
+/*
+CREATE FUNCTION pg_spi_select_pair_from_y()
   RETURNS valuest
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_select_pair_from_y';
 */
-/*CREATE OR REPLACE FUNCTION pg_spi_select_with_cond()
+/*CREATE FUNCTION pg_spi_select_with_cond()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_select_with_cond';
 */
-DROP FUNCTION pg_spi_update_y();
-CREATE OR REPLACE FUNCTION pg_spi_update_y()
+
+DROP FUNCTION IF EXISTS pg_spi_update_y;
+CREATE FUNCTION pg_spi_update_y()
   RETURNS VOID
-  LANGUAGE c COST 100
+  LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_update_y';
-DROP FUNCTION pg_spi_prepare_example();
 
-CREATE OR REPLACE FUNCTION pg_spi_prepare_example()
+DROP FUNCTION IF EXISTS pg_spi_prepare_example;
+CREATE FUNCTION pg_spi_prepare_example()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_example';
 
-DROP FUNCTION pg_spi_prepare_example_without_saveplan();
-CREATE OR REPLACE FUNCTION pg_spi_prepare_example_without_saveplan()
+DROP FUNCTION IF EXISTS pg_spi_prepare_example_without_saveplan;
+CREATE FUNCTION pg_spi_prepare_example_without_saveplan()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_example_without_saveplan';
 
-CREATE OR REPLACE FUNCTION pg_spi_prepare_insert()
+DROP FUNCTION IF EXISTS pg_spi_prepare_insert;
+CREATE FUNCTION pg_spi_prepare_insert()
   RETURNS VOID
-  LANGUAGE c COST 100
+  LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_insert';
 
-CREATE OR REPLACE FUNCTION pg_spi_prepare_insert_without_saveplan()
+DROP FUNCTION IF EXISTS pg_spi_prepare_insert_without_saveplan;
+CREATE FUNCTION pg_spi_prepare_insert_without_saveplan()
   RETURNS VOID
-  LANGUAGE c COST 100
+  LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_insert_without_saveplan';
 
-/*DROP FUNCTION pg_spi_prepare_select_with_cond();
-CREATE OR REPLACE FUNCTION pg_spi_prepare_select_with_cond()
+/*
+CREATE FUNCTION pg_spi_prepare_select_with_cond()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_select_with_cond';
 */
-DROP FUNCTION pg_spi_prepare_select_with_cond_without_saveplan();
-CREATE OR REPLACE FUNCTION pg_spi_prepare_select_with_cond_without_saveplan()
+
+DROP FUNCTION IF EXISTS pg_spi_prepare_select_with_cond_without_saveplan;
+CREATE FUNCTION pg_spi_prepare_select_with_cond_without_saveplan()
   RETURNS INT8
   LANGUAGE c COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_select_with_cond_without_saveplan';
 
-DROP FUNCTION pg_spi_prepare_update();
-CREATE OR REPLACE FUNCTION pg_spi_prepare_update()
+DROP FUNCTION IF EXISTS pg_spi_prepare_update;
+CREATE FUNCTION pg_spi_prepare_update()
   RETURNS VOID
-  LANGUAGE c COST 100
+  LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_prepare_update';
 
-DROP FUNCTION pg_spi_get_dep_ref_fees(
-  IN in_timestamp INT8
- ,IN merchant_pub BYTEA
- ,IN wire_target_h_payto BYTEA
- ,IN wtid BYTEA);
-CREATE OR REPLACE FUNCTION pg_spi_get_dep_ref_fees(
+DROP FUNCTION IF EXISTS pg_spi_get_dep_ref_fees;
+CREATE FUNCTION pg_spi_get_dep_ref_fees(
   IN in_timestamp INT8
  ,IN merchant_pub BYTEA
  ,IN wire_target_h_payto BYTEA
@@ -140,7 +120,8 @@ CREATE OR REPLACE FUNCTION pg_spi_get_dep_ref_fees(
   LANGUAGE c VOLATILE COST 100
 AS '$libdir/own_test', 'pg_spi_get_dep_ref_fees';
 
-CREATE OR REPLACE FUNCTION update_pg_spi_get_dep_ref_fees(
+DROP FUNCTION IF EXISTS update_pg_spi_get_dep_ref_fees;
+CREATE FUNCTION update_pg_spi_get_dep_ref_fees(
  IN in_refund_deadline INT8,
  IN in_merchant_pub BYTEA,
  IN in_wire_target_h_payto BYTEA
@@ -165,43 +146,47 @@ RETURN QUERY
   amount_with_fee_frac;
 END $$;
 
-CREATE OR REPLACE FUNCTION stored_procedure_update(
+DROP FUNCTION IF EXISTS stored_procedure_update;
+CREATE FUNCTION stored_procedure_update(
 IN in_number INT8
 )
 RETURNS VOID
 LANGUAGE plpgsql
 AS $$
 BEGIN
-  UPDATE joseph_test.Y
+  UPDATE Y
   SET col1 = 4
   WHERE col2 = in_number;
 END $$;
 
-CREATE OR REPLACE FUNCTION stored_procedure_select(OUT out_value INT8)
+DROP FUNCTION IF EXISTS stored_procedure_select;
+CREATE FUNCTION stored_procedure_select(OUT out_value INT8)
 RETURNS INT8
 LANGUAGE plpgsql
 AS $$
 BEGIN
   SELECT 1
     INTO out_value
-  FROM joseph_test.X;
+  FROM X;
   RETURN;
 END $$;
 
 
-CREATE OR REPLACE FUNCTION stored_procedure_insert(
+DROP FUNCTION IF EXISTS stored_procedure_insert;
+CREATE FUNCTION stored_procedure_insert(
 IN in_number INT8,
 OUT out_number INT8)
 RETURNS INT8
 LANGUAGE plpgsql
 AS $$
 BEGIN
-  INSERT INTO joseph_test.X (a)
+  INSERT INTO X (a)
   VALUES (in_number)
   RETURNING a INTO out_number;
 END $$;
 
-CREATE OR REPLACE FUNCTION stored_procedure_select_with_cond(
+DROP FUNCTION IF EXISTS stored_procedure_select_with_cond;
+CREATE FUNCTION stored_procedure_select_with_cond(
 IN in_number INT8,
 OUT out_number INT8
 )
@@ -210,7 +195,7 @@ LANGUAGE plpgsql
 AS $$
 BEGIN
  SELECT col1 INTO out_number
- FROM joseph_test.Y
+ FROM Y
  WHERE col2 = in_number;
  RETURN;
 END $$;

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]