<p dir="auto">Hi, community:</p>
<p dir="auto">This issue is to add more unit tests for the MetaDataRefresher class. Welcome to claim them.</p>
<p dir="auto">The specific subtasks are as follows:</p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for AlterIndexStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for AlterTableStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for CreateIndexStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for CreateTableStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for CreateViewStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for DropIndexStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for DropTableStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for DropViewStatementSchemaRefresher#refresh</li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox">  Add unit test for RenameTableStatementSchemaRefresher#refresh</li>
</ul>
<p dir="auto">Through this issue, you can understand the process of participating in Apache ShardingSphere, and be familiar with sharding meta data.</p>
<h2 dir="auto">Bug Report</h2>
<h3 dir="auto">Which version of ShardingSphere did you use?</h3>
<p dir="auto">5.1.1</p>
<h3 dir="auto">Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?</h3>
<p dir="auto">ShardingSphere-Proxy</p>
<h3 dir="auto">Expected behavior</h3>
<p dir="auto">The following INSERT statement can run normally when calling MySQL directly, but an exception is thrown after using Sharding-Proxy.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="@Insert(value = {&quot;&lt;script&gt;insert into ${tableName} (shapeid, userid, groupid, create_userid, name, type, name_alias, &quot; +
		&quot;stringvalue, doublevalue, intvalue, blobvalue, version, datasize, createtime, modifytime, deleted) values&quot; +
		&quot;&lt;foreach item='item' index='index' collection='propertyExList' separator=','&gt;&quot; +
		&quot;(#{item.builder.serverPID}, #{item.userID}, #{item.groupID}, #{item.userID}, &quot; +
		&quot;#{item.builder.fieldName}, #{item.builder.type}, #{item.builder.fieldName2}, &quot; +
		&quot;#{item.builder.stringValue}, #{item.builder.doubleValue}, #{item.builder.intValue}, &quot; +
		&quot;#{item.blobValue}, #{item.builder.version}, #{item.dataSize}, &quot; +
		&quot;#{item.builder.createTime}, #{item.builder.modifyTime}, #{item.builder.deleted})&quot; +
		&quot;&lt;/foreach&gt;&lt;/script&gt;&quot;})
@Options(useGeneratedKeys=true, keyProperty=&quot;propertyExList.builder.serverID&quot;, keyColumn=&quot;id&quot;)
boolean insertBatchProperty(@Param(&quot;tableName&quot;) String tableName,
	                            @Param(&quot;propertyExList&quot;) List&lt;PropertyEx&gt; propertyExList);"><pre class="notranslate"><code class="notranslate">@Insert(value = {"&lt;script&gt;insert into ${tableName} (shapeid, userid, groupid, create_userid, name, type, name_alias, " +
		"stringvalue, doublevalue, intvalue, blobvalue, version, datasize, createtime, modifytime, deleted) values" +
		"&lt;foreach item='item' index='index' collection='propertyExList' separator=','&gt;" +
		"(#{item.builder.serverPID}, #{item.userID}, #{item.groupID}, #{item.userID}, " +
		"#{item.builder.fieldName}, #{item.builder.type}, #{item.builder.fieldName2}, " +
		"#{item.builder.stringValue}, #{item.builder.doubleValue}, #{item.builder.intValue}, " +
		"#{item.blobValue}, #{item.builder.version}, #{item.dataSize}, " +
		"#{item.builder.createTime}, #{item.builder.modifyTime}, #{item.builder.deleted})" +
		"&lt;/foreach&gt;&lt;/script&gt;"})
@Options(useGeneratedKeys=true, keyProperty="propertyExList.builder.serverID", keyColumn="id")
boolean insertBatchProperty(@Param("tableName") String tableName,
	                            @Param("propertyExList") List&lt;PropertyEx&gt; propertyExList);
</code></pre></div>
<h3 dir="auto">Actual behavior</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'
### The error may exist in xxx/cn/syncserver/dao/UploadShapeDao.java (best guess)
### The error may involve xxx.cn.syncserver.dao.UploadShapeDao.insertBatchProperty-Inline
### The error occurred while setting parameters
### SQL: insert into shape_property_simple (shapeid, userid, groupid, create_userid, name, type, name_alias, stringvalue, doublevalue, intvalue, blobvalue, version, datasize, createtime, modifytime, deleted) values  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
### Cause: java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'"><pre class="notranslate"><code class="notranslate">### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'
### The error may exist in xxx/cn/syncserver/dao/UploadShapeDao.java (best guess)
### The error may involve xxx.cn.syncserver.dao.UploadShapeDao.insertBatchProperty-Inline
### The error occurred while setting parameters
### SQL: insert into shape_property_simple (shapeid, userid, groupid, create_userid, name, type, name_alias, stringvalue, doublevalue, intvalue, blobvalue, version, datasize, createtime, modifytime, deleted) values  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) , (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
### Cause: java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: This version of ShardingSphere-Proxy doesn't yet support this SQL. 'You have an error in your SQL syntax'
</code></pre></div>
<h3 dir="auto">Reason analyze (If you can)</h3>
<p dir="auto">I found that the following insert statement can be executed. The only difference between it and the previous statements with errors is that it does not contain <code class="notranslate"> (?,?,...)</code>.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[INFO ] 2022-05-23 15:20:37.162 [ShardingSphere-Command-0] ShardingSphere-SQL - Actual SQL: syncdb1 ::: insert into shape_simple (layerid, userid, create_userid, groupid, type, data, minlevel, maxlevel, version, datasize, legend, createtime, modifytime, deleted, create_version) values   (0, 10232, 10232, -1, 1, x'0a1b09c240214c1bc45c4011ee44a401170b4440190000000000000000', 0, 0, 15, 120.0, '', '2022-05-23 15:18:54', '2022-05-23 15:18:54', 0, 15)"><pre class="notranslate"><code class="notranslate">[INFO ] 2022-05-23 15:20:37.162 [ShardingSphere-Command-0] ShardingSphere-SQL - Actual SQL: syncdb1 ::: insert into shape_simple (layerid, userid, create_userid, groupid, type, data, minlevel, maxlevel, version, datasize, legend, createtime, modifytime, deleted, create_version) values   (0, 10232, 10232, -1, 1, x'0a1b09c240214c1bc45c4011ee44a401170b4440190000000000000000', 0, 0, 15, 120.0, '', '2022-05-23 15:18:54', '2022-05-23 15:18:54', 0, 15)
</code></pre></div>