对Edge进行alter操作,修改属性类型后,其他属性的值也被修改

版本: 1.1.0
设备: 3节点 64核 128G内存

分布式 三节点

执行操作:
1.创建边:CREATE EDGE follow1(name int,age int)
2.插入数据 INSERT EDGE follow1(name,age) VALUES 100 -> 101:(95,100);
3.查看数据:fetch prop on follow1 100 -> 101

============================================================================
| follow1._src | follow1._dst | follow1._rank | follow1.name | follow1.age |
============================================================================
| 100          | 101          | 0             | 95           | 100         |
----------------------------------------------------------------------------

4.修改边属性类型 alter edge follow1 change(name double default 12.12)

5.查看数据

==================================================================================
| follow1._src | follow1._dst | follow1._rank | follow1.name     | follow1.age        |
==================================================================================
| 100         | 101         | 0            | 140406484350176 | 0.000000000000000 |
----------------------------------------------------------------------------------

这是什么原因导致的呢??

@tomZou12 麻烦补充一下版本和设备信息哈,谢谢!

版本: 1.1.0
设备: 3节点 64核 128G内存

1赞

1.0 int 转 double 是有点问题, 会修, 2.0 无此问题.

感觉不单是int 转double的问题,int转string也是,使用alter修改属性类型,原有数据都会改变。

嗯嗯, 是的, 会修的 :grinning: 感谢反馈.

预计什么时候修复呢,2.0的版本有发布计划吗

下周应该会有 PR, 2.0 在做最后的测试/优化.

好的 麻烦PR提交时,在这个帖子更新一下。

你好,可以用一下2.0,2.0没有这个问题

我们现在业务用的是1.1.0,现在不好切换。可以说明一下,这个bug是在2.0哪个pr修复的吗

会有个 1.1 的 pr 修这个, 2.0 天生没有这个问题

fix pr https://github.com/vesoft-inc/nebula/pull/2450

为什么不增加 int/double转换为string呢,而且double转换为string时,命令可以执行但是实际是不能转换成功的,但是会对另一列产生影响的现象并没有改变

你查看下其他的会在storage log里面报错信息的, “Incompatible value type XXXX”
然后都转成了默认值,

有这个日志,转换为默认值,为什么其他列也会有影响,就如我的问题所示。不应该影响其他列才对

如下操作,修改时会给默认值,那也不应该导致列f1的值发生改变

4.修改边属性类型 alter edge follow1 change(name string default 12.12)

5.查看数据

==================================================================================
| follow1._src | follow1._dst | follow1._rank | follow1.name     | follow1.age        |
==================================================================================
| 100         | 101         | 0            | 140406484350176 | 0.000000000000000 |
----------------------------------------------------------------------------------

fetch prop on follow2 100 → 101 yield follow1.p1则可查出 字段p1的实际值。感觉这里给默认值还是有问题

使用上面的那个pr后的结果是这样的:age列也没有改,不知道你的怎么操作的。

不可能会影响其他列的。你再仔细看看

浙ICP备20010487号