<h2 dir="auto">Feature Request</h2>
<p dir="auto">Charset of ShardingSphere Proxy is determined by</p>
<ol dir="auto">
<li>locale of environment</li>
<li>The property <code class="notranslate">file.encoding</code></li>
</ol>
<h3 dir="auto">Is your feature request related to a problem?</h3>
<p dir="auto">If the charset was unset in environment, any non-ASCII characters will always be malformed.</p>
<h3 dir="auto">Describe the feature you would like.</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Parse Charset provides by client in protocol and store in connection scope. <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1038376989" data-permission-text="Title is private" data-url="https://github.com/apache/shardingsphere/issues/13332" data-hovercard-type="pull_request" data-hovercard-url="/apache/shardingsphere/pull/13332/hovercard" href="https://github.com/apache/shardingsphere/pull/13332">#13332</a></li>
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> Intercept SQL like <code class="notranslate">set names utf8</code> or <code class="notranslate">set client_encoding to 'UTF8'</code> and set the charset to current channel attribute. Duplicated with <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="989155171" data-permission-text="Title is private" data-url="https://github.com/apache/shardingsphere/issues/12245" data-hovercard-type="issue" data-hovercard-url="/apache/shardingsphere/issues/12245/hovercard" href="https://github.com/apache/shardingsphere/issues/12245">#12245</a></li>
</ul>
<p dir="auto">I have a table with no sharding configuration, if I try to ask a page request with certain offset (not zero), it will always return the first page.</p>
<p dir="auto">I took a look at class DQLMergeEngine, and found that some weird code below.<br>
<code class="notranslate">@Override public MergedResult merge() throws SQLException { if (1 == queryResults.size()) { return new IteratorStreamMergedResult(queryResults); } selectStatement.setIndexForItems(columnLabelIndexMap); return decorate(build()); }</code></p>
<p dir="auto">it will always return IteratorStreamMergedResult instance even it's a select request with limit.</p>
<p dir="auto">It's working at 3.0.0 with different logic, please take a look.</p>