anon-iclr-submission/benchname-bug-localization huggingface dataset:
Repository: square/okhttp
Issue: SpdyConnection.pushExecutor has zero keep-alive time

https://github.com/square/okhttp/blob/master/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java#L158

Because of the 0ms keep-alive time, the pushExecutor creates (and destroys) a new thread on every callback.  This seems unnecessarily expensive, compared to reusing the thread, particularly in settings where push callbacks are invoked frequently.

Is there a reason why you'd want the threads created for this executor to be effectively single-use?


Changed files:
okhttp/src/main/java/com/squareup/okhttp/Connection.java, okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java

diff --git a/okhttp/src/main/java/com/squareup/okhttp/Connection.java b/okhttp/src/main/java/com/squareup/okhttp/Connection.java
index 11bf1f217..0806c7954 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/Connection.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/Connection.java
@@ -85,7 +85,7 @@ public final class Connection {
       "TLS_DHE_RSA_WITH_AES_128_CBC_SHA",        // 0x00,0x33  Android 2.3
       "TLS_DHE_DSS_WITH_AES_128_CBC_SHA",        // 0x00,0x32  Android 2.3
       "TLS_DHE_RSA_WITH_AES_256_CBC_SHA",        // 0x00,0x39  Android 2.3
-      "TLS_RSA_WITH_AES_128_GCM_SHA256",         // 0x00,0x9C
+      "TLS_RSA_WITH_AES_128_GCM_SHA256",         // 0x00,0x9C  Android L
       "TLS_RSA_WITH_AES_128_CBC_SHA",            // 0x00,0x2F  Android 2.3
       "TLS_RSA_WITH_AES_256_CBC_SHA",            // 0x00,0x35  Android 2.3
       "SSL_RSA_WITH_3DES_EDE_CBC_SHA",           // 0x00,0x0A  Android 2.3  (Deprecated in L)
diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
index 31719ff07..0b6fa2d5f 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
@@ -153,8 +153,7 @@ public final class SpdyConnection implements Closeable {
     if (protocol == Protocol.HTTP_2) {
       variant = new Http20Draft14();
       // Like newSingleThreadExecutor, except lazy creates the thread.
-      pushExecutor = new ThreadPoolExecutor(0, 1,
-          0L, TimeUnit.MILLISECONDS,
+      pushExecutor = new ThreadPoolExecutor(0, 1, 60, TimeUnit.SECONDS,
           new LinkedBlockingQueue<Runnable>(),
           Util.threadFactory(String.format("OkHttp %s Push Observer", hostName), true));
       // 1 less than SPDY http://tools.ietf.org/html/draft-ietf-httpbis-http2-14#section-6.9.2
Repository: square/okhttp
Issue: SpdyConnection synchronization problem in goAway

We call SpdyStream.receiveRstStream (synchronizes on the stream) while holding the lock on SpdyConnection.this. We should release the SpdyConnection lock before acquiring the SpdyStream lock.


Changed files:
okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java

diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
index 0b6fa2d5f..d3ebee2e3 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
@@ -24,7 +24,6 @@ import java.io.InterruptedIOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -734,18 +733,19 @@ public final class SpdyConnection implements Closeable {
     @Override public void goAway(int lastGoodStreamId, ErrorCode errorCode, ByteString debugData) {
       if (debugData.size() > 0) { // TODO: log the debugData
       }
+
+      // Copy the streams first. We don't want to hold a lock when we call receiveRstStream().
+      SpdyStream[] streamsCopy;
       synchronized (SpdyConnection.this) {
+        streamsCopy = streams.values().toArray(new SpdyStream[streams.size()]);
         shutdown = true;
+      }
 
-        // Fail all streams created after the last good stream ID.
-        for (Iterator<Map.Entry<Integer, SpdyStream>> i = streams.entrySet().iterator();
-            i.hasNext(); ) {
-          Map.Entry<Integer, SpdyStream> entry = i.next();
-          int streamId = entry.getKey();
-          if (streamId > lastGoodStreamId && entry.getValue().isLocallyInitiated()) {
-            entry.getValue().receiveRstStream(ErrorCode.REFUSED_STREAM);
-            i.remove();
-          }
+      // Fail all streams created after the last good stream ID.
+      for (SpdyStream spdyStream : streamsCopy) {
+        if (spdyStream.getId() > lastGoodStreamId && spdyStream.isLocallyInitiated()) {
+          spdyStream.receiveRstStream(ErrorCode.REFUSED_STREAM);
+          removeStream(spdyStream.getId());
         }
       }
     }
Repository: square/okhttp
Issue: Creating HttpResponseCache causes StrictMode violation

When cache is created I'm having this violation:

06-18 11:19:42.607: E/StrictMode(4300): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
06-18 11:19:42.607: E/StrictMode(4300): java.lang.Throwable: Explicit termination method 'close' not called
06-18 11:19:42.607: E/StrictMode(4300):     at dalvik.system.CloseGuard.open(CloseGuard.java:184)
06-18 11:19:42.607: E/StrictMode(4300):     at java.io.FileOutputStream.<init>(FileOutputStream.java:90)
06-18 11:19:42.607: E/StrictMode(4300):     at com.squareup.okhttp.internal.DiskLruCache.open(DiskLruCache.java:226)
06-18 11:19:42.607: E/StrictMode(4300):     at com.squareup.okhttp.HttpResponseCache.<init>(HttpResponseCache.java:171)


Changed files:
okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java

diff --git a/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java b/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java
index e299d5721..2b701c335 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/HttpResponseCache.java
@@ -169,12 +169,18 @@ public final class HttpResponseCache extends ResponseCache implements OkResponse
       if (snapshot == null) {
         return null;
       }
-      entry = new Entry(snapshot.getInputStream(ENTRY_METADATA));
     } catch (IOException e) {
       // Give up because the cache cannot be read.
       return null;
     }
 
+    try {
+      entry = new Entry(snapshot.getInputStream(ENTRY_METADATA));
+    } catch (IOException e) {
+      Util.closeQuietly(snapshot);
+      return null;
+    }
+
     Response response = entry.response(request, snapshot);
 
     if (!entry.matches(request, response)) {
Repository: square/okhttp
Issue: ConcurrentModificationException

I wouldn't deem this high priority but it did crash a device.

Android 4.4.2
OkHttp 2.0.0

``` bash
java.util.ConcurrentModificationException
       at java.util.HashMap$HashIterator.nextEntry(HashMap.java:806)
       at java.util.HashMap$ValueIterator.next(HashMap.java:838)
       at com.squareup.okhttp.internal.spdy.SpdyConnection$Reader.settings(SourceFile:698)
       at com.squareup.okhttp.internal.spdy.Spdy3$Reader.readSettings$5f833cfd(SourceFile:278)
       at com.squareup.okhttp.internal.spdy.Spdy3$Reader.nextFrame$64dcaf67(SourceFile:165)
       at com.squareup.okhttp.internal.spdy.SpdyConnection$Reader.execute(SourceFile:574)
       at com.squareup.okhttp.internal.NamedRunnable.run(SourceFile:33)
       at java.lang.Thread.run(Thread.java:841)
```

[Crashlytics Link](http://crashes.to/s/fef087d43fb)


Changed files:
okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java

diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
index d3ebee2e3..458fb6db2 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/spdy/SpdyConnection.java
@@ -695,7 +695,7 @@ public final class SpdyConnection implements Closeable {
         }
       }
       if (streamsToNotify != null && delta != 0) {
-        for (SpdyStream stream : streams.values()) {
+        for (SpdyStream stream : streamsToNotify) {
           synchronized (stream) {
             stream.addBytesToWriteWindow(delta);
           }
Repository: square/okhttp
Issue: SpdyTransport sets the wrong protocol

SpdyTransport sets the response protocol according to the status line.

https://github.com/square/okhttp/blob/master/okhttp/src/main/java/com/squareup/okhttp/internal/http/StatusLine.java#L41

It seems to me that it should be clarified with the transport protocol, here, right?

https://github.com/square/okhttp/blob/master/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java#L206


Changed files:
okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java, okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java

diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java
index 9947da037..144ec78f4 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/HeadersTest.java
@@ -41,7 +41,7 @@ public final class HeadersTest {
         SpdyTransport.readNameValueBlock(headerBlock, Protocol.SPDY_3).request(request).build();
     Headers headers = response.headers();
     assertEquals(4, headers.size());
-    assertEquals(Protocol.HTTP_1_1, response.protocol());
+    assertEquals(Protocol.SPDY_3, response.protocol());
     assertEquals(200, response.code());
     assertEquals("OK", response.message());
     assertEquals("no-cache, no-store", headers.get("cache-control"));
diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java
index 38ad43817..14f317ba9 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/SpdyTransport.java
@@ -204,7 +204,7 @@ public final class SpdyTransport implements Transport {
 
     StatusLine statusLine = StatusLine.parse(version + " " + status);
     return new Response.Builder()
-        .protocol(statusLine.protocol)
+        .protocol(protocol)
         .code(statusLine.code)
         .message(statusLine.message)
         .headers(headersBuilder.build());
Repository: dbeaver/dbeaver
Issue: Filters don't work for enum types 

PostgreSQL 12, DBeaver EE 21.0.0, macOS 11.2.3.

Suppose we have a enum type and a table: 

```sql
CREATE TYPE "mood" AS ENUM (
    'sad',
    'ok',
    'happy'
);

CREATE TABLE mood_data (
    id int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
    "time" timestamp NULL,
    "mood" "mood" NULL,
    CONSTRAINT mood_data_pkey PRIMARY KEY (id)
);
```
Fill the table with data. Open the data editor and try to apply a filter on the `mood` column. Possible values for filtering will be duplicated, the data editor will be closed with an error when applying the filter. 


Changed files:
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java

diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java
index 9fede8aa6a..3558b73b3c 100644
--- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/valuefilter/GenericFilterValueEdit.java
@@ -496,6 +496,12 @@ class GenericFilterValueEdit {
     }
 
     private DBDLabelValuePair findValue(Map<Object, DBDLabelValuePair> rowData, Object cellValue) {
+        final DBDLabelValuePair value = rowData.get(cellValue);
+        if (value != null) {
+            // If we managed to found something at this point - return right away
+            return value;
+        }
+        // Otherwise try to match values manually
         if (cellValue instanceof Number) {
             for (Map.Entry<Object, DBDLabelValuePair> pair : rowData.entrySet()) {
                 if (pair.getKey() instanceof Number && CommonUtils.compareNumbers((Number) pair.getKey(), (Number) cellValue) == 0) {
@@ -503,7 +509,14 @@ class GenericFilterValueEdit {
                 }
             }
         }
-        return rowData.get(cellValue);
+        if (cellValue instanceof String) {
+            for (Map.Entry<Object, DBDLabelValuePair> pair : rowData.entrySet()) {
+                if (!DBUtils.isNullValue(pair.getKey()) && CommonUtils.toString(pair.getKey()).equals(cellValue)) {
+                    return pair.getValue();
+                }
+            }
+        }
+        return null;
     }
 
     @Nullable
Repository: dbeaver/dbeaver
Issue: Auto-complete offers objects from the current schema only

#### System information: 
- Operating system (distribution) and version Win10
- DBeaver version 7.3.3 EA

#### Steps to reproduce, if exist:
1. Open SQL Editor for MySQL sakila
2. Type `select * from a`

**Actual result**: the list for auto-complete appears with objects from the current schema only
**Expected**:  the objects are offered from the whole database if they are suitable for auto-complete in the current statement.

_Note_: enabled **Use global search** option doesn't solve the issue

Changed files:
plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerStructureAssistant.java

diff --git a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerStructureAssistant.java b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerStructureAssistant.java
index 68edb2d22e..9be288abeb 100644
--- a/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerStructureAssistant.java
+++ b/plugins/org.jkiss.dbeaver.ext.mssql/src/org/jkiss/dbeaver/ext/mssql/model/SQLServerStructureAssistant.java
@@ -128,7 +128,7 @@ public class SQLServerStructureAssistant implements DBSStructureAssistant<SQLSer
         Collection<SQLServerDatabase> databases;
         SQLServerSchema schema = null;
 
-        if (parentObject instanceof DBPDataSourceContainer) {
+        if (parentObject instanceof DBPDataSourceContainer || parentObject instanceof SQLServerDataSource) {
             if (globalSearch) {
                 databases = executionContext.getDataSource().getDatabases(monitor);
             } else {
Repository: dbeaver/dbeaver
Issue: SQL script editor bug when delete

#### System information: 
- Win 10
- 21.2.2.202110030714
- Additional extensions -

#### Connection specification:
- Postgresql 13
- org.postgresql.Driver (42.2.20)

#### Describe the problem you're observing:
1. E.g. "SELECT id, c1, c2, c3 FROM table;" from SQL script window.
2. select a row and mark it for delete.
3. browse over the row limit (e.g. 200)
4. press "save"
5. the row doesn't deleted

Changed files:
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java

diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
index bf66efb8b4..115d734f38 100644
--- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java
@@ -221,7 +221,15 @@ public class ResultSetViewer extends Viewer
     // Theme listener
     private IPropertyChangeListener themeChangeListener;
     private long lastThemeUpdateTime;
+    private boolean isCancelled = false;
 
+    public boolean isCancelled() {
+        return isCancelled;
+    }
+
+    public void setCancelled(boolean cancelled) {
+        isCancelled = cancelled;
+    }
 
     public ResultSetViewer(@NotNull Composite parent, @NotNull IWorkbenchPartSite site, @NotNull IResultSetContainer container)
     {
@@ -2256,9 +2264,6 @@ public class ResultSetViewer extends Viewer
     }
 
     void appendData(List<Object[]> rows, boolean resetOldRows) {
-        if (!checkForChanges()) {
-            return;
-        }
         model.appendData(rows, resetOldRows);
 
         UIUtils.asyncExec(() -> {
@@ -3540,6 +3545,9 @@ public class ResultSetViewer extends Viewer
     public boolean checkForChanges() {
         // Check if we are dirty
         if (isDirty()) {
+            if (isCancelled){
+                return false;
+            }
             int checkResult = new UITask<Integer>() {
                 @Override
                 protected Integer runTask() {
@@ -3548,6 +3556,7 @@ public class ResultSetViewer extends Viewer
             }.execute();
             switch (checkResult) {
                 case ISaveablePart2.CANCEL:
+                    isCancelled = true;
                     return false;
                 case ISaveablePart2.YES:
                     // Apply changes
@@ -4809,6 +4818,10 @@ public class ResultSetViewer extends Viewer
                 return Status.CANCEL_STATUS;
             }
             beforeDataRead();
+            if (!checkForChanges()){
+                return Status.CANCEL_STATUS;
+            }
+            isCancelled = false;
             try {
                 IStatus status = super.run(monitor);
                 afterDataRead();
Repository: dbeaver/dbeaver
Issue: copy sql as source code for delphi and single quote



#### System information: 
- Windows 10
- DBeaver version 21.1.4.202108020335
- dark theme and office 



#### Describe the problem you're observing:

when i use "copy  sql as source code" and i don't select use string builder option the code generated have half cicle ")" in end of  code. Delphi require string inside single quote at begin and end.  Another problem is when i use single quote inside sql and generation of code. Single quote is in delphi a reserved charater for defining string . If i want use single quote in a string is necessary repeat single quote.
 

#### Example code generate from dbaver
            'SELECT COD_AGE_ID,STATO FROM mytable aa  ' + 
            'where COD_AGE_ID = '00125' ');


   correct version in delphi

            'SELECT COD_AGE_ID,STATO FROM mytable aa  ' + 
            'where COD_AGE_ID = ''00125'' ';


Changed files:
plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/convert/impl/DelphiSQLConverter.java

diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/convert/impl/DelphiSQLConverter.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/convert/impl/DelphiSQLConverter.java
index bcbfb0a563..ecfa7173f5 100644
--- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/convert/impl/DelphiSQLConverter.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/convert/impl/DelphiSQLConverter.java
@@ -40,6 +40,7 @@ public class DelphiSQLConverter extends SourceCodeSQLConverter {
                 result.append("Query.Add(");
             }
             String line = sourceLines[i];
+            line = line.replace("'", "''");
             result.append('\\'').append(CommonUtils.escapeJavaString(line));
             if (!trailingLineFeed) {
                 result.append(lineDelimiter);
@@ -48,9 +49,9 @@ public class DelphiSQLConverter extends SourceCodeSQLConverter {
             if (trailingLineFeed) {
                 result.append(lineDelimiter);
             }
-            if ((i < sourceLines.length - 1) && (!useStringBuilder)) {
+            if (i < sourceLines.length - 1 && !useStringBuilder) {
                 result.append(" + \\n");
-            } else {
+            } else if (useStringBuilder){
                 result.append(");\\n");
             }
         }
Repository: dbeaver/dbeaver
Issue: [Wayland] Data can't be edited inline after double click

#### System information: 
- Operating system (distribution) and version Ubuntu 22.04
- DBeaver version 22.1.0

#### Steps to reproduce, if exist:
1. Double-click on any cell in data editor
2. Input something

**Expected:** Data in a cell is replaced with the input
**Actual:** Nothing happens


Changed files:
plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java

diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
index 83f42eac12..8a3070d215 100644
--- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/lightgrid/LightGrid.java
@@ -3130,7 +3130,13 @@ public abstract class LightGrid extends Canvas {
         // and therefore the grid has a child. The solution is to
         // forceFocus()
         if ((getStyle() & SWT.NO_FOCUS) != SWT.NO_FOCUS) {
-            forceFocus();
+            GridPos cell = getCell(new Point(e.x, e.y));
+            if (cell == null || !cell.equalsTo(getFocusPos())) {
+                // We don't want to call this event if the selected cell equals active one
+                // this is related to bug with wayland handling of force focus, which led to editors
+                // loosing focus on double click see #16705
+                forceFocus();
+            }
         }
 
         //if populated will be fired at end of method.
Repository: alibaba/nacos
Issue: client error: invalid param. For input string: "${nacos.config.maxRetry${nacos.maxRetry:}}"

<!-- Here is for bug reports and feature requests ONLY! 

If you're looking for help, please check our mail list、WeChat group and the Gitter room.

Please try to use English to describe your issue, or at least provide a snippet of English translation.
我们鼓励使用英文，如果不能直接使用，可以使用翻译软件，您仍旧可以保留中文原文。
-->

**Describe the bug**
在1.3.1和1.3.2的版本中，若没有明确指定 nacos.config.max-retry 的值，启动springboot程序，将会报如标题所示错误。

**Expected behavior**
预期程序正常启动，该值采用默认值3

**Acutally behavior**
实际上会报如标题所示错误。

**How to Reproduce**
Steps to reproduce the behavior:
调试发现，在1.3.0版本中，采用的是org.apache.commons.lang3.math.NumberUtils.toInt(String str, int defaultValue)方法。
而报错的版本采用的是com.alibaba.nacos.common.utils.ConvertUtils.toInt(String val, int defaultValue)方法。
理论上报错版本的方法也没问题，但是不知道为什么在默认情况下传进来的val的值是${nacos.config.maxRetry${nacos.maxRetry:}}，导致程序出错。

**Desktop (please complete the following information):**
 - OS: [e.g. Centos]
 - Version [e.g. nacos-server 1.3.2, nacos-client 1.3.2]
 - Module [e.g. naming/config]
 - SDK [e.g. original, spring-cloud-alibaba-nacos, dubbo]

**Additional context**
Add any other context about the problem here.


Changed files:
common/src/main/java/com/alibaba/nacos/common/utils/ConvertUtils.java

diff --git a/common/src/main/java/com/alibaba/nacos/common/utils/ConvertUtils.java b/common/src/main/java/com/alibaba/nacos/common/utils/ConvertUtils.java
index 628d79bc3..50670e411 100644
--- a/common/src/main/java/com/alibaba/nacos/common/utils/ConvertUtils.java
+++ b/common/src/main/java/com/alibaba/nacos/common/utils/ConvertUtils.java
@@ -51,7 +51,11 @@ public final class ConvertUtils {
         if (StringUtils.isBlank(val)) {
             return defaultValue;
         }
-        return Integer.parseInt(val);
+        try {
+            return Integer.parseInt(val);
+        } catch (NumberFormatException exception) {
+            return defaultValue;
+        }
     }
     
     /**
@@ -77,7 +81,11 @@ public final class ConvertUtils {
         if (StringUtils.isBlank(val)) {
             return defaultValue;
         }
-        return Long.parseLong(val);
+        try {
+            return Long.parseLong(val);
+        } catch (NumberFormatException exception) {
+            return defaultValue;
+        }
     }
     
     /**
@@ -92,7 +100,11 @@ public final class ConvertUtils {
         if (StringUtils.isBlank(val)) {
             return defaultValue;
         }
-        return Boolean.parseBoolean(val);
+        try {
+            return Boolean.parseBoolean(val);
+        } catch (NumberFormatException exception) {
+            return defaultValue;
+        }
     }
     
     //   The following utility functions are extracted from <link>org.apache.commons.lang3</link>
Repository: alibaba/spring-cloud-alibaba
Issue: Get wrong instance list at first time

How to reproduce this issue, refer to followings:

    I have registered 2 instances (ex service name are all 'a') to nacos server
    Then I stop them
    After a while, I do step 1 again
    Then I get 2 instances from interface, for first time, it returns 1 instance or 0 instance. But I invoke again, it is fine to return 2 instances. Guess the cache issue?

Changed files:
spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java

diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java
index f766945f..0d4fdbb8 100644
--- a/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java
+++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/org/springframework/cloud/alibaba/nacos/ribbon/NacosServerList.java
@@ -44,8 +44,17 @@ public class NacosServerList extends AbstractServerList<NacosServer> {
 
 	@Override
 	public List<NacosServer> getInitialListOfServers() {
+		return getServers();
+	}
+
+	@Override
+	public List<NacosServer> getUpdatedListOfServers() {
+		return getServers();
+	}
+
+	private List<NacosServer> getServers() {
 		try {
-			List<Instance> instances = registration.getNacosNamingService().selectInstances(serviceId,true);
+			List<Instance> instances = registration.getNacosNamingService().selectInstances(serviceId, true);
 			return instancesToServerList(instances);
 		}
 		catch (Exception e) {
@@ -53,11 +62,6 @@ public class NacosServerList extends AbstractServerList<NacosServer> {
 		}
 	}
 
-	@Override
-	public List<NacosServer> getUpdatedListOfServers() {
-		return getInitialListOfServers();
-	}
-
 	private List<NacosServer> instancesToServerList(List<Instance> instances) {
 		List<NacosServer> result = new ArrayList<>(instances.size());
 		for (Instance instance : instances) {
Repository: libgdx/libgdx
Issue: Image are flipped in Particle Editor preview window

To Reproduce:
- open particle editor
- open any image
- image is shown flipped upside down

However, when particle is saved then loaded from file image is shown normal.

It's also mentioned in this thread:
http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=3370&p=16574&hilit=particle+flipped#p16574


Changed files:
extensions/gdx-tools/src/com/badlogic/gdx/tools/particleeditor/EffectPanel.java

diff --git a/extensions/gdx-tools/src/com/badlogic/gdx/tools/particleeditor/EffectPanel.java b/extensions/gdx-tools/src/com/badlogic/gdx/tools/particleeditor/EffectPanel.java
index 04fa9b42d..9cb496f2f 100644
--- a/extensions/gdx-tools/src/com/badlogic/gdx/tools/particleeditor/EffectPanel.java
+++ b/extensions/gdx-tools/src/com/badlogic/gdx/tools/particleeditor/EffectPanel.java
@@ -65,7 +65,6 @@ class EffectPanel extends JPanel {
 		emitter.getTint().setColors(new float[] {1, 0.12156863f, 0.047058824f});
 		emitter.getTransparency().setHigh(1);
 
-		emitter.setFlip(false, true);
 		emitter.setMaxParticleCount(25);
 		emitter.setImagePath("particle.png");
 
@@ -107,7 +106,6 @@ class EffectPanel extends JPanel {
 		emitter.getTransparency().setTimeline(new float[] {0, 0.2f, 0.8f, 1});
 		emitter.getTransparency().setScaling(new float[] {0, 1, 0.75f, 0});
 		
-		emitter.setFlip(false, true);
 		emitter.setMaxParticleCount(200);
 		emitter.setImagePath("particle.png");
Repository: libgdx/libgdx
Issue: Config file is not always positioning window 

Hey, just found a small bug with window positioning when using config vars.

If i put my code like so, then it centers both axis.
config.x=-1;
config.y=0;
or
config.x=0;
config.y=-1;

But if i put it like so, then window is in top left corner.
config.x=0;
config.y=0;


Changed files:
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java

diff --git a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
index cf5c18d8b..2c0af30a1 100644
--- a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
+++ b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
@@ -152,10 +152,8 @@ public class LwjglGraphics implements Graphics {
 		Display.setInitialBackground(config.initialBackgroundColor.r, config.initialBackgroundColor.g,
 			config.initialBackgroundColor.b);
 
-		if (config.x != -1 && config.y != -1) Display.setLocation(config.x, config.y);
+		Display.setLocation(config.x, config.y);
 		createDisplayPixelFormat();
-		config.x = Display.getX();
-		config.y = Display.getY();
 		initiateGLInstances();
 	}
Repository: libgdx/libgdx
Issue: setDrawContact() missing

setDrawContact() fails when compiling for GWT.
[Box2DDebugRenderer.java](https://github.com/libgdx/libgdx/blob/master/extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java) file does not contain such function.

Cheers


Changed files:
extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java

diff --git a/extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java b/extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java
index 447b2a027..66ff4a387 100644
--- a/extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java
+++ b/extensions/gdx-box2d/gdx-box2d-gwt/src/com/badlogic/gdx/physics/box2d/gwt/emu/com/badlogic/gdx/physics/box2d/Box2DDebugRenderer.java
@@ -352,6 +352,14 @@ public class Box2DDebugRenderer {
 	public void setDrawVelocities (boolean drawVelocities) {
 		this.drawVelocities = drawVelocities;
 	}
+	
+	public boolean isDrawContacts () {
+		return drawContacts;
+	}
+	
+	public void setDrawContacts (boolean drawContacts) {
+		this.drawContacts = drawContacts;
+	}
 
 	public static Vector2 getAxis () {
 		return axis;
Repository: libgdx/libgdx
Issue: GWT isButtonPressed is wrong.

After trying right button calls it just check for left button.  It will always return true if you check if button is left first. 

https://github.com/libgdx/libgdx/blob/master/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java#L170 


Changed files:
backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java

diff --git a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java
index 7d00e78d5..3f098bf16 100644
--- a/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java
+++ b/backends/gdx-backends-gwt/src/com/badlogic/gdx/backends/gwt/GwtInput.java
@@ -167,7 +167,7 @@ public class GwtInput implements Input {
 
 	@Override
 	public boolean isButtonPressed (int button) {
-		return button == Buttons.LEFT && touched[0];
+		return pressedButtons.contains(button) && touched[0];
 	}
 
 	@Override
Repository: libgdx/libgdx
Issue: Lwjgl backend doesn't support OpenGL ES 3.2+

Creating a LwjglApplication with useGL30 set to true still doesn't create an OpenGL ES 3 context. Additionally, Gdx.gl30 is null.

The issue seems to be [here](https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java#L166). context should be passed in to Display.create along with the PixelFormat.

[This line](https://github.com/libgdx/libgdx/blob/master/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java#L241) should also check whether the major version is 3 and set gl30 accordingly.


Changed files:
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL20.java
backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java

diff --git a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL20.java b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL20.java
index 290afba2e..57cecebb6 100644
--- a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL20.java
+++ b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGL20.java
@@ -89,7 +89,7 @@ class LwjglGL20 implements com.badlogic.gdx.graphics.GL20 {
 
 	public void glBufferData (int target, int size, Buffer data, int usage) {
 		if(data == null)
-			throw new GdxRuntimeException("Using null for the data not possible, blame LWJGL");
+			GL15.glBufferData(target, size, usage);
 		else if (data instanceof ByteBuffer)
 			GL15.glBufferData(target, (ByteBuffer)data, usage);
 		else if (data instanceof IntBuffer)
diff --git a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
index c193b5f17..985bc76f3 100644
--- a/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
+++ b/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/LwjglGraphics.java
@@ -263,6 +263,7 @@ public class LwjglGraphics implements Graphics {
 
 		Gdx.gl = gl20;
 		Gdx.gl20 = gl20;
+		Gdx.gl30 = gl30;
 	}
 
 	private String glInfo () {
Repository: google/exoplayer
Issue: PlayerControlView time position not being initialized to 0:00 in ExoPlayer r2.15.1

Reproduction:

1. Change the demo app to use PlayerControlView instead of StyledPlayerControlView.
2. Open a video. See that the timestamp is blank instead of starting at 0:00.

This appears to be a regression in 86f8c4e44e5467cb9d3b79dcf0593903ddd58422 / dd33afb33508018a2734ebbc65eb34b179259983 from fixing #9111 


Changed files:
library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java

diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java
index 7035372b32..24dbde6a72 100644
--- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java
+++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java
@@ -343,8 +343,8 @@ public class PlayerControlView extends FrameLayout {
   private long[] extraAdGroupTimesMs;
   private boolean[] extraPlayedAdGroups;
   private long currentWindowOffset;
-  private long currentPosition;
-  private long currentBufferedPosition;
+  private long currentPosition = C.POSITION_UNSET;
+  private long currentBufferedPosition = C.POSITION_UNSET;
 
   public PlayerControlView(Context context) {
     this(context, /* attrs= */ null);
Repository: google/exoplayer
Issue: ANR on Fire TV when changing surface holder

### Issue description
ANR occurs when setting video surface holder to null after it got destroyed.

### Reproduction steps
Trigger replacing surface.

### Link to test content
Any video.

### Version of ExoPlayer being used
2.7.0, 2.7.2 and 2.8.1

### Device(s) and version(s) of Android being used
Fire TV 6.0.1.4-012, OS 6.2.1.3

Codec: OMX.amlogic.avc.decoder.awesome
Device: needle
Model: AFTN

### A full bug report captured from the device
Will be sent by email.



Changed files:
library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java

diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
index 990025b5af..5e8a98ea68 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
@@ -825,10 +825,11 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
   private boolean shouldUseDummySurface(MediaCodecInfo codecInfo) {
     return Util.SDK_INT >= 23
         && !tunneling
+        && !codecNeedsDummySurfaceWorkaround(codecInfo.name)
         && !codecNeedsSetOutputSurfaceWorkaround(codecInfo.name)
         && (!codecInfo.secure || DummySurface.isSecureSupported(context));
   }
-
+  
   private void setJoiningDeadlineMs() {
     joiningDeadlineMs = allowedJoiningTimeMs > 0
         ? (SystemClock.elapsedRealtime() + allowedJoiningTimeMs) : C.TIME_UNSET;
@@ -1171,6 +1172,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
     return Util.SDK_INT <= 22 && "foster".equals(Util.DEVICE) && "NVIDIA".equals(Util.MANUFACTURER);
   }
 
+  private static boolean codecNeedsDummySurfaceWorkaround(String name) {
+    // Work around https://github.com/google/ExoPlayer/issues/4419.
+    return (("needle".equals(Util.DEVICE)) // FireTV 4K
+            && "OMX.amlogic.avc.decoder.awesome".equals(name));
+  }
+  
   /**
    * Returns whether the device is known to implement {@link MediaCodec#setOutputSurface(Surface)}
    * incorrectly.
Repository: apache/shardingsphere
Issue: Sharding-proxy Query result :extraneous data in "D" message ,reason: have chinese

## Bug Report

**For English only**, other languages will not accept.

Before report a bug, make sure you have:

- Searched open and closed [GitHub issues](https://github.com/sharding-sphere/sharding-sphere/issues).
- Read documentation: [ShardingSphere Doc](http://shardingsphere.io/document/current/en/overview/).

Please pay attention on issues you submitted, because we maybe need more details. 
If no response **more than 7 days** and we cannot reproduce it on current information, we will **close it**.

Please answer these questions before submitting your issue. Thanks!

### Which version of ShardingSphere did you use?
4.0.0-RC1
### Which project did you use? Sharding-JDBC or Sharding-Proxy?
Sharding-Proxy 
### Expected behavior
table data have Chinese .select * from table show error message :
extraneous data in "D" message
### Actual behavior
proxy backend POSTGRES , frontend postgres 
### Reason analyze (If you can)
reason Chinese , Postgres server_encoding ,client_encoding UTF-8
### Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.
any table ,have Chinese is error.
### Example codes for reproduce this issue (such as a github link).

Changed files:
sharding-proxy/sharding-proxy-transport/sharding-proxy-transport-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/transport/postgresql/packet/command/query/text/PostgreSQLDataRowPacket.java

diff --git a/sharding-proxy/sharding-proxy-transport/sharding-proxy-transport-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/transport/postgresql/packet/command/query/text/PostgreSQLDataRowPacket.java b/sharding-proxy/sharding-proxy-transport/sharding-proxy-transport-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/transport/postgresql/packet/command/query/text/PostgreSQLDataRowPacket.java
index ee4b0ac0032..9eabe5a9c31 100644
--- a/sharding-proxy/sharding-proxy-transport/sharding-proxy-transport-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/transport/postgresql/packet/command/query/text/PostgreSQLDataRowPacket.java
+++ b/sharding-proxy/sharding-proxy-transport/sharding-proxy-transport-postgresql/src/main/java/org/apache/shardingsphere/shardingproxy/transport/postgresql/packet/command/query/text/PostgreSQLDataRowPacket.java
@@ -50,7 +50,7 @@ public final class PostgreSQLDataRowPacket implements PostgreSQLPacket {
                     payload.writeBytes((byte[]) each);
                 } else {
                     String columnData = each.toString();
-                    payload.writeInt4(columnData.length());
+                    payload.writeInt4(columnData.getBytes().length);
                     payload.writeStringEOF(columnData);
                 }
             }
Repository: apache/shardingsphere
Issue: The problem that the value of the bit type cannot be returned correctly

I used shardingproxy to do the sharding, but there is a field of bit type. The value stored in this field is 1 regardless of the number of questions. Please ask how to solve this problem. Thank you.

Changed files:
sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtil.java
sharding-core/sharding-core-execute/src/test/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtilTest.java

diff --git a/sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtil.java b/sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtil.java
index e41c8c2a35b..82bbd806543 100644
--- a/sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtil.java
+++ b/sharding-core/sharding-core-execute/src/main/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtil.java
@@ -54,6 +54,7 @@ public class QueryResultUtil {
         ResultSetMetaData metaData = resultSet.getMetaData();
         switch (metaData.getColumnType(columnIndex)) {
             case Types.BIT:
+                return resultSet.getBytes(columnIndex);
             case Types.BOOLEAN:
                 return resultSet.getBoolean(columnIndex);
             case Types.TINYINT:
diff --git a/sharding-core/sharding-core-execute/src/test/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtilTest.java b/sharding-core/sharding-core-execute/src/test/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtilTest.java
index 89531decbcc..7d5fc308701 100644
--- a/sharding-core/sharding-core-execute/src/test/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtilTest.java
+++ b/sharding-core/sharding-core-execute/src/test/java/org/apache/shardingsphere/core/execute/sql/execute/result/QueryResultUtilTest.java
@@ -61,8 +61,9 @@ public class QueryResultUtilTest {
     @SneakyThrows
     public void assertGetValueByBit() {
         when(resultSetMetaData.getColumnType(1)).thenReturn(Types.BIT);
-        when(resultSet.getBoolean(1)).thenReturn(true);
-        assertTrue((boolean) QueryResultUtil.getValue(resultSet, 1));
+        byte[] bytes = {1};
+        when(resultSet.getBytes(1)).thenReturn(bytes);
+        assertThat((byte[]) QueryResultUtil.getValue(resultSet, 1), is(bytes));
     }
     
     @Test
Repository: apache/shardingsphere
Issue: The SQL of `insert set` can not run well when sharding

## Bug Report

**For English only**, other languages will not accept.

Before report a bug, make sure you have:

- Searched open and closed [GitHub issues](https://github.com/sharding-sphere/sharding-sphere/issues).
- Read documentation: [ShardingSphere Doc](http://shardingsphere.io/document/current/en/overview/).

Please pay attention on issues you submitted, because we maybe need more details. 
If no response **more than 7 days** and we cannot reproduce it on current information, we will **close it**.

Please answer these questions before submitting your issue. Thanks!

### Which version of ShardingSphere did you use?
4.0.0-RC1
### Which project did you use? Sharding-JDBC or Sharding-Proxy?
Sharding-JDBC
### Expected behavior
`insert into t_order set order_id =1, user_id =1; ` can run well.
### Actual behavior
throw exception:
> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'org.apache.shardingsphere.core.rewrite.placeholder.InsertSetPlaceholder@2f60192a'

### Reason analyze (If you can)
SQLBuilder does not handle `InsertSetPlaceholder`.
### Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.

### Example codes for reproduce this issue (such as a github link).


Changed files:
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLBuilder.java

diff --git a/sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLBuilder.java b/sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLBuilder.java
index 468b450962a..221a2cbf223 100644
--- a/sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLBuilder.java
+++ b/sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/SQLBuilder.java
@@ -114,6 +114,8 @@ public final class SQLBuilder {
                 appendIndexPlaceholder((IndexPlaceholder) each, actualTableName, result);
             } else if (each instanceof InsertValuesPlaceholder) {
                 appendInsertValuesPlaceholder(tableUnit, (InsertValuesPlaceholder) each, insertParameters, result);
+            } else if (each instanceof InsertSetPlaceholder) {
+                appendInsertSetPlaceholder(tableUnit, (InsertSetPlaceholder) each, insertParameters, result);
             } else {
                 result.append(each);
             }