Supported Data Types

Native Support for Arrays and Sets

Vertica-managed tables now support one-dimensional arrays of primitive types. External tables continue to support multi-dimensional arrays. The two types are the same with respect to queries and array functions, but are different types with different OIDs. For more information, see the ARRAY type.

Vertica-managed tables now support sets, which are collections of unique values. For more information, see the SET type.

Several functions that previously operated only on arrays now also operate on sets, and some new functions have been added. For more information, see Collection Functions.

Flexible Complex Types in External Tables

In some cases, the complex types in a Parquet file are structured such that you cannot fully describe their structure in a table definition. For example, a row (struct) can contain other rows but not arrays or maps, and an array can contain other arrays but not other types. A deeply-nested set of structs could exceed the nesting limit for an external table.

In other cases, you could fully describe the structure in a table definition but might prefer not to. For example, if the data contains a struct with a very large number of fields, and in your queries you will only read a few of them, you might prefer to not have to enumerate them all individually. And if the data file's schema is still evolving and the type definitions might change, you might prefer not to fully define, and thus have to update, the complete structure.

Flexible complex types allow you to treat a complex type in a Parquet file as unstructured data in an external table. The data is treated like the data in a flex table, and you can use the same mapping functions to extract values from it that are available for flex tables.

For more information, see Using Flexible Complex Types.