Skip to content

Commit

Permalink
Fix merge issues
Browse files Browse the repository at this point in the history
  • Loading branch information
dreab8 committed Apr 17, 2020
1 parent 7ced01d commit 32e4a16
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
Expand Up @@ -158,7 +158,7 @@ public String getDriverClassName(String jdbcUrl) {
HANA {
@Override
public Dialect createDialect(DialectResolutionInfo info) {
return new HANAColumnStoreDialect();
return new HANAColumnStoreDialect(info);
}
@Override
public boolean productNameMatches(String databaseName) {
Expand Down
Expand Up @@ -23,7 +23,10 @@
* Column tables are created by this dialect when using the auto-ddl feature.
*
* @author <a href="mailto:jonathan.bregler@sap.com">Jonathan Bregler</a>
*
* @deprecated use HANAColumnStoreDialect(400)
*/
@Deprecated
public class HANACloudColumnStoreDialect extends AbstractHANADialect {

public HANACloudColumnStoreDialect() {
Expand Down
Expand Up @@ -6,6 +6,9 @@
*/
package org.hibernate.dialect;

import java.sql.Types;

import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
import org.hibernate.query.spi.QueryEngine;
Expand All @@ -31,11 +34,69 @@
* @author <a href="mailto:jonathan.bregler@sap.com">Jonathan Bregler</a>
*/
public class HANAColumnStoreDialect extends AbstractHANADialect {
private int version;

public int getVersion(){
return version;
}

public HANAColumnStoreDialect(DialectResolutionInfo info) {
this( info.getDatabaseMajorVersion() * 100 + info.getDatabaseMinorVersion() * 10 );
}

public HANAColumnStoreDialect() {
this(300);
}

public HANAColumnStoreDialect(int version) {
super();
this.version = version;
if ( this.version >= 400 ) {
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();
}
}

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 void initializeFunctionRegistry(QueryEngine queryEngine) {
super.initializeFunctionRegistry( queryEngine );
Expand Down Expand Up @@ -78,11 +139,25 @@ protected String getTruncateIdTableCommand() {

@Override
protected boolean supportsAsciiStringTypes() {
if ( version >= 400 ) {
return false;
}
return true;
}

@Override
protected Boolean useUnicodeStringTypesDefault() {
if ( version >= 400 ) {
return Boolean.TRUE;
}
return Boolean.FALSE;
}

@Override
public boolean isUseUnicodeStringTypes() {
if ( version >= 400 ) {
return true;
}
return super.isUseUnicodeStringTypes();
}
}

0 comments on commit 32e4a16

Please sign in to comment.