/* * 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.ignite.internal.processors.query.h2.opt; import java.util.ArrayList; import org.h2.engine.Database; import org.h2.engine.DbObject; import org.h2.engine.Session; import org.h2.index.BaseIndex; import org.h2.index.Cursor; import org.h2.index.IndexLookupBatch; import org.h2.index.IndexType; import org.h2.message.DbException; import org.h2.result.Row; import org.h2.result.SearchRow; import org.h2.schema.Schema; import org.h2.table.Column; import org.h2.table.IndexColumn; import org.h2.table.Table; import org.h2.table.TableFilter; /** * Scan index base class. */ public abstract class GridH2ScanIndex<D extends BaseIndex> extends BaseIndex { /** */ private static final IndexType TYPE = IndexType.createScan(false); /** */ private final D delegate; /** * @param delegate Delegate. */ public GridH2ScanIndex(D delegate) { this.delegate = delegate; } /** * @return Delegate. */ protected D delegate() { return delegate; } /** {@inheritDoc} */ @Override public long getDiskSpaceUsed() { return 0; } /** {@inheritDoc} */ @Override public void add(Session ses, Row row) { delegate().add(ses, row); } /** {@inheritDoc} */ @Override public boolean canFindNext() { return false; } /** {@inheritDoc} */ @Override public boolean canGetFirstOrLast() { return false; } /** {@inheritDoc} */ @Override public boolean canScan() { return delegate().canScan(); } /** {@inheritDoc} */ @Override public final void close(Session ses) { // No-op. } /** {@inheritDoc} */ @Override public void commit(int operation, Row row) { // No-op. } /** {@inheritDoc} */ @Override public int compareRows(SearchRow rowData, SearchRow compare) { return delegate().compareRows(rowData, compare); } /** {@inheritDoc} */ @Override public Cursor find(TableFilter filter, SearchRow first, SearchRow last) { return find(filter.getSession(), first, last); } /** {@inheritDoc} */ @Override public Cursor find(Session ses, SearchRow first, SearchRow last) { return delegate().find(ses, null, null); } /** {@inheritDoc} */ @Override public Cursor findFirstOrLast(Session ses, boolean first) { throw DbException.getUnsupportedException("SCAN"); } /** {@inheritDoc} */ @Override public Cursor findNext(Session ses, SearchRow higherThan, SearchRow last) { throw DbException.throwInternalError(); } /** {@inheritDoc} */ @Override public int getColumnIndex(Column col) { return -1; } /** {@inheritDoc} */ @Override public Column[] getColumns() { return delegate().getColumns(); } /** {@inheritDoc} */ @Override public IndexColumn[] getIndexColumns() { return delegate().getIndexColumns(); } /** {@inheritDoc} */ @Override public IndexType getIndexType() { return TYPE; } /** {@inheritDoc} */ @Override public Row getRow(Session ses, long key) { return delegate().getRow(ses, key); } /** {@inheritDoc} */ @Override public long getRowCount(Session ses) { return delegate().getRowCount(ses); } /** {@inheritDoc} */ @Override public long getRowCountApproximation() { return delegate().getRowCountApproximation(); } /** {@inheritDoc} */ @Override public Table getTable() { return delegate().getTable(); } /** {@inheritDoc} */ @Override public boolean isRowIdIndex() { return delegate().isRowIdIndex(); } /** {@inheritDoc} */ @Override public boolean needRebuild() { return false; } /** {@inheritDoc} */ @Override public void remove(Session ses) { // No-op. } /** {@inheritDoc} */ @Override public void remove(Session ses, Row row) { // No-op. } /** {@inheritDoc} */ @Override public void setSortedInsertMode(boolean sortedInsertMode) { // No-op. } /** {@inheritDoc} */ @Override public IndexLookupBatch createLookupBatch(TableFilter[] filters, int filter) { return delegate().createLookupBatch(filters, filter); } /** {@inheritDoc} */ @Override public void truncate(Session ses) { // No-op. } /** {@inheritDoc} */ @Override public Schema getSchema() { return delegate().getSchema(); } /** {@inheritDoc} */ @Override public boolean isHidden() { return delegate().isHidden(); } /** {@inheritDoc} */ @Override public void checkRename() { throw DbException.getUnsupportedException("rename"); } /** {@inheritDoc} */ @Override public ArrayList<DbObject> getChildren() { return delegate().getChildren(); } /** {@inheritDoc} */ @Override public String getComment() { return delegate().getComment(); } /** {@inheritDoc} */ @Override public String getCreateSQL() { return null; // Scan should return null. } /** {@inheritDoc} */ @Override public String getCreateSQLForCopy(Table tbl, String quotedName) { return delegate().getCreateSQLForCopy(tbl, quotedName); } /** {@inheritDoc} */ @Override public Database getDatabase() { return delegate().getDatabase(); } /** {@inheritDoc} */ @Override public String getDropSQL() { return delegate().getDropSQL(); } /** {@inheritDoc} */ @Override public int getId() { return delegate().getId(); } /** {@inheritDoc} */ @Override public String getSQL() { return delegate().getSQL(); } /** {@inheritDoc} */ @Override public int getType() { return delegate().getType(); } /** {@inheritDoc} */ @Override public boolean isTemporary() { return delegate().isTemporary(); } /** {@inheritDoc} */ @Override public void removeChildrenAndResources(Session ses) { // No-op. } /** {@inheritDoc} */ @Override public void rename(String newName) { throw DbException.getUnsupportedException("rename"); } /** {@inheritDoc} */ @Override public void setComment(String comment) { throw DbException.getUnsupportedException("comment"); } /** {@inheritDoc} */ @Override public void setTemporary(boolean temporary) { throw DbException.getUnsupportedException("temporary"); } }