Problem description
A SelectObject request fails when the Expression element in the <SelectRequest> XML body is empty. Expression is a required field — the request is rejected without a valid value.
Causes
The Expression element in the <SelectRequest> XML body was left blank.
Examples
The following request triggers this error because <Expression> has no value:
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Authorization: OSS qn6q**************:77Dv****************
Range: bytes=1024-2048
Host: host name
<?xml version="1.0"?>
<SelectRequest>
<Expression></Expression>
<InputSerialization>
......
</InputSerialization>
<OutputSerialization>
......
</OutputSerialization>
</SelectRequest>Solutions
Set Expression to the Base64-encoded value of your SQL query.
For example, the SQL statement select count(*) from ossobject where _4 > 45 encodes to c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=.
The following is a corrected request:
POST /oss-select/bigcsv_normal.csv?x-oss-process=csv%2Fselect HTTP/1.1
Date: Fri, 25 May 2018 22:11:39 GMT
Content-Type:
Authorization: OSS qn6q**************:77Dv****************
User-Agent: aliyun-sdk-dotnet/2.8.0.0(windows 16.7/16.7.0.0/x86;4.0.30319.42000)
Content-Length: 748
Expect: 100-continue
Connection: keep-alive
Host: host name
<?xml version="1.0"?>
<SelectRequest>
<!-- SQL: select count(*) from ossobject where _4 > 45 -->
<Expression>c2VsZWN0IGNvdW50KCopIGZyb20gb3Nzb2JqZWN0IHdoZXJlIF80ID4gNDU=
</Expression>
<InputSerialization>
<Compression>None</Compression>
<CSV>
<FileHeaderInfo>Ignore</FileHeaderInfo>
<RecordDelimiter>Cg==</RecordDelimiter>
<FieldDelimiter>LA==</FieldDelimiter>
<QuoteCharacter>Ig==</QuoteCharacter>
<CommentCharacter>Iw==</CommentCharacter/>
</CSV>
</InputSerialization>
<OutputSerialization>
<CSV>
<RecordDelimiter>Cg==</RecordDelimiter>
<FieldDelimiter>LA==</FieldDelimiter>
<QuoteCharacter>Ig==</QuoteCharacter>
</CSV>
<KeepAllColumns>false</KeepAllColumns>
<OutputRawData>false</OutputRawData>
</OutputSerialization>
</SelectRequest>