yangzhg opened a new issue #5374:
URL: https://github.com/apache/incubator-doris/issues/5374
Since the release of 0.13, Apache Doris (incubating) contains around 390 new
features, bug fixes, performance enhancements, documentation improvements, code
refactors from 60+ contributors. We are ready to release Apache Doris
(incubating) 0.14.
# New Feature
### Import and delete
Support to delete multiple pieces of data at one time through the import
method to avoid performance degradation caused by multiple deletions. For
tables of the UniqueKey model, support to specify the Sequence column when
importing. Doris will judge the sequence of the data according to the value of
the Sequence column to ensure that the data is imported Time order
[#4310] [#4256]
### Support database backup
The support in the backup stmt specifies the backup content (metadata and
data).
Support exclude backup and restore some tables in stmt. When backing up the
entire database, you can exclude some very large and unimportant tables.
Supports backing up and restoring the entire database instead of declaring
each table name in the backup and restore statement.
[#5314]
### ODBC external table support
Support access to external tables such as MySQL, postgresql, Oracle, etc.
through ODBC protocol
[#4798] [#4438] [#4559] [#4699]
### Support SQL level and Partition level result Cache
Support for caching query results to improve the efficiency of repeated
queries, support SQL-level and Partition-level results Cache [#4330]
### Built-in functions
- Support bitmap_xor function [#5098]
- Add replace() function [#4347]
- Add the time_round function to support time alignment according to
multiple time granularities [#4640]
### FE interface and HTTP interface
- The new FE UI interface can be enabled by setting the FE configuration
item enable_http_server_v2 [#4684]
- BE adds an http interface to show the distribution of all tablets in a
partition among different disks in a BE [#5096]
- BE adds an http interface to manually migrate a tablet to other disks on
the same node [#5101]
- Support to modify the configuration items of FE and BE through http, and
persist these modifications [#4704]
-
### Compatibility with MySQL
- Added support for views table in the information_schema database [#4778]
- Added table_privileges, schema_privileges and user_privileges to the
information_schema library for compatibility with certain MySQL applications
[#4899]
- A new statistic table is added to the information_schema meta-database for
compatibility with some MySQL tools [#4991]
### Monitoring
- BE added tablet-level monitoring indicators, including scanned data volume
and row number, written data volume and row number, to help locate hot tablets
[#4428]
- BE added metrics to view the usage of various LRU caches [#4688]
### Table building related
- Added CREATE TABLE LIKE statement to facilitate the creation of a table
metadata copy [#4705]
- Support atomic replacement of two tables through replace statement [#4669]
### Other
- Support adding Optimizer Hints of type SET_VAR in the Select statement to
set session variables [#4504]
- Support to repair damaged tablets by filling in empty tablets [#4255]
- Support Bucket Shuffle Join function (when the Join condition column is a
subset of the table bucket column, the right table will be shuffled to the node
where the data in the left table is located, which can significantly reduce the
network overhead caused by Shuffle Join and improve query speed) [# 4677]
- Support batch cancel import tasks through cancel load statement [#4515]
- Add a Session variable to set whether to allow the partition column to be
NULL [#5013]
- Support TopN aggregation function [#4803]
- Support a new data balancing logic based on the number of partitions and
buckets [#5010]
- Support creating indexes on the value column of unique table [#5305]
# Enhancement
### Performance improvement
- Implemented a new compaction selection algorithm, providing lower write
amplification and a more reasonable compaction strategy [#4212]
- Optimize bit operation efficiency in variable length coding [#4366]
- Improve the execution efficiency of monery_format function [#4672]
- Optimize query execution plan: When the bucket column of the table is a
subset of the GroupBy column in SQL, reduce the data shuffle step [#4482]
- Improve the efficiency of column name search on BE [#4779]
- Improve the performance of the BE side LRU Cache [#4781]
- Optimized the tablet selection strategy of Compaction, reducing the number
of invalid selections [#4964]
- Optimized the reading efficiency of Unique Key table [#4958]
- Optimized the memory usage of LoadJob on the FE side and reduced the
memory overhead on the FE side [#4993]
- Reduce the lock granularity in FE metadata from Database level to Table
level to support more fine-grained concurrent access to metadata [#3775]
- Avoid unnecessary memory copy when creating hash table [#5301]
- Remove the path check when BE starts to speed up BE startup speed [#5268]
- Optimize the import performance of Json data [#5114]
### Functional improvements
- SQL supports collate utf8_general_ci syntax to improve MySQL syntax
compatibility [#4365]
- Improve the function of Batch delete, improve and optimize the related
compaction process [#4425]
- Enhance the function of parse_url() function, support lowercase, support
parsing port [#4429]
- When SQL execution specifies the execution mode of join (Join Hint), the
Colocation Join function will be disabled by default [#4497]
- Dynamic partition support hour level [#4514]
- HTTP interface on BE side supports gzip compression [#4533]
- Optimized the use of threads on the BE side [#4440]
- Optimize the checking process and error message of the rand() function in
the query analysis stage [#4439]
- Optimize the compaction triggering and execution logic to better limit the
resource overhead (mainly memory overhead) of the compaction operation, and
trigger the compaction operation more reasonably [#4670]
- Support pushing Limit conditions to ODBC/MySQL external tables [#4707]
- Increase the limit on the number of tablet versions on the BE side to
prevent excessive data versions from causing abnormal cluster load [#4687]
- When an RPC error occurs in a query, it can quickly return specific error
information to prevent the query from being stuck [#4702]
- Support automatic mapping of count(distinct if(bool, bitmap, null)) to
bitmap_union_count function [#4201]
- Support set sql_mode = concat(@@sql_mode, "STRICT_TRANS_TABLES") statement
[#4359]
- Support all stream load features in multiload [#4717]
- Optimize BE’s strategy for selecting disks when creating tablets, and use
the "two random choices" algorithm to ensure tablet copies are more even [#4373]
- When creating a materialized view, the bitmap_union aggregation method
only supports integer columns, and hll_union does not support decimal columns
[#4432]
- Optimize the log level of some FEs to avoid log writing becoming a
bottleneck [#4766]
- In the describe table statement, display the definition expression of the
aggregate column of the materialized view [#4446]
- Support convert() function [#4364]
-Support cast (expr as signed/unsigned int) syntax to be compatible with
MySQL ecology
-Add more columns to the information_schema.columns table to be
compatible with the MySQL ecosystem
- In Spark Load function, use yarn command line instead of yarn-client API
to kill job or get job status [#4383]
- Persistence of stale rowset meta-information to ensure that this
information will not be lost after BE restarts [#4454]
- Return an error code in the schema change result to more clearly inform
the user of the specific error [#4388]
- Optimize the rowset selection logic of some compactions to make the
selection strategy more accurate [#5152]
- Optimize the Page Cache on the BE side, divide Page into data cache and
index cache [#5008]
- Optimized the accuracy of functions such as variance and standard
deviation on Decimal type [#4959]
- Optimized the processing logic of predicates pushed down to ScanNode to
avoid repeated filtering of predicate conditions at the query layer and improve
query efficiency [#4999]
- Optimized the predicate push-down logic of Unique Key table, and supports
push-down the conditions of non-primary key columns [#5022]
- Support pushing down "not in" and "!=" to the storage layer to improve
query efficiency [#5207]
- Support writing multiple memtables of a tablet in parallel during import.
Improve import efficiency [#5163]
- Optimize the creation logic of ZoneMap. When the number of rows on a page
is too small, ZoneMap will not be created anymore [#5260]
- Added histogram monitoring indicator class on BE [#5148]
- When importing Parquet files, if there is a parsing error, the specific
file name will be displayed in the error message [#4954]
- Optimize the creation logic of dynamic partitions, the table under
construction directly triggers the creation of dynamic partitions [#5209]
- In the result of the SHOW BACKENDS command, display the real start time of
BE [#4872]
- Support column names start with @ symbol, mainly used to support mapping
ES tables [#5006]
- Optimize the logic of the mapping and conversion relationship of the
declared columns in the import statement to make the use more clear [#5140]
- Optimize the execution logic of colocation join to make the query plan
more evenly executed on multiple BE nodes [#5104]
- Optimize the predicate pushdown logic, and support pushdown of is null and
is not null to the storage engine [#5092]
- Optimize the BE node selection logic in bucket join [#5133]
- Support UDF in import operation [#4863]
### Other
- Added support for IN Predicate in delete statement [#4404]
- Update the Dockerfile of the development image and add some new
dependencies [#4474]
- Fix various spelling errors in the code and documentation [#4714] [#4712]
[#4722] [#4723] [#4724] [#4725] [#4726] [#4727]
- Added two segment-related indicators in the OlapScanNode of the query
profile to display the total number of segments and the number of filtered
segments [#4348]
- Add batch delete function description document [#4435]
- Added Spark Load syntax manual [#4463]
- Added the display of cumulative compaction strategy name and rowset data
size in BE's /api/compaction/show API [#4466]
- Redirect the Spark Launcher log in Spark Load to a separate log file for
easy viewing [#4470]
- The BE configuration item streaming_load_max_batch_size_mb was renamed
streaming_load_json_max_mb to make its meaning more clear [#4791]
- Adjust the default value of the FE configuration item
thrift_client_timeout_ms to solve the problem of too long access to the
information_schema library [#4808]
- CPU or memory sampling of BE process is supported on BE web page to
facilitate performance debugging [#4632]
- Extend the data slicing balance class on the FE side, so that it can
extend more balance logic [#4771]
- The reorganized OLAP_SCAN_NODE profile information makes the profile
clearer and easier to read [#4825]
- Added monitoring indicators on the BE side to monitor cancelled Query
Fragment [#4862]
- Reorganized the profile information of HASH_JOIN_NODE, CROSS_JOIN_NODE,
UNION_NODE, ANALYTIC_EVAL_NODE to make the Profile more clear and easy to read
[#4878]
- Modify the default value of
query_colocate_join_memory_limit_penalty_factor to 1 to ensure that the default
memory limit of the execution plan fragment is consistent with the user setting
during the colocation join operation [#4895]
- Added consideration of tablet scanning frequency in the selection of
compaction strategy on the BE side [#4837]
- Optimize the strategy of sending Query Fragments and reduce the number of
sending public attributes to improve query plan scheduling performance [#4904]
- Optimized the accuracy of load statistics for unavailable nodes when the
query scheduler is scheduling query plans [#4914]
- Add the code version information of the FE node in the result of the SHOW
FRONTENDS statement [#4943]
- Support more column type conversion, such as support conversion from CHAR
to numeric type, etc. [#4938]
- Import function to identify complex types in Parquet files [#4968]
- In the BE monitoring indicators, increase the monitoring of used permits
and waiting permits in the compaction logic [#4893]
- Optimize the execution time of BE single test [#5131]
- Added more JVM-related monitoring items on the FE side [#5112]
- Add a session variable to control the timeout period for the transaction
to take effect in the insert operation [#5170]
- Optimize the logic of selecting scan nodes for query execution plans, and
consider all ScanNode nodes in a query [#4984]
- Add more system monitoring indicators for FE nodes [#5149]
- Use of VLOG in unified BE code [#5264]
# BugFix
- Fix the bug that may be caused during playback of Erase Table metadata
operations [#5221]
- Fix the problem that the BE process crashes due to the orc::TimezoneError
not being caught when importing ORC format files [#4350]
- Fix the problem that the result of the Except operator is incorrect [#4369]
- Fix the problem that the query always route to the same BE node when
querying ES data [#4352]
- Fix the problem that the operation is not correctly persisted when setting
the Global Variable [#4324]
- Fixed the problem that the MemTracker was not constructed correctly in
PushHandler which caused the BE process to crash [#4345]
- Fix the problem of importing blank lines when importing Json data format
[#4379]
- Fix the problem that the SQL rewriting rules failed to correctly handle
count distinct [#4382]
- Fix the problem that the data model type of the materialized view is not
set correctly when creating the materialized view [#4375]
- Fix the problem of wrong query result of left semi/anti join [#4417]
- Prioritize the join method specified by the user [#4424]
- Fix the problem of incorrect results when Inline view is included in the
Left join operation [#4279]
- [#4362]
select database() no longer returns the cluster qualified name, and fix
the problem that select user() does not display the user ip
- Fix the problem that the number of table copies displayed by show create
table is incorrect for tables that use the dynamic partition function [#4393]
- Fix the inconsistent precision of decimal, char and varchar columns in the
base table and the materialized view in the materialized view [#4436]
- Fix the problem of wild pointer in PlanFragmentExecutor, fix the problem
of null pointer when importing in json format [#4448]
- Fixed the problem that some remaining tablet directories on BE were not
cleared [#4401]
- Fix some issues with Spark Load [#4464]
- Fix the problem that the balance of the colocation table cannot be
completed [#4471]
- Fix MemIndex::load_segment possible memory copy exception problem [#4458]
- Fix the problem of BE crashing when using Load Error Hub function when
WITH_MYSQL compilation option is not added [#4486]
- Fix the problem of execution error when using @@sql_mode environment
variable in SQL [#4484]
- Fix the problem of splitting the same column in Spark Load and Broker
Load, and the splitting behavior is inconsistent [#4491]
- Fix the problem of BE downtime caused by querying the
information_schema.columns table [#4511]
- Fix some issues in the persistence of rowset metadata in historical
versions [#4513]
- Fix the problem of inconsistent behavior of str_do_date() function on FE
side and BE side [#4495]
- Fixed the issue where BE was down due to some historical data conversion
when performing linked schema change [#4526]
- Fix the problem that Spark Load stays in the ETL stage after FE restart
[#4528]
- Fixed an issue that caused unreadable data when the delete condition
contained "\n" [#4531]
- Fix the problem that Spark Load job in PENDING state cannot be cancelled
[#4536]
- Fix the problem of inconsistent behavior when splitting columns between
Spark Load and other import methods [#4536]
- Fix the problem that net.sourceforge.czt.dev cannot be found when
compiling the FE module [#4636]
- Fix the problem that the statement parsing fails when the cast function
exists in the case when statement [#4646]
- Fix the problem that all queries will fail when there is a problem with
the RPC of a certain BE [#4651]
- Fixed the issue that related import transactions were not cleaned up after
the BE node went down [#4661]
- Fix the problem that the column types of the columns table of
information_schema are not compatible with MySQL [#4648]
- Fix the problem of SQL Cache access out of bounds [#4641]
- Fix the problem that import throws a null pointer exception when there is
no partition in the table [#4658]
- Fix an error when tools/show_segment_status access external tables [#4671]
- Fix the issue that delete on clause may not take effect in Routine Load
[#4676]
- Fix the problem that the columns of information_schema do not display
comments [#4683]
- Fix the problem that hidden columns (delete flag column, etc.) may be lost
after schema change [#4686]
- Fix the problem that the window function lag()/lead() reports an error
when matching the decimal type [#4666]
- Fix the problem that the client is stuck in high concurrency scenarios
when using MySQL NIO Server [#4680]
- Fix the problem of always reporting out of date in tablet report [#4695]
- Fix the problem of duplicate columns in case when statement after query
planning [#4693]
- Fix the problem that the rand() function generates the same random value
every time [#4709]
- Fix the problem of query error caused by incorrect column cardinality
statistics [#4678]
- Fix the problem of BE downtime caused by function error of split_part
function [#4721]
- Fix the problem of query execution error when SQL statement contains
constant subquery [#4719]
- Fix the problem of join query error when the table contains the delete tag
column [#4734]
- Fix the problem of syntax parsing errors when the CTE statement contains
nested subqueries [#4731]
- Fix the problem of lead/lag type matching error in window function [#4732]
- Fix the problem that tablet cannot be selected correctly when selecting
tablet for compaction [#4593]
- Fix the problem that limit conditions are incorrectly pushed down to the
odbc external table and Es external table [#4764] [#4768]
- Fix the problem that the compaction thread stops working [#4750]
- Fix the problem that the timeout idle connection is not automatically
killed in some cases [#4774]
- Fix the problem of error when querying tables with delete flag column when
SQL contains join [#4770]
- Fix the calculation results of some time functions in FE to keep the
results consistent with BE calculations [#4786]
- Fix the issue that BE crashes when displaying tablet information on BE web
page [#4775]
- Fix the type conversion problem of the time type filter condition, so that
it can be correctly converted to the corresponding event type [#4806]
- Fixed the problem of repeatedly creating hidden columns when creating
Rollup [#4816]
- Fix the problem of hidden sequence column not displaying [#4818]
- Fix the problem of incorrect query results of some union statements [#4807]
- Fixed an issue where offline node tasks could not be completed in some
cases [#4804]
- Intelligently identify illegal date constants during SQL parsing to avoid
query scanning all partitions [#4756]
- Fix the problem that BE crashes when the BE side selects the tablet for
compaction without locking [#4829]
- Fix some front-end display issues and back-end cookie processing logic
issues in the new version of the UI [#4830]
- Fixed the problem that the tablet could not be found when querying errors
when UNION and Colocation Join are included in SQL [#4842]
- When submitting import tasks, the submission failed due to the full task
queue, but the failure exception was not captured correctly [#4796]
- Fix the problem of Broker Load job scheduling. Avoid the problem that some
jobs cannot be scheduled after submission [#4869]
- Just before Master FE is started, avoid forwarding commands to Master FE
[#4844]
- Ignore Parquet and ORC format empty files when importing to avoid reading
errors [#4810]
- Fix the problem that the materialized view name conflict is not checked
when renaming the OLAP table [#4870]
- Fix the problem that the creation fails when using complex SQL to create a
logical view [#4840]
- Fixed an issue where Routine Load could not end the task correctly due to
reading empty messages when consuming Kafka data [#4861]
- Fix the problem that some column names are not recognized when using CTE
syntax [#4887]
- Fix the problem that the content of the columns table of the
Information_schema library is incorrect [#4858]
- Fix the problem that BitmapValue serialization fails when only 32-bit
integers are included in the implementation of BitmapValue on the FE side
[#4884]
- Fix that when calculating BE disk usage, all disk space not used by Doris
in the node is incorrectly included. This will cause calculation errors during
the Decommission operation [#4889]
- Fix the problem that an additional column may be added incorrectly when
only constant expressions are included in the SELECT list [#4901]
- Fix the problem that the Thrift Server type on the FE side and the BE side
are inconsistent and cause communication failure [#4908]
- When partition cutting, ignore the filter conditions on non-columns [#4921]
- Fix the problem that the log directory is created incorrectly in the
start_fe.sh startup script [#4929]
- Fix the problem that some NULL values are not displayed when using CTE
syntax [#4932]
- Fix the problem that Colocation Group is always in unstable state when
some BE nodes are down [#4936]
- It is forbidden to create a table in Segment V1 format [#4913]
- Fix the problem that Bool type condition processing error when Doris
queries ES data [#4990]
- Fix a problem of Tablet Shard lock on BE side [#5000]
- Fix the problem of ConcurrentModificationException that may appear on the
FE side when deleting a table that is being imported [#5003]
- Fix the problem of incorrect return type of str_to_date function [#5004]
- Fix the problem that the precision of some floating point types is lost
when importing Json format data [#4983]
- Fix the problem of incomplete query results when using Union to connect
multiple external tables to query [#5067]
- Fix the problem that the query result is incorrect when the SQL contains
multiple in conditions [#5072]
- Fix a problem that the order of Profile destruction caused BE downtime
[#5078]
- Fix the problem of memory leakage when importing Json format data [#5073]
- Fix the problem that Colocation balance logic occupies 100% CPU when there
is no BE node [#5079]
- Fix the issue that creating a new tablet may cause BE downtime [#5089]
- Fixed the problem that the shared pointer circular reference caused the
tablet to be unable to be cleared and occupied disk space [#5100]
- Fix the issue that the BE will crash when the is null condition is
included in the delete condition [#5109]
- Fix a problem with Partition Cache hit strategy [#5060]
- Optimize the strategy of Spark Load to read Hive tables to avoid full
scanning of Hive tables [#5047]
- Added support for Ninjia build system to speed up the compilation speed of
BE [#5076]
- Optimize the efficiency of importing data in Json format [#5055]
- Support FE to directly use thrift protocol to transmit heartbeat
information to avoid heartbeat blocking failure that may be caused by http
communication model [#5027]
- Simplify the opening logic of the dynamic partition function, and prohibit
hourly partitioning for date type columns [#5043]
- Support to view Broker Load Profile through FE Web page [#5052]
- When viewing Resource information, clear text password is no longer
displayed [#5088]
- The BE side adds trace information for tablet creation to help locate the
problem of slow tablet creation [#5091]
- Fix the issue that may cause data loss when Routine Load consumes Kafka
data in some cases [#5093]
- Fix the problem that desc statement to view all materialized views may
return Malformed packet [#5115]
- Fix the issue that may cause BE to crash when BE starts loading the data
directory [#5113]
- Fix the problem that non-Master FE repeatedly sends non-query requests to
Master FE [#5160]
- Fix the problem of partition cache hit logic error [#5065]
- Fixed an error when bucket join was executed on an empty table [#5145]
- Fix the problem that the percentile_approx function returns the wrong
result [#5172]
- Fix the problem of the calling sequence of Olap Scanner thread ending
[5111]
- Fixed an error when creating the colocation attribute for an empty
partitioned table [#5139]
- Fixed an error when querying materialized views in CTE statement [#5165]
- Fix the problem that the min max function does not handle the null value
of string type column correctly [#5189]
- Modify the string encoding in Spark-Doris-Connector to utf8 [#5202]
- Fix the problem that delete column may be added repeatedly in routine load
[#5222]
- Fix bucket shuffle join bug [#5228]
- Fix the issue that the ALTER ROUTINE LOAD operation is invalid for some
parameters [#5257]
- Fixed an issue where metadata signatures of different tables may be the
same during backup and recovery operations [#5254]
- Fix the problem that Colocate Join and Buckets shuffle join may cause data
to be scanned repeatedly [#5256]
- Fix the issue of metadata errors caused by unchecked log id when FE pushes
metadata [#5219]
- Fix the problem of error in aggregate query processing -0.0 [#5226]
- Fix outer join query error [#5285]
# Other
- Add some non-Apache protocol code protocol declarations to the NOTICE file
[#4831]
- Reformatted the code of BE using clang-format [#4965]
- Added clang-format checking and formatting scripts to unify the C++ code
style of BE before submission [#4934]
- The third-party library adds the AWS S3 SDK, which can be used to directly
read the data in the object storage through the SDK [#5234]
- Fixed some issues related to License: [#4371]
1. The dependencies of the two third-party libraries, MySQL client and
LZO, will no longer be enabled in the default compilation options. If users
need MySQL external table function, they need to turn it on
2. Removed the js and css code in the code library and introduced it in
the form of a third-party library dependency
- Updated the Docker development environment image build-env-1.2
- Updated the compilation method of the UnixODBC tripartite library, so that
the BE process no longer depends on the libltdl.so dynamic library of the
system when it is running
- Added third-party UDF to support more efficient set calculation of
orthogonal bitmap data [#4198]
- Added UnixODBC third-party library dependency to support ODBC external
table function [#4377]
# API Change
- Prohibit the creation of segment v1 tables [#4913]
- Rename the configuration item `streaming_load_max_batch_size_mb` to
`streaming_load_json_max_mb` [\#4791]
- Support column reference passing in column definition of load statement
[#5140]
- Support creating indexes on the value column of unique table [#5305]
- Support atomic replacement of two tables through replace statement [#4669]
- Support CREATE TABLE LIKE statement
# Credits
[924060929](https://github.com/924060929)
[acelyc111](https://github.com/acelyc111)
[Astralidea](https://github.com/Astralidea)
[benbiti](https://github.com/benbiti)
[blueChild](https://github.com/blueChild)
[caiconghui](https://github.com/caiconghui)
[caoyang10](https://github.com/caoyang10)
[ccoffline](https://github.com/ccoffline)
[coalchan](https://github.com/coalchan)
[Dam1029](https://github.com/Dam1029)
[e0c9](https://github.com/e0c9)
[EmmyMiao87](https://github.com/EmmyMiao87)
[gengjun-git](https://github.com/gengjun-git)
[HangyuanLiu](https://github.com/HangyuanLiu)
[HappenLee](https://github.com/HappenLee)
[hffariel](https://github.com/hffariel)
[jollykingCN](https://github.com/jollykingCN)
[kangkaisen](https://github.com/kangkaisen)
[killxdcj](https://github.com/killxdcj)
[lihuigang](https://github.com/lihuigang)
[liutang123](https://github.com/liutang123)
[luozenglin](https://github.com/luozenglin)
[marising](https://github.com/marising)
[mengqinghuan](https://github.com/mengqinghuan)
[morningman](https://github.com/morningman)
[nimuyuhan](https://github.com/nimuyuhan)
[Nivane](https://github.com/Nivane)
[pengxiangyu](https://github.com/pengxiangyu)
[px-l](https://github.com/px-l)
[qidaye](https://github.com/qidaye)
[sduzh](https://github.com/sduzh)
[Skysheepwang](https://github.com/Skysheepwang)
[songchuangyuan](https://github.com/songchuangyuan)
[stalary](https://github.com/stalary)
[stdpain](https://github.com/stdpain)
[Sunt-ing](https://github.com/Sunt-ing)
[vagetablechicken](https://github.com/vagetablechicken)
[vergilchiu](https://github.com/vergilchiu)
[wangbo](https://github.com/wangbo)
[wangxiaobaidu11](https://github.com/wangxiaobaidu11)
[weizuo93](https://github.com/weizuo93)
[WingsGo](https://github.com/WingsGo)
[wutiangan](https://github.com/wutiangan)
[wuyunfeng](https://github.com/wuyunfeng)
[xinghuayu007](https://github.com/xinghuayu007)
[xinyiZzz](https://github.com/xinyiZzz)
[Xpray](https://github.com/Xpray)
[xy720](https://github.com/xy720)
[yangzhg](https://github.com/yangzhg)
[Youngwb](https://github.com/Youngwb)
[yxqweasd](https://github.com/yxqweasd)
[zh0122](https://github.com/zh0122)
[ZhangYu0123](https://github.com/ZhangYu0123)
[zhaojintaozhao](.https://github.com/zhaojintaozhao)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]