Tom Lane wrote:
> "Greg Sabino Mullane" <[EMAIL PROTECTED]> writes:
> > I'll save the full rant for my blog :), but wanted to submit this 
> > documentation 
> > patch for this listen gotcha that's been bugging me for a while. I'd like 
> > to see LISTEN and NOTIFY changed to use a simple text string, but until 
> > then, 
> > I think we should probably warn about the chopping off of the left-hand 
> > part.
> 
> Let's change it to a plain ColId, so you get a syntax error if you try
> that.

With no comment from my question of status, I have implemented this
idea.  Patch attached and applied.

-- 
  Bruce Momjian  <[EMAIL PROTECTED]>          http://momjian.us
  EnterpriseDB                               http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.585
diff -c -c -r2.585 gram.y
*** src/backend/parser/gram.y	2 Apr 2007 03:49:38 -0000	2.585
--- src/backend/parser/gram.y	2 Apr 2007 21:57:48 -0000
***************
*** 4834,4860 ****
   *
   *****************************************************************************/
  
! NotifyStmt: NOTIFY qualified_name
  				{
  					NotifyStmt *n = makeNode(NotifyStmt);
! 					n->relation = $2;
  					$$ = (Node *)n;
  				}
  		;
  
! ListenStmt: LISTEN qualified_name
  				{
  					ListenStmt *n = makeNode(ListenStmt);
! 					n->relation = $2;
  					$$ = (Node *)n;
  				}
  		;
  
  UnlistenStmt:
! 			UNLISTEN qualified_name
  				{
  					UnlistenStmt *n = makeNode(UnlistenStmt);
! 					n->relation = $2;
  					$$ = (Node *)n;
  				}
  			| UNLISTEN '*'
--- 4834,4866 ----
   *
   *****************************************************************************/
  
! NotifyStmt: NOTIFY ColId
  				{
  					NotifyStmt *n = makeNode(NotifyStmt);
! 					n->relation = makeNode(RangeVar);
! 					n->relation->relname = $2;
! 					n->relation->schemaname = NULL;
  					$$ = (Node *)n;
  				}
  		;
  
! ListenStmt: LISTEN ColId
  				{
  					ListenStmt *n = makeNode(ListenStmt);
! 					n->relation = makeNode(RangeVar);
! 					n->relation->relname = $2;
! 					n->relation->schemaname = NULL;
  					$$ = (Node *)n;
  				}
  		;
  
  UnlistenStmt:
! 			UNLISTEN ColId
  				{
  					UnlistenStmt *n = makeNode(UnlistenStmt);
! 					n->relation = makeNode(RangeVar);
! 					n->relation->relname = $2;
! 					n->relation->schemaname = NULL;
  					$$ = (Node *)n;
  				}
  			| UNLISTEN '*'
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to