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