Index: backend/parser/keywords.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/keywords.c,v
retrieving revision 1.194
diff -c -r1.194 keywords.c
*** backend/parser/keywords.c	1 Jan 2008 19:45:50 -0000	1.194
--- backend/parser/keywords.c	1 Jul 2008 14:29:26 -0000
***************
*** 33,38 ****
--- 33,39 ----
  	/* name, value, category */
  	{"abort", ABORT_P, UNRESERVED_KEYWORD},
  	{"absolute", ABSOLUTE_P, UNRESERVED_KEYWORD},
+ 	{"accent", ACCENT, UNRESERVED_KEYWORD},
  	{"access", ACCESS, UNRESERVED_KEYWORD},
  	{"action", ACTION, UNRESERVED_KEYWORD},
  	{"add", ADD_P, UNRESERVED_KEYWORD},
***************
*** 81,87 ****
  	{"close", CLOSE, UNRESERVED_KEYWORD},
  	{"cluster", CLUSTER, UNRESERVED_KEYWORD},
  	{"coalesce", COALESCE, COL_NAME_KEYWORD},
! 	{"collate", COLLATE, RESERVED_KEYWORD},
  	{"column", COLUMN, RESERVED_KEYWORD},
  	{"comment", COMMENT, UNRESERVED_KEYWORD},
  	{"commit", COMMIT, UNRESERVED_KEYWORD},
--- 82,89 ----
  	{"close", CLOSE, UNRESERVED_KEYWORD},
  	{"cluster", CLUSTER, UNRESERVED_KEYWORD},
  	{"coalesce", COALESCE, COL_NAME_KEYWORD},
! 	{"collate", COLLATE, UNRESERVED_KEYWORD},
! 	{"collation", COLLATION, UNRESERVED_KEYWORD},
  	{"column", COLUMN, RESERVED_KEYWORD},
  	{"comment", COMMENT, UNRESERVED_KEYWORD},
  	{"commit", COMMIT, UNRESERVED_KEYWORD},
***************
*** 206,211 ****
--- 208,215 ----
  	{"language", LANGUAGE, UNRESERVED_KEYWORD},
  	{"large", LARGE_P, UNRESERVED_KEYWORD},
  	{"last", LAST_P, UNRESERVED_KEYWORD},
+ 	{"lccollate", LCCOLLATE, UNRESERVED_KEYWORD},
+ 	{"lcctype", LCCTYPE, UNRESERVED_KEYWORD},
  	{"leading", LEADING, RESERVED_KEYWORD},
  	{"least", LEAST, COL_NAME_KEYWORD},
  	{"left", LEFT, TYPE_FUNC_NAME_KEYWORD},
***************
*** 270,275 ****
--- 274,280 ----
  	{"overlay", OVERLAY, COL_NAME_KEYWORD},
  	{"owned", OWNED, UNRESERVED_KEYWORD},
  	{"owner", OWNER, UNRESERVED_KEYWORD},
+ 	{"pad", PAD, UNRESERVED_KEYWORD},
  	{"parser", PARSER, UNRESERVED_KEYWORD},
  	{"partial", PARTIAL, UNRESERVED_KEYWORD},
  	{"password", PASSWORD, UNRESERVED_KEYWORD},
***************
*** 317,322 ****
--- 322,328 ----
  	{"second", SECOND_P, UNRESERVED_KEYWORD},
  	{"security", SECURITY, UNRESERVED_KEYWORD},
  	{"select", SELECT, RESERVED_KEYWORD},
+ 	{"sensitive", SENSITIVE, UNRESERVED_KEYWORD},
  	{"sequence", SEQUENCE, UNRESERVED_KEYWORD},
  	{"serializable", SERIALIZABLE, UNRESERVED_KEYWORD},
  	{"session", SESSION, UNRESERVED_KEYWORD},
***************
*** 329,334 ****
--- 335,341 ----
  	{"simple", SIMPLE, UNRESERVED_KEYWORD},
  	{"smallint", SMALLINT, COL_NAME_KEYWORD},
  	{"some", SOME, RESERVED_KEYWORD},
+ 	{"space", SPACE, UNRESERVED_KEYWORD},
  	{"stable", STABLE, UNRESERVED_KEYWORD},
  	{"standalone", STANDALONE_P, UNRESERVED_KEYWORD},
  	{"start", START, UNRESERVED_KEYWORD},
***************
*** 337,342 ****
--- 344,350 ----
  	{"stdin", STDIN, UNRESERVED_KEYWORD},
  	{"stdout", STDOUT, UNRESERVED_KEYWORD},
  	{"storage", STORAGE, UNRESERVED_KEYWORD},
+ 	{"strcolfn", STRCOLFN, UNRESERVED_KEYWORD},
  	{"strict", STRICT_P, UNRESERVED_KEYWORD},
  	{"strip", STRIP_P, UNRESERVED_KEYWORD},
  	{"substring", SUBSTRING, COL_NAME_KEYWORD},
Index: backend/parser/gram.y
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.605
diff -c -r2.605 gram.y
*** backend/parser/gram.y	1 Jan 2008 19:45:50 -0000	2.605
--- backend/parser/gram.y	1 Jul 2008 14:29:25 -0000
***************
*** 149,168 ****
  }
  
  %type <node>	stmt schema_stmt
! 		AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterGroupStmt
! 		AlterObjectSchemaStmt AlterOwnerStmt AlterSeqStmt AlterTableStmt
! 		AlterUserStmt AlterUserSetStmt AlterRoleStmt AlterRoleSetStmt
! 		AnalyzeStmt ClosePortalStmt ClusterStmt CommentStmt
! 		ConstraintsSetStmt CopyStmt CreateAsStmt CreateCastStmt
! 		CreateDomainStmt CreateGroupStmt CreateOpClassStmt
! 		CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt
  		CreateSchemaStmt CreateSeqStmt CreateStmt CreateTableSpaceStmt
  		CreateAssertStmt CreateTrigStmt CreateUserStmt CreateRoleStmt
! 		CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt
! 		DropGroupStmt DropOpClassStmt DropOpFamilyStmt DropPLangStmt DropStmt
! 		DropAssertStmt DropTrigStmt DropRuleStmt DropCastStmt DropRoleStmt
! 		DropUserStmt DropdbStmt DropTableSpaceStmt ExplainStmt FetchStmt
! 		GrantStmt GrantRoleStmt IndexStmt InsertStmt ListenStmt LoadStmt
  		LockStmt NotifyStmt ExplainableStmt PreparableStmt
  		CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt
  		RemoveFuncStmt RemoveOperStmt RenameStmt RevokeStmt RevokeRoleStmt
--- 149,167 ----
  }
  
  %type <node>	stmt schema_stmt
! 		AlterDatabaseStmt AlterDatabaseSetStmt AlterDomainStmt AlterGroupStmt 
! 		AlterObjectSchemaStmt AlterOwnerStmt AlterSeqStmt AlterTableStmt 
! 		AlterUserStmt AlterUserSetStmt AlterRoleStmt AlterRoleSetStmt AnalyzeStmt 
! 		ClosePortalStmt ClusterStmt CommentStmt	ConstraintsSetStmt CopyStmt 
! 		CreateAsStmt CreateCastStmt	CreateCollationStmt CreateDomainStmt 
! 		CreateGroupStmt CreateOpClassStmt CreateOpFamilyStmt AlterOpFamilyStmt CreatePLangStmt
  		CreateSchemaStmt CreateSeqStmt CreateStmt CreateTableSpaceStmt
  		CreateAssertStmt CreateTrigStmt CreateUserStmt CreateRoleStmt
! 		CreatedbStmt DeclareCursorStmt DefineStmt DeleteStmt DiscardStmt 
! 		DropCollationStmt DropGroupStmt DropOpClassStmt DropOpFamilyStmt 
! 		DropPLangStmt DropStmt DropAssertStmt DropTrigStmt DropRuleStmt DropCastStmt 
! 		DropRoleStmt DropUserStmt DropdbStmt DropTableSpaceStmt ExplainStmt 
! 		FetchStmt GrantStmt GrantRoleStmt IndexStmt InsertStmt ListenStmt LoadStmt
  		LockStmt NotifyStmt ExplainableStmt PreparableStmt
  		CreateFunctionStmt AlterFunctionStmt ReindexStmt RemoveAggrStmt
  		RemoveFuncStmt RemoveOperStmt RenameStmt RevokeStmt RevokeRoleStmt
***************
*** 290,295 ****
--- 289,297 ----
  %type <list>	OptSeqList
  %type <defelt>	OptSeqElem
  
+ %type <list>	OptCollationList
+ %type <defelt>	OptCollationElem
+ 
  %type <istmt>	insert_rest
  
  %type <vsetstmt> set_rest SetResetClause
***************
*** 366,372 ****
   */
  
  /* ordinary key words in alphabetical order */
! %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER
  	AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
  	ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION
  
--- 368,374 ----
   */
  
  /* ordinary key words in alphabetical order */
! %token <keyword> ABORT_P ABSOLUTE_P ACCENT ACCESS ACTION ADD_P ADMIN AFTER
  	AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC
  	ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION
  
***************
*** 375,381 ****
  
  	CACHE CALLED CASCADE CASCADED CASE CAST CHAIN CHAR_P
  	CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
! 	CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT
  	COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS
  	CONTENT_P CONVERSION_P COPY COST CREATE CREATEDB
  	CREATEROLE CREATEUSER CROSS CSV CURRENT_P CURRENT_DATE CURRENT_ROLE
--- 377,383 ----
  
  	CACHE CALLED CASCADE CASCADED CASE CAST CHAIN CHAR_P
  	CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
! 	CLUSTER COALESCE COLLATE COLLATION COLUMN COMMENT COMMIT
  	COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS
  	CONTENT_P CONVERSION_P COPY COST CREATE CREATEDB
  	CREATEROLE CREATEUSER CROSS CSV CURRENT_P CURRENT_DATE CURRENT_ROLE
***************
*** 404,410 ****
  
  	KEY
  
! 	LANCOMPILER LANGUAGE LARGE_P LAST_P LEADING LEAST LEFT LEVEL
  	LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
  	LOCK_P LOGIN_P
  
--- 406,412 ----
  
  	KEY
  
! 	LANCOMPILER LANGUAGE LARGE_P LAST_P LCCOLLATE LCCTYPE LEADING LEAST LEFT LEVEL
  	LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
  	LOCK_P LOGIN_P
  
***************
*** 417,423 ****
  	OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR
  	ORDER OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER
  
! 	PARSER PARTIAL PASSWORD PLACING PLANS POSITION
  	PRECISION PRESERVE PREPARE PREPARED PRIMARY
  	PRIOR PRIVILEGES PROCEDURAL PROCEDURE
  
--- 419,425 ----
  	OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR
  	ORDER OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER
  
! 	PAD PARSER PARTIAL PASSWORD PLACING PLANS POSITION
  	PRECISION PRESERVE PREPARE PREPARED PRIMARY
  	PRIOR PRIVILEGES PROCEDURAL PROCEDURE
  
***************
*** 427,437 ****
  	REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE
  	RIGHT ROLE ROLLBACK ROW ROWS RULE
  
! 	SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE
! 	SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
! 	SHOW SIMILAR SIMPLE SMALLINT SOME STABLE STANDALONE_P START STATEMENT
! 	STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P
! 	SYMMETRIC SYSID SYSTEM_P
  
  	TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
  	TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
--- 429,439 ----
  	REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE
  	RIGHT ROLE ROLLBACK ROW ROWS RULE
  
! 	SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SENSITIVE
! 	SEQUENCE SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
! 	SHOW SIMILAR SIMPLE SMALLINT SOME SPACE STABLE STANDALONE_P START STATEMENT
! 	STATISTICS STDIN STDOUT STORAGE STRCOLFN STRICT_P STRIP_P SUBSTRING 
! 	SUPERUSER_P	SYMMETRIC SYSID SYSTEM_P
  
  	TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
  	TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
***************
*** 552,557 ****
--- 554,560 ----
  			| CreateAsStmt
  			| CreateAssertStmt
  			| CreateCastStmt
+ 			| CreateCollationStmt
  			| CreateConversionStmt
  			| CreateDomainStmt
  			| CreateFunctionStmt
***************
*** 575,580 ****
--- 578,584 ----
  			| DiscardStmt
  			| DropAssertStmt
  			| DropCastStmt
+ 			| DropCollationStmt
  			| DropGroupStmt
  			| DropOpClassStmt
  			| DropOpFamilyStmt
***************
*** 2410,2415 ****
--- 2414,2497 ----
  				}
  		;
  
+ /*****************************************************************************
+  *
+  *		QUERY :
+  *
+  * CREATE COLLATION <collation name> FOR <character set specification> 
+  * 		FROM <existing collation name> [STRCOLFN <fn name>] 
+  *		[ <pad characteristic> ] [ <case sensitive> ] [ <accent sensitive> ] 
+  *		[ LCCOLLATE <lc_collate> ] [ LCCTYPE <lc_ctype> ]
+  *
+  * DROP COLLATION <collation name>
+  *
+  *****************************************************************************/
+ 
+ CreateCollationStmt:
+ 			CREATE COLLATION qualified_name FOR qualified_name FROM qualified_name OptCollationList
+ 				{
+ 					CreateCollationStmt *n = makeNode(CreateCollationStmt);
+ 					n->name = $3;
+ 					n->for_charset = $5;
+ 					n->from_collation = $7;
+ 					n->options = $8;
+ 					$$ = (Node *)n;
+ 				}
+ 		;
+ 
+ OptCollationList: 
+ 			OptCollationList OptCollationElem		{ $$ = lappend($1, $2); }
+ 			| /*EMPTY*/								{ $$ = NIL; }
+ 		;
+ 
+ OptCollationElem:
+ 			NO PAD
+ 				{
+ 					$$ = makeDefElem("pad_characteristic", (Node *)makeInteger(FALSE));				
+ 				}
+ 			| PAD SPACE
+ 				{
+ 					$$ = makeDefElem("pad_characteristic", (Node *)makeInteger(TRUE));				
+ 				}
+ 			| CASE SENSITIVE
+ 				{
+ 					$$ = makeDefElem("case_sensitive", (Node *)makeInteger(TRUE));				
+ 				}
+ 			| CASE INSENSITIVE
+ 				{
+ 					$$ = makeDefElem("case_sensitive", (Node *)makeInteger(FALSE));								
+ 				}
+ 			| ACCENT SENSITIVE
+ 				{
+ 					$$ = makeDefElem("accent_sensitive", (Node *)makeInteger(TRUE));								
+ 				}
+ 			| ACCENT INSENSITIVE
+ 				{
+ 					$$ = makeDefElem("accent_sensitive", (Node *)makeInteger(FALSE));								
+ 				}
+ 			| LCCOLLATE qualified_name
+ 				{
+ 					$$ = makeDefElem("lc_collate_name", (Node *)makeString($2));				
+ 				}
+ 			| LCCTYPE qualified_name
+ 				{
+ 					$$ = makeDefElem("lc_ctype_name", (Node *)makeString($2));				
+ 				}
+ 			| STRCOLFN qualified_name
+ 				{
+ 					$$ = makeDefElem("str_col_function", (Node *)makeString($2));				
+ 				}
+ 		;
+ 
+ DropCollationStmt:
+ 			DROP COLLATION name
+ 				{
+ 					DropCollationStmt *n = makeNode(DropCollationStmt);
+ 					n->name = $3;
+ 					$$ = (Node *)n;
+ 				}
+ 		;
+ 
  
  /*****************************************************************************
   *
***************
*** 5349,5354 ****
--- 5431,5444 ----
  				{
  					$$ = makeDefElem("encoding", NULL);
  				}
+ 			| COLLATE opt_equal qualified_name
+ 				{
+ 					$$ = makeDefElem("collate", (Node *)makeString($3));
+ 				}
+ 			| COLLATE opt_equal DEFAULT
+ 				{
+ 					$$ = makeDefElem("collate", NULL);
+ 				}
  			| CONNECTION LIMIT opt_equal SignedIconst
  				{
  					$$ = makeDefElem("connectionlimit", (Node *)makeInteger($4));
***************
*** 9001,9006 ****
--- 9091,9097 ----
  unreserved_keyword:
  			  ABORT_P
  			| ABSOLUTE_P
+ 			| ACCENT
  			| ACCESS
  			| ACTION
  			| ADD_P
***************
*** 9027,9032 ****
--- 9118,9125 ----
  			| CLASS
  			| CLOSE
  			| CLUSTER
+ 			| COLLATE
+ 			| COLLATION
  			| COMMENT
  			| COMMIT
  			| COMMITTED
***************
*** 9106,9111 ****
--- 9199,9206 ----
  			| LANGUAGE
  			| LARGE_P
  			| LAST_P
+ 			| LCCOLLATE
+ 			| LCCTYPE
  			| LEVEL
  			| LISTEN
  			| LOAD
***************
*** 9142,9147 ****
--- 9237,9243 ----
  			| OPTION
  			| OWNED
  			| OWNER
+ 			| PAD
  			| PARSER
  			| PARTIAL
  			| PASSWORD
***************
*** 9179,9184 ****
--- 9275,9281 ----
  			| SEARCH
  			| SECOND_P
  			| SECURITY
+ 			| SENSITIVE
  			| SEQUENCE
  			| SERIALIZABLE
  			| SESSION
***************
*** 9186,9191 ****
--- 9283,9289 ----
  			| SHARE
  			| SHOW
  			| SIMPLE
+ 			| SPACE
  			| STABLE
  			| STANDALONE_P
  			| START
***************
*** 9194,9199 ****
--- 9292,9298 ----
  			| STDIN
  			| STDOUT
  			| STORAGE
+ 			| STRCOLFN
  			| STRICT_P
  			| STRIP_P
  			| SUPERUSER_P
***************
*** 9345,9351 ****
  			| CASE
  			| CAST
  			| CHECK
- 			| COLLATE
  			| COLUMN
  			| CONSTRAINT
  			| CREATE
--- 9444,9449 ----
Index: include/nodes/nodes.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/nodes/nodes.h,v
retrieving revision 1.205
diff -c -r1.205 nodes.h
*** include/nodes/nodes.h	1 Jan 2008 19:45:58 -0000	1.205
--- include/nodes/nodes.h	1 Jul 2008 14:29:26 -0000
***************
*** 313,318 ****
--- 313,320 ----
  	T_CreateEnumStmt,
  	T_AlterTSDictionaryStmt,
  	T_AlterTSConfigurationStmt,
+ 	T_CreateCollationStmt,
+ 	T_DropCollationStmt,
  
  	/*
  	 * TAGS FOR PARSE TREE NODES (parsenodes.h)
Index: include/nodes/parsenodes.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/nodes/parsenodes.h,v
retrieving revision 1.358
diff -c -r1.358 parsenodes.h
*** include/nodes/parsenodes.h	1 Jan 2008 19:45:58 -0000	1.358
--- include/nodes/parsenodes.h	1 Jul 2008 14:29:31 -0000
***************
*** 1198,1203 ****
--- 1198,1227 ----
  	bool		skip_validation;	/* skip validation of existing rows? */
  } FkConstraint;
  
+ /* ----------------------
+  *		Create/Drop Collation Statements
+  * ----------------------
+  */
+  
+  typedef struct CreateCollationStmt
+  {
+  	NodeTag		type;	
+  	char	   *name;
+  	char	   *for_charset;
+  	char	   *from_collation;
+  	List	   *options;
+  	
+  } CreateCollationStmt;
+  
+  typedef struct DropCollationStmt
+  {
+  	NodeTag		type;	
+  	char	   *name;
+  	
+  } DropCollationStmt;
+  
+ 
+ 
  
  /* ----------------------
   *		Create/Drop Table Space Statements
Index: src/include/catalog/pg_collation.h
===================================================================
RCS file: src/include/catalog/pg_collation.h
diff -N src/include/catalog/pg_collation.h
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- src/include/catalog/pg_collation.h	1 Jan 1970 00:00:00 -0000
***************
*** 0 ****
--- 1,101 ----
+ /*-------------------------------------------------------------------------
+  *
+  * pg_collation.h
+  *	  definition of the system "collation" relation (pg_collation)
+  *	  along with the relation's initial contents.
+  *
+  *
+  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
+  * Portions Copyright (c) 1994, Regents of the University of California
+  *
+  * $PostgreSQL: pgsql/src/include/catalog/pg_depend.h,v 1.1 2008/04/10 19:45:56 momjian Exp $
+  *
+  * NOTES
+  *	  the genbki.sh script reads this file and generates .bki
+  *	  information from the DATA() statements.
+  *
+  *-------------------------------------------------------------------------
+  */
+ 
+ #ifndef PG_COLLATION_H
+ #define PG_COLLATION_H
+ 
+ /* ----------------
+  *		postgres.h contains the system type definitions and the
+  *		CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file
+  *		can be read by both genbki.sh and the C compiler.
+  * ----------------
+  */
+ 
+ /* ----------------
+  *		pg_collation definition.  cpp turns this into
+  *		typedef struct FormData_pg_depend
+  * ----------------
+  */
+  
+ #define CollationRelationId  2978
+ 
+ enum {
+ 	PAD_CHARACTERISTIC_NO_PAD = 0;
+ 	PAD_CHARACTERISTIC_PAD_SPACE = 1;
+ 	
+ }	CollationPadCharacteristic;
+ 
+ enum {
+ 	CASE_INSENSITIVE = 0;
+ 	CASE_SENSITIVE = 1;
+ 		
+ }	CollationCaseSensitive;
+ 
+ enum {
+ 	ACCENT_INSENSITIVE = 0;
+ 	ACCENT_SENSITIVE = 1;
+ 	
+ }	CollationAccentSensitive;
+ 
+ 
+ CATALOG (pg_collation, 2978)
+ {
+   NameData    	colname;        		/* collation name */
+   Oid        	colschema;        		/* collation schema */
+   NameData   	colcharset;    			/*  character set specification */
+   Oid         	colexistingcollation; 	/* existing collation */
+   bool        	colpadattribute;    	/* pad attribute */
+   bool        	colcasesensitive;    	/* case sensitive */
+   bool        	colaccentsensitive;		/* accent sensitive */
+   NameData    	colcollate;    			/* lc_collate */
+   NameData    	colctype; 				/* lc_ctype */
+   regproc       colfunc;        		/* used collation function */	
+ 	
+ } FormData_pg_collation;
+ 
+ /* ----------------
+  *		Form_pg_collation corresponds to a pointer to a tuple with
+  *		the format of pg_collation relation.
+  * ----------------
+  */
+ typedef FormData_pg_collation *Form_pg_collation;
+ 
+ /* ----------------
+  *		compiler constants for pg_collation
+  * ----------------
+  */
+ #define Natts_pg_collation						10
+ #define Anum_pg_collation_colname				1
+ #define Anum_pg_collation_colschema				2
+ #define	Anum_pg_collation_colcharset			3
+ #define	Anum_pg_collation_colexistingcollation	4
+ #define	Anum_pg_collation_colpadattribute		5
+ #define	Anum_pg_collation_colcasesensitive		6
+ #define	Anum_pg_collation_colaccentsensitive	7
+ #define	Anum_pg_collation_colcollate			8
+ #define	Anum_pg_collation_colctype				9
+ #define	Anum_pg_collation_colfunc				10
+ 
+ /* ----------------
+  *		initial contents of pg_collation
+  * ----------------
+  */
+  
+  
+ #endif   /* PG_COLLATION_H */