11
11
*
12
12
*
13
13
* IDENTIFICATION
14
- * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.598 2007/08/21 01:11:15 tgl Exp $
14
+ * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.599 2007/08/21 15:13:42 tgl Exp $
15
15
*
16
16
* HISTORY
17
17
* AUTHOR DATE MAJOR EVENT
@@ -433,7 +433,7 @@ static Node *makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args)
433
433
STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P
434
434
SYMMETRIC SYSID SYSTEM_P
435
435
436
- TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT THEN TIME TIMESTAMP
436
+ TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
437
437
TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
438
438
TRUNCATE TRUSTED TYPE_P
439
439
@@ -2975,7 +2975,7 @@ DefineStmt:
2975
2975
n->vals = $7 ;
2976
2976
$$ = (Node *)n;
2977
2977
}
2978
- | CREATE TEXT SEARCH PARSER any_name definition
2978
+ | CREATE TEXT_P SEARCH PARSER any_name definition
2979
2979
{
2980
2980
DefineStmt *n = makeNode(DefineStmt);
2981
2981
n->kind = OBJECT_TSPARSER;
@@ -2984,7 +2984,7 @@ DefineStmt:
2984
2984
n->definition = $6 ;
2985
2985
$$ = (Node *)n;
2986
2986
}
2987
- | CREATE TEXT SEARCH DICTIONARY any_name definition
2987
+ | CREATE TEXT_P SEARCH DICTIONARY any_name definition
2988
2988
{
2989
2989
DefineStmt *n = makeNode(DefineStmt);
2990
2990
n->kind = OBJECT_TSDICTIONARY;
@@ -2993,7 +2993,7 @@ DefineStmt:
2993
2993
n->definition = $6 ;
2994
2994
$$ = (Node *)n;
2995
2995
}
2996
- | CREATE TEXT SEARCH TEMPLATE any_name definition
2996
+ | CREATE TEXT_P SEARCH TEMPLATE any_name definition
2997
2997
{
2998
2998
DefineStmt *n = makeNode(DefineStmt);
2999
2999
n->kind = OBJECT_TSTEMPLATE;
@@ -3002,7 +3002,7 @@ DefineStmt:
3002
3002
n->definition = $6 ;
3003
3003
$$ = (Node *)n;
3004
3004
}
3005
- | CREATE TEXT SEARCH CONFIGURATION any_name definition
3005
+ | CREATE TEXT_P SEARCH CONFIGURATION any_name definition
3006
3006
{
3007
3007
DefineStmt *n = makeNode(DefineStmt);
3008
3008
n->kind = OBJECT_TSCONFIGURATION;
@@ -3320,10 +3320,10 @@ drop_type: TABLE { $$ = OBJECT_TABLE; }
3320
3320
| DOMAIN_P { $$ = OBJECT_DOMAIN; }
3321
3321
| CONVERSION_P { $$ = OBJECT_CONVERSION; }
3322
3322
| SCHEMA { $$ = OBJECT_SCHEMA; }
3323
- | TEXT SEARCH PARSER { $$ = OBJECT_TSPARSER; }
3324
- | TEXT SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; }
3325
- | TEXT SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; }
3326
- | TEXT SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; }
3323
+ | TEXT_P SEARCH PARSER { $$ = OBJECT_TSPARSER; }
3324
+ | TEXT_P SEARCH DICTIONARY { $$ = OBJECT_TSDICTIONARY; }
3325
+ | TEXT_P SEARCH TEMPLATE { $$ = OBJECT_TSTEMPLATE; }
3326
+ | TEXT_P SEARCH CONFIGURATION { $$ = OBJECT_TSCONFIGURATION; }
3327
3327
;
3328
3328
3329
3329
any_name_list:
@@ -3500,31 +3500,31 @@ CommentStmt:
3500
3500
n->comment = $7 ;
3501
3501
$$ = (Node *) n;
3502
3502
}
3503
- | COMMENT ON TEXT SEARCH PARSER any_name IS comment_text
3503
+ | COMMENT ON TEXT_P SEARCH PARSER any_name IS comment_text
3504
3504
{
3505
3505
CommentStmt *n = makeNode(CommentStmt);
3506
3506
n->objtype = OBJECT_TSPARSER;
3507
3507
n->objname = $6 ;
3508
3508
n->comment = $8 ;
3509
3509
$$ = (Node *) n;
3510
3510
}
3511
- | COMMENT ON TEXT SEARCH DICTIONARY any_name IS comment_text
3511
+ | COMMENT ON TEXT_P SEARCH DICTIONARY any_name IS comment_text
3512
3512
{
3513
3513
CommentStmt *n = makeNode(CommentStmt);
3514
3514
n->objtype = OBJECT_TSDICTIONARY;
3515
3515
n->objname = $6 ;
3516
3516
n->comment = $8 ;
3517
3517
$$ = (Node *) n;
3518
3518
}
3519
- | COMMENT ON TEXT SEARCH TEMPLATE any_name IS comment_text
3519
+ | COMMENT ON TEXT_P SEARCH TEMPLATE any_name IS comment_text
3520
3520
{
3521
3521
CommentStmt *n = makeNode(CommentStmt);
3522
3522
n->objtype = OBJECT_TSTEMPLATE;
3523
3523
n->objname = $6 ;
3524
3524
n->comment = $8 ;
3525
3525
$$ = (Node *) n;
3526
3526
}
3527
- | COMMENT ON TEXT SEARCH CONFIGURATION any_name IS comment_text
3527
+ | COMMENT ON TEXT_P SEARCH CONFIGURATION any_name IS comment_text
3528
3528
{
3529
3529
CommentStmt *n = makeNode(CommentStmt);
3530
3530
n->objtype = OBJECT_TSCONFIGURATION;
@@ -4693,31 +4693,31 @@ RenameStmt: ALTER AGGREGATE func_name aggr_args RENAME TO name
4693
4693
n->newname = $6 ;
4694
4694
$$ = (Node *)n;
4695
4695
}
4696
- | ALTER TEXT SEARCH PARSER any_name RENAME TO name
4696
+ | ALTER TEXT_P SEARCH PARSER any_name RENAME TO name
4697
4697
{
4698
4698
RenameStmt *n = makeNode(RenameStmt);
4699
4699
n->renameType = OBJECT_TSPARSER;
4700
4700
n->object = $5 ;
4701
4701
n->newname = $8 ;
4702
4702
$$ = (Node *)n;
4703
4703
}
4704
- | ALTER TEXT SEARCH DICTIONARY any_name RENAME TO name
4704
+ | ALTER TEXT_P SEARCH DICTIONARY any_name RENAME TO name
4705
4705
{
4706
4706
RenameStmt *n = makeNode(RenameStmt);
4707
4707
n->renameType = OBJECT_TSDICTIONARY;
4708
4708
n->object = $5 ;
4709
4709
n->newname = $8 ;
4710
4710
$$ = (Node *)n;
4711
4711
}
4712
- | ALTER TEXT SEARCH TEMPLATE any_name RENAME TO name
4712
+ | ALTER TEXT_P SEARCH TEMPLATE any_name RENAME TO name
4713
4713
{
4714
4714
RenameStmt *n = makeNode(RenameStmt);
4715
4715
n->renameType = OBJECT_TSTEMPLATE;
4716
4716
n->object = $5 ;
4717
4717
n->newname = $8 ;
4718
4718
$$ = (Node *)n;
4719
4719
}
4720
- | ALTER TEXT SEARCH CONFIGURATION any_name RENAME TO name
4720
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name RENAME TO name
4721
4721
{
4722
4722
RenameStmt *n = makeNode(RenameStmt);
4723
4723
n->renameType = OBJECT_TSCONFIGURATION;
@@ -4897,15 +4897,15 @@ AlterOwnerStmt: ALTER AGGREGATE func_name aggr_args OWNER TO RoleId
4897
4897
n->newowner = $6 ;
4898
4898
$$ = (Node *)n;
4899
4899
}
4900
- | ALTER TEXT SEARCH DICTIONARY any_name OWNER TO RoleId
4900
+ | ALTER TEXT_P SEARCH DICTIONARY any_name OWNER TO RoleId
4901
4901
{
4902
4902
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
4903
4903
n->objectType = OBJECT_TSDICTIONARY;
4904
4904
n->object = $5 ;
4905
4905
n->newowner = $8 ;
4906
4906
$$ = (Node *)n;
4907
4907
}
4908
- | ALTER TEXT SEARCH CONFIGURATION any_name OWNER TO RoleId
4908
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name OWNER TO RoleId
4909
4909
{
4910
4910
AlterOwnerStmt *n = makeNode(AlterOwnerStmt);
4911
4911
n->objectType = OBJECT_TSCONFIGURATION;
@@ -5513,7 +5513,7 @@ opt_as: AS {}
5513
5513
*****************************************************************************/
5514
5514
5515
5515
AlterTSDictionaryStmt:
5516
- ALTER TEXT SEARCH DICTIONARY any_name definition
5516
+ ALTER TEXT_P SEARCH DICTIONARY any_name definition
5517
5517
{
5518
5518
AlterTSDictionaryStmt *n = makeNode(AlterTSDictionaryStmt);
5519
5519
n->dictname = $5 ;
@@ -5523,14 +5523,14 @@ AlterTSDictionaryStmt:
5523
5523
;
5524
5524
5525
5525
AlterTSConfigurationStmt:
5526
- ALTER TEXT SEARCH CONFIGURATION any_name definition
5526
+ ALTER TEXT_P SEARCH CONFIGURATION any_name definition
5527
5527
{
5528
5528
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5529
5529
n->cfgname = $5 ;
5530
5530
n->options = $6 ;
5531
5531
$$ = (Node *)n;
5532
5532
}
5533
- | ALTER TEXT SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list
5533
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name ADD_P MAPPING FOR name_list WITH any_name_list
5534
5534
{
5535
5535
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5536
5536
n->cfgname = $5 ;
@@ -5540,7 +5540,7 @@ AlterTSConfigurationStmt:
5540
5540
n->replace = false ;
5541
5541
$$ = (Node*)n;
5542
5542
}
5543
- | ALTER TEXT SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list
5543
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list WITH any_name_list
5544
5544
{
5545
5545
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5546
5546
n->cfgname = $5 ;
@@ -5550,7 +5550,7 @@ AlterTSConfigurationStmt:
5550
5550
n->replace = false ;
5551
5551
$$ = (Node*)n;
5552
5552
}
5553
- | ALTER TEXT SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name
5553
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING REPLACE any_name WITH any_name
5554
5554
{
5555
5555
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5556
5556
n->cfgname = $5 ;
@@ -5560,7 +5560,7 @@ AlterTSConfigurationStmt:
5560
5560
n->replace = true ;
5561
5561
$$ = (Node*)n;
5562
5562
}
5563
- | ALTER TEXT SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name
5563
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name ALTER MAPPING FOR name_list REPLACE any_name WITH any_name
5564
5564
{
5565
5565
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5566
5566
n->cfgname = $5 ;
@@ -5570,15 +5570,15 @@ AlterTSConfigurationStmt:
5570
5570
n->replace = true ;
5571
5571
$$ = (Node*)n;
5572
5572
}
5573
- | ALTER TEXT SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list
5573
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING FOR name_list
5574
5574
{
5575
5575
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5576
5576
n->cfgname = $5 ;
5577
5577
n->tokentype = $9 ;
5578
5578
n->missing_ok = false ;
5579
5579
$$ = (Node*)n;
5580
5580
}
5581
- | ALTER TEXT SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list
5581
+ | ALTER TEXT_P SEARCH CONFIGURATION any_name DROP MAPPING IF_P EXISTS FOR name_list
5582
5582
{
5583
5583
AlterTSConfigurationStmt *n = makeNode(AlterTSConfigurationStmt);
5584
5584
n->cfgname = $5 ;
@@ -8562,9 +8562,11 @@ substr_list:
8562
8562
/*
8563
8563
* Since there are no cases where this syntax allows
8564
8564
* a textual FOR value, we forcibly cast the argument
8565
- * to int4. This is a kluge to avoid surprising results
8566
- * when the argument is, say, int8. It'd be better if
8567
- * there were not an implicit cast from int8 to text ...
8565
+ * to int4. The possible matches in pg_proc are
8566
+ * substring(text,int4) and substring(text,text),
8567
+ * and we don't want the parser to choose the latter,
8568
+ * which it is likely to do if the second argument
8569
+ * is unknown or doesn't have an implicit cast to int4.
8568
8570
*/
8569
8571
A_Const *n = makeNode(A_Const);
8570
8572
n->val.type = T_Integer;
@@ -9234,7 +9236,7 @@ unreserved_keyword:
9234
9236
| TEMP
9235
9237
| TEMPLATE
9236
9238
| TEMPORARY
9237
- | TEXT
9239
+ | TEXT_P
9238
9240
| TRANSACTION
9239
9241
| TRIGGER
9240
9242
| TRUNCATE
0 commit comments