vrpRouting  0.3
postgres_connection.c File Reference
#include "c_common/postgres_connection.h"
#include <string.h>
#include "utils/builtins.h"
#include "catalog/pg_type.h"
#include "c_common/debug_macro.h"
Include dependency graph for postgres_connection.c:

Go to the source code of this file.

Functions

char * pgr_cstring2char (const char *inStr)
 
void pgr_send_error (int errcode)
 
void pgr_SPI_connect (void)
 
Portal pgr_SPI_cursor_open (SPIPlanPtr SPIplan)
 
void pgr_SPI_finish (void)
 
SPIPlanPtr pgr_SPI_prepare (char *sql)
 

Function Documentation

◆ pgr_cstring2char()

char* pgr_cstring2char ( const char *  inStr)

Definition at line 53 of file postgres_connection.c.

53  {
54  if (!inStr) return NULL;
55 
56  char *outStr;
57  outStr = palloc(strlen(inStr));
58  if (!outStr) return NULL;
59 
60  memcpy(outStr, inStr, strlen(inStr));
61 
62  outStr[strlen(inStr)] = '\0';
63 
64  return outStr;
65 }

◆ pgr_send_error()

void pgr_send_error ( int  errcode)

Definition at line 36 of file postgres_connection.c.

36  {
37  switch (errcode) {
38  case 1:
39  elog(ERROR, "Unexpected point(s) with same pid but different"
40  " edge/fraction/side combination found.");
41  break;
42  case 2:
43  elog(ERROR, "Internal: Unexpected mismatch "
44  "count and sequence number on results");
45  break;
46  default:
47  elog(ERROR, "Unknown exception");
48  }
49 }

◆ pgr_SPI_connect()

void pgr_SPI_connect ( void  )

Definition at line 79 of file postgres_connection.c.

79  {
80  int SPIcode;
81  SPIcode = SPI_connect();
82  if (SPIcode != SPI_OK_CONNECT) {
83  elog(ERROR, "Couldn't open a connection to SPI");
84  }
85 }

Referenced by process().

◆ pgr_SPI_cursor_open()

Portal pgr_SPI_cursor_open ( SPIPlanPtr  SPIplan)

Definition at line 98 of file postgres_connection.c.

98  {
99  Portal SPIportal;
100  SPIportal = SPI_cursor_open(NULL, SPIplan, NULL, NULL, true);
101  if (SPIportal == NULL) {
102  elog(ERROR, "SPI_cursor_open returns NULL");
103  }
104  return SPIportal;
105 }

Referenced by db_get_breaks(), db_get_jobs(), db_get_matrix(), db_get_shipments(), db_get_time_windows(), db_get_vehicles(), get_matrixRows_general(), get_timeMultipliersGeneral(), and pgr_get_pd_orders_general().

◆ pgr_SPI_finish()

void pgr_SPI_finish ( void  )

Definition at line 71 of file postgres_connection.c.

71  {
72  int code = SPI_finish();
73  if (code != SPI_OK_FINISH) { // SPI_ERROR_UNCONNECTED
74  elog(ERROR, "There was no connection to SPI");
75  }
76 }

Referenced by process().

◆ pgr_SPI_prepare()

SPIPlanPtr pgr_SPI_prepare ( char *  sql)

Definition at line 88 of file postgres_connection.c.

88  {
89  SPIPlanPtr SPIplan;
90  SPIplan = SPI_prepare(sql, 0, NULL);
91  if (SPIplan == NULL) {
92  elog(ERROR, "Couldn't create query plan via SPI: %s", sql);
93  }
94  return SPIplan;
95 }

Referenced by db_get_breaks(), db_get_jobs(), db_get_matrix(), db_get_shipments(), db_get_time_windows(), db_get_vehicles(), get_matrixRows_general(), get_timeMultipliersGeneral(), and pgr_get_pd_orders_general().