pg 0.15.0-x86-mingw32 → 0.15.1-x86-mingw32
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.tar.gz.sig +0 -0
- data/ChangeLog +46 -1
- data/History.rdoc +7 -0
- data/README.rdoc +9 -6
- data/ext/pg_connection.c +0 -17
- data/ext/pg_result.c +23 -23
- data/lib/1.8/pg_ext.so +0 -0
- data/lib/1.9/pg_ext.so +0 -0
- data/lib/2.0/pg_ext.so +0 -0
- data/lib/pg.rb +1 -1
- data/lib/pg/connection.rb +17 -2
- data/lib/pg/exceptions.rb +2 -2
- data/sample/async_api.rb +2 -2
- data/sample/async_mixed.rb +2 -2
- data/sample/cursor.rb +1 -1
- data/sample/disk_usage_report.rb +1 -1
- data/sample/wal_shipper.rb +1 -1
- data/sample/warehouse_partitions.rb +1 -1
- data/spec/lib/helpers.rb +1 -2
- data/spec/pg/connection_spec.rb +10 -0
- metadata +5 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,53 @@
|
|
1
|
+
2013-04-08 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* History.rdoc:
|
4
|
+
Fix date in History
|
5
|
+
[de1cdb0f7ba6] [tip]
|
6
|
+
|
7
|
+
* .hgtags:
|
8
|
+
Added tag v0.15.1 for changeset 4692c20bcbde
|
9
|
+
[765d242ccf70]
|
10
|
+
|
11
|
+
* .hgsigs:
|
12
|
+
Added signature for changeset 0bfb6ff650be
|
13
|
+
[4692c20bcbde] [v0.15.1]
|
14
|
+
|
15
|
+
* lib/pg.rb:
|
16
|
+
Bump the patch version
|
17
|
+
[0bfb6ff650be]
|
18
|
+
|
19
|
+
* Merge with v0.15-stable
|
20
|
+
[650a853efd0d]
|
21
|
+
|
22
|
+
* ext/pg_connection.c, lib/pg/connection.rb:
|
23
|
+
Update PG::Connection documentation
|
24
|
+
[4514df7221a8]
|
25
|
+
|
26
|
+
2013-04-05 Lars Kanis <kanis@comcard.de>
|
27
|
+
|
28
|
+
* History.rdoc:
|
29
|
+
Update History.rdoc.
|
30
|
+
[1d0173b7a077] <v0.15-stable>
|
31
|
+
|
32
|
+
* lib/pg/connection.rb, spec/pg/connection_spec.rb:
|
33
|
+
Send a shortened $0 as application_name to the server in order to
|
34
|
+
avoid warnings about truncated identifier.
|
35
|
+
|
36
|
+
Thanks to Svoop for this report.
|
37
|
+
[9a6791fe9409]
|
38
|
+
|
39
|
+
* lib/pg/connection.rb, spec/pg/connection_spec.rb:
|
40
|
+
Send a shortened $0 as application_name to the server in order to
|
41
|
+
avoid warnings about truncated identifier.
|
42
|
+
|
43
|
+
Thanks to Svoop for this report.
|
44
|
+
[134e067259ee] <v0.15-stable>
|
45
|
+
|
1
46
|
2013-03-26 Michael Granger <ged@FaerieMUD.org>
|
2
47
|
|
3
48
|
* README.rdoc:
|
4
49
|
Update README, add Lars as maintainer
|
5
|
-
[5060601d2e64]
|
50
|
+
[5060601d2e64]
|
6
51
|
|
7
52
|
* ext/pg_result.c, lib/pg/exceptions.rb, sample/async_api.rb,
|
8
53
|
sample/async_mixed.rb, sample/cursor.rb,
|
data/History.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -9,7 +9,7 @@ docs :: http://deveiate.org/code/pg
|
|
9
9
|
|
10
10
|
Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
|
11
11
|
|
12
|
-
It works with {PostgreSQL 8.
|
12
|
+
It works with {PostgreSQL 8.4 and later}[http://www.postgresql.org/support/versioning/].
|
13
13
|
|
14
14
|
A small example usage:
|
15
15
|
|
@@ -34,10 +34,11 @@ A small example usage:
|
|
34
34
|
|
35
35
|
== Requirements
|
36
36
|
|
37
|
-
* Ruby 1.
|
38
|
-
* PostgreSQL 8.
|
37
|
+
* Ruby 1.9.3-p392, or 2.0.0-p0.
|
38
|
+
* PostgreSQL 8.4.x or later (with headers, -dev packages, etc).
|
39
39
|
|
40
|
-
It may work with earlier versions of Ruby as well, but those are
|
40
|
+
It may work with earlier versions of Ruby/PostgreSQL as well, but those are
|
41
|
+
not regularly tested.
|
41
42
|
|
42
43
|
|
43
44
|
== How To Install
|
@@ -76,16 +77,18 @@ After checking out the source, run:
|
|
76
77
|
This task will install any missing dependencies, run the tests/specs, and
|
77
78
|
generate the API documentation.
|
78
79
|
|
79
|
-
The current
|
80
|
+
The current maintainers are Michael Granger <ged@FaerieMUD.org> and
|
81
|
+
Lars Kanis <lars@greiz-reinsdorf.de>.
|
80
82
|
|
81
83
|
|
82
84
|
== Copying
|
83
85
|
|
84
|
-
Copyright (c) 1997-
|
86
|
+
Copyright (c) 1997-2013 by the authors.
|
85
87
|
|
86
88
|
* Jeff Davis <ruby-pg@j-davis.com>
|
87
89
|
* Guy Decoux (ts) <decoux@moulon.inra.fr>
|
88
90
|
* Michael Granger <ged@FaerieMUD.org>
|
91
|
+
* Lars Kanis <lars@greiz-reinsdorf.de>
|
89
92
|
* Dave Lee
|
90
93
|
* Eiji Matsumoto <usagi@ruby.club.or.jp>
|
91
94
|
* Yukihiro Matsumoto <matz@ruby-lang.org>
|
data/ext/pg_connection.c
CHANGED
@@ -7,23 +7,6 @@
|
|
7
7
|
#include "pg.h"
|
8
8
|
|
9
9
|
|
10
|
-
/********************************************************************
|
11
|
-
*
|
12
|
-
* Document-class: PG::Connection
|
13
|
-
*
|
14
|
-
* The class to access PostgreSQL RDBMS, based on the libpq interface,
|
15
|
-
* provides convenient OO methods to interact with PostgreSQL.
|
16
|
-
*
|
17
|
-
* For example, to send query to the database on the localhost:
|
18
|
-
* require 'pg'
|
19
|
-
* conn = PG::Connection.open(:dbname => 'test')
|
20
|
-
* res = conn.exec('SELECT $1 AS a, $2 AS b, $3 AS c',[1, 2, nil])
|
21
|
-
* # Equivalent to:
|
22
|
-
* # res = conn.exec('SELECT 1 AS a, 2 AS b, NULL AS c')
|
23
|
-
*
|
24
|
-
* See the PG::Result class for information on working with the results of a query.
|
25
|
-
*
|
26
|
-
*/
|
27
10
|
VALUE rb_cPGconn;
|
28
11
|
|
29
12
|
static PQnoticeReceiver default_notice_receiver = NULL;
|
data/ext/pg_result.c
CHANGED
@@ -147,10 +147,10 @@ pgresult_get(VALUE self)
|
|
147
147
|
|
148
148
|
|
149
149
|
/********************************************************************
|
150
|
-
*
|
150
|
+
*
|
151
151
|
* Document-class: PG::Result
|
152
152
|
*
|
153
|
-
* The class to represent the query result tuples (rows).
|
153
|
+
* The class to represent the query result tuples (rows).
|
154
154
|
* An instance of this class is created as the result of every query.
|
155
155
|
* You may need to invoke the #clear method of the instance when finished with
|
156
156
|
* the result for better memory performance.
|
@@ -162,7 +162,7 @@ pgresult_get(VALUE self)
|
|
162
162
|
* res.getvalue(0,0) # '1'
|
163
163
|
* res[0]['b'] # '2'
|
164
164
|
* res[0]['c'] # nil
|
165
|
-
*
|
165
|
+
*
|
166
166
|
*/
|
167
167
|
|
168
168
|
/**************************************************************************
|
@@ -209,7 +209,7 @@ pgresult_res_status(VALUE self, VALUE status)
|
|
209
209
|
* call-seq:
|
210
210
|
* res.error_message() -> String
|
211
211
|
*
|
212
|
-
* Returns the error message of the command as a string.
|
212
|
+
* Returns the error message of the command as a string.
|
213
213
|
*/
|
214
214
|
static VALUE
|
215
215
|
pgresult_error_message(VALUE self)
|
@@ -240,7 +240,7 @@ pgresult_error_message(VALUE self)
|
|
240
240
|
* * +PG_DIAG_SOURCE_FUNCTION+
|
241
241
|
*
|
242
242
|
* An example:
|
243
|
-
*
|
243
|
+
*
|
244
244
|
* begin
|
245
245
|
* conn.exec( "SELECT * FROM nonexistant_table" )
|
246
246
|
* rescue PG::Error => err
|
@@ -259,10 +259,10 @@ pgresult_error_message(VALUE self)
|
|
259
259
|
* result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ),
|
260
260
|
* ]
|
261
261
|
* end
|
262
|
-
*
|
262
|
+
*
|
263
263
|
* Outputs:
|
264
|
-
*
|
265
|
-
* ["ERROR", "42P01", "relation \"nonexistant_table\" does not exist", nil, nil,
|
264
|
+
*
|
265
|
+
* ["ERROR", "42P01", "relation \"nonexistant_table\" does not exist", nil, nil,
|
266
266
|
* "15", nil, nil, nil, "path/to/parse_relation.c", "857", "parserOpenTable"]
|
267
267
|
*/
|
268
268
|
static VALUE
|
@@ -381,7 +381,7 @@ pgresult_ftable(VALUE self, VALUE column_number)
|
|
381
381
|
int col_number = NUM2INT(column_number);
|
382
382
|
PGresult *pgresult = pgresult_get(self);
|
383
383
|
|
384
|
-
if( col_number < 0 || col_number >= PQnfields(pgresult))
|
384
|
+
if( col_number < 0 || col_number >= PQnfields(pgresult))
|
385
385
|
rb_raise(rb_eArgError,"Invalid column index: %d", col_number);
|
386
386
|
|
387
387
|
n = PQftable(pgresult, col_number);
|
@@ -392,7 +392,7 @@ pgresult_ftable(VALUE self, VALUE column_number)
|
|
392
392
|
* call-seq:
|
393
393
|
* res.ftablecol( column_number ) -> Fixnum
|
394
394
|
*
|
395
|
-
* Returns the column number (within its table) of the table from
|
395
|
+
* Returns the column number (within its table) of the table from
|
396
396
|
* which the column _column_number_ is made up.
|
397
397
|
*
|
398
398
|
* Raises ArgumentError if _column_number_ is out of range or if
|
@@ -406,7 +406,7 @@ pgresult_ftablecol(VALUE self, VALUE column_number)
|
|
406
406
|
|
407
407
|
int n;
|
408
408
|
|
409
|
-
if( col_number < 0 || col_number >= PQnfields(pgresult))
|
409
|
+
if( col_number < 0 || col_number >= PQnfields(pgresult))
|
410
410
|
rb_raise(rb_eArgError,"Invalid column index: %d", col_number);
|
411
411
|
|
412
412
|
n = PQftablecol(pgresult, col_number);
|
@@ -419,7 +419,7 @@ pgresult_ftablecol(VALUE self, VALUE column_number)
|
|
419
419
|
*
|
420
420
|
* Returns the format (0 for text, 1 for binary) of column
|
421
421
|
* _column_number_.
|
422
|
-
*
|
422
|
+
*
|
423
423
|
* Raises ArgumentError if _column_number_ is out of range.
|
424
424
|
*/
|
425
425
|
static VALUE
|
@@ -428,7 +428,7 @@ pgresult_fformat(VALUE self, VALUE column_number)
|
|
428
428
|
PGresult *result = pgresult_get(self);
|
429
429
|
int fnumber = NUM2INT(column_number);
|
430
430
|
if (fnumber < 0 || fnumber >= PQnfields(result)) {
|
431
|
-
rb_raise(rb_eArgError, "Column number is out of range: %d",
|
431
|
+
rb_raise(rb_eArgError, "Column number is out of range: %d",
|
432
432
|
fnumber);
|
433
433
|
}
|
434
434
|
return INT2FIX(PQfformat(result, fnumber));
|
@@ -442,14 +442,14 @@ pgresult_fformat(VALUE self, VALUE column_number)
|
|
442
442
|
*
|
443
443
|
* The integer returned is the internal +OID+ number (in PostgreSQL)
|
444
444
|
* of the type. To get a human-readable value for the type, use the
|
445
|
-
* returned OID and the field's #fmod value with the format_type() SQL
|
445
|
+
* returned OID and the field's #fmod value with the format_type() SQL
|
446
446
|
* function:
|
447
|
-
*
|
447
|
+
*
|
448
448
|
* # Get the type of the second column of the result 'res'
|
449
449
|
* typename = conn.
|
450
450
|
* exec( "SELECT format_type($1,$2)", [res.ftype(1), res.fmod(1)] ).
|
451
451
|
* getvalue( 0, 0 )
|
452
|
-
*
|
452
|
+
*
|
453
453
|
* Raises an ArgumentError if _column_number_ is out of range.
|
454
454
|
*/
|
455
455
|
static VALUE
|
@@ -467,9 +467,9 @@ pgresult_ftype(VALUE self, VALUE index)
|
|
467
467
|
* call-seq:
|
468
468
|
* res.fmod( column_number )
|
469
469
|
*
|
470
|
-
* Returns the type modifier associated with column _column_number_. See
|
470
|
+
* Returns the type modifier associated with column _column_number_. See
|
471
471
|
* the #ftype method for an example of how to use this.
|
472
|
-
*
|
472
|
+
*
|
473
473
|
* Raises an ArgumentError if _column_number_ is out of range.
|
474
474
|
*/
|
475
475
|
static VALUE
|
@@ -479,7 +479,7 @@ pgresult_fmod(VALUE self, VALUE column_number)
|
|
479
479
|
int fnumber = NUM2INT(column_number);
|
480
480
|
int modifier;
|
481
481
|
if (fnumber < 0 || fnumber >= PQnfields(result)) {
|
482
|
-
rb_raise(rb_eArgError, "Column number is out of range: %d",
|
482
|
+
rb_raise(rb_eArgError, "Column number is out of range: %d",
|
483
483
|
fnumber);
|
484
484
|
}
|
485
485
|
modifier = PQfmod(result,fnumber);
|
@@ -688,7 +688,7 @@ pgresult_oid_value(VALUE self)
|
|
688
688
|
* call-seq:
|
689
689
|
* res[ n ] -> Hash
|
690
690
|
*
|
691
|
-
* Returns tuple _n_ as a hash.
|
691
|
+
* Returns tuple _n_ as a hash.
|
692
692
|
*/
|
693
693
|
static VALUE
|
694
694
|
pgresult_aref(VALUE self, VALUE index)
|
@@ -752,7 +752,7 @@ pgresult_each_row(VALUE self)
|
|
752
752
|
rb_ary_store( new_row, field, Qnil );
|
753
753
|
}
|
754
754
|
else {
|
755
|
-
VALUE val = rb_tainted_str_new( PQgetvalue(result, row, field),
|
755
|
+
VALUE val = rb_tainted_str_new( PQgetvalue(result, row, field),
|
756
756
|
PQgetlength(result, row, field) );
|
757
757
|
|
758
758
|
#ifdef M17N_SUPPORTED
|
@@ -795,7 +795,7 @@ make_column_result_array( VALUE self, int col )
|
|
795
795
|
|
796
796
|
#ifdef M17N_SUPPORTED
|
797
797
|
/* associate client encoding for text format only */
|
798
|
-
if ( 0 == PQfformat(result, col) ) {
|
798
|
+
if ( 0 == PQfformat(result, col) ) {
|
799
799
|
ASSOCIATE_INDEX( val, self );
|
800
800
|
} else {
|
801
801
|
rb_enc_associate( val, rb_ascii8bit_encoding() );
|
@@ -813,7 +813,7 @@ make_column_result_array( VALUE self, int col )
|
|
813
813
|
* call-seq:
|
814
814
|
* res.column_values( n ) -> array
|
815
815
|
*
|
816
|
-
* Returns an Array of the values from the nth column of each
|
816
|
+
* Returns an Array of the values from the nth column of each
|
817
817
|
* tuple in the result.
|
818
818
|
*
|
819
819
|
*/
|
data/lib/1.8/pg_ext.so
CHANGED
Binary file
|
data/lib/1.9/pg_ext.so
CHANGED
Binary file
|
data/lib/2.0/pg_ext.so
CHANGED
Binary file
|
data/lib/pg.rb
CHANGED
data/lib/pg/connection.rb
CHANGED
@@ -2,7 +2,21 @@
|
|
2
2
|
|
3
3
|
require 'pg' unless defined?( PG )
|
4
4
|
|
5
|
-
# The
|
5
|
+
# The PostgreSQL connection class. The interface for this class is based on
|
6
|
+
# {libpq}[http://www.postgresql.org/docs/9.2/interactive/libpq.html], the C
|
7
|
+
# application programmer's interface to PostgreSQL. Some familiarity with libpq
|
8
|
+
# is recommended, but not necessary.
|
9
|
+
#
|
10
|
+
# For example, to send query to the database on the localhost:
|
11
|
+
#
|
12
|
+
# require 'pg'
|
13
|
+
# conn = PG::Connection.open(:dbname => 'test')
|
14
|
+
# res = conn.exec_params('SELECT $1 AS a, $2 AS b, $3 AS c', [1, 2, nil])
|
15
|
+
# # Equivalent to:
|
16
|
+
# # res = conn.exec('SELECT 1 AS a, 2 AS b, NULL AS c')
|
17
|
+
#
|
18
|
+
# See the PG::Result class for information on working with the results of a query.
|
19
|
+
#
|
6
20
|
class PG::Connection
|
7
21
|
|
8
22
|
# The order the options are passed to the ::connect method.
|
@@ -27,7 +41,8 @@ class PG::Connection
|
|
27
41
|
# Parameter 'fallback_application_name' was introduced in PostgreSQL 9.0
|
28
42
|
# together with PQescapeLiteral().
|
29
43
|
if PG::Connection.instance_methods.find{|m| m.to_sym == :escape_literal }
|
30
|
-
appname =
|
44
|
+
appname = $0.sub(/^(.{30}).{4,}(.{30})$/){ $1+"..."+$2 }
|
45
|
+
appname = PG::Connection.quote_connstr( appname )
|
31
46
|
connopts = ["fallback_application_name=#{appname}"]
|
32
47
|
else
|
33
48
|
connopts = []
|
data/lib/pg/exceptions.rb
CHANGED
data/sample/async_api.rb
CHANGED
@@ -11,7 +11,7 @@ TIMEOUT = 5.0 # seconds to wait for an async operation to complete
|
|
11
11
|
|
12
12
|
# Print 'x' continuously to demonstrate that other threads aren't
|
13
13
|
# blocked while waiting for the connection, for the query to be sent,
|
14
|
-
# for results, etc. You might want to sleep inside the loop or
|
14
|
+
# for results, etc. You might want to sleep inside the loop or
|
15
15
|
# comment this out entirely for cleaner output.
|
16
16
|
progress_thread = Thread.new { loop { print 'x' } }
|
17
17
|
|
@@ -82,7 +82,7 @@ conn.send_query( "SELECT * FROM pg_stat_activity" )
|
|
82
82
|
loop do
|
83
83
|
output_progress " waiting for a response"
|
84
84
|
|
85
|
-
# Buffer any incoming data on the socket until a full result is ready.
|
85
|
+
# Buffer any incoming data on the socket until a full result is ready.
|
86
86
|
conn.consume_input
|
87
87
|
while conn.is_busy
|
88
88
|
select( [socket], nil, nil, TIMEOUT ) or
|
data/sample/async_mixed.rb
CHANGED
@@ -5,7 +5,7 @@ require 'pg'
|
|
5
5
|
$stdout.sync = true
|
6
6
|
|
7
7
|
# This is a example of how to mix and match synchronous and async APIs. In this case,
|
8
|
-
# the connection to the server is made syncrhonously, and then queries are
|
8
|
+
# the connection to the server is made syncrhonously, and then queries are
|
9
9
|
# asynchronous.
|
10
10
|
|
11
11
|
TIMEOUT = 5.0 # seconds to wait for an async operation to complete
|
@@ -36,7 +36,7 @@ conn.send_query( "SELECT * FROM pg_stat_activity" )
|
|
36
36
|
loop do
|
37
37
|
output_progress " waiting for a response"
|
38
38
|
|
39
|
-
# Buffer any incoming data on the socket until a full result is ready.
|
39
|
+
# Buffer any incoming data on the socket until a full result is ready.
|
40
40
|
conn.consume_input
|
41
41
|
while conn.is_busy
|
42
42
|
output_progress " waiting for data to be available on %p..." % [ socket ]
|
data/sample/cursor.rb
CHANGED
data/sample/disk_usage_report.rb
CHANGED
data/sample/wal_shipper.rb
CHANGED
data/spec/lib/helpers.rb
CHANGED
@@ -42,8 +42,7 @@ module PG::TestingHelpers
|
|
42
42
|
def ansi_code( *attributes )
|
43
43
|
attributes.flatten!
|
44
44
|
attributes.collect! {|at| at.to_s }
|
45
|
-
|
46
|
-
# [ ENV['TERM'], attributes ]
|
45
|
+
|
47
46
|
return '' unless /(?:vt10[03]|xterm(?:-color)?|linux|screen)/i =~ ENV['TERM']
|
48
47
|
attributes = ANSI_ATTRIBUTES.values_at( *attributes ).compact.join(';')
|
49
48
|
|
data/spec/pg/connection_spec.rb
CHANGED
@@ -574,6 +574,16 @@ describe PG::Connection do
|
|
574
574
|
PG::Connection.parse_connect_args( 'dbname=test' ).should include( $0 )
|
575
575
|
end
|
576
576
|
|
577
|
+
it "sets a shortened fallback_application_name on new connections" do
|
578
|
+
old_0 = $0
|
579
|
+
begin
|
580
|
+
$0 = "/this/is/a/very/long/path/with/many/directories/to/our/beloved/ruby"
|
581
|
+
PG::Connection.parse_connect_args( 'dbname=test' ).should match(/\/this\/is\/a.*\.\.\..*\/beloved\/ruby/)
|
582
|
+
ensure
|
583
|
+
$0 = old_0
|
584
|
+
end
|
585
|
+
end
|
586
|
+
|
577
587
|
it "calls the block supplied to wait_for_notify with the notify payload if it accepts " +
|
578
588
|
"any number of arguments" do
|
579
589
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 33
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 15
|
9
|
-
-
|
10
|
-
version: 0.15.
|
9
|
+
- 1
|
10
|
+
version: 0.15.1
|
11
11
|
platform: x86-mingw32
|
12
12
|
authors:
|
13
13
|
- Michael Granger
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
mMFp4kPUHbWOqCp2mz9gCA==
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2013-
|
39
|
+
date: 2013-04-08 00:00:00 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: hoe-mercurial
|
@@ -133,7 +133,7 @@ dependencies:
|
|
133
133
|
description: |-
|
134
134
|
Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
|
135
135
|
|
136
|
-
It works with {PostgreSQL 8.
|
136
|
+
It works with {PostgreSQL 8.4 and later}[http://www.postgresql.org/support/versioning/].
|
137
137
|
|
138
138
|
A small example usage:
|
139
139
|
|
metadata.gz.sig
CHANGED
Binary file
|