Skip to content

Commit

Permalink
[ISSUE alibaba#8312]Finish the datasource plugin. (alibaba#9226)
Browse files Browse the repository at this point in the history
* [ISSUE alibaba#8312]Finish the datasource plugin.

* [ISSUE alibaba#8312]Update derby PersistService impl.
  • Loading branch information
The-Gamer-01 authored and KomachiSion committed Oct 24, 2022
1 parent a8d6360 commit 398959d
Show file tree
Hide file tree
Showing 27 changed files with 1,188 additions and 1,194 deletions.
5 changes: 5 additions & 0 deletions config/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-datasource-plugin</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,7 @@ public Page<E> fetchPage(final String sqlCountRows, final String sqlFetchRows, f
return page;
}

final int startRow = (pageNo - 1) * pageSize;
String selectSql = sqlFetchRows + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY";

List<E> result = databaseOperate.queryMany(selectSql, args, rowMapper);
List<E> result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand Down Expand Up @@ -123,8 +120,7 @@ public Page<E> fetchPageLimit(final String sqlCountRows, final String sqlFetchRo
return page;
}

String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");
List<E> result = databaseOperate.queryMany(selectSql, args, rowMapper);
List<E> result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand Down Expand Up @@ -159,9 +155,7 @@ public Page<E> fetchPageLimit(final String sqlCountRows, final Object[] args1, f
return page;
}

String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");

List<E> result = databaseOperate.queryMany(selectSql, args2, rowMapper);
List<E> result = databaseOperate.queryMany(sqlFetchRows, args2, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand All @@ -177,9 +171,7 @@ public Page<E> fetchPageLimit(final String sqlFetchRows, final Object[] args, fi
// Create Page object
final Page<E> page = new Page<>();

String selectSql = sqlFetchRows.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");

List<E> result = databaseOperate.queryMany(selectSql, args, rowMapper);
List<E> result = databaseOperate.queryMany(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand All @@ -188,9 +180,7 @@ public Page<E> fetchPageLimit(final String sqlFetchRows, final Object[] args, fi

@Override
public void updateLimit(final String sql, final Object[] args) {
String sqlUpdate = sql.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY");

EmbeddedStorageContextUtils.addSqlContext(sqlUpdate, args);
EmbeddedStorageContextUtils.addSqlContext(sql, args);
try {
databaseOperate.update(EmbeddedStorageContextUtils.getCurrentSqlContext());
} finally {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@
import com.alibaba.nacos.config.server.model.Page;
import com.alibaba.nacos.config.server.service.repository.PaginationHelper;
import com.alibaba.nacos.config.server.service.sql.EmbeddedStorageContextUtils;
import com.alibaba.nacos.config.server.utils.PropertyUtil;
import com.alibaba.nacos.sys.env.EnvUtil;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

Expand Down Expand Up @@ -86,17 +84,7 @@ public Page<E> fetchPage(final String sqlCountRows, final String sqlFetchRows, f
return page;
}

final int startRow = (pageNo - 1) * pageSize;
String selectSql = "";
if (isDerby()) {
selectSql = sqlFetchRows + " OFFSET " + startRow + " ROWS FETCH NEXT " + pageSize + " ROWS ONLY";
} else if (lastMaxId != null) {
selectSql = sqlFetchRows + " AND id > " + lastMaxId + " ORDER BY id ASC" + " LIMIT " + 0 + "," + pageSize;
} else {
selectSql = sqlFetchRows + " LIMIT " + startRow + "," + pageSize;
}

List<E> result = jdbcTemplate.query(selectSql, args, rowMapper);
List<E> result = jdbcTemplate.query(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand Down Expand Up @@ -130,13 +118,8 @@ public Page<E> fetchPageLimit(final String sqlCountRows, final String sqlFetchRo
if (pageNo > pageCount) {
return page;
}

String selectSql = sqlFetchRows;
if (isDerby()) {
selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");
}

List<E> result = jdbcTemplate.query(selectSql, args, rowMapper);

List<E> result = jdbcTemplate.query(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand Down Expand Up @@ -170,13 +153,7 @@ public Page<E> fetchPageLimit(final String sqlCountRows, final Object[] args1, f
if (pageNo > pageCount) {
return page;
}

String selectSql = sqlFetchRows;
if (isDerby()) {
selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");
}

List<E> result = jdbcTemplate.query(selectSql, args2, rowMapper);
List<E> result = jdbcTemplate.query(sqlFetchRows, args2, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand All @@ -191,13 +168,7 @@ public Page<E> fetchPageLimit(final String sqlFetchRows, final Object[] args, fi
}
// Create Page object
final Page<E> page = new Page<>();

String selectSql = sqlFetchRows;
if (isDerby()) {
selectSql = selectSql.replaceAll("(?i)LIMIT \\?,\\?", "OFFSET ? ROWS FETCH NEXT ? ROWS ONLY");
}

List<E> result = jdbcTemplate.query(selectSql, args, rowMapper);
List<E> result = jdbcTemplate.query(sqlFetchRows, args, rowMapper);
for (E item : result) {
page.getPageItems().add(item);
}
Expand All @@ -206,14 +177,8 @@ public Page<E> fetchPageLimit(final String sqlFetchRows, final Object[] args, fi

@Override
public void updateLimit(final String sql, final Object[] args) {
String sqlUpdate = sql;

if (isDerby()) {
sqlUpdate = sqlUpdate.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY");
}

try {
jdbcTemplate.update(sqlUpdate, args);
jdbcTemplate.update(sql, args);
} finally {
EmbeddedStorageContextUtils.cleanAllContext();
}
Expand All @@ -222,20 +187,11 @@ public void updateLimit(final String sql, final Object[] args) {
public int updateLimitWithResponse(final String sql, final Object[] args) {
String sqlUpdate = sql;

if (isDerby()) {
sqlUpdate = sqlUpdate.replaceAll("LIMIT \\?", "OFFSET 0 ROWS FETCH NEXT ? ROWS ONLY");
}

try {
return jdbcTemplate.update(sqlUpdate, args);
} finally {
EmbeddedStorageContextUtils.cleanAllContext();
}
}

private boolean isDerby() {
return (EnvUtil.getStandaloneMode() && !PropertyUtil.isUseExternalDB()) || PropertyUtil
.isEmbeddedStorage();
}

}
Loading

0 comments on commit 398959d

Please sign in to comment.