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

Commit6f58115

Browse files
author
Thomas G. Lockhart
committed
Measure the current transaction time to milliseconds.
Define a new function, GetCurrentTransactionStartTimeUsec() to get the time to this precision.Allow now() and timestamp 'now' to use this higher precision result so we now have fractional seconds in this "constant".Add timestamp without time zone type.Move previous timestamp type to timestamp with time zone.Accept another ISO variant for date/time values: yyyy-mm-ddThh:mm:ss (note the "T" separating the day from hours information).Remove 'current' from date/time types; convert to 'now' in input.Separate time and timetz regression tests.Separate timestamp and timestamptz regression test.
1 parent1f075a3 commit6f58115

27 files changed

+2763
-1858
lines changed

‎src/backend/access/transam/xact.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.109 2001/08/25 18:52:41 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.110 2001/09/28 08:08:57 thomas Exp $
1212
*
1313
* NOTES
1414
*Transaction aborts can now occur two ways:
@@ -369,6 +369,21 @@ GetCurrentTransactionStartTime(void)
369369
}
370370

371371

372+
/* --------------------------------
373+
*GetCurrentTransactionStartTimeUsec
374+
* --------------------------------
375+
*/
376+
AbsoluteTime
377+
GetCurrentTransactionStartTimeUsec(int*msec)
378+
{
379+
TransactionStates=CurrentTransactionState;
380+
381+
*msec=s->startTimeMsec;
382+
383+
returns->startTime;
384+
}
385+
386+
372387
/* --------------------------------
373388
*TransactionIdIsCurrentTransactionId
374389
* --------------------------------
@@ -859,7 +874,10 @@ StartTransaction(void)
859874
*/
860875
s->commandId=FirstCommandId;
861876
s->scanCommandId=FirstCommandId;
877+
#ifNOT_USED
862878
s->startTime=GetCurrentAbsoluteTime();
879+
#endif
880+
s->startTime=GetCurrentAbsoluteTimeUsec(&(s->startTimeMsec));
863881

864882
/*
865883
* initialize the various transaction subsystems

‎src/backend/parser/gram.y

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.253 2001/09/23 03:39:01 momjian Exp $
14+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.254 2001/09/28 08:09:09 thomas Exp $
1515
*
1616
* HISTORY
1717
* AUTHORDATEMAJOR EVENT
@@ -259,7 +259,7 @@ static void doNegateFloat(Value *v);
259259
%type<str>opt_charset,opt_collate
260260
%type<str>opt_float
261261
%type<ival>opt_numeric,opt_decimal
262-
%type<boolean>opt_varying,opt_timezone
262+
%type<boolean>opt_varying,opt_timezone,opt_timezone_x
263263

264264
%type<ival>Iconst
265265
%type<str>Sconst,comment_text
@@ -4229,10 +4229,16 @@ ConstDatetime: datetime
42294229
$$->name = xlateSqlType($1);
42304230
$$->typmod = -1;
42314231
}
4232-
|TIMESTAMPopt_timezone
4232+
|TIMESTAMPopt_timezone_x
42334233
{
42344234
$$ = makeNode(TypeName);
4235-
$$->name = xlateSqlType("timestamp");
4235+
if ($2)
4236+
$$->name = xlateSqlType("timestamptz");
4237+
else
4238+
$$->name = xlateSqlType("timestamp");
4239+
/* XXX the timezone field seems to be unused
4240+
* - thomas 2001-09-06
4241+
*/
42364242
$$->timezone =$2;
42374243
$$->typmod = -1;
42384244
}
@@ -4263,6 +4269,16 @@ datetime: YEAR_P{ $$ = "year"; }
42634269
|SECOND_P{$$ ="second"; }
42644270
;
42654271

4272+
/* XXX Make the default be WITH TIME ZONE for 7.2 to help with database upgrades
4273+
* but revert this back to WITHOUT TIME ZONE for 7.3.
4274+
* Do this by simply reverting opt_timezone_x to opt_timezone - thomas 2001-09-06
4275+
*/
4276+
4277+
opt_timezone_x:WITHTIMEZONE{$$ =TRUE; }
4278+
|WITHOUTTIMEZONE{$$ =FALSE; }
4279+
|/*EMPTY*/{$$ =TRUE; }
4280+
;
4281+
42664282
opt_timezone:WITHTIMEZONE{$$ =TRUE; }
42674283
|WITHOUTTIMEZONE{$$ =FALSE; }
42684284
|/*EMPTY*/{$$ =FALSE; }

‎src/backend/parser/parse_coerce.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.60 2001/06/24 02:41:21 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.61 2001/09/28 08:09:09 thomas Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -240,7 +240,7 @@ can_coerce_type(int nargs, Oid *input_typeids, Oid *func_typeids)
240240
oid_array[0]=inputTypeId;
241241

242242
ftup=SearchSysCache(PROCNAME,
243-
PointerGetDatum(typeidTypeName(targetTypeId)),
243+
PointerGetDatum(typeidTypeName(targetTypeId)),
244244
Int32GetDatum(1),
245245
PointerGetDatum(oid_array),
246246
0);
@@ -498,6 +498,7 @@ TypeCategory(Oid inType)
498498
case (TIMETZOID):
499499
case (ABSTIMEOID):
500500
case (TIMESTAMPOID):
501+
case (TIMESTAMPTZOID):
501502
result=DATETIME_TYPE;
502503
break;
503504

@@ -577,7 +578,10 @@ PreferredType(CATEGORY category, Oid type)
577578
break;
578579

579580
case (DATETIME_TYPE):
580-
result=TIMESTAMPOID;
581+
if (type==DATEOID)
582+
result=TIMESTAMPOID;
583+
else
584+
result=TIMESTAMPTZOID;
581585
break;
582586

583587
case (TIMESPAN_TYPE):
@@ -634,10 +638,14 @@ PromoteTypeToNext(Oid inType)
634638
break;
635639

636640
case (DATEOID):
637-
case (ABSTIMEOID):
638641
result=TIMESTAMPOID;
639642
break;
640643

644+
case (ABSTIMEOID):
645+
case (TIMESTAMPOID):
646+
result=TIMESTAMPTZOID;
647+
break;
648+
641649
case (TIMEOID):
642650
case (RELTIMEOID):
643651
result=INTERVALOID;
@@ -646,7 +654,7 @@ PromoteTypeToNext(Oid inType)
646654
case (BOOLOID):
647655
case (TEXTOID):
648656
case (FLOAT8OID):
649-
case (TIMESTAMPOID):
657+
case (TIMESTAMPTZOID):
650658
case (INTERVALOID):
651659
default:
652660
result=inType;

‎src/backend/parser/parse_expr.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.101 2001/09/20 23:31:08 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.102 2001/09/28 08:09:09 thomas Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -40,11 +40,11 @@ boolTransform_null_equals = false;
4040

4141
staticNode*parser_typecast_constant(Value*expr,TypeName*typename);
4242
staticNode*parser_typecast_expression(ParseState*pstate,
43-
Node*expr,TypeName*typename);
43+
Node*expr,TypeName*typename);
4444
staticNode*transformAttr(ParseState*pstate,Attr*att,intprecedence);
4545
staticNode*transformIdent(ParseState*pstate,Ident*ident,intprecedence);
4646
staticNode*transformIndirection(ParseState*pstate,Node*basenode,
47-
List*indirection);
47+
List*indirection);
4848

4949

5050
/*

‎src/backend/parser/parse_target.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.72 2001/09/17 01:06:36 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.73 2001/09/28 08:09:09 thomas Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -462,10 +462,13 @@ FigureColname(Node *node)
462462
{
463463
if (node==NULL)
464464
return"?column?";
465+
465466
switch (nodeTag(node))
466467
{
467468
caseT_Ident:
468469
return ((Ident*)node)->name;
470+
caseT_A_Const:
471+
return (FigureColname((Node*)((A_Const*)node)->typename));
469472
caseT_Attr:
470473
{
471474
List*attrs= ((Attr*)node)->attrs;
@@ -481,7 +484,15 @@ FigureColname(Node *node)
481484
caseT_FuncCall:
482485
return ((FuncCall*)node)->funcname;
483486
caseT_TypeCast:
484-
returnFigureColname(((TypeCast*)node)->arg);
487+
{
488+
char*name;
489+
490+
name=FigureColname(((TypeCast*)node)->arg);
491+
if (strcmp(name,"?column?")==0)
492+
name=FigureColname((Node*)((TypeCast*)node)->typename);
493+
returnname;
494+
}
495+
break;
485496
caseT_CaseExpr:
486497
{
487498
char*name;
@@ -492,6 +503,8 @@ FigureColname(Node *node)
492503
returnname;
493504
}
494505
break;
506+
caseT_TypeName:
507+
return ((TypeName*)node)->name;
495508
default:
496509
break;
497510
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp