This is an automated email from the ASF dual-hosted git repository.
hui pushed a change to branch lmh/addQueryIT
in repository https://gitbox.apache.org/repos/asf/iotdb.git
from 307fa794bb Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
add 1309eef2b1 [IOTDB-3388] Let MQTT Service could parse JSON array of
existed format (#6154)
add 77563a6273 [IOTDB-3511] Show Region tool (#6315)
add e34850cacc [IOTDB-3189] Fix compaction is not well-distributed across
sgs (#6324)
add de0b507523 [IOTDB-2179] New IT framework supports Windows platform
(#6313)
new 6046807cb5 Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
add 98b65a1ba4 Fix Dead Lock Bug (#6331)
add 05a849184e [IOTDB-3365] Add more log name in query processing and Fix
NPE while fetchFragmentInstanceState (#6332)
add 6702808c25 [IOTDB-3414] [mpp] fix schema query limit offset bug (#6179)
add ed20fccc2b [IOTDB-3392] File doesn't exist when move tsfile when
virtual_storage_group_num > 1 (#6310)
add 1fb7229c2d Fix DeadLock bug (#6334)
new 9ccd98d021 Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
new 76c8d59b04 Ignore lastQuery
add f10eed6ddb Increase the timeout (#6335)
add 7d7834c200 [IOTDB-3544] Packaging udf-api as dependency jar in build
(#6339)
add c42cfe5fbe [IOTDB-3510] Read/Write Routing policy (Routing to DataNode
with the lowest-loaded) (#6308)
add 3c88dfb6aa [IOTDB-3508] Enhance some features of the IT framework
(#6300)
add df8136d8e0 Fix new standalone auto create aligned timeseries bug
(#6345)
add 084d4a4452 [IOTDB-3541][IOTDB-3542] Support handling exception and
make it stable in cluster IT (#6341)
new a6721c2f1a Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
new 43b916dd83 refactor IoTDBAliasIT
add 80141097f8 [IOTDB-3552] Fix fetch incorrect SchemaTree by
StandaloneSchemaFetcher bug (#6347)
add 52d2699bc8 [IOTDB-3512] Region leader during heartbeat (#6322)
add e814312089 [IOTDB-3255] Turn off MLog and Implement snapshot while
using Ratis (#6337)
new 53a62a80fd Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
new 84705cf6fd add import
new c73b9f9050 fix bug in align by device result set
new f1c66de87d fix PathNumOverLimitException bug
new 1e92634f2b add PathNumOverLimitException
new 2ca0c71f24 refactor test
add 1ab5ad3fcb [IOTDB-3504] Fix inferTypes, return value and column label
of IN/LIKE⦠(#6301)
add 11d234ba38 [IoTDB-3566] Add IT for UDTF Hybrid Query (#6354)
add 4275937630 fix (#6349)
add c8145715d9 Fix Cast Bug (#6355)
add 7678244ebe [IOTDB-3513] Avoid double-writing of the write ahead log
for data under RatisConsensus (#6336)
add 64b638b4b1 [IOTDB-3549] Fix delete data in new standalone (#6359)
add ddf1221b7d Optimize write and MPP framework (#6358)
add 8ecdbb15ad [IOTDB-3494] Fix Python-Client test (#6362)
add 2f486bfc90 [IOTDB-3585] Support set/getFetchSize() in IT framework
(#6364)
add 7dde745854 Update the README of the integration-test module (#6367)
add 2f0218feee [IOTDB-3522] Set heartbeat as a periodic scheduled task
(#6328)
add 1c2783cfe8 [IOTDB-3582] Fix client connections leak caused by delete
storage group (#6360)
add 05f02a63e1 [IOTDB-3536] ConfigNode : org.apache.thrift.TException:
Error in calling method flush (#6340)
add 4f3890471c fix the issue that ALTER timeseries is not correct in
NewIoTDB (#6365)
new 2634594e49 Merge remote-tracking branch 'origin/master' into
lmh/addQueryIT
The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/cluster-it.yml | 27 +-
.../{cluster-it.yml => standalone-it-for-mpp.yml} | 31 +-
.../org/apache/iotdb/db/qp/sql/IdentifierParser.g4 | 2 +
.../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 7 +-
.../antlr4/org/apache/iotdb/db/qp/sql/SqlLexer.g4 | 8 +
client-py/tests/test_dataframe.py | 2 +
client-py/tests/test_one_device.py | 1 +
client-py/tests/test_tablet.py | 2 +
client-py/tests/test_todf.py | 3 +
.../src/assembly/resources/conf/confignode-env.bat | 8 +-
.../resources/conf/iotdb-confignode.properties | 4 -
confignode/src/assembly/resources/conf/logback.xml | 13 +-
.../confignode/client/AsyncDataNodeClientPool.java | 20 +-
.../confignode/client/SyncDataNodeClientPool.java | 21 +-
...ionManagementHandler.java => FlushHandler.java} | 28 +-
.../client/handlers/HeartbeatHandler.java | 2 +-
.../iotdb/confignode/conf/ConfigNodeConfig.java | 11 -
.../confignode/conf/ConfigNodeDescriptor.java | 5 -
.../consensus/request/ConfigRequest.java | 4 +
.../consensus/request/ConfigRequestType.java | 3 +-
.../GetRegionLocationsReq.java} | 29 +-
.../consensus/response/DataPartitionResp.java | 79 ++-
...ssionInfoResp.java => RegionLocationsResp.java} | 29 +-
.../response/SchemaNodeManagementResp.java | 48 +-
.../consensus/response/SchemaPartitionResp.java | 59 +-
.../statemachine/PartitionRegionStateMachine.java | 2 +
.../iotdb/confignode/manager/ConfigManager.java | 146 ++--
.../apache/iotdb/confignode/manager/Manager.java | 31 +-
.../iotdb/confignode/manager/NodeManager.java | 27 +
.../iotdb/confignode/manager/PartitionManager.java | 5 +
.../iotdb/confignode/manager/UDFManager.java | 18 +-
.../iotdb/confignode/manager/load/LoadManager.java | 113 ++-
.../manager/load/balancer/RouteBalancer.java | 56 ++
.../IRegionAllocator.java => router/IRouter.java} | 29 +-
.../balancer/router/LoadScoreGreedyRouter.java | 80 +++
.../manager/load/heartbeat/HeartbeatCache.java | 9 +-
.../executor/ConfigRequestExecutor.java | 3 +
.../persistence/partition/PartitionInfo.java | 92 +--
.../partition/StorageGroupPartitionTable.java | 86 +--
.../thrift/ConfigNodeRPCServiceProcessor.java | 66 +-
.../consensus/request/ConfigRequestSerDeTest.java | 11 +
.../confignode/persistence/PartitionInfoTest.java | 68 +-
.../org/apache/iotdb/consensus/IConsensus.java | 2 +
.../iotdb/consensus/config/MultiLeaderConfig.java | 2 +-
.../multileader/MultiLeaderConsensus.java | 22 +-
.../multileader/MultiLeaderServerImpl.java | 6 +-
.../multileader/logdispatcher/LogDispatcher.java | 12 +-
.../iotdb/consensus/ratis/RatisConsensus.java | 12 +
.../consensus/standalone/StandAloneConsensus.java | 6 +
.../iotdb/consensus/ratis/RatisConsensusTest.java | 4 -
docs/UserGuide/API/Programming-MQTT.md | 7 +-
.../Maintenance-Tools/Maintenance-Command.md | 67 +-
docs/UserGuide/Query-Data/Query-Filter.md | 3 +-
docs/UserGuide/Query-Data/Select-Expression.md | 39 +-
docs/zh/UserGuide/API/Programming-MQTT.md | 7 +-
.../Maintenance-Tools/Maintenance-Command.md | 63 ++
docs/zh/UserGuide/Query-Data/Query-Filter.md | 3 +-
docs/zh/UserGuide/Query-Data/Select-Expression.md | 38 +-
.../java/org/apache/iotdb/mqtt/MQTTClient.java | 7 +
integration-test/README.md | 95 +--
integration-test/import-control.xml | 1 +
integration-test/pom.xml | 138 +++-
.../assembly/{cluster-test.xml => mpp-test.xml} | 0
.../java/org/apache/iotdb/it/env/AbstractEnv.java | 293 ++++++++
.../apache/iotdb/it/env/AbstractNodeWrapper.java | 252 +++++++
.../java/org/apache/iotdb/it/env/Cluster1Env.java | 2 +-
.../org/apache/iotdb/it/env/ClusterEnvBase.java | 239 -------
.../org/apache/iotdb/it/env/ClusterNodeBase.java | 190 -----
.../org/apache/iotdb/it/env/ConfigFactory.java | 9 +-
.../java/org/apache/iotdb/it/env/ConfigNode.java | 122 ----
.../org/apache/iotdb/it/env/ConfigNodeWrapper.java | 116 ++++
.../java/org/apache/iotdb/it/env/DataNode.java | 121 ----
.../org/apache/iotdb/it/env/DataNodeWrapper.java | 105 +++
.../java/org/apache/iotdb/it/env/EnvFactory.java | 7 +-
.../env/{ClusterEnvConfig.java => MppConfig.java} | 21 +-
...emoteEnvConfig.java => RemoteServerConfig.java} | 2 +-
.../iotdb/it/env/StandaloneDataNodeWrapper.java | 36 +-
.../apache/iotdb/it/env/StandaloneOnMppEnv.java | 56 +-
.../constant}/BuiltinAggregationFunctionEnum.java | 2 +-
.../BuiltinTimeSeriesGeneratingFunctionEnum.java | 2 +-
.../iotdb/itbase/constant/UDFTestConstant.java | 6 +-
.../org/apache/iotdb/itbase/env/BaseConfig.java | 4 +-
.../env/{BaseNode.java => BaseNodeWrapper.java} | 2 +-
.../iotdb/itbase/runtime/ClusterTestStatement.java | 57 +-
.../itbase/runtime/ParallelRequestDelegate.java | 10 +-
.../iotdb/itbase/runtime/RequestDelegate.java | 45 +-
.../itbase/runtime/SerialRequestDelegate.java | 4 +-
integration-test/src/script/append-to-env.sh | 32 +
.../org/apache/iotdb/db/it/IoTDBExampleIT.java | 4 +-
.../iotdb/db/it/aligned/AlignedWriteUtil.java | 7 +-
...gregationWithoutValueFilterWithDeletion2IT.java | 3 +
...ggregationWithoutValueFilterWithDeletionIT.java | 3 +
...upByQueryWithoutValueFilterWithDeletion2IT.java | 3 +
...oupByQueryWithoutValueFilterWithDeletionIT.java | 3 +
.../db/it/aligned/IoTDBInsertAlignedValues2IT.java | 2 +-
.../db/it/aligned/IoTDBInsertAlignedValues3IT.java | 2 +-
.../db/it/aligned/IoTDBInsertAlignedValues4IT.java | 2 +-
.../db/it/aligned/IoTDBInsertAlignedValuesIT.java | 2 +-
.../org/apache/iotdb/db/it/query/IoTDBAliasIT.java | 769 ++++-----------------
.../iotdb/db/it/query/IoTDBPaginationIT.java | 189 ++---
.../apache/iotdb/db/it/query/IoTDBResultSetIT.java | 93 ++-
.../org/apache/iotdb/db/it/query/TestUtils.java | 93 +++
.../iotdb/db/it/udf/IoTDBUDFManagementIT.java | 2 +
.../db/it/udf/IoTDBUDTFBuiltinFunctionIT.java | 7 +
.../iotdb/db/it/udf}/IoTDBUDTFHybridQueryIT.java | 31 +-
integration/checkstyle.xml | 173 ++++-
.../db/integration/IoTDBLoadExternalTsfileIT.java | 8 +-
.../IoTDBLoadExternalTsfileWithVirtualSGIT.java | 138 ++++
.../db/integration/sync/IoTDBSyncSenderIT.java | 2 +
.../cluster/{NodeStatus.java => RegionStatus.java} | 11 +-
.../schemaregion/rocksdb/mnode/RMNode.java | 7 +
.../resources/conf/iotdb-engine.properties | 10 +-
server/src/assembly/resources/conf/iotdb-env.bat | 8 +-
server/src/assembly/resources/conf/logback.xml | 13 +-
.../src/assembly/resources/sbin/stop-datanode.bat | 19 +-
.../apache/iotdb/db/client/ConfigNodeClient.java | 28 +
.../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 30 +-
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 10 +
.../org/apache/iotdb/db/engine/StorageEngine.java | 73 +-
.../apache/iotdb/db/engine/StorageEngineV2.java | 12 +-
.../db/engine/compaction/CompactionScheduler.java | 6 +-
.../DefaultCompactionTaskComparatorImpl.java | 17 +-
.../compaction/cross/CrossSpaceCompactionTask.java | 6 +-
.../compaction/inner/InnerSpaceCompactionTask.java | 6 +-
.../compaction/task/AbstractCompactionTask.java | 9 +-
.../iotdb/db/engine/storagegroup/DataRegion.java | 16 +-
.../db/engine/storagegroup/TsFileManager.java | 6 +
.../dataregion/StorageGroupManager.java | 19 +-
.../{query => sql}/PathNumOverLimitException.java | 4 +-
.../iotdb/db/localconfignode/LocalConfigNode.java | 2 +-
.../apache/iotdb/db/metadata/MetadataConstant.java | 20 +-
.../idtable/entry/InsertMeasurementMNode.java | 6 +
.../iotdb/db/metadata/logfile/MLogWriter.java | 2 +-
.../iotdb/db/metadata/mnode/EntityMNode.java | 6 +
.../org/apache/iotdb/db/metadata/mnode/IMNode.java | 3 +
.../iotdb/db/metadata/mnode/InternalMNode.java | 6 +
.../iotdb/db/metadata/mnode/MeasurementMNode.java | 6 +
.../db/metadata/mnode/StorageGroupEntityMNode.java | 6 +
.../iotdb/db/metadata/mnode/StorageGroupMNode.java | 6 +
.../mnode/visitor/MNodeVisitor.java} | 30 +-
.../db/metadata/mtree/MTreeBelowSGMemoryImpl.java | 28 +
.../mtree/snapshot/MemMTreeSnapshotUtil.java | 347 ++++++++++
.../db/metadata/mtree/store/CachedMTreeStore.java | 7 +
.../iotdb/db/metadata/mtree/store/IMTreeStore.java | 4 +
.../db/metadata/mtree/store/MemMTreeStore.java | 18 +
.../db/metadata/schemaregion/SchemaEngine.java | 7 +-
.../schemaregion/SchemaRegionMemoryImpl.java | 276 ++++----
.../apache/iotdb/db/metadata/tag/TagManager.java | 19 +
.../db/metadata/upgrade/MetadataUpgrader.java | 4 +-
.../iotdb/db/mpp/common/header/HeaderConstant.java | 24 +
.../execution/datatransfer/LocalSinkHandle.java | 72 +-
.../execution/datatransfer/LocalSourceHandle.java | 43 +-
.../execution/datatransfer/SharedTsBlockQueue.java | 23 +-
.../execution/fragment/FragmentInstanceState.java | 4 +-
.../org/apache/iotdb/db/mpp/plan/Coordinator.java | 14 +-
.../org/apache/iotdb/db/mpp/plan/StepTracker.java | 80 +++
.../apache/iotdb/db/mpp/plan/analyze/Analyzer.java | 36 +-
.../plan/analyze/ColumnPaginationController.java | 12 +-
.../mpp/plan/analyze/FakePartitionFetcherImpl.java | 53 +-
.../mpp/plan/analyze/StandaloneSchemaFetcher.java | 42 +-
.../db/mpp/plan/execution/QueryExecution.java | 22 +-
.../plan/execution/config/ConfigTaskVisitor.java | 6 +
.../mpp/plan/execution/config/ShowRegionTask.java | 86 +++
.../config/executor/ClusterConfigTaskExecutor.java | 35 +-
.../config/executor/IConfigTaskExecutor.java | 3 +
.../executor/StandaloneConfigTaskExecutor.java | 14 +-
.../db/mpp/plan/expression/ExpressionType.java | 4 +-
.../db/mpp/plan/expression/unary/InExpression.java | 24 +-
.../mpp/plan/expression/unary/LikeExpression.java | 6 +
.../plan/expression/unary/RegularExpression.java | 6 +
.../iotdb/db/mpp/plan/parser/ASTVisitor.java | 18 +
.../iotdb/db/mpp/plan/planner/LogicalPlanner.java | 72 +-
.../planner/distribution/DistributionPlanner.java | 3 -
.../plan/planner/distribution/SourceRewriter.java | 7 +-
.../scheduler/AbstractFragInsStateTracker.java | 1 -
.../db/mpp/plan/scheduler/ClusterScheduler.java | 32 +-
.../scheduler/FixedRateFragInsStateTracker.java | 5 +-
.../scheduler/FragmentInstanceDispatcherImpl.java | 21 +-
.../mpp/plan/scheduler/SimpleQueryTerminator.java | 64 +-
.../db/mpp/plan/scheduler/StandaloneScheduler.java | 7 +-
.../db/mpp/plan/statement/StatementVisitor.java | 5 +
...ionsStatement.java => ShowRegionStatement.java} | 26 +-
.../dag/input/ConstantInputReader.java | 2 +-
.../dag/transformer/unary/InTransformer.java | 36 +-
.../dag/transformer/unary/RegularTransformer.java | 6 +-
.../db/protocol/mqtt/JSONPayloadFormatter.java | 15 +-
.../physical/sys/CreateAlignedTimeSeriesPlan.java | 2 +-
.../java/org/apache/iotdb/db/service/DataNode.java | 14 +-
.../service/thrift/impl/InternalServiceImpl.java | 84 ++-
.../iotdb/db/wal/recover/WALRecoverManager.java | 20 +-
.../compaction/CompactionTaskComparatorTest.java | 74 +-
.../compaction/CompactionTaskManagerTest.java | 27 +-
.../compaction/cross/CrossSpaceCompactionTest.java | 9 +-
.../cross/RewriteCrossSpaceCompactionTest.java | 12 +-
.../inner/InnerCompactionEmptyTsFileTest.java | 3 +-
.../db/engine/storagegroup/DataRegionTest.java | 3 +-
.../storagegroup/StorageGroupProcessorTest.java | 3 +-
.../db/metadata/schemaRegion/SchemaRegionTest.java | 70 +-
.../db/metadata/upgrade/MetadataUpgradeTest.java | 9 +-
.../db/mpp/plan/StandaloneCoordinatorTest.java | 2 +
.../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java | 16 +-
.../db/protocol/mqtt/JSONPayloadFormatterTest.java | 58 ++
.../apache/iotdb/db/utils/EnvironmentUtils.java | 3 +
.../db/wal/recover/WALRecoverManagerTest.java | 2 +
server/src/test/resources/logback-test.xml | 1 +
.../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java | 9 +-
.../main/java/org/apache/iotdb/rpc/RpcUtils.java | 12 +
thrift-commons/src/main/thrift/common.thrift | 18 +-
.../src/main/thrift/confignode.thrift | 14 +
thrift/src/main/thrift/mpp.thrift | 13 +-
udf-api/pom.xml | 29 +
211 files changed, 4969 insertions(+), 2673 deletions(-)
copy .github/workflows/{cluster-it.yml => standalone-it-for-mpp.yml} (67%)
copy
confignode/src/main/java/org/apache/iotdb/confignode/client/handlers/{FunctionManagementHandler.java
=> FlushHandler.java} (65%)
copy
confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/{write/DropFunctionReq.java
=> read/GetRegionLocationsReq.java} (63%)
copy
confignode/src/main/java/org/apache/iotdb/confignode/consensus/response/{PermissionInfoResp.java
=> RegionLocationsResp.java} (68%)
create mode 100644
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RouteBalancer.java
copy
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/{region/IRegionAllocator.java
=> router/IRouter.java} (50%)
create mode 100644
confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/router/LoadScoreGreedyRouter.java
rename integration-test/src/assembly/{cluster-test.xml => mpp-test.xml} (100%)
create mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/AbstractEnv.java
create mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/AbstractNodeWrapper.java
delete mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/ClusterEnvBase.java
delete mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/ClusterNodeBase.java
delete mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNode.java
create mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNodeWrapper.java
delete mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/DataNode.java
create mode 100644
integration-test/src/main/java/org/apache/iotdb/it/env/DataNodeWrapper.java
rename
integration-test/src/main/java/org/apache/iotdb/it/env/{ClusterEnvConfig.java
=> MppConfig.java} (93%)
rename
integration-test/src/main/java/org/apache/iotdb/it/env/{RemoteEnvConfig.java =>
RemoteServerConfig.java} (93%)
copy
grafana-connector/src/main/java/org/apache/iotdb/web/grafana/service/impl/DatabaseConnectServiceImpl.java
=>
integration-test/src/main/java/org/apache/iotdb/it/env/StandaloneDataNodeWrapper.java
(54%)
copy
integration/src/main/java/org/apache/iotdb/integration/env/FiveNodeCluster1Env.java
=>
integration-test/src/main/java/org/apache/iotdb/it/env/StandaloneOnMppEnv.java
(53%)
rename integration-test/src/{test/java/org/apache/iotdb/db/it/udf =>
main/java/org/apache/iotdb/itbase/constant}/BuiltinAggregationFunctionEnum.java
(97%)
rename integration-test/src/{test/java/org/apache/iotdb/db/it/udf =>
main/java/org/apache/iotdb/itbase/constant}/BuiltinTimeSeriesGeneratingFunctionEnum.java
(98%)
copy
integration/src/main/java/org/apache/iotdb/db/query/udf/example/ExampleUDFConstant.java
=>
integration-test/src/main/java/org/apache/iotdb/itbase/constant/UDFTestConstant.java
(91%)
rename
integration-test/src/main/java/org/apache/iotdb/itbase/env/{BaseNode.java =>
BaseNodeWrapper.java} (96%)
create mode 100644 integration-test/src/script/append-to-env.sh
create mode 100644
integration-test/src/test/java/org/apache/iotdb/db/it/query/TestUtils.java
copy {integration/src/test/java/org/apache/iotdb/db/integration =>
integration-test/src/test/java/org/apache/iotdb/db/it/udf}/IoTDBUDTFHybridQueryIT.java
(84%)
create mode 100644
integration/src/test/java/org/apache/iotdb/db/integration/IoTDBLoadExternalTsfileWithVirtualSGIT.java
copy
node-commons/src/main/java/org/apache/iotdb/commons/cluster/{NodeStatus.java =>
RegionStatus.java} (85%)
copy server/src/main/java/org/apache/iotdb/db/exception/{query =>
sql}/PathNumOverLimitException.java (91%)
copy
server/src/main/java/org/apache/iotdb/db/{mpp/plan/statement/metadata/DeleteTimeSeriesStatement.java
=> metadata/mnode/visitor/MNodeVisitor.java} (52%)
create mode 100644
server/src/main/java/org/apache/iotdb/db/metadata/mtree/snapshot/MemMTreeSnapshotUtil.java
create mode 100644
server/src/main/java/org/apache/iotdb/db/mpp/plan/StepTracker.java
create mode 100644
server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/ShowRegionTask.java
copy
server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/metadata/{ShowFunctionsStatement.java
=> ShowRegionStatement.java} (69%)