doris 2.0.3版本遇到一个函数 parse_url 逻辑与描述不匹配的问题

Viewed 31

parse_url
description
Syntax
VARCHAR parse_url(VARCHAR url, VARCHAR name)

在 url 解析出 name 对应的字段,name 可选项为:'PROTOCOL', 'HOST', 'PATH', 'REF', 'AUTHORITY', 'FILE', 'USERINFO', 'PORT', 'QUERY',将结果返回。

但是我在2.0.3的版本中使用这个函数时,发现解析错误的一个地方
示例:

 select
     parse_url('https://info.21cp.com/info/detail/657148086413598720.html#openurl=#oldurl=http%3A@@info.21cp.com@info@detail@657148086413598720.html', 'HOST')

理论上应该返回info.21cp.com,
但是实际上返回的是 /info/detail/657148086413598720.html

2 Answers

这个我们去研究下这个函数的标准行为看看是否符合预期,在 2.1.6 测试也是相同的行为。

看了一下,这块儿代码逻辑确实有问题,把@当做Basic Authentication的一部分了。找Host应该先抛弃Anchor(#)后的东西再做解析