This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 6f62bfa add example and doc of sql hint (#13918)
6f62bfa is described below
commit 6f62bfa48e0f0b3252bbae667c5f3d5fd916a122
Author: tuichenchuxin <[email protected]>
AuthorDate: Fri Dec 3 17:50:51 2021 +0800
add example and doc of sql hint (#13918)
---
.../special-api/sharding/hint.cn.md | 27 +++++++++++++++++-----
.../special-api/sharding/hint.en.md | 26 ++++++++++++++++-----
.../raw/jdbc/ShardingSQLCommentHintRawExample.java | 8 +++----
.../example/proxy/hint/ProxyHintExample.java | 8 +++----
4 files changed, 49 insertions(+), 20 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.cn.md
index 4991363..6011377 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.cn.md
@@ -100,19 +100,21 @@ try (HintManager hintManager = HintManager.getInstance();
### 使用 Hint 强制主库路由
-#### 获取 HintManager
+#### 使用手动编程的方式
+
+##### 获取 HintManager
与基于 Hint 的数据分片相同。
-#### 设置主库路由
+##### 设置主库路由
- 使用 `hintManager.setWriteRouteOnly` 设置主库路由。
-#### 清除分片键值
+##### 清除分片键值
与基于 Hint 的数据分片相同。
-#### 完整代码示例
+##### 完整代码示例
```java
String sql = "SELECT * FROM t_order";
@@ -128,6 +130,19 @@ try (HintManager hintManager = HintManager.getInstance();
}
```
+#### 使用 SQL 注释的方式
+
+##### 使用规范
+
+SQL Hint 功能需要用户提前开启解析注释的配置,设置 `sql-comment-parse-enabled` 为 `true`。
+注释格式暂时只支持`/* */`,内容需要以`ShardingSphere hint:`开始,属性名为 `writeRouteOnly`。
+
+##### 完整示例
+```sql
+/* ShardingSphere hint: writeRouteOnly=true */
+SELECT * FROM t_order;
+```
+
### 使用 Hint 路由至指定数据库
#### 使用手动编程的方式
@@ -161,10 +176,10 @@ try (HintManager hintManager = HintManager.getInstance();
##### 使用规范
SQL Hint 功能需要用户提前开启解析注释的配置,设置 `sql-comment-parse-enabled` 为
`true`,目前只支持路由至一个数据源。
-注释格式暂时只支持`/* */`,内容需要以`sql hint:`开始,属性名为 `dataSourceName`。
+注释格式暂时只支持`/* */`,内容需要以`ShardingSphere hint:`开始,属性名为 `dataSourceName`。
##### 完整示例
```sql
-/* sql hint: dataSourceName=ds_0 */
+/* ShardingSphere hint: dataSourceName=ds_0 */
SELECT * FROM t_order;
```
\ No newline at end of file
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.en.md
index 1441d9c..e9ce8f7 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/special-api/sharding/hint.en.md
@@ -100,19 +100,21 @@ try (HintManager hintManager = HintManager.getInstance();
### Primary Route with Hint
-#### Get HintManager
+#### Use manual programming
+
+##### Get HintManager
Be the same as sharding based on hint.
-#### Configure Primary Database Route
+##### Configure Primary Database Route
- Use `hintManager.setWriteRouteOnly` to configure primary database route.
-#### Clean Hint Value
+##### Clean Hint Value
Be the same as data sharding based on hint.
-#### Codes:
+##### Codes:
```java
String sql = "SELECT * FROM t_order";
@@ -128,6 +130,18 @@ try (HintManager hintManager = HintManager.getInstance();
}
```
+#### Use special SQL comments
+
+##### Terms of Use
+
+To use SQL Hint function, users need to set `sql-comment-parse-enabled` to
`true`.
+The comment format only supports `/* */` for now. The content needs to start
with `ShardingSphere hint:`, and the attribute name needs to be
`writeRouteOnly`.
+
+##### Codes:
+```sql
+/* ShardingSphere hint: writeRouteOnly=true */
+SELECT * FROM t_order;
+```
### Route to the specified database with Hint
#### Use manual programming
@@ -161,10 +175,10 @@ try (HintManager hintManager = HintManager.getInstance();
##### Terms of Use
To use SQL Hint function, users need to set `sql-comment-parse-enabled` to
`true`. Currently, only support routing to one data source.
-The comment format only supports `/* */` for now. The content needs to start
with `sql hint:`, and the attribute name needs to be `dataSourceName`.
+The comment format only supports `/* */` for now. The content needs to start
with `ShardingSphere hint:`, and the attribute name needs to be
`dataSourceName`.
##### Codes:
```sql
-/* sql hint: dataSourceName=ds_0 */
+/* ShardingSphere hint: dataSourceName=ds_0 */
SELECT * FROM t_order;
```
\ No newline at end of file
diff --git
a/examples/shardingsphere-jdbc-example/single-feature-example/sharding-example/sharding-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/raw/jdbc/ShardingSQLCommentHintRawExample.java
b/examples/shardingsphere-jdbc-example/single-feature-example/sharding-example/sharding-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/raw/jdbc/ShardingSQLCommentHintRawExample.java
index 2813e85..7062f44 100644
---
a/examples/shardingsphere-jdbc-example/single-feature-example/sharding-example/sharding-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/raw/jdbc/ShardingSQLCommentHintRawExample.java
+++
b/examples/shardingsphere-jdbc-example/single-feature-example/sharding-example/sharding-raw-jdbc-example/src/main/java/org/apache/shardingsphere/example/sharding/raw/jdbc/ShardingSQLCommentHintRawExample.java
@@ -49,10 +49,10 @@ public final class ShardingSQLCommentHintRawExample {
private static void processWithHintValue(final DataSource dataSource)
throws SQLException {
try (Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement()) {
- statement.execute("/* sql hint: dataSourceName=ds_1 */select *
from t_order");
- statement.execute("/* sql hint: dataSourceName=ds_1 */SELECT i.*
FROM t_order o, t_order_item i WHERE o.order_id = i.order_id");
- statement.execute("/* sql hint: dataSourceName=ds_1 */select *
from t_order_item");
- statement.execute("/* sql hint: dataSourceName=ds_1 */INSERT INTO
t_order (user_id, address_id, status) VALUES (1, 1, 'init')");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/select * from t_order");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/select * from t_order_item");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/INSERT INTO t_order (user_id, address_id, status) VALUES (1, 1, 'init')");
}
}
}
diff --git
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/java/org/apache/shardingsphere/example/proxy/hint/ProxyHintExample.java
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/java/org/apache/shardingsphere/example/proxy/hint/ProxyHintExample.java
index 32bc9df..931535c 100644
---
a/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/java/org/apache/shardingsphere/example/proxy/hint/ProxyHintExample.java
+++
b/examples/shardingsphere-proxy-example/shardingsphere-proxy-hint-example/src/main/java/org/apache/shardingsphere/example/proxy/hint/ProxyHintExample.java
@@ -70,10 +70,10 @@ public final class ProxyHintExample {
try (Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement()) {
if (TYPE == HintType.SQL_HINT_DATASOURCE) {
- statement.execute("/* sql hint: dataSourceName=ds_1 */select *
from t_order");
- statement.execute("/* sql hint: dataSourceName=ds_1 */SELECT
i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id");
- statement.execute("/* sql hint: dataSourceName=ds_1 */select *
from t_order_item");
- statement.execute("/* sql hint: dataSourceName=ds_1 */INSERT
INTO t_order (user_id, address_id, status) VALUES (1, 1, 'init')");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/select * from t_order");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/SELECT i.* FROM t_order o, t_order_item i WHERE o.order_id = i.order_id");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/select * from t_order_item");
+ statement.execute("/* ShardingSphere hint: dataSourceName=ds_1
*/INSERT INTO t_order (user_id, address_id, status) VALUES (1, 1, 'init')");
} else {
setHintValue(statement);
statement.execute("select * from t_order");