pg 0.21.0-x86-mingw32 → 1.0.0-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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +62 -82
- data/History.rdoc +28 -0
- data/Manifest.txt +0 -1
- data/README.rdoc +3 -4
- data/Rakefile +3 -4
- data/Rakefile.cross +16 -20
- data/ext/errorcodes.def +8 -0
- data/ext/errorcodes.txt +3 -1
- data/ext/extconf.rb +12 -32
- data/ext/gvl_wrappers.c +4 -0
- data/ext/gvl_wrappers.h +23 -39
- data/ext/pg.c +15 -48
- data/ext/pg.h +7 -77
- data/ext/pg_binary_decoder.c +1 -1
- data/ext/pg_binary_encoder.c +1 -1
- data/ext/pg_connection.c +91 -130
- data/ext/pg_result.c +5 -9
- data/ext/pg_text_decoder.c +1 -1
- data/ext/pg_text_encoder.c +1 -1
- data/ext/pg_type_map.c +1 -1
- data/ext/pg_type_map_all_strings.c +1 -1
- data/ext/pg_type_map_by_class.c +1 -1
- data/ext/pg_type_map_by_column.c +1 -1
- data/ext/pg_type_map_by_mri_type.c +1 -1
- data/ext/pg_type_map_by_oid.c +1 -1
- data/ext/pg_type_map_in_ruby.c +1 -1
- data/ext/util.c +1 -1
- data/lib/2.0/pg_ext.so +0 -0
- data/lib/2.1/pg_ext.so +0 -0
- data/lib/2.2/pg_ext.so +0 -0
- data/lib/2.3/pg_ext.so +0 -0
- data/lib/2.4/pg_ext.so +0 -0
- data/lib/2.5/pg_ext.so +0 -0
- data/lib/libpq.dll +0 -0
- data/lib/pg.rb +2 -6
- data/lib/pg/connection.rb +7 -2
- data/spec/helpers.rb +8 -12
- data/spec/pg/connection_spec.rb +228 -185
- data/spec/pg/result_spec.rb +3 -3
- data/spec/pg/type_spec.rb +1 -1
- data/spec/pg_spec.rb +1 -1
- metadata +36 -24
- metadata.gz.sig +0 -0
- data/lib/pg/deprecated_constants.rb +0 -21
    
        data/ext/errorcodes.txt
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # errcodes.txt
         | 
| 3 3 | 
             
            #      PostgreSQL error codes
         | 
| 4 4 | 
             
            #
         | 
| 5 | 
            -
            # Copyright (c) 2003- | 
| 5 | 
            +
            # Copyright (c) 2003-2017, PostgreSQL Global Development Group
         | 
| 6 6 | 
             
            #
         | 
| 7 7 | 
             
            # This list serves as the basis for generating source files containing error
         | 
| 8 8 | 
             
            # codes. It is kept in a common format to make sure all these source files have
         | 
| @@ -188,6 +188,7 @@ Section: Class 22 - Data Exception | |
| 188 188 | 
             
            22004    E    ERRCODE_NULL_VALUE_NOT_ALLOWED                                 null_value_not_allowed
         | 
| 189 189 | 
             
            22002    E    ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER                      null_value_no_indicator_parameter
         | 
| 190 190 | 
             
            22003    E    ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE                             numeric_value_out_of_range
         | 
| 191 | 
            +
            2200H    E    ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED                      sequence_generator_limit_exceeded
         | 
| 191 192 | 
             
            22026    E    ERRCODE_STRING_DATA_LENGTH_MISMATCH                            string_data_length_mismatch
         | 
| 192 193 | 
             
            22001    E    ERRCODE_STRING_DATA_RIGHT_TRUNCATION                           string_data_right_truncation
         | 
| 193 194 | 
             
            22011    E    ERRCODE_SUBSTRING_ERROR                                        substring_error
         | 
| @@ -326,6 +327,7 @@ Section: Class 42 - Syntax Error or Access Rule Violation | |
| 326 327 | 
             
            42P21    E    ERRCODE_COLLATION_MISMATCH                                     collation_mismatch
         | 
| 327 328 | 
             
            42P22    E    ERRCODE_INDETERMINATE_COLLATION                                indeterminate_collation
         | 
| 328 329 | 
             
            42809    E    ERRCODE_WRONG_OBJECT_TYPE                                      wrong_object_type
         | 
| 330 | 
            +
            428C9    E    ERRCODE_GENERATED_ALWAYS                                       generated_always
         | 
| 329 331 |  | 
| 330 332 | 
             
            # Note: for ERRCODE purposes, we divide namable objects into these categories:
         | 
| 331 333 | 
             
            # databases, schemas, prepared statements, cursors, tables, columns,
         | 
    
        data/ext/extconf.rb
    CHANGED
    
    | @@ -60,48 +60,28 @@ abort "Can't find the PostgreSQL client library (libpq)" unless | |
| 60 60 | 
             
            	have_library( 'libpq', 'PQconnectdb', ['libpq-fe.h'] ) ||
         | 
| 61 61 | 
             
            	have_library( 'ms/libpq', 'PQconnectdb', ['libpq-fe.h'] )
         | 
| 62 62 |  | 
| 63 | 
            +
            if /mingw/ =~ RUBY_PLATFORM && RbConfig::MAKEFILE_CONFIG['CC'] =~ /gcc/
         | 
| 64 | 
            +
            	# Work around: https://sourceware.org/bugzilla/show_bug.cgi?id=22504
         | 
| 65 | 
            +
            	checking_for "workaround gcc version with link issue" do
         | 
| 66 | 
            +
            		`#{RbConfig::MAKEFILE_CONFIG['CC']} --version`.chomp =~ /\s(\d+)\.\d+\.\d+(\s|$)/ &&
         | 
| 67 | 
            +
            			$1.to_i >= 6 &&
         | 
| 68 | 
            +
            			have_library(':libpq.lib') # Prefer linking to libpq.lib over libpq.dll if available
         | 
| 69 | 
            +
            	end
         | 
| 70 | 
            +
            end
         | 
| 71 | 
            +
             | 
| 63 72 | 
             
            # optional headers/functions
         | 
| 64 | 
            -
            have_func ' | 
| 73 | 
            +
            have_func 'PQsetSingleRowMode' or
         | 
| 65 74 | 
             
            	abort "Your PostgreSQL is too old. Either install an older version " +
         | 
| 66 | 
            -
            	      "of this gem or upgrade your database."
         | 
| 67 | 
            -
            have_func 'PQisthreadsafe'
         | 
| 68 | 
            -
            have_func 'PQprepare'
         | 
| 69 | 
            -
            have_func 'PQexecParams'
         | 
| 70 | 
            -
            have_func 'PQescapeString'
         | 
| 71 | 
            -
            have_func 'PQescapeStringConn'
         | 
| 72 | 
            -
            have_func 'PQescapeLiteral'
         | 
| 73 | 
            -
            have_func 'PQescapeIdentifier'
         | 
| 74 | 
            -
            have_func 'PQgetCancel'
         | 
| 75 | 
            -
            have_func 'lo_create'
         | 
| 76 | 
            -
            have_func 'pg_encoding_to_char'
         | 
| 77 | 
            -
            have_func 'pg_char_to_encoding'
         | 
| 78 | 
            -
            have_func 'PQsetClientEncoding'
         | 
| 79 | 
            -
            have_func 'PQlibVersion'
         | 
| 80 | 
            -
            have_func 'PQping'
         | 
| 81 | 
            -
            have_func 'PQsetSingleRowMode'
         | 
| 75 | 
            +
            	      "of this gem or upgrade your database to at least PostgreSQL-9.2."
         | 
| 82 76 | 
             
            have_func 'PQconninfo'
         | 
| 83 77 | 
             
            have_func 'PQsslAttribute'
         | 
| 78 | 
            +
            have_func 'PQencryptPasswordConn'
         | 
| 84 79 |  | 
| 85 | 
            -
            have_func 'rb_encdb_alias'
         | 
| 86 | 
            -
            have_func 'rb_enc_alias'
         | 
| 87 | 
            -
            have_func 'rb_thread_call_without_gvl'
         | 
| 88 | 
            -
            have_func 'rb_thread_call_with_gvl'
         | 
| 89 | 
            -
            have_func 'rb_thread_fd_select'
         | 
| 90 | 
            -
            have_func 'rb_w32_wrap_io_handle'
         | 
| 91 | 
            -
            have_func 'rb_str_modify_expand'
         | 
| 92 | 
            -
            have_func 'rb_hash_dup'
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            have_const 'PGRES_COPY_BOTH', 'libpq-fe.h'
         | 
| 95 | 
            -
            have_const 'PGRES_SINGLE_TUPLE', 'libpq-fe.h'
         | 
| 96 80 | 
             
            have_const 'PG_DIAG_TABLE_NAME', 'libpq-fe.h'
         | 
| 97 81 |  | 
| 98 | 
            -
            $defs.push( "-DHAVE_ST_NOTIFY_EXTRA" ) if
         | 
| 99 | 
            -
            	have_struct_member 'struct pgNotify', 'extra', 'libpq-fe.h'
         | 
| 100 | 
            -
             | 
| 101 82 | 
             
            # unistd.h confilicts with ruby/win32.h when cross compiling for win32 and ruby 1.9.1
         | 
| 102 83 | 
             
            have_header 'unistd.h'
         | 
| 103 84 | 
             
            have_header 'inttypes.h'
         | 
| 104 | 
            -
            have_header 'ruby/st.h' or have_header 'st.h' or abort "pg currently requires the ruby/st.h header"
         | 
| 105 85 |  | 
| 106 86 | 
             
            checking_for "C99 variable length arrays" do
         | 
| 107 87 | 
             
            	$defs.push( "-DHAVE_VARIABLE_LENGTH_ARRAYS" ) if try_compile('void test_vla(int l){ int vla[l]; }')
         | 
    
        data/ext/gvl_wrappers.c
    CHANGED
    
    | @@ -5,6 +5,10 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            #include "pg.h"
         | 
| 7 7 |  | 
| 8 | 
            +
            #ifndef HAVE_PQENCRYPTPASSWORDCONN
         | 
| 9 | 
            +
            char *PQencryptPasswordConn(PGconn *conn, const char *passwd, const char *user, const char *algorithm){return NULL;}
         | 
| 10 | 
            +
            #endif
         | 
| 11 | 
            +
             | 
| 8 12 | 
             
            FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_WRAPPER_STRUCT );
         | 
| 9 13 | 
             
            FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_SKELETON );
         | 
| 10 14 | 
             
            FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB );
         | 
    
        data/ext/gvl_wrappers.h
    CHANGED
    
    | @@ -15,14 +15,7 @@ | |
| 15 15 | 
             
            #ifndef __gvl_wrappers_h
         | 
| 16 16 | 
             
            #define __gvl_wrappers_h
         | 
| 17 17 |  | 
| 18 | 
            -
            # | 
| 19 | 
            -
            extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
         | 
| 20 | 
            -
            #endif
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            #if defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)
         | 
| 23 | 
            -
            extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1,
         | 
| 24 | 
            -
            				 rb_unblock_function_t *ubf, void *data2);
         | 
| 25 | 
            -
            #endif
         | 
| 18 | 
            +
            #include <ruby/thread.h>
         | 
| 26 19 |  | 
| 27 20 | 
             
            #define DEFINE_PARAM_LIST1(type, name) \
         | 
| 28 21 | 
             
            	name,
         | 
| @@ -53,21 +46,14 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, | |
| 53 46 | 
             
            		return NULL; \
         | 
| 54 47 | 
             
            	}
         | 
| 55 48 |  | 
| 56 | 
            -
            # | 
| 57 | 
            -
            	 | 
| 58 | 
            -
            		 | 
| 59 | 
            -
            			 | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
            		}
         | 
| 65 | 
            -
            #else
         | 
| 66 | 
            -
            	#define DEFINE_GVL_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
         | 
| 67 | 
            -
            		rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
         | 
| 68 | 
            -
            			return name( FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname ); \
         | 
| 69 | 
            -
            		}
         | 
| 70 | 
            -
            #endif
         | 
| 49 | 
            +
            #define DEFINE_GVL_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
         | 
| 50 | 
            +
            	rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
         | 
| 51 | 
            +
            		struct gvl_wrapper_##name##_params params = { \
         | 
| 52 | 
            +
            			{FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname}, when_non_void((rettype)0) \
         | 
| 53 | 
            +
            		}; \
         | 
| 54 | 
            +
            		rb_thread_call_without_gvl(gvl_##name##_skeleton, ¶ms, RUBY_UBF_IO, 0); \
         | 
| 55 | 
            +
            		when_non_void( return params.retval; ) \
         | 
| 56 | 
            +
            	}
         | 
| 71 57 |  | 
| 72 58 | 
             
            #define DEFINE_GVL_STUB_DECL(name, when_non_void, rettype, lastparamtype, lastparamname) \
         | 
| 73 59 | 
             
            	rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname);
         | 
| @@ -80,21 +66,14 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, | |
| 80 66 | 
             
            		return NULL; \
         | 
| 81 67 | 
             
            	}
         | 
| 82 68 |  | 
| 83 | 
            -
            # | 
| 84 | 
            -
            	 | 
| 85 | 
            -
            		 | 
| 86 | 
            -
            			 | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
            		}
         | 
| 92 | 
            -
            #else
         | 
| 93 | 
            -
            	#define DEFINE_GVLCB_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
         | 
| 94 | 
            -
            		rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
         | 
| 95 | 
            -
            			return name( FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname ); \
         | 
| 96 | 
            -
            		}
         | 
| 97 | 
            -
            #endif
         | 
| 69 | 
            +
            #define DEFINE_GVLCB_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
         | 
| 70 | 
            +
            	rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
         | 
| 71 | 
            +
            		struct gvl_wrapper_##name##_params params = { \
         | 
| 72 | 
            +
            			{FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname}, when_non_void((rettype)0) \
         | 
| 73 | 
            +
            		}; \
         | 
| 74 | 
            +
            		rb_thread_call_with_gvl(gvl_##name##_skeleton, ¶ms); \
         | 
| 75 | 
            +
            		when_non_void( return params.retval; ) \
         | 
| 76 | 
            +
            	}
         | 
| 98 77 |  | 
| 99 78 | 
             
            #define GVL_TYPE_VOID(string)
         | 
| 100 79 | 
             
            #define GVL_TYPE_NONVOID(string) string
         | 
| @@ -200,6 +179,11 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, | |
| 200 179 |  | 
| 201 180 | 
             
            #define FOR_EACH_PARAM_OF_PQisBusy(param)
         | 
| 202 181 |  | 
| 182 | 
            +
            #define FOR_EACH_PARAM_OF_PQencryptPasswordConn(param) \
         | 
| 183 | 
            +
            	param(PGconn *, conn) \
         | 
| 184 | 
            +
            	param(const char *, passwd) \
         | 
| 185 | 
            +
            	param(const char *, user)
         | 
| 186 | 
            +
             | 
| 203 187 | 
             
            #define FOR_EACH_PARAM_OF_PQcancel(param) \
         | 
| 204 188 | 
             
            	param(PGcancel *, cancel) \
         | 
| 205 189 | 
             
            	param(char *, errbuf)
         | 
| @@ -231,9 +215,9 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1, | |
| 231 215 | 
             
            	function(PQsendDescribePortal, GVL_TYPE_NONVOID, int, const char *, portal) \
         | 
| 232 216 | 
             
            	function(PQsetClientEncoding, GVL_TYPE_NONVOID, int, const char *, encoding) \
         | 
| 233 217 | 
             
            	function(PQisBusy, GVL_TYPE_NONVOID, int, PGconn *, conn) \
         | 
| 218 | 
            +
            	function(PQencryptPasswordConn, GVL_TYPE_NONVOID, char *, const char *, algorithm) \
         | 
| 234 219 | 
             
            	function(PQcancel, GVL_TYPE_NONVOID, int, int, errbufsize);
         | 
| 235 220 |  | 
| 236 | 
            -
             | 
| 237 221 | 
             
            FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB_DECL );
         | 
| 238 222 |  | 
| 239 223 |  | 
    
        data/ext/pg.c
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            /*
         | 
| 2 2 | 
             
             * pg.c - Toplevel extension
         | 
| 3 | 
            -
             * $Id$
         | 
| 3 | 
            +
             * $Id: pg.c,v 1f0926bfa9a5 2018/01/04 18:14:32 lars $
         | 
| 4 4 | 
             
             *
         | 
| 5 5 | 
             
             * Author/s:
         | 
| 6 6 | 
             
             *
         | 
| @@ -69,7 +69,6 @@ VALUE rb_mPGconstants; | |
| 69 69 | 
             
             * M17n functions
         | 
| 70 70 | 
             
             */
         | 
| 71 71 |  | 
| 72 | 
            -
            #ifdef M17N_SUPPORTED
         | 
| 73 72 | 
             
            /**
         | 
| 74 73 | 
             
             * The mapping from canonical encoding names in PostgreSQL to ones in Ruby.
         | 
| 75 74 | 
             
             */
         | 
| @@ -144,7 +143,7 @@ pg_find_or_create_johab(void) | |
| 144 143 |  | 
| 145 144 | 
             
            	enc_index = rb_define_dummy_encoding(aliases[0]);
         | 
| 146 145 | 
             
            	for (i = 1; i < sizeof(aliases)/sizeof(aliases[0]); ++i) {
         | 
| 147 | 
            -
            		 | 
| 146 | 
            +
            		rb_encdb_alias(aliases[i], aliases[0]);
         | 
| 148 147 | 
             
            	}
         | 
| 149 148 | 
             
            	return rb_enc_from_index(enc_index);
         | 
| 150 149 | 
             
            }
         | 
| @@ -229,8 +228,6 @@ pg_get_rb_encoding_as_pg_encoding( rb_encoding *enc ) | |
| 229 228 | 
             
            	return encname;
         | 
| 230 229 | 
             
            }
         | 
| 231 230 |  | 
| 232 | 
            -
            #endif /* M17N_SUPPORTED */
         | 
| 233 | 
            -
             | 
| 234 231 |  | 
| 235 232 | 
             
            /*
         | 
| 236 233 | 
             
             * Ensures that the given string has enough capacity to take expand_len
         | 
| @@ -260,45 +257,26 @@ pg_get_rb_encoding_as_pg_encoding( rb_encoding *enc ) | |
| 260 257 | 
             
             *   rb_str_set_len( string, current_out - RSTRING_PTR(string) );
         | 
| 261 258 | 
             
             *
         | 
| 262 259 | 
             
             */
         | 
| 263 | 
            -
             | 
| 264 | 
            -
             | 
| 265 | 
            -
             | 
| 266 | 
            -
            	 | 
| 267 | 
            -
            	 | 
| 268 | 
            -
             | 
| 269 | 
            -
            		 | 
| 270 | 
            -
            		 | 
| 271 | 
            -
             | 
| 272 | 
            -
            			rb_str_modify_expand( str, (curr_len + expand_len) * 2 - curr_capa );
         | 
| 273 | 
            -
            			curr_ptr = RSTRING_PTR(str) + curr_len;
         | 
| 274 | 
            -
            		}
         | 
| 275 | 
            -
            		if( end_ptr )
         | 
| 276 | 
            -
            			*end_ptr = RSTRING_PTR(str) + rb_str_capacity( str );
         | 
| 277 | 
            -
            		return curr_ptr;
         | 
| 278 | 
            -
            	}
         | 
| 279 | 
            -
            #else
         | 
| 280 | 
            -
            	/* Use the more portable version */
         | 
| 281 | 
            -
            	char *
         | 
| 282 | 
            -
            	pg_rb_str_ensure_capa( VALUE str, long expand_len, char *curr_ptr, char **end_ptr )
         | 
| 283 | 
            -
            	{
         | 
| 284 | 
            -
            		long curr_len = curr_ptr - RSTRING_PTR(str);
         | 
| 285 | 
            -
            		long curr_capa = RSTRING_LEN( str );
         | 
| 286 | 
            -
            		if( curr_capa < curr_len + expand_len ){
         | 
| 287 | 
            -
            			rb_str_resize( str, (curr_len + expand_len) * 2 - curr_capa );
         | 
| 288 | 
            -
            			curr_ptr = RSTRING_PTR(str) + curr_len;
         | 
| 289 | 
            -
            		}
         | 
| 290 | 
            -
            		if( end_ptr )
         | 
| 291 | 
            -
            			*end_ptr = RSTRING_PTR(str) + RSTRING_LEN(str);
         | 
| 292 | 
            -
            		return curr_ptr;
         | 
| 260 | 
            +
            char *
         | 
| 261 | 
            +
            pg_rb_str_ensure_capa( VALUE str, long expand_len, char *curr_ptr, char **end_ptr )
         | 
| 262 | 
            +
            {
         | 
| 263 | 
            +
            	long curr_len = curr_ptr - RSTRING_PTR(str);
         | 
| 264 | 
            +
            	long curr_capa = rb_str_capacity( str );
         | 
| 265 | 
            +
            	if( curr_capa < curr_len + expand_len ){
         | 
| 266 | 
            +
            		rb_str_set_len( str, curr_len );
         | 
| 267 | 
            +
            		rb_str_modify_expand( str, (curr_len + expand_len) * 2 - curr_capa );
         | 
| 268 | 
            +
            		curr_ptr = RSTRING_PTR(str) + curr_len;
         | 
| 293 269 | 
             
            	}
         | 
| 294 | 
            -
             | 
| 270 | 
            +
            	if( end_ptr )
         | 
| 271 | 
            +
            		*end_ptr = RSTRING_PTR(str) + rb_str_capacity( str );
         | 
| 272 | 
            +
            	return curr_ptr;
         | 
| 273 | 
            +
            }
         | 
| 295 274 |  | 
| 296 275 |  | 
| 297 276 | 
             
            /**************************************************************************
         | 
| 298 277 | 
             
             * Module Methods
         | 
| 299 278 | 
             
             **************************************************************************/
         | 
| 300 279 |  | 
| 301 | 
            -
            #ifdef HAVE_PQLIBVERSION
         | 
| 302 280 | 
             
            /*
         | 
| 303 281 | 
             
             * call-seq:
         | 
| 304 282 | 
             
             *   PG.library_version -> Integer
         | 
| @@ -316,7 +294,6 @@ pg_s_library_version(VALUE self) | |
| 316 294 | 
             
            	UNUSED( self );
         | 
| 317 295 | 
             
            	return INT2NUM(PQlibVersion());
         | 
| 318 296 | 
             
            }
         | 
| 319 | 
            -
            #endif
         | 
| 320 297 |  | 
| 321 298 |  | 
| 322 299 | 
             
            /*
         | 
| @@ -410,9 +387,7 @@ Init_pg_ext() | |
| 410 387 | 
             
            	/*************************
         | 
| 411 388 | 
             
            	 *  PG module methods
         | 
| 412 389 | 
             
            	 *************************/
         | 
| 413 | 
            -
            #ifdef HAVE_PQLIBVERSION
         | 
| 414 390 | 
             
            	rb_define_singleton_method( rb_mPG, "library_version", pg_s_library_version, 0 );
         | 
| 415 | 
            -
            #endif
         | 
| 416 391 | 
             
            	rb_define_singleton_method( rb_mPG, "isthreadsafe", pg_s_threadsafe_p, 0 );
         | 
| 417 392 | 
             
            	SINGLETON_ALIAS( rb_mPG, "is_threadsafe?", "isthreadsafe" );
         | 
| 418 393 | 
             
            	SINGLETON_ALIAS( rb_mPG, "threadsafe?", "isthreadsafe" );
         | 
| @@ -478,7 +453,6 @@ Init_pg_ext() | |
| 478 453 | 
             
            	/* Verbose error verbosity level (#set_error_verbosity) */
         | 
| 479 454 | 
             
            	rb_define_const(rb_mPGconstants, "PQERRORS_VERBOSE", INT2FIX(PQERRORS_VERBOSE));
         | 
| 480 455 |  | 
| 481 | 
            -
            #ifdef HAVE_PQPING
         | 
| 482 456 | 
             
            	/******     PG::Connection CLASS CONSTANTS: Check Server Status ******/
         | 
| 483 457 |  | 
| 484 458 | 
             
            	/* Server is accepting connections. */
         | 
| @@ -489,7 +463,6 @@ Init_pg_ext() | |
| 489 463 | 
             
            	rb_define_const(rb_mPGconstants, "PQPING_NO_RESPONSE", INT2FIX(PQPING_NO_RESPONSE));
         | 
| 490 464 | 
             
            	/* Connection not attempted (bad params). */
         | 
| 491 465 | 
             
            	rb_define_const(rb_mPGconstants, "PQPING_NO_ATTEMPT", INT2FIX(PQPING_NO_ATTEMPT));
         | 
| 492 | 
            -
            #endif
         | 
| 493 466 |  | 
| 494 467 | 
             
            	/******     PG::Connection CLASS CONSTANTS: Large Objects     ******/
         | 
| 495 468 |  | 
| @@ -524,13 +497,9 @@ Init_pg_ext() | |
| 524 497 | 
             
            	/* #result_status constant: A fatal error occurred. */
         | 
| 525 498 | 
             
            	rb_define_const(rb_mPGconstants, "PGRES_FATAL_ERROR", INT2FIX(PGRES_FATAL_ERROR));
         | 
| 526 499 | 
             
            	/* #result_status constant: Copy In/Out data transfer in progress. */
         | 
| 527 | 
            -
            #ifdef HAVE_CONST_PGRES_COPY_BOTH
         | 
| 528 500 | 
             
            	rb_define_const(rb_mPGconstants, "PGRES_COPY_BOTH", INT2FIX(PGRES_COPY_BOTH));
         | 
| 529 | 
            -
            #endif
         | 
| 530 501 | 
             
            	/* #result_status constant: Single tuple from larger resultset. */
         | 
| 531 | 
            -
            #ifdef HAVE_CONST_PGRES_SINGLE_TUPLE
         | 
| 532 502 | 
             
            	rb_define_const(rb_mPGconstants, "PGRES_SINGLE_TUPLE", INT2FIX(PGRES_SINGLE_TUPLE));
         | 
| 533 | 
            -
            #endif
         | 
| 534 503 |  | 
| 535 504 | 
             
            	/******     Result CONSTANTS: result error field codes      ******/
         | 
| 536 505 |  | 
| @@ -642,9 +611,7 @@ Init_pg_ext() | |
| 642 611 | 
             
            	/* Add the constants to the toplevel namespace */
         | 
| 643 612 | 
             
            	rb_include_module( rb_mPG, rb_mPGconstants );
         | 
| 644 613 |  | 
| 645 | 
            -
            #ifdef M17N_SUPPORTED
         | 
| 646 614 | 
             
            	enc_pg2ruby = st_init_numtable();
         | 
| 647 | 
            -
            #endif
         | 
| 648 615 |  | 
| 649 616 | 
             
            	/* Initialize the main extension classes */
         | 
| 650 617 | 
             
            	init_pg_connection();
         | 
    
        data/ext/pg.h
    CHANGED
    
    | @@ -18,89 +18,21 @@ | |
| 18 18 |  | 
| 19 19 | 
             
            /* Ruby headers */
         | 
| 20 20 | 
             
            #include "ruby.h"
         | 
| 21 | 
            -
            # | 
| 22 | 
            -
            # | 
| 23 | 
            -
            #elif HAVE_ST_H
         | 
| 24 | 
            -
            #	include "st.h"
         | 
| 25 | 
            -
            #endif
         | 
| 21 | 
            +
            #include "ruby/st.h"
         | 
| 22 | 
            +
            #include "ruby/encoding.h"
         | 
| 26 23 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
            # | 
| 31 | 
            -
            		extern int rb_encdb_alias(const char *, const char *);
         | 
| 32 | 
            -
            #		define ENC_ALIAS(name, orig) rb_encdb_alias((name), (orig))
         | 
| 33 | 
            -
            #	elif HAVE_RB_ENC_ALIAS
         | 
| 34 | 
            -
            		extern int rb_enc_alias(const char *, const char *);
         | 
| 35 | 
            -
            #		define ENC_ALIAS(name, orig) rb_enc_alias((name), (orig))
         | 
| 36 | 
            -
            #	else
         | 
| 37 | 
            -
            		extern int rb_enc_alias(const char *alias, const char *orig); /* declaration missing in Ruby 1.9.1 */
         | 
| 38 | 
            -
            #		define ENC_ALIAS(name, orig) rb_enc_alias((name), (orig))
         | 
| 39 | 
            -
            #	endif
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
            # if !defined(ENCODING_SET_INLINED)
         | 
| 43 | 
            -
            /* Rubinius doesn't define ENCODING_SET_INLINED, so we fall back to the more
         | 
| 44 | 
            -
             * portable version.
         | 
| 45 | 
            -
             */
         | 
| 46 | 
            -
            #  define PG_ENCODING_SET_NOCHECK(obj,i) \
         | 
| 47 | 
            -
            	do { \
         | 
| 48 | 
            -
            		rb_enc_set_index((obj), (i)); \
         | 
| 49 | 
            -
            	} while(0)
         | 
| 50 | 
            -
            # else
         | 
| 51 | 
            -
            #  define PG_ENCODING_SET_NOCHECK(obj,i) \
         | 
| 24 | 
            +
            /* exported by ruby-1.9.3+ but not declared */
         | 
| 25 | 
            +
            extern int rb_encdb_alias(const char *, const char *);
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            #define PG_ENCODING_SET_NOCHECK(obj,i) \
         | 
| 52 28 | 
             
            	do { \
         | 
| 53 29 | 
             
            		if ((i) < ENCODING_INLINE_MAX) \
         | 
| 54 30 | 
             
            			ENCODING_SET_INLINED((obj), (i)); \
         | 
| 55 31 | 
             
            		else \
         | 
| 56 32 | 
             
            			rb_enc_set_index((obj), (i)); \
         | 
| 57 33 | 
             
            	} while(0)
         | 
| 58 | 
            -
            # endif
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            #else
         | 
| 61 | 
            -
            #	define PG_ENCODING_SET_NOCHECK(obj,i) /* nothing */
         | 
| 62 | 
            -
            #endif
         | 
| 63 | 
            -
             | 
| 64 | 
            -
            #if RUBY_VM != 1
         | 
| 65 | 
            -
            #	define RUBY_18_COMPAT
         | 
| 66 | 
            -
            #endif
         | 
| 67 | 
            -
             | 
| 68 | 
            -
            #ifndef RARRAY_LEN
         | 
| 69 | 
            -
            #	define RARRAY_LEN(x) RARRAY((x))->len
         | 
| 70 | 
            -
            #endif /* RARRAY_LEN */
         | 
| 71 34 |  | 
| 72 | 
            -
            # | 
| 73 | 
            -
            #	define RSTRING_LEN(x) RSTRING((x))->len
         | 
| 74 | 
            -
            #endif /* RSTRING_LEN */
         | 
| 75 | 
            -
             | 
| 76 | 
            -
            #ifndef RSTRING_PTR
         | 
| 77 | 
            -
            #	define RSTRING_PTR(x) RSTRING((x))->ptr
         | 
| 78 | 
            -
            #endif /* RSTRING_PTR */
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            #ifndef StringValuePtr
         | 
| 81 | 
            -
            #	define StringValuePtr(x) STR2CSTR(x)
         | 
| 82 | 
            -
            #endif /* StringValuePtr */
         | 
| 83 | 
            -
             | 
| 84 | 
            -
            #ifdef RUBY_18_COMPAT
         | 
| 85 | 
            -
            #	define rb_io_stdio_file GetWriteFile
         | 
| 86 | 
            -
            #	include "rubyio.h"
         | 
| 87 | 
            -
            #else
         | 
| 88 | 
            -
            #	include "ruby/io.h"
         | 
| 89 | 
            -
            #endif
         | 
| 90 | 
            -
             | 
| 91 | 
            -
            #ifdef RUBINIUS
         | 
| 92 | 
            -
            	/* Workaround for wrong FIXNUM_MAX definition */
         | 
| 93 | 
            -
            	typedef intptr_t native_int;
         | 
| 94 | 
            -
            #endif
         | 
| 95 | 
            -
             | 
| 96 | 
            -
            #ifndef RETURN_SIZED_ENUMERATOR
         | 
| 97 | 
            -
            	#define RETURN_SIZED_ENUMERATOR(obj, argc, argv, size_fn) RETURN_ENUMERATOR((obj), (argc), (argv))
         | 
| 98 | 
            -
            #endif
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            #ifndef HAVE_RB_HASH_DUP
         | 
| 101 | 
            -
            	/* Rubinius doesn't define rb_hash_dup() */
         | 
| 102 | 
            -
            	#define rb_hash_dup(tuple) rb_funcall((tuple), rb_intern("dup"), 0)
         | 
| 103 | 
            -
            #endif
         | 
| 35 | 
            +
            #include "ruby/io.h"
         | 
| 104 36 |  | 
| 105 37 | 
             
            #ifndef timeradd
         | 
| 106 38 | 
             
            #define timeradd(a, b, result) \
         | 
| @@ -382,12 +314,10 @@ pgresult_get_this( VALUE self ) | |
| 382 314 | 
             
            }
         | 
| 383 315 |  | 
| 384 316 |  | 
| 385 | 
            -
            #ifdef M17N_SUPPORTED
         | 
| 386 317 | 
             
            rb_encoding * pg_get_pg_encoding_as_rb_encoding        _(( int ));
         | 
| 387 318 | 
             
            rb_encoding * pg_get_pg_encname_as_rb_encoding         _(( const char * ));
         | 
| 388 319 | 
             
            const char * pg_get_rb_encoding_as_pg_encoding         _(( rb_encoding * ));
         | 
| 389 320 | 
             
            rb_encoding *pg_conn_enc_get                           _(( PGconn * ));
         | 
| 390 | 
            -
            #endif /* M17N_SUPPORTED */
         | 
| 391 321 |  | 
| 392 322 | 
             
            void notice_receiver_proxy(void *arg, const PGresult *result);
         | 
| 393 323 | 
             
            void notice_processor_proxy(void *arg, const char *message);
         |