Skip to content

Releases: sagframe/sagacity-sqltoy

4.9.6 增强sqlite 的支持,剔除sqlserver2008 的支持

05 Feb 14:20
Compare
Choose a tag to compare

1、强化了sqlite的支持
2、剔除sqlserver2008版本的支持,后面将废弃对sybase_iq的支持(已经没有用户)
3、针对batchUpdate方法增加了集合数据为空判断
4、对代码进行了部分优化,更加精炼

备注:
1、使用quickvo时,可以直接下载sqltoy-quickvo-all-4.11.jar 放于quickvo目录下面
2、quickvo里面已经包含了oracle、mysql、sqlserver、postgres、clickhouse的驱动,如db2、sqlite等则放于drivers目录下面。
3、注意修改quickvo.bat 文件执行对应的sqltoy-quickvo-xxx.jar文件名称

4.9.5 支持clickhouse列存储高性能查询数据库

03 Feb 05:34
Compare
Choose a tag to compare

1、支持clickhouse的增加、删除、查询功能(分页、取top和取随机记录),请参见:showcase 下面ClickHouseTest
2、修复beanutils类中引入LocalDate 错误(非java.time.LocalDate)
3、对方言版本进行了规整,如dialect 为oracle表示支持最新版本,针对过时版本如:oracle11g则单独增加一个方言版本,避免方言版本不断增加。(此改进跟开发者无关,sqltoy会跟进数据库连接自动判断版本)

备注:sagacity-quickvo-all-4.11.jar 里面包含了oracle、db2、mssql、postgresql、mysql、clickhouse的驱动,所以比较大

4.9.3 兼容es7+版本并修复不同数据库函数替换转义符问题等

16 Jan 01:33
Compare
Choose a tag to compare

1、日志框架改为slf4j 面向接口,便于用户选择不同的日志框架。

2、兼容elasticsearch7.x 版本,sql查询仍然基于elasticsearch-sql插件
https://github.com/NLPchina/elasticsearch-sql),原因是es xpack sql 不支持分页。
参见:showcase项目test里面的ElasticCaseServiceTest类。sql定义在src\main
com.sagframe.sqltoy.showcase包下面sql.xml文件中定义

3、修复sqltoy同一个sql中的函数在不同类型数据库下执行替换过程因为' 和" 转义符合导致参数解析错误。

4、针对基于redis业务主键生成策略,增加了流水长度,如:订单号生成规则:
1位订单类型(采购P 销售:S)+6位日期(yyMMdd)+3位流水(超出自动扩展长度),之前只支持总长度定义(如10位,但规则改变后前面边长,则会导致流水位数变短),现在可以只定义流水位数。

5、一些错误提醒日志优化

6、部分代码风格优化和注释加强。

7、quickvo工具针对redis业务主键策略进行适配调整(参见showcase项目下面tools\quickvo 用法)

8、兼容了mysql8.0.19 和postgresql cte的新特性

4.8.10 修复updateAll 主键未赋值则不做变更处理,在剔除主键值为空记录时异常

03 Jan 03:12
Compare
Choose a tag to compare

1、修复updateAll 主键未赋值则不做变更处理,剔除主键值为空的记录时报异常(此错误只在主键未赋值且跳过变更发生,即在错误的赋值情况下发生错误,不影响实际功能)
2、优化debug执行sql日志输出为logger.debug模式

4.9.0 将变更日志为slf4j 便于开发者选择不同的日志框架(目前是log4j2)

4.8.9 优化load查询select * 为select field1,field2 完整字段模式

10 Dec 02:57
Compare
Choose a tag to compare

1、将load相关查询的生成SQL从原来的select * 转为select field1,field2 完整字段模式。
2、优化部分注释

本次变更的原因:
在mysql数据库场景下,连接参数使用:useServerPrepStmts=true;cachePrepStmts=true
当使用select * from tableA 过程中,增加tableA的字段,程序再次执行(保持之前会话)时会报:
java.sql.SQLException: java.lang.ArrayIndexOutOfBoundsException 异常!

因此,大家要注意查询时一定避免写select * 要写完整字段!

4.8.7 优化跨数据库函数替换增强对postgresql的支持

21 Nov 06:56
Compare
Choose a tag to compare

1、对sql中的函数增强不同数据库的方言解析替换能力,尤其增强对postgresql支持,增加了If、GroupConcat、decode 函数,函数替换的目的在于:用一种数据库方言写的查询,当换数据库时执行时自动替换成当前数据库的函数,实现跨数据库。
(通过一些性能对比,postgresql比mysql在查询方面性能高不少:postgre 11.5 vs mysql8.0.17 )
2、优化local-translate 缓存有效时间的处理,可以设置keep-alive<=0 表示缓永不过期
3、一些注释优化

4.8.2 修复sql语句中特殊用法 @if() 条件参数值为null判断的规则

12 Oct 05:34
Compare
Choose a tag to compare

版本说明:
1、修复#[@if(:param==null) and t.name=:name] 其中:param为null则剔除整个#[] 之间sql的不合理规则
2、开放TranslateCacheManager的扩展注入,便于可以替换目前的默认实现
3、增加了缓存更新检测的集群节点时间差异参数[sqltoy-translate.xml配置],保障集群环境下缓存更新检测的时效:

4.8.1 优化和修复方言优化导致的缺陷(建议升级)

24 Sep 09:39
Compare
Choose a tag to compare

1、优化将查询部分PreparedStatement 原: ResultSet.TYPE_SCROLL_INSENSITIVE 改为ResultSet.TYPE_FORWARD_ONLY,提升效率。
2、修复根据方言提取sql部分缺陷。

建议升级

4.8.0 优化跨数据库函数替换和对统一赋值增加强制修改功能

17 Sep 02:18
Compare
Choose a tag to compare

4.8.0 继4.6.x 完成缓存和sql更新检测机制后的又一个大幅优化版本,主要改进点:

1、调整了plugin包为plugins,下面的类目录做了适当调整,便于今后扩展
2、大幅优化改进跨数据库函数替换处理模式,将之前执行时函数替换改进为缓存模式,相同数据库类型的存在则直接提取,不存在则进行函数替换并放入缓存中,大幅提升效率
3、优化了IUnifyFieldsHandler接口,增加public IgnoreCaseSet forceUpdateFields()方法,便于提供统一公共字段强制修改策略,如最后修改时间

      <-- spring  sqltoy 配置 (参见sqltoy-showcase项目) --->
      <!-- 提供项目对数据库新增、修改操作时完成诸如:创建人、创建时间、修改人、修改时间等关键字段统一赋 
             值,减轻开发者每次赋值操作 -->
      <property name="unifyFieldsHandler">
	<bean  class="com.sagframe.sqltoy.plugins.SqlToyUnifyFieldsHandler" />
     </property>
      
      /* (non-Javadoc)
	 * @see org.sagacity.sqltoy.plugins.IUnifyFieldsHandler#forceUpdateFields()
	 */
	@Override
	public IgnoreCaseSet forceUpdateFields() {
		//强制updateTime 和 systemTime 进行修改
		IgnoreCaseSet forceUpdates=new IgnoreCaseSet();
		forceUpdates.add("updateTime");
		forceUpdates.add("systemTime");
		return forceUpdates;
	}

4、修复函数替换sysdate 无括号匹配处理的缺陷
5、其他一些优化

4.6.4 改进缓存更新检测机制和一个极端特殊情况下反射bug

10 Sep 08:15
Compare
Choose a tag to compare

1、改进缓存更新检测机制由timer定时改为线程内循环检测。
2、改进shardingDataSource检测机制由Timer定时改为线程内循环检测
3、修复DTO 中当同时有 isName 和 Name (isXXXX 和 XXXX 字段)时映射错误,强化isXXXX形式是boolean类型判断。
4、增强函数to_char和date_format 跨数据库时自动替换,实现mysql和oracle等情况下sql的通用性
5、升级fastjson依赖版本
6、其他一些优化