首页 > 其他分享 >ignite系列之20-数据源扩展GaussDB

ignite系列之20-数据源扩展GaussDB

时间:2024-08-08 15:05:13浏览次数:22  
标签:ignite 20 String 数据源 cols public fullTblName return col

其它内容参见

ignite系列之19-数据源扩展Postgresql

 

public String loadCacheSelectRangeQuery(String fullTblName, Collection<String> keyCols) {
String cols = mkString(keyCols, ",");
String condition = DataSourceUtils.getCondition(fullTblName);
return StringUtils.isBlank(condition) ? String.format("SELECT %s FROM (SELECT %s, row_number() over(order by %s) AS rn FROM %s ) as temp WHERE mod(rn, ?) = 0", cols, cols, cols, fullTblName) : String.format("SELECT %s FROM (SELECT %s, row_number() over(order by %s) AS rn FROM %s where %s) as temp WHERE mod(rn, ?) = 0", cols, cols, cols, fullTblName, condition);
}

public boolean hasMerge() {
return true;
}

public String mergeQuery(String fullTblName, Collection<String> keyCols, Collection<String> uniqCols) {
Collection<String> cols = F.concat(false, keyCols, uniqCols);
String onPart = mkString(keyCols, new C1<String, String>() {
public String apply(String col) {
return String.format("T.%s = S.%s", col, col);
}
}, "", " AND ", "");
String updatePart = mkString(uniqCols, new C1<String, String>() {
public String apply(String col) {
return String.format("T.%s = S.%s", col, col);
}
}, "", ", ", "");
String insertPart = mkString(cols, new C1<String, String>() {
public String apply(String col) {
return String.format("S.%s", col);
}
}, "", ", ", "");
return String.format("MERGE INTO %s AS T USING (SELECT * FROM (VALUES (%s)) AS V (%s)) AS S ON %s WHEN MATCHED THEN UPDATE SET %s WHEN NOT MATCHED THEN INSERT (%s) VALUES (%s)", fullTblName, repeat("?", cols.size(), "", ",", ""), mkString(cols, ", "), onPart, updatePart, mkString(cols, ", "), insertPart);
}

标签:ignite,20,String,数据源,cols,public,fullTblName,return,col
From: https://www.cnblogs.com/yangh2016/p/18348983

相关文章

  • 洛谷 P1019 [NOIP2000 提高组] 单词接龙 题解
    暴搜!!暴搜!!暴搜!!重要的事情说三遍#include<bits/stdc++.h>usingnamespacestd;constintN=25;intn,ans,use[N];strings,word[N];voiddfs(strings){intls=s.size();//s的lengthans=max(ans,ls);//求出最长的单词接龙for(inti=0;i<n......
  • ignite系列之19-数据源扩展Postgresql
    storeFactory.setDialect(dialect);storeFactory.setDataSourceFactory(newDefaultDataSourceFactory((Object)null));storeFactory.setCacheName(igniteTable.tableName());importjavax.cache.configuration.Factory;publicclassDefaultDataSourceFactory<T>impl......
  • [CSP-J 2023] 小苹果
    [CSP-J2023]小苹果【官方数据】题目描述小Y的桌子上放着 nn 个苹果从左到右排成一列,编号为从 11 到 nn。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 11 个苹果开始、每隔 22 个苹果拿走 11 个苹果。随后小苞会将剩下......
  • [CSP-S 2023] 密码锁
    题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从 00 到 99 的数字。每个拨圈都是从 00 到 99 的循环,即 99 拨动一个位置后可以变成 00 或 88,因为校园里比较安全,小Y采用的锁车方式是:从正确密码开始,随机转动密码锁仅一次;每次都是以某个幅度仅转......
  • IgniteFAQ-9-DataRegion OOM
    报错示例:[type=CRITICAL_ERROR,err=classo.a.i.i.mem.IgniteOutofMemoryException:Outofmemorytaregion[name=default,initsize=10.0MiB,maxsize=5.0GiB,persistenceEnabled=false]Trythefollowincreasemaximumoff-heapmemorysize(DataReglonconfiguration.maxs......
  • IgniteFAQ-12-Ignite报OOm
    Ignite报堆外内存OOM,最直接原因是现在是纯堆外内存存储,没有持久化数据量太大导致堆外内存不足,从而导致OOM,开发、测试环境排查可以先给比较大的内存,启动起来,通过如下两个sql查询真实数据量和占用内存大小来排查;如果是长期方案:1、建议合理评估数据量,针对堆外内存进行配置,针对数据......
  • IgniteFAQ-6-Ignite 通过zk组网时集群组网失败
    zk组网类ZookeeperDiscoverySpizkDiscoverySpi=newZookeeperDiscoverySpi();cfg.setDiscoverySpi(zkDiscoverySpi);配置示例:#ignite集群租房方式,配置zk为,zk集群组网方式fc.mybatis.ignite.discovery=zk#Ignitezk集群组网方式ignite.discoverySpi.zkConnectionStr......
  • ignite系列之18-Ignite 分布式锁
    Ignite事务会隐式获得分布式锁,但是有的场景可能需要显式获得锁。IgniteCacheAPI的lock()方法会返回java.util.concurrent.locks.Lock的实例,其可以获得指定键的显式分布式锁,通过IgniteCache.lockAll()方法,也可以在一个集合对象上获得锁。使用代码示例:IgniteCache<Object,......
  • IgniteFAQ-2-CacheWriterException: Failed to write entries in database
    ignite同步或者异步落库数据到DB时,如果因为落库的数据不满足db库的要求,如长度、精度、nonull等限制,就会出现落库失败报Failedtowriteentriesindatabase错误。ignite异步落库默认时5秒或者10240条flush一次,失败的数据会不断尝试,当存在一条数据以为数据库要求失败时,会卡住此表......
  • ignite系列之15--使用ignite构建服务端application配置项
    #false为服务端模式,true为客户端模式,此处配置falseignite.clientMode=false#类对等开关,默认开启,此处需要开启ignite.peerClassLoadingEnabled=true#集群发现端口,多个节点部署时端口是一个,localPortRange=1,addresses配置成ip1:port,ip2:portignite.discoverySpi.localPort=47500ig......