qoobaa-pg 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +10 -0
- data/.gitignore +5 -0
- data/BSD +23 -0
- data/ChangeLog +266 -0
- data/Contributors +29 -0
- data/GPL +340 -0
- data/LICENSE +58 -0
- data/README +125 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/doc/postgres.html +278 -0
- data/doc/postgres.jp.html +256 -0
- data/ext/compat.c +541 -0
- data/ext/compat.h +180 -0
- data/ext/extconf.rb +87 -0
- data/ext/mingw/Rakefile +24 -0
- data/ext/mingw/build.rake +40 -0
- data/ext/mkmf.log +316 -0
- data/ext/mkrf_config.rb +138 -0
- data/ext/pg.c +3569 -0
- data/ext/pg.h +60 -0
- data/ext/vc/pg.sln +26 -0
- data/ext/vc/pg_18/pg.vcproj +216 -0
- data/ext/vc/pg_19/pg_19.vcproj +209 -0
- data/pg.gemspec +73 -0
- data/sample/losample.rb +47 -0
- data/sample/psql.rb +1181 -0
- data/sample/psqlHelp.rb +158 -0
- data/sample/test1.rb +63 -0
- data/sample/test2.rb +44 -0
- data/sample/test4.rb +71 -0
- data/spec/data/expected_trace.out +26 -0
- data/spec/data/random_binary_data +0 -0
- data/spec/pgconn_spec.rb +130 -0
- data/spec/pgresult_spec.rb +112 -0
- metadata +90 -0
data/ext/compat.h
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
|
2
|
+
#ifndef __compat_h
|
3
|
+
#define __compat_h
|
4
|
+
|
5
|
+
#include <stdlib.h>
|
6
|
+
|
7
|
+
#include "libpq-fe.h"
|
8
|
+
#include "libpq/libpq-fs.h" /* large-object interface */
|
9
|
+
|
10
|
+
#include "ruby.h"
|
11
|
+
|
12
|
+
/* pg_config.h does not exist in older versions of
|
13
|
+
* PostgreSQL, so I can't effectively use PG_VERSION_NUM
|
14
|
+
* Instead, I create some #defines to help organization.
|
15
|
+
*/
|
16
|
+
#ifndef HAVE_PQCONNECTIONUSEDPASSWORD
|
17
|
+
#define PG_BEFORE_080300
|
18
|
+
#endif
|
19
|
+
|
20
|
+
#ifndef HAVE_PQISTHREADSAFE
|
21
|
+
#define PG_BEFORE_080200
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#ifndef HAVE_LO_CREATE
|
25
|
+
#define PG_BEFORE_080100
|
26
|
+
#endif
|
27
|
+
|
28
|
+
#ifndef HAVE_PQPREPARE
|
29
|
+
#define PG_BEFORE_080000
|
30
|
+
#endif
|
31
|
+
|
32
|
+
#ifndef HAVE_PQEXECPARAMS
|
33
|
+
#define PG_BEFORE_070400
|
34
|
+
#endif
|
35
|
+
|
36
|
+
#ifndef HAVE_PQESCAPESTRINGCONN
|
37
|
+
#define PG_BEFORE_070300
|
38
|
+
#error PostgreSQL client version too old, requires 7.3 or later.
|
39
|
+
#endif
|
40
|
+
|
41
|
+
/* This is necessary because NAMEDATALEN is defined in
|
42
|
+
* pg_config_manual.h in 8.3, and that include file doesn't
|
43
|
+
* exist before 7.4
|
44
|
+
*/
|
45
|
+
#ifndef PG_BEFORE_070400
|
46
|
+
#include "pg_config_manual.h"
|
47
|
+
#endif
|
48
|
+
|
49
|
+
#ifndef PG_DIAG_INTERNAL_POSITION
|
50
|
+
#define PG_DIAG_INTERNAL_POSITION 'p'
|
51
|
+
#endif /* PG_DIAG_INTERNAL_POSITION */
|
52
|
+
|
53
|
+
#ifndef PG_DIAG_INTERNAL_QUERY
|
54
|
+
#define PG_DIAG_INTERNAL_QUERY 'q'
|
55
|
+
#endif /* PG_DIAG_INTERNAL_QUERY */
|
56
|
+
|
57
|
+
#ifdef PG_BEFORE_080300
|
58
|
+
|
59
|
+
#ifndef HAVE_PG_ENCODING_TO_CHAR
|
60
|
+
#define pg_encoding_to_char(x) "SQL_ASCII"
|
61
|
+
#else
|
62
|
+
/* Some versions ofPostgreSQL prior to 8.3 define pg_encoding_to_char
|
63
|
+
* but do not declare it in a header file, so this declaration will
|
64
|
+
* eliminate an unecessary warning
|
65
|
+
*/
|
66
|
+
extern char* pg_encoding_to_char(int);
|
67
|
+
#endif /* HAVE_PG_ENCODING_TO_CHAR */
|
68
|
+
|
69
|
+
int PQconnectionNeedsPassword(PGconn *conn);
|
70
|
+
int PQconnectionUsedPassword(PGconn *conn);
|
71
|
+
int lo_truncate(PGconn *conn, int fd, size_t len);
|
72
|
+
|
73
|
+
#endif /* PG_BEFORE_080300 */
|
74
|
+
|
75
|
+
#ifdef PG_BEFORE_080200
|
76
|
+
int PQisthreadsafe(void);
|
77
|
+
int PQnparams(const PGresult *res);
|
78
|
+
Oid PQparamtype(const PGresult *res, int param_number);
|
79
|
+
PGresult * PQdescribePrepared(PGconn *conn, const char *stmtName);
|
80
|
+
PGresult * PQdescribePortal(PGconn *conn, const char *portalName);
|
81
|
+
int PQsendDescribePrepared(PGconn *conn, const char *stmtName);
|
82
|
+
int PQsendDescribePortal(PGconn *conn, const char *portalName);
|
83
|
+
char *PQencryptPassword(const char *passwd, const char *user);
|
84
|
+
#endif /* PG_BEFORE_080200 */
|
85
|
+
|
86
|
+
#ifdef PG_BEFORE_080100
|
87
|
+
Oid lo_create(PGconn *conn, Oid lobjId);
|
88
|
+
#endif /* PG_BEFORE_080100 */
|
89
|
+
|
90
|
+
#ifdef PG_BEFORE_080000
|
91
|
+
PGresult *PQprepare(PGconn *conn, const char *stmtName, const char *query,
|
92
|
+
int nParams, const Oid *paramTypes);
|
93
|
+
int PQsendPrepare(PGconn *conn, const char *stmtName, const char *query,
|
94
|
+
int nParams, const Oid *paramTypes);
|
95
|
+
int PQserverVersion(const PGconn* conn);
|
96
|
+
#endif /* PG_BEFORE_080000 */
|
97
|
+
|
98
|
+
#ifdef PG_BEFORE_070400
|
99
|
+
|
100
|
+
#define PG_DIAG_SEVERITY 'S'
|
101
|
+
#define PG_DIAG_SQLSTATE 'C'
|
102
|
+
#define PG_DIAG_MESSAGE_PRIMARY 'M'
|
103
|
+
#define PG_DIAG_MESSAGE_DETAIL 'D'
|
104
|
+
#define PG_DIAG_MESSAGE_HINT 'H'
|
105
|
+
#define PG_DIAG_STATEMENT_POSITION 'P'
|
106
|
+
#define PG_DIAG_CONTEXT 'W'
|
107
|
+
#define PG_DIAG_SOURCE_FILE 'F'
|
108
|
+
#define PG_DIAG_SOURCE_LINE 'L'
|
109
|
+
#define PG_DIAG_SOURCE_FUNCTION 'R'
|
110
|
+
|
111
|
+
#define PQfreemem(ptr) free(ptr)
|
112
|
+
#define PGNOTIFY_EXTRA(notify) ""
|
113
|
+
|
114
|
+
/* CONNECTION_SSL_STARTUP was added to an enum type
|
115
|
+
* after 7.3. For 7.3 in order to compile, we just need
|
116
|
+
* it to evaluate to something that is not present in that
|
117
|
+
* enum.
|
118
|
+
*/
|
119
|
+
#define CONNECTION_SSL_STARTUP 1000000
|
120
|
+
|
121
|
+
typedef void (*PQnoticeReceiver) (void *arg, const PGresult *res);
|
122
|
+
|
123
|
+
typedef enum
|
124
|
+
{
|
125
|
+
PQERRORS_TERSE, /* single-line error messages */
|
126
|
+
PQERRORS_DEFAULT, /* recommended style */
|
127
|
+
PQERRORS_VERBOSE /* all the facts, ma'am */
|
128
|
+
} PGVerbosity;
|
129
|
+
|
130
|
+
typedef enum
|
131
|
+
{
|
132
|
+
PQTRANS_IDLE, /* connection idle */
|
133
|
+
PQTRANS_ACTIVE, /* command in progress */
|
134
|
+
PQTRANS_INTRANS, /* idle, within transaction block */
|
135
|
+
PQTRANS_INERROR, /* idle, within failed transaction */
|
136
|
+
PQTRANS_UNKNOWN /* cannot determine status */
|
137
|
+
} PGTransactionStatusType;
|
138
|
+
|
139
|
+
PGresult *PQexecParams(PGconn *conn, const char *command, int nParams,
|
140
|
+
const Oid *paramTypes, const char * const * paramValues, const int *paramLengths,
|
141
|
+
const int *paramFormats, int resultFormat);
|
142
|
+
PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
|
143
|
+
char *PQparameterStatus(const PGconn *conn, const char *paramName);
|
144
|
+
int PQprotocolVersion(const PGconn *conn);
|
145
|
+
PGresult *PQexecPrepared(PGconn *conn, const char *stmtName, int nParams,
|
146
|
+
const char * const *ParamValues, const int *paramLengths, const int *paramFormats,
|
147
|
+
int resultFormat);
|
148
|
+
int PQsendQueryParams(PGconn *conn, const char *command, int nParams,
|
149
|
+
const Oid *paramTypes, const char * const * paramValues, const int *paramLengths,
|
150
|
+
const int *paramFormats, int resultFormat);
|
151
|
+
int PQsendQueryPrepared(PGconn *conn, const char *stmtName, int nParams,
|
152
|
+
const char * const *ParamValues, const int *paramLengths, const int *paramFormats,
|
153
|
+
int resultFormat);
|
154
|
+
int PQputCopyData(PGconn *conn, const char *buffer, int nbytes);
|
155
|
+
int PQputCopyEnd(PGconn *conn, const char *errormsg);
|
156
|
+
int PQgetCopyData(PGconn *conn, char **buffer, int async);
|
157
|
+
PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);
|
158
|
+
Oid PQftable(const PGresult *res, int column_number);
|
159
|
+
int PQftablecol(const PGresult *res, int column_number);
|
160
|
+
int PQfformat(const PGresult *res, int column_number);
|
161
|
+
char *PQresultErrorField(const PGresult *res, int fieldcode);
|
162
|
+
PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn, PQnoticeReceiver proc, void *arg);
|
163
|
+
|
164
|
+
#else
|
165
|
+
#define PGNOTIFY_EXTRA(notify) ((notify)->extra)
|
166
|
+
#endif /* PG_BEFORE_070400 */
|
167
|
+
|
168
|
+
#ifdef PG_BEFORE_070300
|
169
|
+
#error unsupported postgresql version, requires 7.3 or later.
|
170
|
+
int PQsetClientEncoding(PGconn *conn, const char *encoding)
|
171
|
+
size_t PQescapeString(char *to, const char *from, size_t length);
|
172
|
+
unsigned char * PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t *bytealen);
|
173
|
+
unsigned char * PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen);
|
174
|
+
size_t PQescapeStringConn(PGconn *conn, char *to, const char *from,
|
175
|
+
size_t length, int *error);
|
176
|
+
unsigned char *PQescapeByteaConn(PGconn *conn, const unsigned char *from,
|
177
|
+
size_t from_length, size_t *to_length);
|
178
|
+
#endif /* PG_BEFORE_070300 */
|
179
|
+
|
180
|
+
#endif /* __compat_h */
|
data/ext/extconf.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
|
3
|
+
begin
|
4
|
+
IO.popen("pg_config --version").readline.chomp
|
5
|
+
rescue
|
6
|
+
$stderr.write("ERROR: can't find pg_config.\n")
|
7
|
+
$stderr.write("HINT: Make sure pg_config is in your PATH\n")
|
8
|
+
exit 1
|
9
|
+
end
|
10
|
+
|
11
|
+
# OS X compatibility
|
12
|
+
if(RUBY_PLATFORM =~ /darwin/) then
|
13
|
+
# test if postgresql is probably universal
|
14
|
+
bindir = (IO.popen("pg_config --bindir").readline.chomp rescue nil)
|
15
|
+
filetype = (IO.popen("file #{bindir}/pg_config").
|
16
|
+
readline.chomp rescue nil)
|
17
|
+
# if it's not universal, ARCHFLAGS should be set
|
18
|
+
if((filetype !~ /universal binary/) && ENV['ARCHFLAGS'].nil?) then
|
19
|
+
arch_tmp = (IO.popen("uname -p").readline.chomp rescue nil)
|
20
|
+
if(arch_tmp == 'powerpc')
|
21
|
+
arch = 'ppc'
|
22
|
+
else
|
23
|
+
arch = 'i386'
|
24
|
+
end
|
25
|
+
$stderr.write %{
|
26
|
+
=========== WARNING ===========
|
27
|
+
|
28
|
+
You are building this extension on OS X without setting the
|
29
|
+
ARCHFLAGS environment variable, and PostgreSQL does not appear
|
30
|
+
to have been built as a universal binary. If you are seeing this
|
31
|
+
message, that means that the build will probably fail.
|
32
|
+
|
33
|
+
Try setting the environment variable ARCHFLAGS
|
34
|
+
to '-arch #{arch}' before building.
|
35
|
+
|
36
|
+
For example:
|
37
|
+
(in bash) $ export ARCHFLAGS='-arch #{arch}'
|
38
|
+
(in tcsh) % setenv ARCHFLAGS '-arch #{arch}'
|
39
|
+
|
40
|
+
Then try building again.
|
41
|
+
|
42
|
+
===================================
|
43
|
+
}
|
44
|
+
# We don't exit here. Who knows? It might build.
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
if RUBY_VERSION < '1.8'
|
49
|
+
puts 'This library is for ruby-1.8 or higher.'
|
50
|
+
exit 1
|
51
|
+
end
|
52
|
+
|
53
|
+
def config_value(type)
|
54
|
+
ENV["POSTGRES_#{type.upcase}"] || pg_config(type)
|
55
|
+
end
|
56
|
+
|
57
|
+
def pg_config(type)
|
58
|
+
IO.popen("pg_config --#{type}dir").readline.chomp rescue nil
|
59
|
+
end
|
60
|
+
|
61
|
+
def have_build_env
|
62
|
+
(have_library('pq') || have_library('libpq') || have_library('ms/libpq')) &&
|
63
|
+
have_header('libpq-fe.h') && have_header('libpq/libpq-fs.h')
|
64
|
+
end
|
65
|
+
|
66
|
+
dir_config('pg', config_value('include'), config_value('lib'))
|
67
|
+
|
68
|
+
desired_functions = %w(
|
69
|
+
PQconnectionUsedPassword
|
70
|
+
PQisthreadsafe
|
71
|
+
PQprepare
|
72
|
+
PQexecParams
|
73
|
+
PQescapeString
|
74
|
+
PQescapeStringConn
|
75
|
+
lo_create
|
76
|
+
pg_encoding_to_char
|
77
|
+
PQsetClientEncoding
|
78
|
+
)
|
79
|
+
|
80
|
+
if have_build_env
|
81
|
+
desired_functions.each(&method(:have_func))
|
82
|
+
$OBJS = ['pg.o','compat.o']
|
83
|
+
create_makefile("pg")
|
84
|
+
else
|
85
|
+
puts 'Could not find PostgreSQL build environment (libraries & headers): Makefile not created'
|
86
|
+
end
|
87
|
+
|
data/ext/mingw/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# We can't use Ruby's standard build procedures
|
2
|
+
# on Windows because the Ruby executable is
|
3
|
+
# built with VC++ while here we want to build
|
4
|
+
# with MingW. So just roll our own...
|
5
|
+
|
6
|
+
require 'fileutils'
|
7
|
+
require 'rbconfig'
|
8
|
+
|
9
|
+
EXTENSION_NAME = "pg.#{Config::CONFIG["DLEXT"]}"
|
10
|
+
|
11
|
+
# This is called when the Windows GEM is installed!
|
12
|
+
task :install do
|
13
|
+
# Gems will pass these two environment variables:
|
14
|
+
# RUBYARCHDIR=#{dest_path}
|
15
|
+
# RUBYLIBDIR=#{dest_path}
|
16
|
+
|
17
|
+
dest_path = ENV['RUBYLIBDIR']
|
18
|
+
mkdir_p(dest_path)
|
19
|
+
|
20
|
+
# Copy the extension
|
21
|
+
cp(EXTENSION_NAME, dest_path)
|
22
|
+
end
|
23
|
+
|
24
|
+
task :default => :install
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# We can't use Ruby's standard build procedures
|
2
|
+
# on Windows because the Ruby executable is
|
3
|
+
# built with VC++ while here we want to build
|
4
|
+
# with MingW. So just roll our own...
|
5
|
+
|
6
|
+
require 'rake/clean'
|
7
|
+
require 'rbconfig'
|
8
|
+
|
9
|
+
RUBY_INCLUDE_DIR = Config::CONFIG["archdir"]
|
10
|
+
RUBY_BIN_DIR = Config::CONFIG["bindir"]
|
11
|
+
RUBY_LIB_DIR = Config::CONFIG["libdir"]
|
12
|
+
RUBY_SHARED_LIB = Config::CONFIG["LIBRUBY"]
|
13
|
+
RUBY_SHARED_DLL = RUBY_SHARED_LIB.gsub(/lib$/, 'dll')
|
14
|
+
|
15
|
+
EXTENSION_NAME = "pg.#{Config::CONFIG["DLEXT"]}"
|
16
|
+
|
17
|
+
CLEAN.include('*.o')
|
18
|
+
CLOBBER.include(EXTENSION_NAME)
|
19
|
+
|
20
|
+
task :default => "pg"
|
21
|
+
|
22
|
+
DEFINES = "-DHAVE_LIBPQ_FE_H -DHAVE_LIBPQ_LIBPQ_FS_H -DHAVE_PQCONNECTIONUSEDPASSWORD -DHAVE_PQISTHREADSAFE -DHAVE_LO_CREATE -DHAVE_PQPREPARE -DHAVE_PQEXECPARAMS -DHAVE_PQESCAPESTRING -DHAVE_PQESCAPESTRINGCONN -DHAVE_PG_ENCODING_TO_CHAR -DHAVE_PQSETCLIENTENCODING"
|
23
|
+
LIBS = "-lpq -lm"
|
24
|
+
SRC = FileList['../*.c']
|
25
|
+
OBJ = SRC.collect do |file_name|
|
26
|
+
File.basename(file_name).ext('o')
|
27
|
+
end
|
28
|
+
|
29
|
+
SRC.each do |srcfile|
|
30
|
+
objfile = File.basename(srcfile).ext('o')
|
31
|
+
file objfile => srcfile do
|
32
|
+
command = "gcc -c -O2 -Wall #{DEFINES} -o #{objfile} -I/usr/local/include #{srcfile} -I#{RUBY_INCLUDE_DIR}"
|
33
|
+
sh "sh -c '#{command}'"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
file "pg" => OBJ do
|
38
|
+
command = "gcc -shared -o #{EXTENSION_NAME} #{OBJ} -L/usr/local/lib #{LIBS} #{RUBY_BIN_DIR}/#{RUBY_SHARED_DLL}"
|
39
|
+
sh "sh -c '#{command}'"
|
40
|
+
end
|
data/ext/mkmf.log
ADDED
@@ -0,0 +1,316 @@
|
|
1
|
+
have_library: checking for main() in -lpq... -------------------- yes
|
2
|
+
|
3
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
|
4
|
+
checked program was:
|
5
|
+
/* begin */
|
6
|
+
1: #include "ruby.h"
|
7
|
+
2:
|
8
|
+
3: int main() {return 0;}
|
9
|
+
/* end */
|
10
|
+
|
11
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
12
|
+
checked program was:
|
13
|
+
/* begin */
|
14
|
+
1: #include "ruby.h"
|
15
|
+
2:
|
16
|
+
3: /*top*/
|
17
|
+
4: int main() {return 0;}
|
18
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
|
19
|
+
/* end */
|
20
|
+
|
21
|
+
--------------------
|
22
|
+
|
23
|
+
have_header: checking for libpq-fe.h... -------------------- yes
|
24
|
+
|
25
|
+
"gcc -E -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -o conftest.i"
|
26
|
+
checked program was:
|
27
|
+
/* begin */
|
28
|
+
1: #include "ruby.h"
|
29
|
+
2:
|
30
|
+
3: #include <libpq-fe.h>
|
31
|
+
/* end */
|
32
|
+
|
33
|
+
--------------------
|
34
|
+
|
35
|
+
have_header: checking for libpq/libpq-fs.h... -------------------- yes
|
36
|
+
|
37
|
+
"gcc -E -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -o conftest.i"
|
38
|
+
checked program was:
|
39
|
+
/* begin */
|
40
|
+
1: #include "ruby.h"
|
41
|
+
2:
|
42
|
+
3: #include <libpq/libpq-fs.h>
|
43
|
+
/* end */
|
44
|
+
|
45
|
+
--------------------
|
46
|
+
|
47
|
+
have_func: checking for PQconnectionUsedPassword()... -------------------- yes
|
48
|
+
|
49
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
50
|
+
conftest.c: In function ‘t’:
|
51
|
+
conftest.c:5: error: ‘PQconnectionUsedPassword’ undeclared (first use in this function)
|
52
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
53
|
+
conftest.c:5: error: for each function it appears in.)
|
54
|
+
checked program was:
|
55
|
+
/* begin */
|
56
|
+
1: #include "ruby.h"
|
57
|
+
2:
|
58
|
+
3: /*top*/
|
59
|
+
4: int main() {return 0;}
|
60
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectionUsedPassword; return 0; }
|
61
|
+
/* end */
|
62
|
+
|
63
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
64
|
+
conftest.c: In function ‘t’:
|
65
|
+
conftest.c:5: warning: implicit declaration of function ‘PQconnectionUsedPassword’
|
66
|
+
checked program was:
|
67
|
+
/* begin */
|
68
|
+
1: #include "ruby.h"
|
69
|
+
2:
|
70
|
+
3: /*top*/
|
71
|
+
4: int main() {return 0;}
|
72
|
+
5: int t() { PQconnectionUsedPassword(); return 0; }
|
73
|
+
/* end */
|
74
|
+
|
75
|
+
--------------------
|
76
|
+
|
77
|
+
have_func: checking for PQisthreadsafe()... -------------------- yes
|
78
|
+
|
79
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
80
|
+
conftest.c: In function ‘t’:
|
81
|
+
conftest.c:5: error: ‘PQisthreadsafe’ undeclared (first use in this function)
|
82
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
83
|
+
conftest.c:5: error: for each function it appears in.)
|
84
|
+
checked program was:
|
85
|
+
/* begin */
|
86
|
+
1: #include "ruby.h"
|
87
|
+
2:
|
88
|
+
3: /*top*/
|
89
|
+
4: int main() {return 0;}
|
90
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQisthreadsafe; return 0; }
|
91
|
+
/* end */
|
92
|
+
|
93
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
94
|
+
conftest.c: In function ‘t’:
|
95
|
+
conftest.c:5: warning: implicit declaration of function ‘PQisthreadsafe’
|
96
|
+
checked program was:
|
97
|
+
/* begin */
|
98
|
+
1: #include "ruby.h"
|
99
|
+
2:
|
100
|
+
3: /*top*/
|
101
|
+
4: int main() {return 0;}
|
102
|
+
5: int t() { PQisthreadsafe(); return 0; }
|
103
|
+
/* end */
|
104
|
+
|
105
|
+
--------------------
|
106
|
+
|
107
|
+
have_func: checking for PQprepare()... -------------------- yes
|
108
|
+
|
109
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
110
|
+
conftest.c: In function ‘t’:
|
111
|
+
conftest.c:5: error: ‘PQprepare’ undeclared (first use in this function)
|
112
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
113
|
+
conftest.c:5: error: for each function it appears in.)
|
114
|
+
checked program was:
|
115
|
+
/* begin */
|
116
|
+
1: #include "ruby.h"
|
117
|
+
2:
|
118
|
+
3: /*top*/
|
119
|
+
4: int main() {return 0;}
|
120
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQprepare; return 0; }
|
121
|
+
/* end */
|
122
|
+
|
123
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
124
|
+
conftest.c: In function ‘t’:
|
125
|
+
conftest.c:5: warning: implicit declaration of function ‘PQprepare’
|
126
|
+
checked program was:
|
127
|
+
/* begin */
|
128
|
+
1: #include "ruby.h"
|
129
|
+
2:
|
130
|
+
3: /*top*/
|
131
|
+
4: int main() {return 0;}
|
132
|
+
5: int t() { PQprepare(); return 0; }
|
133
|
+
/* end */
|
134
|
+
|
135
|
+
--------------------
|
136
|
+
|
137
|
+
have_func: checking for PQexecParams()... -------------------- yes
|
138
|
+
|
139
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
140
|
+
conftest.c: In function ‘t’:
|
141
|
+
conftest.c:5: error: ‘PQexecParams’ undeclared (first use in this function)
|
142
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
143
|
+
conftest.c:5: error: for each function it appears in.)
|
144
|
+
checked program was:
|
145
|
+
/* begin */
|
146
|
+
1: #include "ruby.h"
|
147
|
+
2:
|
148
|
+
3: /*top*/
|
149
|
+
4: int main() {return 0;}
|
150
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQexecParams; return 0; }
|
151
|
+
/* end */
|
152
|
+
|
153
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
154
|
+
conftest.c: In function ‘t’:
|
155
|
+
conftest.c:5: warning: implicit declaration of function ‘PQexecParams’
|
156
|
+
checked program was:
|
157
|
+
/* begin */
|
158
|
+
1: #include "ruby.h"
|
159
|
+
2:
|
160
|
+
3: /*top*/
|
161
|
+
4: int main() {return 0;}
|
162
|
+
5: int t() { PQexecParams(); return 0; }
|
163
|
+
/* end */
|
164
|
+
|
165
|
+
--------------------
|
166
|
+
|
167
|
+
have_func: checking for PQescapeString()... -------------------- yes
|
168
|
+
|
169
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
170
|
+
conftest.c: In function ‘t’:
|
171
|
+
conftest.c:5: error: ‘PQescapeString’ undeclared (first use in this function)
|
172
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
173
|
+
conftest.c:5: error: for each function it appears in.)
|
174
|
+
checked program was:
|
175
|
+
/* begin */
|
176
|
+
1: #include "ruby.h"
|
177
|
+
2:
|
178
|
+
3: /*top*/
|
179
|
+
4: int main() {return 0;}
|
180
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQescapeString; return 0; }
|
181
|
+
/* end */
|
182
|
+
|
183
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
184
|
+
conftest.c: In function ‘t’:
|
185
|
+
conftest.c:5: warning: implicit declaration of function ‘PQescapeString’
|
186
|
+
checked program was:
|
187
|
+
/* begin */
|
188
|
+
1: #include "ruby.h"
|
189
|
+
2:
|
190
|
+
3: /*top*/
|
191
|
+
4: int main() {return 0;}
|
192
|
+
5: int t() { PQescapeString(); return 0; }
|
193
|
+
/* end */
|
194
|
+
|
195
|
+
--------------------
|
196
|
+
|
197
|
+
have_func: checking for PQescapeStringConn()... -------------------- yes
|
198
|
+
|
199
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
200
|
+
conftest.c: In function ‘t’:
|
201
|
+
conftest.c:5: error: ‘PQescapeStringConn’ undeclared (first use in this function)
|
202
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
203
|
+
conftest.c:5: error: for each function it appears in.)
|
204
|
+
checked program was:
|
205
|
+
/* begin */
|
206
|
+
1: #include "ruby.h"
|
207
|
+
2:
|
208
|
+
3: /*top*/
|
209
|
+
4: int main() {return 0;}
|
210
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQescapeStringConn; return 0; }
|
211
|
+
/* end */
|
212
|
+
|
213
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
214
|
+
conftest.c: In function ‘t’:
|
215
|
+
conftest.c:5: warning: implicit declaration of function ‘PQescapeStringConn’
|
216
|
+
checked program was:
|
217
|
+
/* begin */
|
218
|
+
1: #include "ruby.h"
|
219
|
+
2:
|
220
|
+
3: /*top*/
|
221
|
+
4: int main() {return 0;}
|
222
|
+
5: int t() { PQescapeStringConn(); return 0; }
|
223
|
+
/* end */
|
224
|
+
|
225
|
+
--------------------
|
226
|
+
|
227
|
+
have_func: checking for lo_create()... -------------------- yes
|
228
|
+
|
229
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
230
|
+
conftest.c: In function ‘t’:
|
231
|
+
conftest.c:5: error: ‘lo_create’ undeclared (first use in this function)
|
232
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
233
|
+
conftest.c:5: error: for each function it appears in.)
|
234
|
+
checked program was:
|
235
|
+
/* begin */
|
236
|
+
1: #include "ruby.h"
|
237
|
+
2:
|
238
|
+
3: /*top*/
|
239
|
+
4: int main() {return 0;}
|
240
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))lo_create; return 0; }
|
241
|
+
/* end */
|
242
|
+
|
243
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
244
|
+
conftest.c: In function ‘t’:
|
245
|
+
conftest.c:5: warning: implicit declaration of function ‘lo_create’
|
246
|
+
checked program was:
|
247
|
+
/* begin */
|
248
|
+
1: #include "ruby.h"
|
249
|
+
2:
|
250
|
+
3: /*top*/
|
251
|
+
4: int main() {return 0;}
|
252
|
+
5: int t() { lo_create(); return 0; }
|
253
|
+
/* end */
|
254
|
+
|
255
|
+
--------------------
|
256
|
+
|
257
|
+
have_func: checking for pg_encoding_to_char()... -------------------- yes
|
258
|
+
|
259
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
260
|
+
conftest.c: In function ‘t’:
|
261
|
+
conftest.c:5: error: ‘pg_encoding_to_char’ undeclared (first use in this function)
|
262
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
263
|
+
conftest.c:5: error: for each function it appears in.)
|
264
|
+
checked program was:
|
265
|
+
/* begin */
|
266
|
+
1: #include "ruby.h"
|
267
|
+
2:
|
268
|
+
3: /*top*/
|
269
|
+
4: int main() {return 0;}
|
270
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))pg_encoding_to_char; return 0; }
|
271
|
+
/* end */
|
272
|
+
|
273
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
274
|
+
conftest.c: In function ‘t’:
|
275
|
+
conftest.c:5: warning: implicit declaration of function ‘pg_encoding_to_char’
|
276
|
+
checked program was:
|
277
|
+
/* begin */
|
278
|
+
1: #include "ruby.h"
|
279
|
+
2:
|
280
|
+
3: /*top*/
|
281
|
+
4: int main() {return 0;}
|
282
|
+
5: int t() { pg_encoding_to_char(); return 0; }
|
283
|
+
/* end */
|
284
|
+
|
285
|
+
--------------------
|
286
|
+
|
287
|
+
have_func: checking for PQsetClientEncoding()... -------------------- yes
|
288
|
+
|
289
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
290
|
+
conftest.c: In function ‘t’:
|
291
|
+
conftest.c:5: error: ‘PQsetClientEncoding’ undeclared (first use in this function)
|
292
|
+
conftest.c:5: error: (Each undeclared identifier is reported only once
|
293
|
+
conftest.c:5: error: for each function it appears in.)
|
294
|
+
checked program was:
|
295
|
+
/* begin */
|
296
|
+
1: #include "ruby.h"
|
297
|
+
2:
|
298
|
+
3: /*top*/
|
299
|
+
4: int main() {return 0;}
|
300
|
+
5: int t() { void ((*volatile p)()); p = (void ((*)()))PQsetClientEncoding; return 0; }
|
301
|
+
/* end */
|
302
|
+
|
303
|
+
"gcc -o conftest -I/usr/local/include/ruby-1.9.1/x86_64-linux -I/usr/local/include/ruby-1.9.1/ruby/backward -I/usr/local/include/ruby-1.9.1 -I. -I/usr/include/postgresql -O2 -g -Wall -Wno-parentheses conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/lib -Wl,-R/usr/lib -L. -rdynamic -Wl,-export-dynamic -lpq -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -lruby-static -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
|
304
|
+
conftest.c: In function ‘t’:
|
305
|
+
conftest.c:5: warning: implicit declaration of function ‘PQsetClientEncoding’
|
306
|
+
checked program was:
|
307
|
+
/* begin */
|
308
|
+
1: #include "ruby.h"
|
309
|
+
2:
|
310
|
+
3: /*top*/
|
311
|
+
4: int main() {return 0;}
|
312
|
+
5: int t() { PQsetClientEncoding(); return 0; }
|
313
|
+
/* end */
|
314
|
+
|
315
|
+
--------------------
|
316
|
+
|