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
         |