Package gudusoft.gsqlparser.sqlenv
Class CollatorProvider
Object
gudusoft.gsqlparser.sqlenv.CollatorProvider
Collator 提供者(SQL Server COLLATION_BASED 专用)
关键设计:
Collator非线程安全,使用ThreadLocal缓存- 按 collation 名称缓存实例(每个 collation 一个 ThreadLocal)
- 支持常见 SQL Server collation(CI_AS, CS_AS 等)
使用示例:
CollatorProvider provider = new CollatorProvider();
// 获取 Collator(自动 ThreadLocal 缓存)
Collator collator = provider.getCollator("SQL_Latin1_General_CP1_CI_AS");
// 比较标识符
int result = collator.compare("MyTable", "MYTABLE");
// CI (Case Insensitive): result == 0
// CS (Case Sensitive): result != 0
性能特性:
- 首次访问:创建 Collator 实例(~100μs)
- 后续访问:ThreadLocal.get()(~10ns)
- 内存开销:每线程每 collation 一个实例(~1KB)
- Since:
- 3.1.0.9
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid清理缓存(用于测试或内存管理)int获取缓存大小(不同 collation 的数量)getCollator(String collationName) 获取 Collator 实例(ThreadLocal 缓存)inttestCompare(String collationName, String str1, String str2) 测试 collation 比较(用于调试)
-
Constructor Details
-
CollatorProvider
public CollatorProvider()
-
-
Method Details
-
getCollator
获取 Collator 实例(ThreadLocal 缓存)此方法线程安全,每个线程获得独立的 Collator 实例。
- Parameters:
collationName- SQL Server collation 名称(例如:SQL_Latin1_General_CP1_CI_AS)- Returns:
- Collator 实例(线程本地)
-
clearCache
清理缓存(用于测试或内存管理)警告:调用此方法后,所有线程的 Collator 实例将失效,下次访问时重新创建。
-
getCacheSize
获取缓存大小(不同 collation 的数量)- Returns:
- 缓存的 collation 数量
-
testCompare
测试 collation 比较(用于调试)- Parameters:
collationName- collation 名称str1- 字符串 1str2- 字符串 2- Returns:
- 比较结果(0: 相等, <0: str1 < str2, >0: str1 > str2)
-