@caicurryhttps://gitee.com/caicurry 你好,针对问题单https://gitee.com/opengauss/openGauss-server/issues/I64304
两个问题均为非问题 ,函数匹配时如果出现多个可选项,需要匹配入参的优先级,并选择优先级高的那个函数进行调用。(字符串可以转换成几乎任意类型的数据) 第一个问题,在openGauss中,time类型和timetz类型同属Datetime,因此需要字符串对比同类中的优先级,代码中明确规定timetz的优先级比time高,所以优先匹配了timetz类型,这个是正常现象 [输入图片说明]
第二个问题,openGauss中,tinyint属于Numeric类别数据类型,time和timetz属于Datetime类别数据类型,在类型转换时,Numeric类别总是高于Datetime类别。所以优先匹配tinyint类型。 [输入图片说明]
又因为输入的字符串的格式对于tinyint来说是非法的,因此报错。 如果想要让这两个语句成功,可以利用'::type_name'这种形式对字符串进行强制转换,如下所示: [输入图片说明] [输入图片说明]