关于 show columns from db.table

【详述】
我需要根据任意sql来判断sql里面的字段以及字段类型,所以我想着先创建临时的表或视图,然后查询字段和类型,然后在删除临时的表或视图

代码逻辑,第一步:创建表,第二部:立马查show columns from db.table,第三步:删除这个表

我频繁调用的时候,发现,创建表之后,立马查show columns from db.table,查不到数据,我设置休眠时间0.1秒后发现数据都可以出来(频繁postman调用),我想知道这个columns表的更新时长?是否延迟很小?

【业务影响】
【StarRocks版本】2.2.4
【集群规模】例如:3fe + 5be

额 延迟我不知道
这个类似的问题我解决过
很频繁的DDL语句不太好,我是拿到建表语句用代码解析sql来分辨他有多少个什么类的字段
你如果建表以后没有其它用途了 只是需要字段类型 也可以通过一段逻辑解析它

通过sql来解析字段类型,感觉解析很费解,规则也不定,有好的方式吗?有相关的demo吗?

目前我这个sql是很随意的,并不是建表DDL语句,单纯解析sql貌似不太好弄。

已经能直接在数据库的sql能有多随意呀
光是解析字段还不容易吗


字段部分多规整

字段名,类型,是否可空,注释
就这么几项,很好解析的

你上面不是提到要先在数据库建表吗 怎么就不是DDL了 不是DDL能 用来执行建表吗

我呢个sql是任意的,使用CTAS来建表或者建视图,来获取类型。并不是DDL语句。

嗷嗷 原来是这样子 那这个延迟的情况复现稳定吗

很容易复现,我用postman连续点几次就出现了。

如果没人有别的办法
我建议你稍微延迟一点也未尝不可嘛

另外一个是如果ctas的语句不是很复杂 你肯定select的是你已有的表
在已有的表建表的时候缓存一份表字段和表的映射
在ctas的时候就不用ctas了 直接根据映射取字段类型

当然这俩办法我也没实施过 看起来是可行的

目前加了一个延迟处理。

第二种方式,不好处理,select虽然都是已有的表,但是其中指标可以用很多函数,或者嵌套。结构很不固定。不好解析。