Skip to content

[pull] master from Tencent:master #317

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion APIJSONORM/src/main/java/apijson/JSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,11 @@ public static Object parseJSON(Object json) {
return parseArray(json, DEFAULT_JSON_PARSER);
}

throw new IllegalArgumentException("JSON 格式错误!" + s);
try {
return DEFAULT_JSON_PARSER.parseJSON(json);
} catch (Throwable e) {
throw new IllegalArgumentException("JSON 格式错误!" + e.getMessage() + "! " + s);
}
}

/**
Expand Down
5 changes: 0 additions & 5 deletions APIJSONORM/src/main/java/apijson/JSONField.java

This file was deleted.

2 changes: 1 addition & 1 deletion APIJSONORM/src/main/java/apijson/JSONParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import java.util.List;
import java.util.Map;

/**SQL相关创建器
/**JSON 相关解析器
* @author Lemon
*/
public interface JSONParser<M extends Map<String, Object>, L extends List<Object>> extends JSONCreator<M, L> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,8 @@ public static <T, M extends Map<String, Object>, L extends List<Object>> Object
* @throws Exception
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T, M extends Map<String, Object>, L extends List<Object>> Object invoke(@NotNull AbstractFunctionParser<T, M, L> parser, @NotNull String methodName
public static <T, M extends Map<String, Object>, L extends List<Object>> Object invoke(
@NotNull AbstractFunctionParser<T, M, L> parser, @NotNull String methodName
, @NotNull Class<?>[] parameterTypes, @NotNull Object[] args, String returnType
, Map<String, Object> current, ScriptExecutor scriptExecutor) throws Exception {
if (scriptExecutor != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,10 +256,10 @@ public AbstractObjectParser<T, M, L> parse(String name, boolean isReuse) throws
break;
}

// key可能为JSONArray,需要进行手动转换(fastjson为低版本时允许自动转换,如1.2.21)
// 例如request json为 "{[]:{"page": 2, "table1":{}}}"
// key 可能为 JSONArray,需要进行手动转换(fastjson 为低版本时允许自动转换,如 1.2.21)
// 例如 request json为 "{[]:{"page": 2, "table1":{}}}"
Object field = entry == null ? null : entry.getKey();
String key = field instanceof JSONArray ? ((JSONArray) field).toJSONString() : field.toString();
String key = field instanceof Map ? toJSONString(field) : field.toString();
Object value = key == null ? null : entry.getValue();
if (value == null) {
continue;
Expand Down
12 changes: 11 additions & 1 deletion APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ public abstract class AbstractSQLConfig<T, M extends Map<String, Object>, L exte
DATABASE_LIST.add(DATABASE_DUCKDB);
DATABASE_LIST.add(DATABASE_SURREALDB);
DATABASE_LIST.add(DATABASE_OPENGAUSS);
DATABASE_LIST.add(DATABASE_DORIS);


RAW_MAP = new LinkedHashMap<>(); // 保证顺序,避免配置冲突等意外情况
Expand Down Expand Up @@ -298,6 +299,7 @@ public abstract class AbstractSQLConfig<T, M extends Map<String, Object>, L exte
RAW_MAP.put("BY", "");
RAW_MAP.put("DESC", "");
RAW_MAP.put("ASC", "");
RAW_MAP.put("PRECEDING", ""); // 往前
RAW_MAP.put("FOLLOWING", ""); // 往后
RAW_MAP.put("BETWEEN", "");
RAW_MAP.put("ROWS", "");
Expand Down Expand Up @@ -1379,12 +1381,20 @@ public static boolean isOpenGauss(String db) {
return DATABASE_OPENGAUSS.equals(db);
}

@Override
public boolean isDoris() {
return isDoris(gainSQLDatabase());
}
public static boolean isDoris(String db) {
return DATABASE_DORIS.equals(db);
}

@Override
public String getQuote() { // MongoDB 同时支持 `tbl` 反引号 和 "col" 双引号
if(isElasticsearch() || isManticore() || isIoTDB() || isSurrealDB()) {
return "";
}
return isMySQL() || isMariaDB() || isTiDB() || isClickHouse() || isTDengine() || isMilvus() ? "`" : "\"";
return isMySQL() || isMariaDB() || isTiDB() || isClickHouse() || isTDengine() || isMilvus() || isDoris() ? "`" : "\"";
}

public String quote(String s) {
Expand Down
3 changes: 2 additions & 1 deletion APIJSONORM/src/main/java/apijson/orm/JSONRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ public Object put(String key, Object value) {
try {
target = JSON.parseJSON(value);
} catch (Exception e) {
throw new RuntimeException(e);
// nothing
e.printStackTrace();
}
// if (target == null) { // "tag":"User" 报错
// return null;
Expand Down
2 changes: 2 additions & 0 deletions APIJSONORM/src/main/java/apijson/orm/SQLConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public interface SQLConfig<T, M extends Map<String, Object>, L extends List<Obje
String DATABASE_HIVE = "HIVE"; // https://hive.apache.org
String DATABASE_PRESTO = "PRESTO"; // Facebook PrestoDB https://prestodb.io
String DATABASE_TRINO = "TRINO"; // PrestoSQL https://trino.io
String DATABASE_DORIS = "DORIS"; // https://doris.apache.org
String DATABASE_SNOWFLAKE = "SNOWFLAKE"; // https://www.snowflake.com
String DATABASE_DATABRICKS = "DATABRICKS"; // https://www.databricks.com
String DATABASE_CASSANDRA = "CASSANDRA"; // https://cassandra.apache.org
Expand Down Expand Up @@ -115,6 +116,7 @@ public interface SQLConfig<T, M extends Map<String, Object>, L extends List<Obje
boolean isDuckDB();
boolean isSurrealDB();
boolean isOpenGauss();
boolean isDoris();


// 暂时只兼容以上几种
Expand Down
2 changes: 0 additions & 2 deletions APIJSONORM/src/main/java/apijson/orm/Subquery.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@

package apijson.orm;

import apijson.JSONField;

import java.util.List;
import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,9 @@ else if (config.isPresto()) {
else if (config.isTrino()) {
db = SQLConfig.DATABASE_TRINO + " " + dbVersion;
}
else if (config.isDoris()) {
db = SQLConfig.DATABASE_DORIS + " " + dbVersion;
}
else if (config.isSnowflake()) {
db = SQLConfig.DATABASE_SNOWFLAKE + " " + dbVersion;
}
Expand Down