在kettle中的kettle-core.jar中存在一个bug,导致kjb在spoon中执行同在kitchen执行和调用api的时候执行结果不一样,体现在变量替换中如果要替换的变量不存在的时候,在spoon中替换为空,在kitchen中则不替换。
具体bug所在位置为:org.pentaho.di.core.util.StringUtil中的53行。
原来为
int i = rest.indexOf(open);
while (i > -1)
{
int j = rest.indexOf(close, i + open.length());
if (j > -1)
{
String varName = rest.substring(i + open.length(), j);
Object value = variablesValues.get(varName);
if (value == null)
{
value = open + varName + close;
}
else
{
int another = ((String)value).indexOf(open);
if (another > -1)
{
if (recursion > 50)
{
throw new RuntimeException("Endless loop detected for substitution of variable: " + (String)value);
}
recursion++; value = substitute((String)value, variablesValues, open, close, recursion);
}
}
buffer.append(rest.substring(0, i));
buffer.append(value);
rest = rest.substring(j + close.length());
}
else
{
buffer.append(rest);
rest = "";
}
i = rest.indexOf(open);
}
其中的
value = open + varName + close;
应该为value = "";
分享到:
相关推荐
包括数据库迁移,增量抽取,多表合成一张表,一个字段拆分成多字段,数据正则过滤、kitchen部署调优等案例,内含相应数据库的SQL脚本、kjb、ktr文件,以及使用过程中会经常遇到的bug注意事项
每次都要安装一遍,耗费收益简介 Smart Kettle是针对上述企业的痛点,对kettle的使用做了一些包装、优化,使其在web端也能 具备基础的kettle作业、转换的配置、调度、监控,能在很大一定程度上协助企业完成不同业务...
本手册编写的目的主要为了应对以下场景:在使用开源的 Kettle 过程中如有个性化需求需要自定义部分功能模块,或者发现系统 Bug 且官方未及时提供修复时,我们需要修改源码并且重新编译打包运行。更多的时候我们需要...
传统的实现方式一般都要进行研发(一小部分例如两个相同表结构的表之间的数据同步,如果sqlserver数据库可以通过发布/订阅实现),涉及到一些复杂的一些业务逻辑如果我们研发出来还容易出各种bug;前置机模式:这是...
本工具支持以下功能: 1. 相同/不同类型数据库进行数据表比较及字段比较,支持三种类型:Oracle,SqlServer,MySql 2. 数据表迁移功能,如:将oracle中Table_1迁移至MySql数据库中,且...Bug反馈:handsomedtl@126.com
kettke源码分析 kettle是一个开源产品,产品本身设计是很优秀的,代码应该是很多开源爱好者用业余时间贡献的,代码整体结构还是比较容易理解的,但具体到每一个控件内部就因人而异了,感觉还是挺复杂的,肯定别人...
今天反馈过来一个BUG,说一个页面的功能用不了。打开控制台发现报错:object is not a function。 感觉很奇怪,这块的功能最新没动过怎么会突然出问题了呢?上线时主流浏览器都测试过了呀。 虽然奇怪,但是还的解决...
可以设定执行测试的状态(通过,失败,锁定,尚未执行),失败的测试用例可以和 bugzilla 中的 bug 关联,每个测试用例执行的时候,可以填写相关说明 测试结果分析(可以实现按照需求,按照测试计划,按照测试用例...