All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.dialect.HANACloudColumnStoreDialect Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha1
Show newest version
/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or .
 */
package org.hibernate.dialect;

import java.sql.Types;

import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.hql.spi.id.IdTableSupportStandardImpl;
import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy;
import org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy;
import org.hibernate.hql.spi.id.local.AfterUseAction;
import org.hibernate.type.StandardBasicTypes;

/**
 * An SQL dialect for the SAP HANA Cloud column store.
 * 

* For more information on interacting with the SAP HANA Cloud database, refer to the * SAP HANA Cloud SQL Reference Guide * and the SAP * HANA Client Interface Programming Reference. *

* Column tables are created by this dialect when using the auto-ddl feature. * * @author Jonathan Bregler */ public class HANACloudColumnStoreDialect extends AbstractHANADialect { public HANACloudColumnStoreDialect() { super(); registerColumnType( Types.CHAR, "nvarchar(1)" ); registerColumnType( Types.VARCHAR, 5000, "nvarchar($l)" ); registerColumnType( Types.LONGVARCHAR, 5000, "nvarchar($l)" ); // for longer values map to clob/nclob registerColumnType( Types.LONGVARCHAR, "nclob" ); registerColumnType( Types.VARCHAR, "nclob" ); registerColumnType( Types.CLOB, "nclob" ); registerHibernateType( Types.CLOB, StandardBasicTypes.MATERIALIZED_NCLOB.getName() ); registerHibernateType( Types.NCHAR, StandardBasicTypes.NSTRING.getName() ); registerHibernateType( Types.CHAR, StandardBasicTypes.CHARACTER.getName() ); registerHibernateType( Types.CHAR, 1, StandardBasicTypes.CHARACTER.getName() ); registerHibernateType( Types.CHAR, 5000, StandardBasicTypes.NSTRING.getName() ); registerHibernateType( Types.VARCHAR, StandardBasicTypes.NSTRING.getName() ); registerHibernateType( Types.LONGVARCHAR, StandardBasicTypes.NTEXT.getName() ); // register additional keywords registerHanaCloudKeywords(); // full-text search functions registerFunction( "score", new StandardSQLFunction( "score", StandardBasicTypes.DOUBLE ) ); registerFunction( "contains", new VarArgsSQLFunction( StandardBasicTypes.BOOLEAN, "contains(", ",", ") /*" ) ); registerFunction( "contains_rhs", new SQLFunctionTemplate( StandardBasicTypes.BOOLEAN, "*/" ) ); registerFunction( "not_contains", new VarArgsSQLFunction( StandardBasicTypes.BOOLEAN, "not contains(", ",", ") /*" ) ); } private void registerHanaCloudKeywords() { registerKeyword( "array" ); registerKeyword( "at" ); registerKeyword( "authorization" ); registerKeyword( "between" ); registerKeyword( "by" ); registerKeyword( "collate" ); registerKeyword( "empty" ); registerKeyword( "filter" ); registerKeyword( "grouping" ); registerKeyword( "no" ); registerKeyword( "not" ); registerKeyword( "of" ); registerKeyword( "over" ); registerKeyword( "recursive" ); registerKeyword( "row" ); registerKeyword( "table" ); registerKeyword( "to" ); registerKeyword( "window" ); registerKeyword( "within" ); } @Override public String getCreateTableString() { return "create column table"; } @Override public MultiTableBulkIdStrategy getDefaultMultiTableBulkIdStrategy() { return new GlobalTemporaryTableBulkIdStrategy( new IdTableSupportStandardImpl() { @Override public String getCreateIdTableCommand() { return "create global temporary column table"; } @Override public String getTruncateIdTableCommand() { return "truncate table"; } @Override public String getCreateIdTableStatementOptions() { return "on commit delete rows"; } }, AfterUseAction.CLEAN ); } @Override protected boolean supportsAsciiStringTypes() { return false; } @Override protected Boolean useUnicodeStringTypesDefault() { return Boolean.TRUE; } @Override public boolean isUseUnicodeStringTypes() { return true; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy