Skip to content

Commit 1c7b835

Browse files
Lexert19Lexert19
authored andcommitted
copilot review
1 parent cb9cd5c commit 1c7b835

3 files changed

Lines changed: 37 additions & 7 deletions

File tree

example/rest-java-example/src/main/java/org/apache/iotdb/HttpExample.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public void queryWithTimeZone() {
145145
CloseableHttpResponse response = null;
146146
try {
147147
HttpPost httpPost = getHttpPost("http://127.0.0.1:18080/rest/v1/query");
148+
httpPost.setHeader("Time-Zone", "Asia/Shanghai");
148149
String sql = "{\"sql\":\"select * from root.sg25 where time <= 2026-03-28T00:00:00\"}";
149150
httpPost.setEntity(new StringEntity(sql, Charset.defaultCharset()));
150151
response = httpClient.execute(httpPost);

external-service-impl/rest/src/main/java/org/apache/iotdb/rest/protocol/filter/AuthorizationFilter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,11 @@ private User checkLogin(
162162
*/
163163
private ZoneId resolveTimeZone(ContainerRequestContext requestContext) {
164164
String timeZoneHeader = requestContext.getHeaderString("Time-Zone");
165-
if (timeZoneHeader == null || timeZoneHeader.isEmpty()) {
165+
if (timeZoneHeader == null) {
166+
return ZoneId.systemDefault();
167+
}
168+
timeZoneHeader = timeZoneHeader.trim();
169+
if (timeZoneHeader.isEmpty()) {
166170
return ZoneId.systemDefault();
167171
}
168172
try {

integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBRestServiceIT.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.apache.iotdb.rpc.TSStatusCode;
3030

3131
import com.fasterxml.jackson.databind.ObjectMapper;
32+
import com.google.gson.JsonArray;
3233
import com.google.gson.JsonObject;
3334
import com.google.gson.JsonParser;
3435
import org.apache.http.HttpEntity;
@@ -2367,20 +2368,32 @@ public void queryDateAndBlobV2(CloseableHttpClient httpClient) {
23672368
public void queryWithValidTimeZoneHeader(CloseableHttpClient httpClient) {
23682369
CloseableHttpResponse response = null;
23692370
try {
2371+
long expectedTimestamp =
2372+
ZonedDateTime.of(2026, 3, 28, 0, 0, 0, 0, ZoneId.of("+05:00")).toInstant().toEpochMilli();
2373+
HttpPost insertPost = getHttpPost("http://127.0.0.1:" + port + "/rest/v1/nonQuery");
2374+
String insertSql =
2375+
String.format(
2376+
"{\"sql\":\"INSERT INTO root.sg_tz.d2(timestamp, s3) VALUES(%d, 10.5)\"}",
2377+
expectedTimestamp);
2378+
insertPost.setEntity(new StringEntity(insertSql, Charset.defaultCharset()));
2379+
try (CloseableHttpResponse insertResponse = httpClient.execute(insertPost)) {
2380+
assertEquals(200, insertResponse.getStatusLine().getStatusCode());
2381+
}
23702382
HttpPost httpPost = getHttpPost("http://127.0.0.1:" + port + "/rest/v1/query");
23712383
httpPost.setHeader("Time-Zone", "+05:00");
23722384
String sql =
2373-
"{\"sql\":\"SELECT count(s3) FROM root.sg25 GROUP BY ([2026-03-28T00:00:00, 2026-03-29T00:00:00), 1d)\"}";
2385+
"{\"sql\":\"SELECT count(s3) FROM root.sg_tz.d2 GROUP BY ([2026-03-28T00:00:00, 2026-03-29T00:00:00), 1d)\"}";
23742386
httpPost.setEntity(new StringEntity(sql, Charset.defaultCharset()));
23752387
response = httpClient.execute(httpPost);
23762388
assertEquals(200, response.getStatusLine().getStatusCode());
23772389
String message = EntityUtils.toString(response.getEntity(), "utf-8");
23782390
JsonObject result = JsonParser.parseString(message).getAsJsonObject();
23792391
assertTrue(result.has("timestamps"));
23802392
assertTrue(result.getAsJsonArray("timestamps").size() > 0);
2381-
long expectedTimestamp =
2382-
ZonedDateTime.of(2026, 3, 28, 0, 0, 0, 0, ZoneId.of("+05:00")).toInstant().toEpochMilli();
23832393
assertEquals(expectedTimestamp, result.getAsJsonArray("timestamps").get(0).getAsLong());
2394+
JsonArray values = result.getAsJsonArray("values");
2395+
int countResult = values.get(0).getAsJsonArray().get(0).getAsInt();
2396+
assertEquals(1, countResult);
23842397
} catch (IOException e) {
23852398
e.printStackTrace();
23862399
fail(e.getMessage());
@@ -2440,20 +2453,32 @@ public void nonQueryWithValidTimeZoneHeader(CloseableHttpClient httpClient) {
24402453
public void queryWithValidTimeZoneHeaderV2(CloseableHttpClient httpClient) {
24412454
CloseableHttpResponse response = null;
24422455
try {
2456+
long expectedTimestamp =
2457+
ZonedDateTime.of(2026, 3, 28, 0, 0, 0, 0, ZoneId.of("+05:00")).toInstant().toEpochMilli();
2458+
HttpPost insertPost = getHttpPost("http://127.0.0.1:" + port + "/rest/v1/nonQuery");
2459+
String insertSql =
2460+
String.format(
2461+
"{\"sql\":\"INSERT INTO root.sg_tz.d3(timestamp, s3) VALUES(%d, 10.5)\"}",
2462+
expectedTimestamp);
2463+
insertPost.setEntity(new StringEntity(insertSql, Charset.defaultCharset()));
2464+
try (CloseableHttpResponse insertResponse = httpClient.execute(insertPost)) {
2465+
assertEquals(200, insertResponse.getStatusLine().getStatusCode());
2466+
}
24432467
HttpPost httpPost = getHttpPost("http://127.0.0.1:" + port + "/rest/v2/query");
24442468
httpPost.setHeader("Time-Zone", "+05:00");
24452469
String sql =
2446-
"{\"sql\":\"SELECT count(s3) FROM root.sg25 GROUP BY ([2026-03-28T00:00:00, 2026-03-29T00:00:00), 1d)\"}";
2470+
"{\"sql\":\"SELECT count(s3) FROM root.sg_tz.d3 GROUP BY ([2026-03-28T00:00:00, 2026-03-29T00:00:00), 1d)\"}";
24472471
httpPost.setEntity(new StringEntity(sql, Charset.defaultCharset()));
24482472
response = httpClient.execute(httpPost);
24492473
assertEquals(200, response.getStatusLine().getStatusCode());
24502474
String message = EntityUtils.toString(response.getEntity(), "utf-8");
24512475
JsonObject result = JsonParser.parseString(message).getAsJsonObject();
24522476
assertTrue(result.has("timestamps"));
24532477
assertTrue(result.getAsJsonArray("timestamps").size() > 0);
2454-
long expectedTimestamp =
2455-
ZonedDateTime.of(2026, 3, 28, 0, 0, 0, 0, ZoneId.of("+05:00")).toInstant().toEpochMilli();
24562478
assertEquals(expectedTimestamp, result.getAsJsonArray("timestamps").get(0).getAsLong());
2479+
JsonArray values = result.getAsJsonArray("values");
2480+
int countResult = values.get(0).getAsJsonArray().get(0).getAsInt();
2481+
assertEquals(1, countResult);
24572482
} catch (IOException e) {
24582483
e.printStackTrace();
24592484
fail(e.getMessage());

0 commit comments

Comments
 (0)