response_schema_str field) and then either an Avro binary
encoded response (in the binary_encoded_response field) or an Avro JSON
encoded response (in the json_encoded_response field).
For dynamic schema responses, the response always consists of a series of
arrays of various types, corresponding to the columns being returned. These
arrays are labeled column_1, column_2, etc. In addition there is a
string array column named column_headers containing the names or aliases of
the returned columns. The first name in column_headers corresponds to
column_1, the second to column_2 and so on. Lastly, there is a string
array column named column_datatypes containing the data types of the
returned columns. These correspond to the returned data columns in the same way
column_headers do.
Dynamic Schemas in Python
As an example, using Python, consider doing an aggregate_groupby on a string column nameddept_name, computing the max of a integer column
named sal:
Python API Request
retobj['response_schema_str'] will look like:
Dynamic Schema Response Structure
retobj['json_encoded_response'], will look
like:
Dynamic Schema Response Data
gpudb.parse_dynamic_response(retobj)['response'] function, resulting in
this:
Dynamic Schema Response Data Translated
Dynamic Schemas in Java
Dynamic schemas are simpler to handle in Java. TheRecord, Type, and
Column classes take care of the lower level details and provide a simple way
to access the data. Once the records are returned by your query, you can get
the type of the record and all the column details from the type. Below is an
example of a query, iterating through the records, and iterating through each
column in each record.
Java API Request