Re: FUNC_MAX_ARGS benchmarks
От | Bruce Momjian |
---|---|
Тема | Re: FUNC_MAX_ARGS benchmarks |
Дата | |
Msg-id | 200208132039.g7DKdFP18063@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: FUNC_MAX_ARGS benchmarks (Christopher Kings-Lynne <chriskl@familyhealth.com.au>) |
Ответы |
Re: FUNC_MAX_ARGS benchmarks
|
Список | pgsql-hackers |
I have applied the attached patch which changes NAMEDATALEN to 64 and FUNC_MAX_ARGS/INDEX_MAX_KEYS to 32. Hopefully this will keep people happy for a few more years. initdb required. --------------------------------------------------------------------------- Christopher Kings-Lynne wrote: > > > NAMEDATALEN will be 64 or 128 in 7.3. At this point, we better decide > > > which one we prefer. > > > > > > The conservative approach would be to go for 64 and perhaps increase it > > > again in 7.4 after we get feedback and real-world usage. If we go to > > > 128, we will have trouble decreasing it if there are performance > > > problems. > > > > I guess I'd also agree with: > > FUNC_MAX_ARGS 32 > > NAMEDATALEN 64 > > and work on the performance issues for 7.4. > > I agree too. > > Chris > > > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 Index: doc/FAQ_DEV =================================================================== RCS file: /cvsroot/pgsql-server/doc/FAQ_DEV,v retrieving revision 1.43 diff -c -r1.43 FAQ_DEV *** doc/FAQ_DEV 17 Apr 2002 05:12:39 -0000 1.43 --- doc/FAQ_DEV 13 Aug 2002 20:17:54 -0000 *************** *** 560,566 **** Table, column, type, function, and view names are stored in system tables in columns of type Name. Name is a fixed-length, null-terminated type of NAMEDATALEN bytes. (The default value for ! NAMEDATALEN is 32 bytes.) typedef struct nameData { char data[NAMEDATALEN]; --- 560,566 ---- Table, column, type, function, and view names are stored in system tables in columns of type Name. Name is a fixed-length, null-terminated type of NAMEDATALEN bytes. (The default value for ! NAMEDATALEN is 64 bytes.) typedef struct nameData { char data[NAMEDATALEN]; Index: doc/src/sgml/datatype.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/datatype.sgml,v retrieving revision 1.97 diff -c -r1.97 datatype.sgml *** doc/src/sgml/datatype.sgml 5 Aug 2002 19:43:30 -0000 1.97 --- doc/src/sgml/datatype.sgml 13 Aug 2002 20:17:56 -0000 *************** *** 914,920 **** <productname>PostgreSQL</productname>. The <type>name</type> type exists <emphasis>only</emphasis> for storage of internal catalog names and is not intended for use by the general user. Its length ! is currently defined as 32 bytes (31 usable characters plus terminator) but should be referenced using the macro <symbol>NAMEDATALEN</symbol>. The length is set at compile time (and is therefore adjustable for special uses); the default --- 914,920 ---- <productname>PostgreSQL</productname>. The <type>name</type> type exists <emphasis>only</emphasis> for storage of internal catalog names and is not intended for use by the general user. Its length ! is currently defined as 64 bytes (63 usable characters plus terminator) but should be referenced using the macro <symbol>NAMEDATALEN</symbol>. The length is set at compile time (and is therefore adjustable for special uses); the default *************** *** 943,950 **** </row> <row> <entry>name</entry> ! <entry>32 bytes</entry> ! <entry>Thirty-one character internal type</entry> </row> </tbody> </tgroup> --- 943,950 ---- </row> <row> <entry>name</entry> ! <entry>64 bytes</entry> ! <entry>Sixty-three character internal type</entry> </row> </tbody> </tgroup> Index: doc/src/sgml/indices.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/indices.sgml,v retrieving revision 1.35 diff -c -r1.35 indices.sgml *** doc/src/sgml/indices.sgml 30 Jul 2002 17:34:37 -0000 1.35 --- doc/src/sgml/indices.sgml 13 Aug 2002 20:17:56 -0000 *************** *** 236,242 **** <para> Currently, only the B-tree and GiST implementations support multicolumn ! indexes. Up to 16 columns may be specified. (This limit can be altered when building <productname>PostgreSQL</productname>; see the file <filename>pg_config.h</filename>.) </para> --- 236,242 ---- <para> Currently, only the B-tree and GiST implementations support multicolumn ! indexes. Up to 32 columns may be specified. (This limit can be altered when building <productname>PostgreSQL</productname>; see the file <filename>pg_config.h</filename>.) </para> Index: doc/src/sgml/manage.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/manage.sgml,v retrieving revision 1.22 diff -c -r1.22 manage.sgml *** doc/src/sgml/manage.sgml 10 Aug 2002 19:35:00 -0000 1.22 --- doc/src/sgml/manage.sgml 13 Aug 2002 20:17:57 -0000 *************** *** 70,76 **** You automatically become the database administrator of the database you just created. Database names must have an alphabetic first ! character and are limited to 31 characters in length. <ProductName>PostgreSQL</ProductName> allows you to create any number of databases at a given site. </Para> --- 70,76 ---- You automatically become the database administrator of the database you just created. Database names must have an alphabetic first ! character and are limited to 63 characters in length. <ProductName>PostgreSQL</ProductName> allows you to create any number of databases at a given site. </Para> Index: doc/src/sgml/start.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/start.sgml,v retrieving revision 1.23 diff -c -r1.23 start.sgml *** doc/src/sgml/start.sgml 10 Aug 2002 19:35:00 -0000 1.23 --- doc/src/sgml/start.sgml 13 Aug 2002 20:17:57 -0000 *************** *** 231,237 **** You can also create databases with other names. <productname>PostgreSQL</productname> allows you to create any number of databases at a given site. Database names must have an ! alphabetic first character and are limited to 31 characters in length. A convenient choice is to create a database with the same name as your current user name. Many tools assume that database name as the default, so it can save you some typing. To create --- 231,237 ---- You can also create databases with other names. <productname>PostgreSQL</productname> allows you to create any number of databases at a given site. Database names must have an ! alphabetic first character and are limited to 63 characters in length. A convenient choice is to create a database with the same name as your current user name. Many tools assume that database name as the default, so it can save you some typing. To create Index: doc/src/sgml/syntax.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/syntax.sgml,v retrieving revision 1.65 diff -c -r1.65 syntax.sgml *** doc/src/sgml/syntax.sgml 10 Aug 2002 19:01:53 -0000 1.65 --- doc/src/sgml/syntax.sgml 13 Aug 2002 20:17:58 -0000 *************** *** 120,127 **** The system uses no more than <symbol>NAMEDATALEN</symbol>-1 characters of an identifier; longer names can be written in commands, but they will be truncated. By default, ! <symbol>NAMEDATALEN</symbol> is 32 so the maximum identifier length ! is 31 (but at the time the system is built, <symbol>NAMEDATALEN</symbol> can be changed in <filename>src/include/postgres_ext.h</filename>). </para> --- 120,127 ---- The system uses no more than <symbol>NAMEDATALEN</symbol>-1 characters of an identifier; longer names can be written in commands, but they will be truncated. By default, ! <symbol>NAMEDATALEN</symbol> is 64 so the maximum identifier length ! is 63 (but at the time the system is built, <symbol>NAMEDATALEN</symbol> can be changed in <filename>src/include/postgres_ext.h</filename>). </para> Index: doc/src/sgml/ref/create_index.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/create_index.sgml,v retrieving revision 1.35 diff -c -r1.35 create_index.sgml *** doc/src/sgml/ref/create_index.sgml 30 Jul 2002 17:34:37 -0000 1.35 --- doc/src/sgml/ref/create_index.sgml 13 Aug 2002 20:17:58 -0000 *************** *** 339,345 **** <para> Currently, only the B-tree and gist access methods support multicolumn ! indexes. Up to 16 keys may be specified by default (this limit can be altered when building <application>PostgreSQL</application>). Only B-tree currently supports unique indexes. --- 339,345 ---- <para> Currently, only the B-tree and gist access methods support multicolumn ! indexes. Up to 32 keys may be specified by default (this limit can be altered when building <application>PostgreSQL</application>). Only B-tree currently supports unique indexes. Index: doc/src/sgml/ref/current_user.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/current_user.sgml,v retrieving revision 1.6 diff -c -r1.6 current_user.sgml *** doc/src/sgml/ref/current_user.sgml 21 Apr 2002 19:02:39 -0000 1.6 --- doc/src/sgml/ref/current_user.sgml 13 Aug 2002 20:17:59 -0000 *************** *** 77,83 **** Notes </TITLE> <PARA> ! Data type "name" is a non-standard 31-character type for storing system identifiers. </PARA> </REFSECT2> --- 77,83 ---- Notes </TITLE> <PARA> ! Data type "name" is a non-standard 63-character type for storing system identifiers. </PARA> </REFSECT2> Index: doc/src/sgml/ref/listen.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/listen.sgml,v retrieving revision 1.13 diff -c -r1.13 listen.sgml *** doc/src/sgml/ref/listen.sgml 21 Apr 2002 19:02:39 -0000 1.13 --- doc/src/sgml/ref/listen.sgml 13 Aug 2002 20:17:59 -0000 *************** *** 146,152 **** it need not correspond to the name of any actual table. If <replaceable class="PARAMETER">notifyname</replaceable> is enclosed in double-quotes, it need not even be a syntactically ! valid name, but can be any string up to 31 characters long. </para> <para> In some previous releases of --- 146,152 ---- it need not correspond to the name of any actual table. If <replaceable class="PARAMETER">notifyname</replaceable> is enclosed in double-quotes, it need not even be a syntactically ! valid name, but can be any string up to 63 characters long. </para> <para> In some previous releases of Index: doc/src/sgml/ref/notify.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/notify.sgml,v retrieving revision 1.17 diff -c -r1.17 notify.sgml *** doc/src/sgml/ref/notify.sgml 21 Apr 2002 19:02:39 -0000 1.17 --- doc/src/sgml/ref/notify.sgml 13 Aug 2002 20:17:59 -0000 *************** *** 180,186 **** it need not correspond to the name of any actual table. If <replaceable class="PARAMETER">name</replaceable> is enclosed in double-quotes, it need not even be a syntactically ! valid name, but can be any string up to 31 characters long. </para> <para> In some previous releases of --- 180,186 ---- it need not correspond to the name of any actual table. If <replaceable class="PARAMETER">name</replaceable> is enclosed in double-quotes, it need not even be a syntactically ! valid name, but can be any string up to 63 characters long. </para> <para> In some previous releases of Index: doc/src/sgml/ref/unlisten.sgml =================================================================== RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/unlisten.sgml,v retrieving revision 1.18 diff -c -r1.18 unlisten.sgml *** doc/src/sgml/ref/unlisten.sgml 21 Apr 2002 19:02:39 -0000 1.18 --- doc/src/sgml/ref/unlisten.sgml 13 Aug 2002 20:17:59 -0000 *************** *** 114,120 **** <para> <replaceable class="PARAMETER">notifyname</replaceable> need not be a valid class name but can be any string valid ! as a name up to 32 characters long. </para> <para> The backend does not complain if you UNLISTEN something you were not --- 114,120 ---- <para> <replaceable class="PARAMETER">notifyname</replaceable> need not be a valid class name but can be any string valid ! as a name up to 64 characters long. </para> <para> The backend does not complain if you UNLISTEN something you were not Index: src/bin/psql/command.c =================================================================== RCS file: /cvsroot/pgsql-server/src/bin/psql/command.c,v retrieving revision 1.75 diff -c -r1.75 command.c *** src/bin/psql/command.c 10 Aug 2002 03:56:23 -0000 1.75 --- src/bin/psql/command.c 13 Aug 2002 20:18:01 -0000 *************** *** 1513,1519 **** sys = malloc(strlen(editorName) + strlen(fname) + 32 + 1); if (!sys) return false; ! sprintf(sys, "exec %s %s", editorName, fname); result = system(sys); if (result == -1) psql_error("could not start editor %s\n", editorName); --- 1513,1519 ---- sys = malloc(strlen(editorName) + strlen(fname) + 32 + 1); if (!sys) return false; ! snprintf(sys, 32, "exec %s %s", editorName, fname); result = system(sys); if (result == -1) psql_error("could not start editor %s\n", editorName); Index: src/include/pg_config.h.in =================================================================== RCS file: /cvsroot/pgsql-server/src/include/pg_config.h.in,v retrieving revision 1.26 diff -c -r1.26 pg_config.h.in *** src/include/pg_config.h.in 31 Jul 2002 17:19:54 -0000 1.26 --- src/include/pg_config.h.in 13 Aug 2002 20:18:02 -0000 *************** *** 162,168 **** * switch statement in fmgr_oldstyle() in src/backend/utils/fmgr/fmgr.c. * But consider converting such functions to new-style instead... */ ! #define INDEX_MAX_KEYS 16 #define FUNC_MAX_ARGS INDEX_MAX_KEYS /* --- 162,168 ---- * switch statement in fmgr_oldstyle() in src/backend/utils/fmgr/fmgr.c. * But consider converting such functions to new-style instead... */ ! #define INDEX_MAX_KEYS 32 #define FUNC_MAX_ARGS INDEX_MAX_KEYS /* Index: src/include/postgres_ext.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/postgres_ext.h,v retrieving revision 1.10 diff -c -r1.10 postgres_ext.h *** src/include/postgres_ext.h 30 Apr 2002 19:53:03 -0000 1.10 --- src/include/postgres_ext.h 13 Aug 2002 20:18:02 -0000 *************** *** 41,46 **** * * NOTE that databases with different NAMEDATALEN's cannot interoperate! */ ! #define NAMEDATALEN 32 #endif --- 41,46 ---- * * NOTE that databases with different NAMEDATALEN's cannot interoperate! */ ! #define NAMEDATALEN 64 #endif Index: src/include/catalog/catversion.h =================================================================== RCS file: /cvsroot/pgsql-server/src/include/catalog/catversion.h,v retrieving revision 1.147 diff -c -r1.147 catversion.h *** src/include/catalog/catversion.h 9 Aug 2002 16:45:14 -0000 1.147 --- src/include/catalog/catversion.h 13 Aug 2002 20:18:02 -0000 *************** *** 53,58 **** */ /* yyyymmddN */ ! #define CATALOG_VERSION_NO 200208091 #endif --- 53,58 ---- */ /* yyyymmddN */ ! #define CATALOG_VERSION_NO 200208131 #endif Index: src/interfaces/jdbc/org/postgresql/errors.properties =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/errors.properties,v retrieving revision 1.13 diff -c -r1.13 errors.properties *** src/interfaces/jdbc/org/postgresql/errors.properties 24 Jun 2002 06:16:27 -0000 1.13 --- src/interfaces/jdbc/org/postgresql/errors.properties 13 Aug 2002 20:18:02 -0000 *************** *** 61,67 **** postgresql.res.colrange:The column index is out of range. postgresql.res.nextrequired:Result set not positioned properly, perhaps you need to call next(). postgresql.serial.interface:You cannot serialize an interface. ! postgresql.serial.namelength:Class & Package name length cannot be longer than 32 characters. {0} is {1} characters. postgresql.serial.noclass:No class found for {0} postgresql.serial.table:The table for {0} is not in the database. Contact the DBA, as the database is in an inconsistentstate. postgresql.serial.underscore:Class names may not have _ in them. You supplied {0}. --- 61,67 ---- postgresql.res.colrange:The column index is out of range. postgresql.res.nextrequired:Result set not positioned properly, perhaps you need to call next(). postgresql.serial.interface:You cannot serialize an interface. ! postgresql.serial.namelength:Class & Package name length cannot be longer than 64 characters. {0} is {1} characters. postgresql.serial.noclass:No class found for {0} postgresql.serial.table:The table for {0} is not in the database. Contact the DBA, as the database is in an inconsistentstate. postgresql.serial.underscore:Class names may not have _ in them. You supplied {0}. Index: src/interfaces/jdbc/org/postgresql/util/Serialize.java =================================================================== RCS file: /cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/util/Serialize.java,v retrieving revision 1.11 diff -c -r1.11 Serialize.java *** src/interfaces/jdbc/org/postgresql/util/Serialize.java 23 Jul 2002 03:59:55 -0000 1.11 --- src/interfaces/jdbc/org/postgresql/util/Serialize.java 13 Aug 2002 20:18:03 -0000 *************** *** 57,63 **** * There are a number of limitations placed on the java class to be * used by Serialize: * <ul> ! * <li>The class name must be less than 32 chars long and must be all lowercase. * This is due to limitations in Postgres about the size of table names. * The name must be all lowercase since table names in Postgres are * case insensitive and the relname is stored in lowercase. Unless some --- 57,63 ---- * There are a number of limitations placed on the java class to be * used by Serialize: * <ul> ! * <li>The class name must be less than 64 chars long and must be all lowercase. * This is due to limitations in Postgres about the size of table names. * The name must be all lowercase since table names in Postgres are * case insensitive and the relname is stored in lowercase. Unless some *************** *** 577,583 **** * * Because of this, a Class name may not have _ in the name.<p> * Another limitation, is that the entire class name (including packages) ! * cannot be longer than 32 characters (a limit forced by PostgreSQL). * * @param name Class name * @return PostgreSQL table name --- 577,583 ---- * * Because of this, a Class name may not have _ in the name.<p> * Another limitation, is that the entire class name (including packages) ! * cannot be longer than 64 characters (a limit forced by PostgreSQL). * * @param name Class name * @return PostgreSQL table name *************** *** 590,605 **** if (name.indexOf("_") > -1) throw new PSQLException("postgresql.serial.underscore"); ! // Postgres table names can only be 32 character long. ! // Reserve 1 char, so allow only up to 31 chars. // If the full class name with package is too long // then just use the class name. If the class name is // too long throw an exception. // ! if ( name.length() > 31 ) { name = name.substring(name.lastIndexOf(".") + 1); ! if ( name.length() > 31 ) throw new PSQLException("postgresql.serial.namelength", name, new Integer(name.length())); } return name.replace('.', '_'); --- 590,605 ---- if (name.indexOf("_") > -1) throw new PSQLException("postgresql.serial.underscore"); ! // Postgres table names can only be 64 character long. ! // Reserve 1 char, so allow only up to 63 chars. // If the full class name with package is too long // then just use the class name. If the class name is // too long throw an exception. // ! if ( name.length() > 63 ) { name = name.substring(name.lastIndexOf(".") + 1); ! if ( name.length() > 63 ) throw new PSQLException("postgresql.serial.namelength", name, new Integer(name.length())); } return name.replace('.', '_'); Index: src/test/regress/expected/name.out =================================================================== RCS file: /cvsroot/pgsql-server/src/test/regress/expected/name.out,v retrieving revision 1.5 diff -c -r1.5 name.out *** src/test/regress/expected/name.out 4 Jan 2000 16:19:34 -0000 1.5 --- src/test/regress/expected/name.out 13 Aug 2002 20:18:04 -0000 *************** *** 19,104 **** -- -- CREATE TABLE NAME_TBL(f1 name); ! INSERT INTO NAME_TBL(f1) VALUES ('ABCDEFGHIJKLMNOP'); ! INSERT INTO NAME_TBL(f1) VALUES ('abcdefghijklmnop'); INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); INSERT INTO NAME_TBL(f1) VALUES ('343f%2a'); INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf'); INSERT INTO NAME_TBL(f1) VALUES (''); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); SELECT '' AS seven, NAME_TBL.*; seven | f1 ! -------+--------------------------------- ! | ABCDEFGHIJKLMNOP ! | abcdefghijklmnop | asdfghjkl; | 343f%2a | d34aaasdf | ! | 1234567890ABCDEFGHIJKLMNOPQRSTU (7 rows) ! SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> 'ABCDEFGHIJKLMNOP'; six | f1 ! -----+--------------------------------- ! | abcdefghijklmnop | asdfghjkl; | 343f%2a | d34aaasdf | ! | 1234567890ABCDEFGHIJKLMNOPQRSTU ! (6 rows) ! SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = 'ABCDEFGHIJKLMNOP'; one | f1 ! -----+------------------ ! | ABCDEFGHIJKLMNOP ! (1 row) ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < 'ABCDEFGHIJKLMNOP'; three | f1 ! -------+--------------------------------- ! | 343f%2a | ! | 1234567890ABCDEFGHIJKLMNOPQRSTU ! (3 rows) ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= 'ABCDEFGHIJKLMNOP'; four | f1 ! ------+--------------------------------- ! | ABCDEFGHIJKLMNOP ! | 343f%2a | ! | 1234567890ABCDEFGHIJKLMNOPQRSTU ! (4 rows) ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > 'ABCDEFGHIJKLMNOP'; three | f1 ! -------+------------------ ! | abcdefghijklmnop | asdfghjkl; | d34aaasdf ! (3 rows) ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= 'ABCDEFGHIJKLMNOP'; four | f1 ! ------+------------------ ! | ABCDEFGHIJKLMNOP ! | abcdefghijklmnop | asdfghjkl; | d34aaasdf ! (4 rows) SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; seven | f1 ! -------+--------------------------------- ! | ABCDEFGHIJKLMNOP ! | abcdefghijklmnop | asdfghjkl; | 343f%2a | d34aaasdf | ! | 1234567890ABCDEFGHIJKLMNOPQRSTU (7 rows) SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; --- 19,104 ---- -- -- CREATE TABLE NAME_TBL(f1 name); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr'); INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); INSERT INTO NAME_TBL(f1) VALUES ('343f%2a'); INSERT INTO NAME_TBL(f1) VALUES ('d34aaasdf'); INSERT INTO NAME_TBL(f1) VALUES (''); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); SELECT '' AS seven, NAME_TBL.*; seven | f1 ! -------+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | asdfghjkl; | 343f%2a | d34aaasdf | ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ (7 rows) ! SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; six | f1 ! -----+----------------------------------------------------------------- ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | asdfghjkl; | 343f%2a | d34aaasdf | ! (5 rows) ! SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; one | f1 ! -----+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! (2 rows) ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; three | f1 ! -------+---- | ! (1 row) ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; four | f1 ! ------+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ | ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! (3 rows) ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; three | f1 ! -------+----------------------------------------------------------------- ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | asdfghjkl; + | 343f%2a | d34aaasdf ! (4 rows) ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; four | f1 ! ------+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | asdfghjkl; + | 343f%2a | d34aaasdf ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! (6 rows) SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; seven | f1 ! -------+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | asdfghjkl; | 343f%2a | d34aaasdf | ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ (7 rows) SELECT '' AS zero, c.f1 FROM NAME_TBL c WHERE c.f1 !~ '.*'; *************** *** 108,118 **** SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; three | f1 ! -------+--------------------------------- | 343f%2a | d34aaasdf ! | 1234567890ABCDEFGHIJKLMNOPQRSTU ! (3 rows) SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; two | f1 --- 108,120 ---- SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '[0-9]'; three | f1 ! -------+----------------------------------------------------------------- ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! | 1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopq | 343f%2a | d34aaasdf ! | 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQ ! (5 rows) SELECT '' AS two, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*asdf.*'; two | f1 Index: src/test/regress/sql/name.sql =================================================================== RCS file: /cvsroot/pgsql-server/src/test/regress/sql/name.sql,v retrieving revision 1.5 diff -c -r1.5 name.sql *** src/test/regress/sql/name.sql 4 Jan 2000 16:21:02 -0000 1.5 --- src/test/regress/sql/name.sql 13 Aug 2002 20:18:04 -0000 *************** *** 14,22 **** CREATE TABLE NAME_TBL(f1 name); ! INSERT INTO NAME_TBL(f1) VALUES ('ABCDEFGHIJKLMNOP'); ! INSERT INTO NAME_TBL(f1) VALUES ('abcdefghijklmnop'); INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); --- 14,22 ---- CREATE TABLE NAME_TBL(f1 name); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr'); INSERT INTO NAME_TBL(f1) VALUES ('asdfghjkl;'); *************** *** 26,47 **** INSERT INTO NAME_TBL(f1) VALUES (''); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); SELECT '' AS seven, NAME_TBL.*; ! SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> 'ABCDEFGHIJKLMNOP'; ! SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = 'ABCDEFGHIJKLMNOP'; ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < 'ABCDEFGHIJKLMNOP'; ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= 'ABCDEFGHIJKLMNOP'; ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > 'ABCDEFGHIJKLMNOP'; ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= 'ABCDEFGHIJKLMNOP'; SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*'; --- 26,47 ---- INSERT INTO NAME_TBL(f1) VALUES (''); ! INSERT INTO NAME_TBL(f1) VALUES ('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ'); SELECT '' AS seven, NAME_TBL.*; ! SELECT '' AS six, c.f1 FROM NAME_TBL c WHERE c.f1 <> '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; ! SELECT '' AS one, c.f1 FROM NAME_TBL c WHERE c.f1 = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 < '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 <= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; ! SELECT '' AS three, c.f1 FROM NAME_TBL c WHERE c.f1 > '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; ! SELECT '' AS four, c.f1 FROM NAME_TBL c WHERE c.f1 >= '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQR'; SELECT '' AS seven, c.f1 FROM NAME_TBL c WHERE c.f1 ~ '.*';
В списке pgsql-hackers по дате отправления: