Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit5f6a27f

Browse files
committed
Add missing copyfuncs/equalfuncs entries, including T_Null which has
been missing forever; surprising it wasn't noticed before. The otheradditions are, um, sloppiness in certain recent feature additions.
1 parent6fb05e0 commit5f6a27f

File tree

2 files changed

+137
-3
lines changed

2 files changed

+137
-3
lines changed

‎src/backend/nodes/copyfuncs.c‎

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* Portions Copyright (c) 1994, Regents of the University of California
1616
*
1717
* IDENTIFICATION
18-
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.201 2002/08/15 16:36:02 momjian Exp $
18+
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.202 2002/08/19 00:11:53 tgl Exp $
1919
*
2020
*-------------------------------------------------------------------------
2121
*/
@@ -1568,7 +1568,26 @@ _copyAConst(A_Const *from)
15681568
{
15691569
A_Const*newnode=makeNode(A_Const);
15701570

1571-
newnode->val=*((Value*) (copyObject(&(from->val))));
1571+
/* This part must duplicate _copyValue */
1572+
newnode->val.type=from->val.type;
1573+
switch (from->val.type)
1574+
{
1575+
caseT_Integer:
1576+
newnode->val.val.ival=from->val.val.ival;
1577+
break;
1578+
caseT_Float:
1579+
caseT_String:
1580+
caseT_BitString:
1581+
newnode->val.val.str=pstrdup(from->val.val.str);
1582+
break;
1583+
caseT_Null:
1584+
/* nothing to do */
1585+
break;
1586+
default:
1587+
elog(ERROR,"_copyAConst: unknown node type %d",from->val.type);
1588+
break;
1589+
}
1590+
15721591
Node_Copy(from,newnode,typename);
15731592

15741593
returnnewnode;
@@ -2624,6 +2643,45 @@ _copyCreateSchemaStmt(CreateSchemaStmt *from)
26242643
returnnewnode;
26252644
}
26262645

2646+
staticCreateConversionStmt*
2647+
_copyCreateConversionStmt(CreateConversionStmt*from)
2648+
{
2649+
CreateConversionStmt*newnode=makeNode(CreateConversionStmt);
2650+
2651+
Node_Copy(from,newnode,conversion_name);
2652+
newnode->for_encoding_name=pstrdup(from->for_encoding_name);
2653+
newnode->to_encoding_name=pstrdup(from->to_encoding_name);
2654+
Node_Copy(from,newnode,func_name);
2655+
newnode->def=from->def;
2656+
2657+
returnnewnode;
2658+
}
2659+
2660+
staticCreateCastStmt*
2661+
_copyCreateCastStmt(CreateCastStmt*from)
2662+
{
2663+
CreateCastStmt*newnode=makeNode(CreateCastStmt);
2664+
2665+
Node_Copy(from,newnode,sourcetype);
2666+
Node_Copy(from,newnode,targettype);
2667+
Node_Copy(from,newnode,func);
2668+
newnode->implicit=from->implicit;
2669+
2670+
returnnewnode;
2671+
}
2672+
2673+
staticDropCastStmt*
2674+
_copyDropCastStmt(DropCastStmt*from)
2675+
{
2676+
DropCastStmt*newnode=makeNode(DropCastStmt);
2677+
2678+
Node_Copy(from,newnode,sourcetype);
2679+
Node_Copy(from,newnode,targettype);
2680+
newnode->behavior=from->behavior;
2681+
2682+
returnnewnode;
2683+
}
2684+
26272685

26282686
/* ****************************************************************
26292687
*pg_list.h copy functions
@@ -2635,6 +2693,8 @@ _copyValue(Value *from)
26352693
{
26362694
Value*newnode=makeNode(Value);
26372695

2696+
/* See also _copyAConst when changing this code! */
2697+
26382698
newnode->type=from->type;
26392699
switch (from->type)
26402700
{
@@ -2646,7 +2706,11 @@ _copyValue(Value *from)
26462706
caseT_BitString:
26472707
newnode->val.str=pstrdup(from->val.str);
26482708
break;
2709+
caseT_Null:
2710+
/* nothing to do */
2711+
break;
26492712
default:
2713+
elog(ERROR,"_copyValue: unknown node type %d",from->type);
26502714
break;
26512715
}
26522716
returnnewnode;
@@ -2839,6 +2903,7 @@ copyObject(void *from)
28392903
caseT_Float:
28402904
caseT_String:
28412905
caseT_BitString:
2906+
caseT_Null:
28422907
retval=_copyValue(from);
28432908
break;
28442909
caseT_List:
@@ -3043,6 +3108,15 @@ copyObject(void *from)
30433108
caseT_CreateSchemaStmt:
30443109
retval=_copyCreateSchemaStmt(from);
30453110
break;
3111+
caseT_CreateConversionStmt:
3112+
retval=_copyCreateConversionStmt(from);
3113+
break;
3114+
caseT_CreateCastStmt:
3115+
retval=_copyCreateCastStmt(from);
3116+
break;
3117+
caseT_DropCastStmt:
3118+
retval=_copyDropCastStmt(from);
3119+
break;
30463120

30473121
caseT_A_Expr:
30483122
retval=_copyAExpr(from);

‎src/backend/nodes/equalfuncs.c‎

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* Portions Copyright (c) 1994, Regents of the University of California
2121
*
2222
* IDENTIFICATION
23-
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.150 2002/08/15 16:36:03 momjian Exp $
23+
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.151 2002/08/19 00:11:53 tgl Exp $
2424
*
2525
*-------------------------------------------------------------------------
2626
*/
@@ -1459,6 +1459,51 @@ _equalCreateSchemaStmt(CreateSchemaStmt *a, CreateSchemaStmt *b)
14591459
return true;
14601460
}
14611461

1462+
staticbool
1463+
_equalCreateConversionStmt(CreateConversionStmt*a,CreateConversionStmt*b)
1464+
{
1465+
if (!equal(a->conversion_name,b->conversion_name))
1466+
return false;
1467+
if (!equalstr(a->for_encoding_name,b->for_encoding_name))
1468+
return false;
1469+
if (!equalstr(a->to_encoding_name,b->to_encoding_name))
1470+
return false;
1471+
if (!equal(a->func_name,b->func_name))
1472+
return false;
1473+
if (a->def!=b->def)
1474+
return false;
1475+
1476+
return true;
1477+
}
1478+
1479+
staticbool
1480+
_equalCreateCastStmt(CreateCastStmt*a,CreateCastStmt*b)
1481+
{
1482+
if (!equal(a->sourcetype,b->sourcetype))
1483+
return false;
1484+
if (!equal(a->targettype,b->targettype))
1485+
return false;
1486+
if (!equal(a->func,b->func))
1487+
return false;
1488+
if (a->implicit!=b->implicit)
1489+
return false;
1490+
1491+
return true;
1492+
}
1493+
1494+
staticbool
1495+
_equalDropCastStmt(DropCastStmt*a,DropCastStmt*b)
1496+
{
1497+
if (!equal(a->sourcetype,b->sourcetype))
1498+
return false;
1499+
if (!equal(a->targettype,b->targettype))
1500+
return false;
1501+
if (a->behavior!=b->behavior)
1502+
return false;
1503+
1504+
return true;
1505+
}
1506+
14621507
staticbool
14631508
_equalAExpr(A_Expr*a,A_Expr*b)
14641509
{
@@ -1881,7 +1926,11 @@ _equalValue(Value *a, Value *b)
18811926
caseT_String:
18821927
caseT_BitString:
18831928
returnstrcmp(a->val.str,b->val.str)==0;
1929+
caseT_Null:
1930+
/* nothing to do */
1931+
break;
18841932
default:
1933+
elog(ERROR,"_equalValue: unknown node type %d",a->type);
18851934
break;
18861935
}
18871936

@@ -2028,10 +2077,12 @@ equal(void *a, void *b)
20282077
retval= true;
20292078
}
20302079
break;
2080+
20312081
caseT_Integer:
20322082
caseT_Float:
20332083
caseT_String:
20342084
caseT_BitString:
2085+
caseT_Null:
20352086
retval=_equalValue(a,b);
20362087
break;
20372088

@@ -2215,6 +2266,15 @@ equal(void *a, void *b)
22152266
caseT_CreateSchemaStmt:
22162267
retval=_equalCreateSchemaStmt(a,b);
22172268
break;
2269+
caseT_CreateConversionStmt:
2270+
retval=_equalCreateConversionStmt(a,b);
2271+
break;
2272+
caseT_CreateCastStmt:
2273+
retval=_equalCreateCastStmt(a,b);
2274+
break;
2275+
caseT_DropCastStmt:
2276+
retval=_equalDropCastStmt(a,b);
2277+
break;
22182278

22192279
caseT_A_Expr:
22202280
retval=_equalAExpr(a,b);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp