<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vertica Documentation – New and changed in Vertica 12.0.0</title>
    <link>/en/new-features/12.0.0/</link>
    <description>Recent content in New and changed in Vertica 12.0.0 on Vertica Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/new-features/12.0.0/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>New-Features: Client connectivity</title>
      <link>/en/new-features/12.0.0/client-connectivity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/client-connectivity/</guid>
      <description>
        
        
        &lt;h2 id=&#34;keepalive-and-heartbeat-protocol-settings&#34;&gt;Keepalive and heartbeat protocol settings&lt;/h2&gt;
&lt;p&gt;These new parameters let you adjust TCP keepalive and heartbeat protocol settings at the database and session levels.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;KeepAliveIdleTime: The time, in seconds, before the first TCP keepalive probe is sent to ensure that the client is still connected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;KeepAliveProbeInterval: The time interval, in seconds, between keepalive probes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;KeepAliveProbeCount: The number of consecutive keepalive probes that must be unacknowledged by the client before the client connection is considered lost and closed.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/admin/managing-client-connections/&#34;&gt;Managing client connections&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Client drivers</title>
      <link>/en/new-features/12.0.0/client-drivers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/client-drivers/</guid>
      <description>
        
        
        &lt;h2 id=&#34;nodejs-client-driver&#34;&gt;Node.js client driver&lt;/h2&gt;
&lt;p&gt;The vertica-nodejs client driver is &lt;a href=&#34;https://www.npmjs.com/package/vertica-nodejs&#34;&gt;now available&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;centralized-oauth-configuration&#34;&gt;Centralized OAuth configuration&lt;/h2&gt;
&lt;p&gt;To simplify OAuth configuration, you can now set OAuth parameters with a single &lt;code&gt;JSON&lt;/code&gt; string with the new oauthjsonconfig (&lt;a href=&#34;../../../en/connecting-to/client-libraries/client-drivers/install-config/odbc/creating-an-odbc-data-source-name-dsn/odbc-dsn-connection-properties/&#34;&gt;ODBC&lt;/a&gt;) and OAuthJsonConfig (&lt;a href=&#34;../../../en/connecting-to/client-libraries/accessing/java/creating-and-configuring-connection/jdbc-connection-properties/&#34;&gt;JDBC&lt;/a&gt;) parameters.&lt;/p&gt;
&lt;p&gt;To preserve existing configurations, the old parameters take precedence over the new &lt;code&gt;JSON&lt;/code&gt; parameter, but the new JSON parameter is the recommended configuration method, and the old parameters have been &lt;a href=&#34;../../../en/new-features/deprecated-and-removed-functionality/&#34;&gt;deprecated&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;jdbc-datasource-user-property&#34;&gt;JDBC DataSource user property&lt;/h2&gt;
&lt;p&gt;You can now get and set the &lt;code&gt;user&lt;/code&gt; property of DataSource with &lt;code&gt;getUser()&lt;/code&gt; and &lt;code&gt;setUser()&lt;/code&gt;, respectively. For details, see 
JDBC API.&lt;/p&gt;
&lt;h2 id=&#34;odbc-client-driver-enhancements&#34;&gt;ODBC client driver enhancements&lt;/h2&gt;
&lt;p&gt;A number of enhancements have been made to the ODBC client driver to better conform to the ODBC specification. These changes may cause regressions in existing ODBC client programs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If an application calls &lt;code&gt;SQLSetDescField&lt;/code&gt; to set any field other than the following, the record becomes unbound:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SET_DESC_COUNT&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href=&#34;https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/deferred-fields?view=sql-server-ver16&#34;&gt;deferred fields&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SQL_DESC_DATA_PTR&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SQL_DESC_INDICATOR_PTR&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SQL_DESC_OCTET_LENGTH_PTR&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;SQLSetDescField&lt;/code&gt; must be called in the sequence order specified in the &lt;a href=&#34;https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlsetdescfield-function?view=sql-server-ver15#sequence-of-setting-descriptor-fields&#34;&gt;Microsoft documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If an application wants to set the precision or scale field for a numeric or date type, it must use &lt;code&gt;SQLSetDescField&lt;/code&gt; to explicitly set those fields rather than relying on &lt;code&gt;SQLBindParameter&lt;/code&gt;. For details, see the &lt;a href=&#34;https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlbindparameter-function?view=sql-server-ver15&#34;&gt;Microsoft documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If an application calls &lt;code&gt;SQLGetData&lt;/code&gt;, the &lt;code&gt;StrLen_or_IndPtr&lt;/code&gt; can return the actual length of the data available, &lt;code&gt;SQL_NO_TOTAL&lt;/code&gt;, or &lt;code&gt;SQL_NULL_DATA&lt;/code&gt;. If the data is truncated, Vertica returns &lt;code&gt;SQL_NO_TOTAL&lt;/code&gt;. When checking the length of the available buffer, you must consider all cases, including &lt;code&gt;SQL_NO_TOTAL&lt;/code&gt; and &lt;code&gt;SQL_NULL_DATA&lt;/code&gt;. For details, see the Microsoft documentation on &lt;a href=&#34;https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/sqlgetdata-function?view=sql-server-ver15&#34;&gt;&lt;code&gt;SQLGetData&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/getting-long-data?view=sql-server-ver15&#34;&gt;Getting Long Data&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If an application calls &lt;code&gt;SQLExecute&lt;/code&gt;, the response will always attempt to set the &lt;code&gt;SQLSTATE&lt;/code&gt;, including the status and other metadata.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Many exception messages have been improved with more detailed error information.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;jdbc-callablestatement&#34;&gt;JDBC: CallableStatement&lt;/h2&gt;
&lt;p&gt;The Vertica JDBC client driver now supports &lt;a href=&#34;../../../en/extending/stored-procedures/&#34;&gt;stored procedures&lt;/a&gt; through &lt;a href=&#34;https://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html&#34;&gt;CallableStatement&lt;/a&gt;. For details, see &lt;a href=&#34;../../../en/connecting-to/client-libraries/accessing/java/executing-queries-through-jdbc/&#34;&gt;Executing queries through JDBC&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Containers and Kubernetes</title>
      <link>/en/new-features/12.0.0/containers-and-k8s/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/containers-and-k8s/</guid>
      <description>
        
        
        &lt;h2 id=&#34;spread-encryption-on-vertica-database&#34;&gt;Spread encryption on Vertica database&lt;/h2&gt;
&lt;p&gt;You can enable Spread encryption on the Vertica database. Use the &lt;code&gt;encryptSpreadComm&lt;/code&gt; custom resource parameter to set the &lt;a href=&#34;../../../en/sql-reference/config-parameters/security-parameters/&#34;&gt;EncryptSpreadComm&lt;/a&gt; security parameter for the database.&lt;/p&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/containerized/custom-resource-definition-parameters/&#34;&gt;Custom resource definition parameters&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;prometheus-operator-integration&#34;&gt;Prometheus operator integration&lt;/h2&gt;
&lt;p&gt;Vertica on Kubernetes integrates with the Prometheus operator to facilitate adoption in environments that currently use the Prometheus operator.&lt;/p&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/containerized/db-operator/prometheus-integration/&#34;&gt;Prometheus integration&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Database management</title>
      <link>/en/new-features/12.0.0/db-management/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/db-management/</guid>
      <description>
        
        
        &lt;h2 id=&#34;disk-quota-for-schemas-and-tables&#34;&gt;Disk quota for schemas and tables&lt;/h2&gt;
&lt;p&gt;You can set disk quotas for schemas, individual tables, or both. Disk quotas are checked by most user operations that increase storage size. Quotas do not affect recovery, rebalancing, or Tuple Mover operations.&lt;/p&gt;
&lt;p&gt;In Eon Mode, disk usage is an aggregate of all disk space used by all shards for the schema or table. This value is computed for primary subscriptions only. In Enterprise Mode, disk usage is the sum of disk space used by all storage containers on all nodes for the schema or table. This sum excludes buddy projections but includes all other projections.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/disk-quota-usages/&#34;&gt;DISK_QUOTA_USAGES&lt;/a&gt; system table records quotas and current usage for objects that have quotas.&lt;/p&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/admin/working-with-native-tables/disk-quotas/&#34;&gt;Disk quotas&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Diagnostic tools</title>
      <link>/en/new-features/12.0.0/diagnostic-tools/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/diagnostic-tools/</guid>
      <description>
        
        
        &lt;h2 id=&#34;scrutinize&#34;&gt;Scrutinize&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;scrutinize&lt;/code&gt; now collects the full time zone by running the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;timedatectl | grep &amp;#34;Time zone&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output is directed to:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;code-variable&#34;&gt;scrutinize-output-dir&lt;/span&gt;/VerticaScrutinize.&lt;span class=&#34;code-variable&#34;&gt;timestamp&lt;/span&gt;/&lt;span class=&#34;code-variable&#34;&gt;node-name&lt;/span&gt;/context/Commands/timezone
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For example, after running scrutinize:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cat ./VerticaScrutinize.20220513110429/v_vmart_node0001/context/Commands/timezone
       Time zone: America/New_York (EDT, -0400)
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>New-Features: Documentation updates</title>
      <link>/en/new-features/12.0.0/documentation-updates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/documentation-updates/</guid>
      <description>
        
        
        &lt;p&gt;Several organizational changes have been made to make information easier to find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Top-level topics have been re-ordered to place similar information together. The SQL Reference has been moved near the bottom with the other reference documentation. The lists of &lt;a href=&#34;../../../en/sql-reference/config-parameters/&#34;&gt;configuration parameters&lt;/a&gt; have been moved into the SQL Reference.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the SQL Reference, functions and meta-functions have been combined under &lt;a href=&#34;../../../en/sql-reference/functions/&#34;&gt;Functions&lt;/a&gt;, and the alphabetical list includes all of them. (Previously, the alphabetical list included only meta-functions.) Meta-functions are labeled as such on their reference pages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The documentation about client drivers has been refactored.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The information that was in the Concepts Guide has been placed with the other documentation on those topics. For example, the section about projections is now with the other documentation about projections.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Several duplicate topics were removed, and several collections of short related topics have been consolidated.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Eon Mode</title>
      <link>/en/new-features/12.0.0/eon/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/eon/</guid>
      <description>
        
        
        &lt;h2 id=&#34;re-shard-an-eon-mode-database&#34;&gt;Re-shard an Eon Mode database&lt;/h2&gt;
&lt;p&gt;The new &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/eon-functions/reshard-db/&#34;&gt;RESHARD_DATABASE&lt;/a&gt; function allows you to change the number of shards in an Eon Mode database. Previously, the shard count was set during database creation and could not be altered.&lt;/p&gt;
&lt;p&gt;For more information about re-sharding, see &lt;a href=&#34;../../../en/eon/scaling-your-eon-db/change-number-of-shards-db/&#34;&gt;Change the number of shards in the database&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;graceful-shutdown&#34;&gt;Graceful shutdown&lt;/h2&gt;
&lt;p&gt;If you want to drain a subcluster&#39;s client connections before shutting it down, you can now gracefully shut down subclusters using &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/eon-functions/shutdown-with-drain/&#34;&gt;SHUTDOWN_WITH_DRAIN&lt;/a&gt;. The function allows existing connections on the subcluster to continue their work until either all connections close or a user-specified timeout is reached. When one of these conditions is met, the function proceeds to shut down the subcluster.&lt;/p&gt;
&lt;p&gt;For more information about the graceful shutdown process, see &lt;a href=&#34;../../../en/eon/managing-subclusters/starting-and-stopping-subclusters/#Graceful_Shutdown&#34;&gt;Graceful Shutdown&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Loading data</title>
      <link>/en/new-features/12.0.0/loading-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/loading-data/</guid>
      <description>
        
        
        &lt;h2 id=&#34;partitioned-file-paths&#34;&gt;Partitioned file paths&lt;/h2&gt;
&lt;p&gt;Data files are sometimes partitioned in the file system using the directory structure. Partitioning moves values out of the raw data, where they have to be included for each row, and into the directory structure, saving disk space. Partitioning can also improve query performance by allowing entire directories to be skipped.&lt;/p&gt;
&lt;p&gt;Previously, only the Parquet and ORC parsers could take advantage of partitioned file paths. Now COPY supports partitioned file paths for all parsers using the new PARTITION COLUMNS option. The &lt;code&gt;hive_partition_cols&lt;/code&gt; parameter for the Parquet and ORC parsers is deprecated.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;hive_partition_cols&lt;/code&gt; parameter has the following behavior changes from previous releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Nested partition directories must appear in consistent order in the file system. The following path pattern is invalid:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/data/created=2022-01-01/region=north
/data/region=south/created=2022-01-02
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the column value cannot be parsed from the directory name, COPY rejects the path instead of treating the value as null.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the path is missing a declared partition column, COPY always returns an error. Previously, if &lt;code&gt;do_soft_schema_match_by_name&lt;/code&gt; was true in the Parquet parser, the parser filled the column with nulls.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Partition columns are no longer required to be the last columns in the table definition.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href=&#34;../../../en/data-load/working-with-external-data/partitioned-file-paths/&#34;&gt;Partitioned file paths&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Machine learning</title>
      <link>/en/new-features/12.0.0/ml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/ml/</guid>
      <description>
        
        
        &lt;h2 id=&#34;isolation-forest&#34;&gt;Isolation forest&lt;/h2&gt;
&lt;p&gt;Vertica now supports the isolation forest (iForest) algorithm. iForest is an unsupervised outlier detection algorithm that you can use for applications such as fraud detection and system health monitoring, or for removing outliers from your data. You can use the &lt;a href=&#34;../../../en/sql-reference/functions/ml-functions/data-preparation/iforest/&#34;&gt;IFOREST&lt;/a&gt; function to train an iForest model and the &lt;a href=&#34;../../../en/sql-reference/functions/ml-functions/transformation-functions/apply-iforest/&#34;&gt;APPLY_IFOREST&lt;/a&gt; function to apply the model to an input relation.&lt;/p&gt;
&lt;p&gt;For an extended discussion on the iForest algorithm, see &lt;a href=&#34;../../../en/data-analysis/ml-predictive-analytics/data-preparation/detect-outliers/#iForest&#34;&gt;Isolation Forest&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;option-to-build-linear_reg-and-logistic_reg-models-without-calculating-intercept&#34;&gt;Option to build LINEAR_REG and LOGISTIC_REG models without calculating intercept&lt;/h2&gt;
&lt;p&gt;You now have the option of training linear and logistic regression models without calculating an intercept. See &lt;a href=&#34;../../../en/sql-reference/functions/ml-functions/ml-algorithms/linear-reg/&#34;&gt;LINEAR_REG&lt;/a&gt; and &lt;a href=&#34;../../../en/sql-reference/functions/ml-functions/ml-algorithms/logistic-reg/&#34;&gt;LOGISTIC_REG&lt;/a&gt; for details.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Management Console</title>
      <link>/en/new-features/12.0.0/mc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/mc/</guid>
      <description>
        
        
        &lt;h2 id=&#34;edit-custom-alerts&#34;&gt;Edit custom alerts&lt;/h2&gt;
&lt;p&gt;You can edit the following properties of an existing custom alert:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Alert Name&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQL Query&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Variable values&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/mc/monitoring-using-mc/monitoring-db-messages-and-alerts-mc/custom-alerts/&#34;&gt;Custom alerts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;revive-an-eon-mode-database-on-microsoft-azure&#34;&gt;Revive an Eon Mode database on Microsoft Azure&lt;/h2&gt;
&lt;p&gt;Management Console supports &lt;a href=&#34;../../../en/mc/cloud-platforms/azure-mc/reviving-an-eon-db-on-azure-mc/&#34;&gt;reviving Eon Mode database clusters&lt;/a&gt; on Microsoft Azure.&lt;/p&gt;
&lt;h2 id=&#34;alternate-filesystem-layouts-for-reviving-and-scaling-on-aws&#34;&gt;Alternate filesystem layouts for reviving and scaling on AWS&lt;/h2&gt;
&lt;p&gt;On Amazon Web Services (AWS), you can use alternate filesystem layouts for the depot, temp, and catalog Vertica directories for the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reviving a database&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating a subcluster&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scaling a subcluster&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For details, see &lt;a href=&#34;../../../en/mc/cloud-platforms/aws-mc/&#34;&gt;Amazon Web Services in MC&lt;/a&gt; and &lt;a href=&#34;../../../en/mc/db-management/subclusters-mc/&#34;&gt;Subclusters in MC&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Projections</title>
      <link>/en/new-features/12.0.0/projections/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/projections/</guid>
      <description>
        
        
        &lt;h2 id=&#34;partition-range-support-for-aggregate-projections&#34;&gt;Partition range support for aggregate projections&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;../../../en/admin/projections/partition-range-projections/&#34;&gt;Partition Ranges&lt;/a&gt; can now be specified for live aggregate and top-K projections.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: SDK updates</title>
      <link>/en/new-features/12.0.0/sdk-updates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/sdk-updates/</guid>
      <description>
        
        
        &lt;h2 id=&#34;polymorphic-aggregate-functions&#34;&gt;Polymorphic aggregate functions&lt;/h2&gt;
&lt;p&gt;User-defined aggregate functions (UDAFs) can now be polymorphic. A polymorphic function can accept any number and type of arguments. For information on how to write a polymorphic function, see &lt;a href=&#34;../../../en/extending/developing-udxs/arguments-and-return-values/creating-polymorphic-udx/&#34;&gt;Creating a polymorphic UDx&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;complex-types-in-the-python-sdk&#34;&gt;Complex types in the Python SDK&lt;/h2&gt;
&lt;p&gt;You can now read and write complex types in user-defined extensions written in Python. The complex types support includes arrays, rows, and combinations of both. For details, see &lt;a href=&#34;../../../en/extending/developing-udxs/arguments-and-return-values/&#34;&gt;Arguments and return values&lt;/a&gt;. For examples of a Python UDx utilizing complex types, see &lt;a href=&#34;../../../en/extending/developing-udxs/scalar-functions-udsfs/python-example-matrix-multiplication/&#34;&gt;Python example: matrix multiplication&lt;/a&gt; and &lt;a href=&#34;../../../en/extending/developing-udxs/user-defined-load-udl/user-defined-parser/python-example-complex-types-json-parser/&#34;&gt;Python example: complex types JSON parser&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Security and authentication</title>
      <link>/en/new-features/12.0.0/security-and-authentication/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/security-and-authentication/</guid>
      <description>
        
        
        &lt;h2 id=&#34;generic-authentication-errors&#34;&gt;Generic authentication errors&lt;/h2&gt;
&lt;p&gt;To improve security, Vertica no longer issues the following error when a user attempts to connect and authenticate:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Invalid username or password
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In addition, Vertica no longer issues method-specific error messages, and all authentication failures will result in the same error message:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;authentication failed for username &amp;#34;&lt;span class=&#34;code-variable&#34;&gt;name&lt;/span&gt;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This change may affect clients that decide to retry connection attempts based on the type of connection error code. One such example is &lt;code&gt;vsql&lt;/code&gt;, which would previously attempt a plaintext connection if TLS failed (and &lt;a href=&#34;../../../en/security-and-authentication/tls-protocol/tls-overview/configuring-client-server-tls/&#34;&gt;TLSMODE&lt;/a&gt; was &lt;code&gt;ENABLE&lt;/code&gt;), but not if &lt;code&gt;vsql&lt;/code&gt; received an error code reporting incorrect user credentials.&lt;/p&gt;
&lt;p&gt;Because the new, generic message and error code does not specify the cause for the failure, &lt;code&gt;vsql&lt;/code&gt; cannot distinguish between a authentication error as a result of an invalid TLS configuration or invalid user credentials, and it will attempt to establish a plaintext connection in both cases.&lt;/p&gt;
&lt;h2 id=&#34;default-authentication-records&#34;&gt;Default authentication records&lt;/h2&gt;
&lt;p&gt;Vertica now creates three default authentication records and grants them to the &lt;code&gt;public&lt;/code&gt; role. These authentication records have a priority of &lt;code&gt;-1&lt;/code&gt;, so all user-created authentication records take priority over these default records.&lt;/p&gt;
&lt;p&gt;In previous versions of Vertica, if no authentication records were enabled, the following implicit authentication records were applied:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Users without a password were authenticated with the &lt;code&gt;trust&lt;/code&gt; method. This implicit authentication record continues to apply in 12.0.0 for users without a password.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Users with a password were authenticated with the &lt;code&gt;password&lt;/code&gt; method. This implicit authentication record has been removed in favor of the default records.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;fallthrough-authentication&#34;&gt;Fallthrough authentication&lt;/h2&gt;
&lt;p&gt;You can now allow authentication records to fall through to the next record (in order of &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;priority&lt;/a&gt;) upon failure. For details, see &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/&#34;&gt;Fallthrough authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;upgrade-behavior&#34;&gt;Upgrade behavior&lt;/h3&gt;
&lt;p&gt;In previous versions, this fallthrough behavior was only available for &lt;code&gt;ident&lt;/code&gt; (could fall through to any other authentication method) and &lt;code&gt;ldap&lt;/code&gt; (could only fall through to other &lt;code&gt;ldap&lt;/code&gt; methods) authentication methods and this behavior could not be disabled. As of Vertica 12.0.0, this behavior is disabled by default for all new authentication records, including &lt;code&gt;ident&lt;/code&gt; and &lt;code&gt;ldap&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To preserve the behavior of existing databases that depended on &lt;code&gt;ident&lt;/code&gt;&#39;s fallthrough Vertica automatically enables fallthrough for &lt;code&gt;ident&lt;/code&gt; authentication records on upgrade if all of the following are true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The database contains an &lt;code&gt;ident&lt;/code&gt; authentication record.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;code&gt;ident&lt;/code&gt;&lt;/em&gt; authentication record has the highest &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;priority&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The database contains another user-defined authentication record.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Again, in previous versions, &lt;code&gt;ldap&lt;/code&gt; records only fell through to other &lt;code&gt;ldap&lt;/code&gt; records and skipped records that used other methods. This is no longer the case; &lt;code&gt;ldap&lt;/code&gt; records are fallthrough-compatible with &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/fallthrough-authentication/&#34;&gt;many other methods&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Therefore, to replicate old fallthrough behavior for &lt;code&gt;ldap&lt;/code&gt;, your &lt;code&gt;ldap&lt;/code&gt; records must be consecutive (in &lt;a href=&#34;../../../en/security-and-authentication/client-authentication/authentication-record-priority/&#34;&gt;priority order&lt;/a&gt;) to fallthrough to each other.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: SQL functions and statements</title>
      <link>/en/new-features/12.0.0/sql-functions-and-statements/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/sql-functions-and-statements/</guid>
      <description>
        
        
        &lt;h2 id=&#34;infer_table_ddl-supports-json&#34;&gt;INFER_TABLE_DDL supports JSON&lt;/h2&gt;
&lt;p&gt;You can now use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/table-functions/infer-table-ddl/&#34;&gt;INFER_TABLE_DDL&lt;/a&gt; function to produce candidate table definitions from JSON files. Because a JSON file does not have an explicit schema, the function inspects the data itself. Because JSON data can vary from record to record or file to file, the function can return more than one candidate definition. In the following example, differences are highlighted:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT INFER_TABLE_DDL (&amp;#39;/data/*.json&amp;#39;
    USING PARAMETERS table_name=&amp;#39;restaurants&amp;#39;, format=&amp;#39;json&amp;#39;,
max_files=3, max_candidates=3);
WARNING 0:  This generated statement contains one or more float types which might lose precision
WARNING 0:  This generated statement contains one or more varchar/varbinary types which default to length 80

                INFER_TABLE_DDL
------------------------------------------------------------------------
 Candidate matched 1/2 of total files(s):
  create table &amp;#34;restaurants&amp;#34;(
    &amp;#34;cuisine&amp;#34; varchar,
    &amp;#34;location_city&amp;#34; Array[varchar],
    &amp;#34;menu&amp;#34; Array[Row(
      &amp;#34;item&amp;#34; varchar,
      &amp;#34;price&amp;#34; float
    )],
    &amp;#34;name&amp;#34; varchar
  );
Candidate matched 1/2 of total files(s):
  create table &amp;#34;restaurants&amp;#34;(
    &amp;#34;cuisine&amp;#34; varchar,
    &amp;#34;location_city&amp;#34; Array[varchar],
    &amp;#34;menu&amp;#34; Array[Row(
      &amp;#34;items&amp;#34; Array[Row(
        &amp;#34;item&amp;#34; varchar,
        &amp;#34;price&amp;#34; numeric
      )],
      &amp;#34;time&amp;#34; varchar
    )],
    &amp;#34;name&amp;#34; varchar
  );

(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;immutable-tables&#34;&gt;Immutable tables&lt;/h2&gt;
&lt;p&gt;Immutable tables are insert-only tables in which existing data cannot be modified, regardless of user privileges. Updating row values and deleting rows are prohibited. Certain changes to table metadata—for example, renaming tables—are also prohibited, in order to prevent attempts to circumvent these restrictions.&lt;/p&gt;
&lt;p&gt;You set an existing table to be immutable with &lt;a href=&#34;../../../en/sql-reference/statements/alter-statements/alter-table/&#34;&gt;ALTER TABLE&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ALTER TABLE &lt;span class=&#34;code-variable&#34;&gt;table&lt;/span&gt; SET IMMUTABLE ROWS;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For details, see &lt;a href=&#34;../../../en/admin/working-with-native-tables/immutable-tables/&#34;&gt;Immutable tables&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Users and privileges</title>
      <link>/en/new-features/12.0.0/users-and-privileges/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/users-and-privileges/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ldap-link-user-groups-as-default-roles&#34;&gt;LDAP link: user groups as default roles&lt;/h2&gt;
&lt;p&gt;By default, synchronizing LDAP users through the &lt;a href=&#34;../../../en/security-and-authentication/ldap-link-service/&#34;&gt;LDAP Link service&lt;/a&gt; automatically grants roles (derived from their LDAP groups) to the users. However, these are not &lt;a href=&#34;../../../en/admin/db-users-and-privileges/db-roles/enabling-roles-automatically/&#34;&gt;default roles&lt;/a&gt; and therefore must be enabled manually with &lt;a href=&#34;../../../en/sql-reference/statements/set-statements/set-role/&#34;&gt;SET ROLE&lt;/a&gt; before they take effect.&lt;/p&gt;
&lt;p&gt;The new &lt;code&gt;LDAPLinkAddRolesAsDefault&lt;/code&gt; parameter (disabled by default) makes these roles default roles automatically:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; ALTER DATABASE DEFAULT SET LDAPLinkAddRolesAsDefault = 1;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For details on this and other LDAP Link parameters, see &lt;a href=&#34;../../../en/security-and-authentication/ldap-link-service/ldap-link-parameters/&#34;&gt;LDAP link parameters&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>New-Features: Vertica on the cloud</title>
      <link>/en/new-features/12.0.0/on-cloud/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/new-features/12.0.0/on-cloud/</guid>
      <description>
        
        
        &lt;h2 id=&#34;aws-i4i-r6i-and-c6i-instance-types-now-supported&#34;&gt;AWS i4i, r6i, and c6i instance types now supported&lt;/h2&gt;
&lt;p&gt;Vertica now supports three i4i, two r6i, and one c6i EC2 instance types for use in database clusters. See &lt;a href=&#34;../../../en/setup/set-up-on-cloud/on-aws/supported-aws-instance-types/&#34;&gt;Supported AWS instance types&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
