mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Fix string conversions for operators in DEFAULT and CHECK clauses.
This commit is contained in:
		@@ -10,7 +10,7 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * IDENTIFICATION
 | 
					 * IDENTIFICATION
 | 
				
			||||||
 *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.45 1997/09/13 03:15:46 thomas Exp $
 | 
					 *	  $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.46 1997/09/16 16:11:20 thomas Exp $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * HISTORY
 | 
					 * HISTORY
 | 
				
			||||||
 *	  AUTHOR			DATE			MAJOR EVENT
 | 
					 *	  AUTHOR			DATE			MAJOR EVENT
 | 
				
			||||||
@@ -460,12 +460,12 @@ default_expr:  AexprConst
 | 
				
			|||||||
				{
 | 
									{
 | 
				
			||||||
					if (!strcmp("<=", $2) || !strcmp(">=", $2))
 | 
										if (!strcmp("<=", $2) || !strcmp(">=", $2))
 | 
				
			||||||
						elog(WARN,"boolean expressions not supported in DEFAULT",NULL);
 | 
											elog(WARN,"boolean expressions not supported in DEFAULT",NULL);
 | 
				
			||||||
					$$ = nconc( $1, lcons( $2, $3));
 | 
										$$ = nconc( $1, lcons( makeString( $2), $3));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			| Op default_expr
 | 
								| Op default_expr
 | 
				
			||||||
				{   $$ = lcons( $1, $2); }
 | 
									{	$$ = lcons( makeString( $1), $2); }
 | 
				
			||||||
			| default_expr Op
 | 
								| default_expr Op
 | 
				
			||||||
				{   $$ = lcons( $2, $1); }
 | 
									{	$$ = lappend( $1, makeString( $2)); }
 | 
				
			||||||
		;
 | 
							;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
opt_null: NOT PNULL								{ $$ = TRUE; }
 | 
					opt_null: NOT PNULL								{ $$ = TRUE; }
 | 
				
			||||||
@@ -635,6 +635,9 @@ printf("in ConstraintDef\n");
 | 
				
			|||||||
					constr->type = CONSTR_CHECK;
 | 
										constr->type = CONSTR_CHECK;
 | 
				
			||||||
					constr->name = NULL;
 | 
										constr->name = NULL;
 | 
				
			||||||
					constr->def = FlattenStringList($2);
 | 
										constr->def = FlattenStringList($2);
 | 
				
			||||||
 | 
					#ifdef PARSEDEBUG
 | 
				
			||||||
 | 
					printf("ConstraintDef: string is %s\n", (char *) constr->def);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
					$$ = constr;
 | 
										$$ = constr;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
		;
 | 
							;
 | 
				
			||||||
@@ -689,15 +692,15 @@ printf( "Id is %s\n", $1);
 | 
				
			|||||||
					$$ = lappend( $$, makeString(")"));
 | 
										$$ = lappend( $$, makeString(")"));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			| constraint_elem Op constraint_elem
 | 
								| constraint_elem Op constraint_elem
 | 
				
			||||||
				{	$$ = nconc( $1, lcons( $2, $3)); }
 | 
									{	$$ = nconc( $1, lcons( makeString( $2), $3)); }
 | 
				
			||||||
			| constraint_elem AND constraint_elem
 | 
								| constraint_elem AND constraint_elem
 | 
				
			||||||
				{	$$ = nconc( $1, lcons( makeString( "AND"), $3)); }
 | 
									{	$$ = nconc( $1, lcons( makeString( "AND"), $3)); }
 | 
				
			||||||
			| constraint_elem OR constraint_elem
 | 
								| constraint_elem OR constraint_elem
 | 
				
			||||||
				{	$$ = nconc( $1, lcons( makeString( "OR"), $3)); }
 | 
									{	$$ = nconc( $1, lcons( makeString( "OR"), $3)); }
 | 
				
			||||||
			| Op constraint_elem
 | 
								| Op constraint_elem
 | 
				
			||||||
				{   $$ = lcons( $1, $2); }
 | 
									{	$$ = lcons( makeString( $1), $2); }
 | 
				
			||||||
			| constraint_elem Op
 | 
								| constraint_elem Op
 | 
				
			||||||
				{   $$ = lcons( $2, $1); }
 | 
									{	$$ = lappend( $1, makeString( $2)); }
 | 
				
			||||||
		;
 | 
							;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user