@@ -396,6 +396,7 @@ const char
396
396
CLIENT_VERSION_NAME[] = " CLIENT_VERSION" ,
397
397
CURRENT_USER_NAME[] = " CURRENT_USER" ,
398
398
CURRENT_ROLE_NAME[] = " CURRENT_ROLE" ,
399
+ SERVER_PID_NAME[] = " SERVER_PID" ,
399
400
SESSION_IDLE_TIMEOUT[] = " SESSION_IDLE_TIMEOUT" ,
400
401
STATEMENT_TIMEOUT[] = " STATEMENT_TIMEOUT" ,
401
402
EFFECTIVE_USER_NAME[] = " EFFECTIVE_USER" ,
@@ -4709,6 +4710,8 @@ dsc* evlGetContext(thread_db* tdbb, const SysFunction*, const NestValueArray& ar
4709
4710
4710
4711
resultStr = role.c_str ();
4711
4712
}
4713
+ else if (nameStr == SERVER_PID_NAME)
4714
+ resultStr.printf (" %d" , getpid ());
4712
4715
else if (nameStr == SESSION_IDLE_TIMEOUT)
4713
4716
resultStr.printf (" %" ULONGFORMAT, attachment->getIdleTimeout ());
4714
4717
else if (nameStr == STATEMENT_TIMEOUT)
@@ -5467,19 +5470,22 @@ dsc* evlMakeDbkey(Jrd::thread_db* tdbb, const SysFunction* function, const NestV
5467
5470
5468
5471
5469
5472
dsc* evlMaxMinValue (thread_db* tdbb, const SysFunction* function, const NestValueArray& args,
5470
- impure_value*)
5473
+ impure_value* impure )
5471
5474
{
5472
5475
fb_assert (args.getCount () >= 1 );
5473
5476
fb_assert (function->misc != NULL );
5474
5477
5475
- Request* request = tdbb->getRequest ();
5476
- dsc* result = NULL ;
5478
+ const auto request = tdbb->getRequest ();
5479
+ HalfStaticArray<const dsc*, 2 > argTypes (args.getCount ());
5480
+ dsc* result = nullptr ;
5477
5481
5478
5482
for (FB_SIZE_T i = 0 ; i < args.getCount (); ++i)
5479
5483
{
5480
- dsc* value = EVL_expr (tdbb, request, args[i]);
5484
+ const auto value = EVL_expr (tdbb, request, args[i]);
5481
5485
if (request->req_flags & req_null) // return NULL if value is NULL
5482
- return NULL ;
5486
+ return nullptr ;
5487
+
5488
+ argTypes.add (value);
5483
5489
5484
5490
if (i == 0 )
5485
5491
result = value;
@@ -5503,7 +5509,12 @@ dsc* evlMaxMinValue(thread_db* tdbb, const SysFunction* function, const NestValu
5503
5509
}
5504
5510
}
5505
5511
5506
- return result;
5512
+ DataTypeUtil (tdbb).makeFromList (&impure->vlu_desc , function->name , argTypes.getCount (), argTypes.begin ());
5513
+ impure->vlu_desc .dsc_address = (UCHAR*) &impure->vlu_misc ;
5514
+
5515
+ MOV_move (tdbb, result, &impure->vlu_desc );
5516
+
5517
+ return &impure->vlu_desc ;
5507
5518
}
5508
5519
5509
5520
0 commit comments