blob: 0674edfb651561378839dc4dd5fb747db30d3779 [file] [log] [blame]
/*
* 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.odbc.jdbc;
import org.apache.ignite.IgniteException;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.internal.binary.BinaryReaderExImpl;
import org.apache.ignite.internal.binary.BinaryWriterExImpl;
import org.apache.ignite.internal.processors.odbc.ClientListenerProtocolVersion;
import org.apache.ignite.internal.processors.odbc.ClientListenerRequestNoId;
/**
* JDBC request.
*/
public class JdbcRequest extends ClientListenerRequestNoId implements JdbcRawBinarylizable {
/** Execute sql query request. */
static final byte QRY_EXEC = 2;
/** Fetch query results request. */
static final byte QRY_FETCH = 3;
/** Close query request. */
static final byte QRY_CLOSE = 4;
/** Get query columns metadata request. */
static final byte QRY_META = 5;
/** Batch queries. */
public static final byte BATCH_EXEC = 6;
/** Get tables metadata request. */
static final byte META_TABLES = 7;
/** Get columns metadata request. */
static final byte META_COLUMNS = 8;
/** Get indexes metadata request. */
static final byte META_INDEXES = 9;
/** Get SQL query parameters metadata request. */
static final byte META_PARAMS = 10;
/** Get primary keys metadata request. */
static final byte META_PRIMARY_KEYS = 11;
/** Get schemas metadata request. */
static final byte META_SCHEMAS = 12;
/** Send a batch of a data from client to server. */
static final byte BULK_LOAD_BATCH = 13;
/** Ordered batch request. */
static final byte BATCH_EXEC_ORDERED = 14;
/** Request type. */
private byte type;
/**
* @param type Command type.
*/
public JdbcRequest(byte type) {
this.type = type;
}
/** {@inheritDoc} */
@Override public void writeBinary(BinaryWriterExImpl writer,
ClientListenerProtocolVersion ver) throws BinaryObjectException {
writer.writeByte(type);
}
/** {@inheritDoc} */
@Override public void readBinary(BinaryReaderExImpl reader,
ClientListenerProtocolVersion ver) throws BinaryObjectException {
// No-op.
}
/**
* @return Request type.
*/
public byte type() {
return type;
}
/**
* @param reader Binary reader.
* @param ver Protocol version.
* @return Request object.
* @throws BinaryObjectException On error.
*/
public static JdbcRequest readRequest(BinaryReaderExImpl reader,
ClientListenerProtocolVersion ver) throws BinaryObjectException {
int reqType = reader.readByte();
JdbcRequest req;
switch(reqType) {
case QRY_EXEC:
req = new JdbcQueryExecuteRequest();
break;
case QRY_FETCH:
req = new JdbcQueryFetchRequest();
break;
case QRY_META:
req = new JdbcQueryMetadataRequest();
break;
case QRY_CLOSE:
req = new JdbcQueryCloseRequest();
break;
case BATCH_EXEC:
req = new JdbcBatchExecuteRequest();
break;
case META_TABLES:
req = new JdbcMetaTablesRequest();
break;
case META_COLUMNS:
req = new JdbcMetaColumnsRequest();
break;
case META_INDEXES:
req = new JdbcMetaIndexesRequest();
break;
case META_PARAMS:
req = new JdbcMetaParamsRequest();
break;
case META_PRIMARY_KEYS:
req = new JdbcMetaPrimaryKeysRequest();
break;
case META_SCHEMAS:
req = new JdbcMetaSchemasRequest();
break;
case BULK_LOAD_BATCH:
req = new JdbcBulkLoadBatchRequest();
break;
case BATCH_EXEC_ORDERED:
req = new JdbcOrderedBatchExecuteRequest();
break;
default:
throw new IgniteException("Unknown SQL listener request ID: [request ID=" + reqType + ']');
}
req.readBinary(reader, ver);
return req;
}
}