in oss2/xml_utils.py [0:0]
def to_select_json_object(sql, select_params):
root = ElementTree.Element('SelectRequest')
_add_text_child(root, 'Expression', base64.b64encode(str.encode(sql)))
input_ser = ElementTree.SubElement(root, 'InputSerialization')
output_ser = ElementTree.SubElement(root, 'OutputSerialization')
json = ElementTree.SubElement(input_ser, 'JSON')
out_json = ElementTree.SubElement(output_ser, 'JSON')
options = ElementTree.SubElement(root, 'Options')
is_doc = select_params[SelectParameters.Json_Type] == SelectJsonTypes.DOCUMENT
_add_text_child(json, 'Type', select_params[SelectParameters.Json_Type])
for key, value in select_params.items():
if SelectParameters.SplitRange == key and is_doc == False:
_add_text_child(json, 'Range', utils._make_split_range_string(value))
elif SelectParameters.LineRange == key and is_doc == False:
_add_text_child(json, 'Range', utils._make_line_range_string(value))
elif SelectParameters.CompressionType == key:
_add_text_child(input_ser, SelectParameters.CompressionType, value)
elif SelectParameters.OutputRawData == key:
_add_text_child(output_ser, SelectParameters.OutputRawData, str(value))
elif SelectParameters.EnablePayloadCrc == key:
_add_text_child(output_ser, SelectParameters.EnablePayloadCrc, str(value))
elif SelectParameters.OutputRecordDelimiter == key:
_add_text_child(out_json, SelectParameters.RecordDelimiter, base64.b64encode(str.encode(value)))
elif SelectParameters.SkipPartialDataRecord == key:
_add_text_child(options, SelectParameters.SkipPartialDataRecord, str(value))
elif SelectParameters.MaxSkippedRecordsAllowed == key:
_add_text_child(options, SelectParameters.MaxSkippedRecordsAllowed, str(value))
elif SelectParameters.ParseJsonNumberAsString == key:
_add_text_child(json, SelectParameters.ParseJsonNumberAsString, str(value))
else:
if key != SelectParameters.Json_Type:
raise SelectOperationClientError("The select_params contains unsupported key " + key, "")
return _node_to_string(root)