@@ -396,6 +396,7 @@ const char
396396 CLIENT_VERSION_NAME[] = " CLIENT_VERSION" ,
397397 CURRENT_USER_NAME[] = " CURRENT_USER" ,
398398 CURRENT_ROLE_NAME[] = " CURRENT_ROLE" ,
399+ SERVER_PID_NAME[] = " SERVER_PID" ,
399400 SESSION_IDLE_TIMEOUT[] = " SESSION_IDLE_TIMEOUT" ,
400401 STATEMENT_TIMEOUT[] = " STATEMENT_TIMEOUT" ,
401402 EFFECTIVE_USER_NAME[] = " EFFECTIVE_USER" ,
@@ -4709,6 +4710,8 @@ dsc* evlGetContext(thread_db* tdbb, const SysFunction*, const NestValueArray& ar
47094710
47104711 resultStr = role.c_str ();
47114712 }
4713+ else if (nameStr == SERVER_PID_NAME)
4714+ resultStr.printf (" %d" , getpid ());
47124715 else if (nameStr == SESSION_IDLE_TIMEOUT)
47134716 resultStr.printf (" %" ULONGFORMAT, attachment->getIdleTimeout ());
47144717 else if (nameStr == STATEMENT_TIMEOUT)
@@ -5467,19 +5470,22 @@ dsc* evlMakeDbkey(Jrd::thread_db* tdbb, const SysFunction* function, const NestV
54675470
54685471
54695472dsc* evlMaxMinValue (thread_db* tdbb, const SysFunction* function, const NestValueArray& args,
5470- impure_value*)
5473+ impure_value* impure )
54715474{
54725475 fb_assert (args.getCount () >= 1 );
54735476 fb_assert (function->misc != NULL );
54745477
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 ;
54775481
54785482 for (FB_SIZE_T i = 0 ; i < args.getCount (); ++i)
54795483 {
5480- dsc* value = EVL_expr (tdbb, request, args[i]);
5484+ const auto value = EVL_expr (tdbb, request, args[i]);
54815485 if (request->req_flags & req_null) // return NULL if value is NULL
5482- return NULL ;
5486+ return nullptr ;
5487+
5488+ argTypes.add (value);
54835489
54845490 if (i == 0 )
54855491 result = value;
@@ -5503,7 +5509,12 @@ dsc* evlMaxMinValue(thread_db* tdbb, const SysFunction* function, const NestValu
55035509 }
55045510 }
55055511
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 ;
55075518}
55085519
55095520
0 commit comments