【标题】 修复I8LWND所示的int转time的时候,insert的表现和mysql不一致的问题

【实现内容】: 修复I8LWND所示的int转time的时候,insert的表现和mysql不一致的问题
【根因分析】: 主要是在int32_b_format_time中,在非严格模式写场景下,数据异常的时候,没返回0。
【实现方案】: int32_b_format_time在非严格模式写并且入参数据异常的时候直接返回0,使得和mysql保持成一致。
【关联需求或issue】: https://e.gitee.com/opengaussorg/dashboard?issue=I8LWND
This commit is contained in:
wangfeihuo
2023-12-14 18:02:09 +08:00
parent ae26973d9e
commit 8f71a1289a
2 changed files with 34 additions and 17 deletions

View File

@ -1295,7 +1295,7 @@ Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1, bool c
return result; return result;
} }
Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2) Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1306,6 +1306,7 @@ Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum
fcinfo.arg[1] = arg2; fcinfo.arg[1] = arg2;
fcinfo.argnull[0] = false; fcinfo.argnull[0] = false;
fcinfo.argnull[1] = false; fcinfo.argnull[1] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1318,7 +1319,7 @@ Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum
return result; return result;
} }
Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3) Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1331,6 +1332,7 @@ Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum
fcinfo.argnull[0] = false; fcinfo.argnull[0] = false;
fcinfo.argnull[1] = false; fcinfo.argnull[1] = false;
fcinfo.argnull[2] = false; fcinfo.argnull[2] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1343,7 +1345,8 @@ Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum
return result; return result;
} }
Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4) Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1358,6 +1361,7 @@ Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum
fcinfo.argnull[1] = false; fcinfo.argnull[1] = false;
fcinfo.argnull[2] = false; fcinfo.argnull[2] = false;
fcinfo.argnull[3] = false; fcinfo.argnull[3] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1371,7 +1375,8 @@ Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum
} }
Datum DirectFunctionCall5Coll( Datum DirectFunctionCall5Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5) PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5,
bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1388,6 +1393,7 @@ Datum DirectFunctionCall5Coll(
fcinfo.argnull[2] = false; fcinfo.argnull[2] = false;
fcinfo.argnull[3] = false; fcinfo.argnull[3] = false;
fcinfo.argnull[4] = false; fcinfo.argnull[4] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1401,7 +1407,8 @@ Datum DirectFunctionCall5Coll(
} }
Datum DirectFunctionCall6Coll( Datum DirectFunctionCall6Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6) PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6,
bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1420,6 +1427,7 @@ Datum DirectFunctionCall6Coll(
fcinfo.argnull[3] = false; fcinfo.argnull[3] = false;
fcinfo.argnull[4] = false; fcinfo.argnull[4] = false;
fcinfo.argnull[5] = false; fcinfo.argnull[5] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1433,7 +1441,8 @@ Datum DirectFunctionCall6Coll(
} }
Datum DirectFunctionCall7Coll( Datum DirectFunctionCall7Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7) PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7,
bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1454,6 +1463,7 @@ Datum DirectFunctionCall7Coll(
fcinfo.argnull[4] = false; fcinfo.argnull[4] = false;
fcinfo.argnull[5] = false; fcinfo.argnull[5] = false;
fcinfo.argnull[6] = false; fcinfo.argnull[6] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1467,7 +1477,7 @@ Datum DirectFunctionCall7Coll(
} }
Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
Datum arg5, Datum arg6, Datum arg7, Datum arg8) Datum arg5, Datum arg6, Datum arg7, Datum arg8, bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1490,6 +1500,7 @@ Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum
fcinfo.argnull[5] = false; fcinfo.argnull[5] = false;
fcinfo.argnull[6] = false; fcinfo.argnull[6] = false;
fcinfo.argnull[7] = false; fcinfo.argnull[7] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);
@ -1503,7 +1514,7 @@ Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum
} }
Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9) Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9, bool can_ignore)
{ {
FunctionCallInfoData fcinfo; FunctionCallInfoData fcinfo;
Datum result; Datum result;
@ -1528,6 +1539,7 @@ Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum
fcinfo.argnull[6] = false; fcinfo.argnull[6] = false;
fcinfo.argnull[7] = false; fcinfo.argnull[7] = false;
fcinfo.argnull[8] = false; fcinfo.argnull[8] = false;
fcinfo.can_ignore = can_ignore;
result = (*func)(&fcinfo); result = (*func)(&fcinfo);

View File

@ -457,19 +457,24 @@ typedef const Pg_magic_struct* (*PGModuleMagicFunction)(void);
* are allowed to be NULL. * are allowed to be NULL.
*/ */
extern Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1, bool can_ignore = false); extern Datum DirectFunctionCall1Coll(PGFunction func, Oid collation, Datum arg1, bool can_ignore = false);
extern Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2); extern Datum DirectFunctionCall2Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, bool can_ignore = false);
extern Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3); extern Datum DirectFunctionCall3Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3,
extern Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4); bool can_ignore = false);
extern Datum DirectFunctionCall4Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
bool can_ignore = false);
extern Datum DirectFunctionCall5Coll( extern Datum DirectFunctionCall5Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5); PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5,
bool can_ignore = false);
extern Datum DirectFunctionCall6Coll( extern Datum DirectFunctionCall6Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6); PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6,
bool can_ignore = false);
extern Datum DirectFunctionCall7Coll( extern Datum DirectFunctionCall7Coll(
PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7); PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, Datum arg5, Datum arg6, Datum arg7,
bool can_ignore = false);
extern Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, extern Datum DirectFunctionCall8Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
Datum arg5, Datum arg6, Datum arg7, Datum arg8); Datum arg5, Datum arg6, Datum arg7, Datum arg8, bool can_ignore = false);
extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4, extern Datum DirectFunctionCall9Coll(PGFunction func, Oid collation, Datum arg1, Datum arg2, Datum arg3, Datum arg4,
Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9); Datum arg5, Datum arg6, Datum arg7, Datum arg8, Datum arg9, bool can_ignore = false);
/* These are for invocation of a previously-looked-up function with a /* These are for invocation of a previously-looked-up function with a
* directly-computed parameter list. Note that neither arguments nor result * directly-computed parameter list. Note that neither arguments nor result