postgres 0.7.9.2008.01.03 → 0.7.9.2008.01.09
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +45 -17
- data/ext/extconf.rb +7 -24
- data/{compat-ruby-postgres → ext}/libpq-compat.c +0 -0
- data/{compat-ruby-postgres → ext}/postgres.c +10 -18
- data/{compat-ruby-postgres → ext}/type-oids.h +0 -0
- metadata +7 -12
- data/compat-ruby-postgres/extconf.rb +0 -34
- data/ext/compat.c +0 -485
- data/ext/compat.h +0 -130
- data/ext/pg.c +0 -3016
- data/ext/pg.h +0 -13
data/README
CHANGED
@@ -59,27 +59,55 @@ For example:
|
|
59
59
|
ruby extconf.rb --with-pgsql-include=/usr/local/pgsql/include \
|
60
60
|
--with-pgsql-lib=/usr/local/pgsql/lib
|
61
61
|
|
62
|
-
-
|
63
|
-
|
64
|
-
You need to specify:
|
62
|
+
- Modules
|
65
63
|
|
66
|
-
|
67
|
-
|
64
|
+
'pg': The 'pg' module is the newer module, that has been greatly improved, and
|
65
|
+
is almost a complete rewrite. It is not backwards compatible. Use this module
|
66
|
+
for newly written code. It should be more stable, less buggy, and has more
|
67
|
+
features.
|
68
68
|
|
69
|
-
|
69
|
+
'postgres': Older module, maintained for backwards compatibility. It
|
70
|
+
has known flaws that aren't reasonably fixable without breaking backwards
|
71
|
+
compatibility. Use this module if you have code that already works, and
|
72
|
+
you just want the fixes that I've committed to this module (for instance,
|
73
|
+
this module is compatible with PostgreSQL 8.3).
|
70
74
|
|
71
|
-
|
72
|
-
compatibility. It has known flaws that aren't reasonably fixable without
|
73
|
-
breaking backwards compatibility. Use this module if you have code that
|
74
|
-
already works, and you just want the fixes that I've committed to this
|
75
|
-
module (for instance, this module is compatible with PostgreSQL 8.3).
|
76
|
-
|
77
|
-
The 'pg' module is the newer module, that has been greatly improved, and
|
78
|
-
is almost a complete rewrite. It is not backwards compatible. Use this module
|
79
|
-
for newly written code. It should be more stable, less buggy, and has more
|
80
|
-
features.
|
75
|
+
- How to use ?
|
81
76
|
|
82
|
-
|
77
|
+
This gem builds and installs two PostgreSQL database adapters, 'postgres'
|
78
|
+
and 'pg'. 'postgres' is currently (Jan 2008) the recommended PostgreSQL
|
79
|
+
adapter for use with Rails.
|
80
|
+
|
81
|
+
The standard way to download and install the most current stable
|
82
|
+
version of the postgres gem (from http://gems.rubyforge.org) is to use
|
83
|
+
the RubyGem package manager. You may need to supply RubyGem with the
|
84
|
+
location of the libpq library and the libpq.h and libpq/libpq-fs.h
|
85
|
+
files, and may need to run as root.
|
86
|
+
If you installed from source on a Unix system you can locate these
|
87
|
+
libpq files with:
|
88
|
+
find <path to install directory> -name "libpq-fe.h" -print
|
89
|
+
With binary distributions, you may need to install additional
|
90
|
+
PostgreSQL development libraries to get these files.
|
91
|
+
|
92
|
+
Then run:
|
93
|
+
sudo gem install postgres -- --with-pgsql-include-dir=<location of
|
94
|
+
Postgresql>/include --with-pgsql-lib-dir=<location of Postgresql/lib
|
95
|
+
|
96
|
+
Example:
|
97
|
+
on Mac OS X with PostgreSQL in /Library/PostgreSQL8 use
|
98
|
+
--with-pgsql-include-dir=/Library/PostgreSQL8/include --with-pgsql-lib-
|
99
|
+
dir=/Library/PostgreSQL8/lib
|
100
|
+
|
101
|
+
To use the postgres adapter with Rails:
|
102
|
+
refer to it as
|
103
|
+
adapter: postgresql
|
104
|
+
in your database:yaml file
|
105
|
+
|
106
|
+
The pg adapter cannot be used with Rails yet and is available for
|
107
|
+
testing and developer use.
|
108
|
+
|
109
|
+
To use these modules in Ruby directly (not Rails), refer to the RDoc
|
110
|
+
documentation.
|
83
111
|
|
84
112
|
- Acknowledgments
|
85
113
|
|
data/ext/extconf.rb
CHANGED
@@ -19,33 +19,16 @@ end
|
|
19
19
|
|
20
20
|
dir_config('pgsql', config_value('include'), config_value('lib'))
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
PQescapeStringConn
|
26
|
-
PQprepare
|
27
|
-
PQescapeString
|
28
|
-
PQexecParams
|
29
|
-
PQconnectionUsedPassword
|
30
|
-
PQisthreadsafe
|
31
|
-
PQnparams
|
32
|
-
PQparamtype
|
33
|
-
PQsendDescribePrepared
|
34
|
-
PQsendDescribePortal
|
35
|
-
PQsendPrepare
|
36
|
-
PQencryptPassword
|
37
|
-
PQdescribePrepared
|
38
|
-
PQdescribePortal
|
39
|
-
lo_create
|
40
|
-
lo_truncate
|
41
|
-
pg_encoding_to_char
|
42
|
-
)
|
22
|
+
required_libraries = []
|
23
|
+
desired_functions = %w(PQsetClientEncoding pg_encoding_to_char PQfreemem PQserverVersion)
|
24
|
+
compat_functions = %w(PQescapeString PQexecParams)
|
43
25
|
|
44
26
|
if have_build_env
|
27
|
+
required_libraries.each(&method(:have_library))
|
45
28
|
desired_functions.each(&method(:have_func))
|
46
|
-
$
|
47
|
-
$CFLAGS << ' -Wall
|
48
|
-
create_makefile("
|
29
|
+
$objs = ['postgres.o','libpq-compat.o'] if compat_functions.all?(&method(:have_func))
|
30
|
+
$CFLAGS << ' -Wall '
|
31
|
+
create_makefile("postgres")
|
49
32
|
else
|
50
33
|
puts 'Could not find PostgreSQL build environment (libraries & headers): Makefile not created'
|
51
34
|
end
|
File without changes
|
@@ -15,14 +15,16 @@
|
|
15
15
|
#include "ruby.h"
|
16
16
|
#include "rubyio.h"
|
17
17
|
|
18
|
-
#if RUBY_VM
|
19
|
-
|
20
|
-
#
|
21
|
-
|
22
|
-
#
|
23
|
-
/* ruby 1.8 */
|
18
|
+
#if RUBY_VM != 1
|
19
|
+
#define RUBY_18_COMPAT
|
20
|
+
#endif
|
21
|
+
|
22
|
+
#ifdef RUBY_18_COMPAT
|
24
23
|
#include "st.h"
|
25
24
|
#include "intern.h"
|
25
|
+
#else
|
26
|
+
#include "ruby/st.h"
|
27
|
+
#include "ruby/intern.h"
|
26
28
|
#endif
|
27
29
|
|
28
30
|
/* grep '^#define' $(pg_config --includedir)/server/catalog/pg_type.h | grep OID */
|
@@ -53,14 +55,6 @@ PQserverVersion(const PGconn *conn)
|
|
53
55
|
#define RSTRING_PTR(x) RSTRING((x))->ptr
|
54
56
|
#endif /* RSTRING_PTR */
|
55
57
|
|
56
|
-
#if RUBY_VM == 1
|
57
|
-
/* ruby 1.9 */
|
58
|
-
#define RB_REG_NEW(s, len, opt) rb_reg_new(rb_str_new((s),(len)), opt)
|
59
|
-
#else
|
60
|
-
/* ruby 1.8 */
|
61
|
-
#define RB_REG_NEW(s, len, opt) rb_reg_new((s), (len), (opt))
|
62
|
-
#endif
|
63
|
-
|
64
58
|
#ifndef HAVE_PG_ENCODING_TO_CHAR
|
65
59
|
#define pg_encoding_to_char(x) "SQL_ASCII"
|
66
60
|
#endif
|
@@ -925,7 +919,6 @@ pgconn_get_notify(obj)
|
|
925
919
|
return ary;
|
926
920
|
}
|
927
921
|
|
928
|
-
static VALUE pg_escape_regex;
|
929
922
|
static VALUE pg_escape_str;
|
930
923
|
static ID pg_gsub_bang_id;
|
931
924
|
|
@@ -980,7 +973,8 @@ pgconn_insert_table(obj, table, values)
|
|
980
973
|
rb_str_cat(buffer, "\\N",2);
|
981
974
|
} else {
|
982
975
|
s = rb_obj_as_string(row->ptr[j]);
|
983
|
-
rb_funcall(s,pg_gsub_bang_id,2,
|
976
|
+
rb_funcall(s,pg_gsub_bang_id,2,
|
977
|
+
rb_str_new("([\\t\\n\\\\])", 10),pg_escape_str);
|
984
978
|
rb_str_cat(buffer, StringValuePtr(s), RSTRING_LEN(s));
|
985
979
|
}
|
986
980
|
}
|
@@ -2617,8 +2611,6 @@ void
|
|
2617
2611
|
Init_postgres()
|
2618
2612
|
{
|
2619
2613
|
pg_gsub_bang_id = rb_intern("gsub!");
|
2620
|
-
pg_escape_regex = RB_REG_NEW("([\\t\\n\\\\])", 10, 0);
|
2621
|
-
rb_global_variable(&pg_escape_regex);
|
2622
2614
|
pg_escape_str = rb_str_new("\\\\\\1", 4);
|
2623
2615
|
rb_global_variable(&pg_escape_str);
|
2624
2616
|
|
File without changes
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: postgres
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.7.9.2008.01.
|
7
|
-
date: 2008-01-
|
6
|
+
version: 0.7.9.2008.01.09
|
7
|
+
date: 2008-01-09 00:00:00 -08:00
|
8
8
|
summary: Ruby extension library providing an API to PostgreSQL
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -39,24 +39,19 @@ files:
|
|
39
39
|
- GPL
|
40
40
|
- LICENSE
|
41
41
|
- README
|
42
|
-
- ext/compat.c
|
43
|
-
- ext/
|
44
|
-
- ext/
|
45
|
-
- ext/pg.c
|
46
|
-
- compat-ruby-postgres/libpq-compat.c
|
47
|
-
- compat-ruby-postgres/type-oids.h
|
48
|
-
- compat-ruby-postgres/postgres.c
|
42
|
+
- ext/libpq-compat.c
|
43
|
+
- ext/type-oids.h
|
44
|
+
- ext/postgres.c
|
49
45
|
test_files: []
|
50
46
|
|
51
47
|
rdoc_options: []
|
52
48
|
|
53
|
-
extra_rdoc_files:
|
54
|
-
|
49
|
+
extra_rdoc_files:
|
50
|
+
- ext/postgres.c
|
55
51
|
executables: []
|
56
52
|
|
57
53
|
extensions:
|
58
54
|
- ext/extconf.rb
|
59
|
-
- compat-ruby-postgres/extconf.rb
|
60
55
|
requirements:
|
61
56
|
- PostgreSQL libpq library and headers
|
62
57
|
dependencies: []
|
@@ -1,34 +0,0 @@
|
|
1
|
-
if RUBY_VERSION < '1.3'
|
2
|
-
puts 'This library is for ruby-1.3 or higher.'
|
3
|
-
exit 1
|
4
|
-
end
|
5
|
-
|
6
|
-
require 'mkmf'
|
7
|
-
|
8
|
-
def config_value(type)
|
9
|
-
ENV["POSTGRES_#{type.upcase}"] || pg_config(type)
|
10
|
-
end
|
11
|
-
|
12
|
-
def pg_config(type)
|
13
|
-
IO.popen("pg_config --#{type}dir").readline.chomp rescue nil
|
14
|
-
end
|
15
|
-
|
16
|
-
def have_build_env
|
17
|
-
have_library('pq') && have_header('libpq-fe.h') && have_header('libpq/libpq-fs.h')
|
18
|
-
end
|
19
|
-
|
20
|
-
dir_config('pgsql', config_value('include'), config_value('lib'))
|
21
|
-
|
22
|
-
required_libraries = []
|
23
|
-
desired_functions = %w(PQsetClientEncoding pg_encoding_to_char PQfreemem PQserverVersion)
|
24
|
-
compat_functions = %w(PQescapeString PQexecParams)
|
25
|
-
|
26
|
-
if have_build_env
|
27
|
-
required_libraries.each(&method(:have_library))
|
28
|
-
desired_functions.each(&method(:have_func))
|
29
|
-
$objs = ['postgres.o','libpq-compat.o'] if compat_functions.all?(&method(:have_func))
|
30
|
-
$CFLAGS << ' -Wall '
|
31
|
-
create_makefile("postgres")
|
32
|
-
else
|
33
|
-
puts 'Could not find PostgreSQL build environment (libraries & headers): Makefile not created'
|
34
|
-
end
|