Index: src/backend/parser/scan.l
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/backend/parser/scan.l,v
retrieving revision 1.103
diff -u -r1.103 scan.l
--- src/backend/parser/scan.l	2002/11/11 03:33:38	1.103
+++ src/backend/parser/scan.l	2003/02/04 23:16:48
@@ -226,7 +226,7 @@
 newline			[\n\r]
 non_newline		[^\n\r]
 
-comment			("--"{non_newline}*)
+comment			(("--"|"//"){non_newline}*)
 
 whitespace		({space}+|{comment})
 
@@ -425,23 +425,29 @@
 
 {operator}		{
 					/*
-					 * Check for embedded slash-star or dash-dash; those
-					 * are comment starts, so operator must stop there.
-					 * Note that slash-star or dash-dash at the first
-					 * character will match a prior rule, not this one.
+					 * Check for embedded slash-star, dash-dash, or
+					 * slash-slash; those are comment starts, so operator
+					 * must stop there. Note that comment beginning at
+					 * the first character will match a prior rule, not
+					 * this one.
 					 */
 					int		nchars = yyleng;
 					char   *slashstar = strstr(yytext, "/*");
 					char   *dashdash = strstr(yytext, "--");
+					char   *slashslash = strstr(yytext, "//");
 
-					if (slashstar && dashdash)
+					if (slashstar && (dashdash && slashslash))
 					{
 						/* if both appear, take the first one */
 						if (slashstar > dashdash)
 							slashstar = dashdash;
+						else if (slashstar > slashslash)
+							slashstar = slashslash;
 					}
-					else if (!slashstar)
+					else if (!slashstar && dashdash)
 						slashstar = dashdash;
+					else if (!slashstar && slashslash)
+						slashstar = slashslash;
 					if (slashstar)
 						nchars = slashstar - yytext;
 
Index: doc/src/sgml/syntax.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/syntax.sgml,v
retrieving revision 1.74
diff -u -r1.74 syntax.sgml
--- doc/src/sgml/syntax.sgml	2002/11/15 03:11:17	1.74
+++ doc/src/sgml/syntax.sgml	2003/02/04 23:16:48
@@ -493,9 +493,9 @@
 
      <listitem>
       <para>
-       <literal>--</literal> and <literal>/*</literal> cannot appear
-       anywhere in an operator name, since they will be taken as the
-       start of a comment.
+       <literal>--</literal>, <literal>/*</literal>, and <literal>//</literal>
+       cannot appear anywhere in an operator name, since they will be taken as
+       the start of a comment.
       </para>
      </listitem>
 
@@ -615,10 +615,13 @@
    </indexterm>
 
    <para>
-    A comment is an arbitrary sequence of characters beginning with
-    double dashes and extending to the end of the line, e.g.:
+    A comment is an arbitrary sequence of characters beginning with either
+    double dashes or forward slashes and extending to the end of the line, e.g.:
 <programlisting>
 -- This is a standard SQL92 comment
+</programlisting>
+<programlisting>
+// This is a standard (??) SQL?? comment
 </programlisting>
    </para>
 
Index: src/test/regress/sql/comments.sql
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/test/regress/sql/comments.sql,v
retrieving revision 1.3
diff -u -r1.3 comments.sql
--- src/test/regress/sql/comments.sql	2000/07/14 15:43:57	1.3
+++ src/test/regress/sql/comments.sql	2003/02/04 23:16:49
@@ -3,14 +3,20 @@
 --
 
 SELECT 'trailing' AS first; -- trailing single line
+SELECT 'trailing' AS first; // trailing single line
 SELECT /* embedded single line */ 'embedded' AS second;
 SELECT /* both embedded and trailing single line */ 'both' AS third; -- trailing single line
+SELECT /* both embedded and trailing single line */ 'both' AS third; // trailing single line
 
 SELECT 'before multi-line' AS fourth;
 /* This is an example of SQL which should not execute:
  * select 'multi-line';
  */
 SELECT 'after multi-line' AS fifth;
+SELECT 'before multi-line' -- trailing single line
+	AS sixth;
+SELECT 'before multi-line' // trailing single line
+	AS seventh;
 
 --
 -- Nested comments
@@ -37,6 +43,6 @@
 */
 Now just one deep...
 */
-'deeply nested example' AS sixth;
+'deeply nested example' AS eighth;
 
 /* and this is the end of the file */
Index: src/test/regress/expected/comments.out
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/test/regress/expected/comments.out,v
retrieving revision 1.3
diff -u -r1.3 comments.out
--- src/test/regress/expected/comments.out	2000/07/14 15:43:55	1.3
+++ src/test/regress/expected/comments.out	2003/02/04 23:16:49
@@ -7,6 +7,12 @@
  trailing
 (1 row)
 
+SELECT 'trailing' AS first; // trailing single line
+  first   
+----------
+ trailing
+(1 row)
+
 SELECT /* embedded single line */ 'embedded' AS second;
   second  
 ----------
@@ -19,6 +25,12 @@
  both
 (1 row)
 
+SELECT /* both embedded and trailing single line */ 'both' AS third; // trailing single line
+ third 
+-------
+ both
+(1 row)
+
 SELECT 'before multi-line' AS fourth;
       fourth       
 -------------------
@@ -34,6 +46,20 @@
  after multi-line
 (1 row)
 
+SELECT 'before multi-line' -- trailing single line
+	AS sixth;
+       sixth       
+-------------------
+ before multi-line
+(1 row)
+
+SELECT 'before multi-line' // trailing single line
+	AS seventh;
+      seventh      
+-------------------
+ before multi-line
+(1 row)
+
 --
 -- Nested comments
 --
@@ -56,8 +82,8 @@
 */
 Now just one deep...
 */
-'deeply nested example' AS sixth;
-         sixth         
+'deeply nested example' AS eighth;
+        eighth         
 -----------------------
  deeply nested example
 (1 row)
