/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.ambari.server.orm.helpers.dbms; import org.apache.ambari.server.orm.DBAccessor; import org.eclipse.persistence.platform.database.DatabasePlatform; public class H2Helper extends GenericDbmsHelper { public H2Helper(DatabasePlatform databasePlatform) { super(databasePlatform); } @Override public boolean supportsColumnTypeChange() { return false; //type change is dramatically limited to varchar length increase only, almost useless } //+ @Override public String getRenameColumnStatement(String tableName, String oldName, DBAccessor.DBColumnInfo columnInfo) { StringBuilder builder = new StringBuilder(); builder.append("ALTER TABLE ").append(tableName).append(" ALTER COLUMN ").append(oldName); builder.append(" RENAME TO ").append(columnInfo.getName()); return builder.toString(); } @Override public StringBuilder writeColumnModifyString(StringBuilder builder, DBAccessor.DBColumnInfo columnInfo) { builder.append(" ALTER COLUMN ").append(columnInfo.getName()) .append(" SET DATA TYPE "); writeColumnType(builder, columnInfo); return builder; } //+ @Override public StringBuilder writeSetNullableString(StringBuilder builder, String tableName, DBAccessor.DBColumnInfo columnInfo, boolean nullable) { builder.append(" ALTER COLUMN ").append(columnInfo.getName()).append(" SET"); String nullStatement = nullable ? " NULL" : " NOT NULL"; builder.append(nullStatement); return builder; } @Override public String writeGetTableConstraints(String databaseName, String tableName){ StringBuilder statement = new StringBuilder() .append("SELECT") .append(" C.CONSTRAINTNAME AS CONSTRAINT_NAME,") .append(" C.TYPE AS CONSTRAINT_TYPE") .append(" FROM SYS.SYSCONSTRAINTS AS C, SYS.SYSTABLES AS T") .append(" WHERE C.TABLEID = T.TABLEID AND T.TABLENAME = '").append(tableName).append("'"); return statement.toString(); } }