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

com.alipay.oceanbase.rpc.stream.ObTableClientQueryStreamResult Maven / Gradle / Ivy

/*-
 * #%L
 * OBKV Table Client Framework
 * %%
 * Copyright (C) 2021 OceanBase
 * %%
 * OBKV Table Client Framework is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * #L%
 */

package com.alipay.oceanbase.rpc.stream;

import com.alipay.oceanbase.rpc.ObTableClient;
import com.alipay.oceanbase.rpc.bolt.transport.ObTableConnection;
import com.alipay.oceanbase.rpc.location.model.partition.ObPair;
import com.alipay.oceanbase.rpc.protocol.payload.ObPayload;
import com.alipay.oceanbase.rpc.protocol.payload.impl.execute.query.AbstractQueryStreamResult;
import com.alipay.oceanbase.rpc.protocol.payload.impl.execute.query.ObTableQueryRequest;
import com.alipay.oceanbase.rpc.protocol.payload.impl.execute.query.ObTableQueryResult;
import com.alipay.oceanbase.rpc.protocol.payload.impl.execute.syncquery.ObTableQueryAsyncResult;
import com.alipay.oceanbase.rpc.table.ObTableParam;
import com.alipay.oceanbase.rpc.util.TableClientLoggerFactory;
import org.slf4j.Logger;

import java.util.concurrent.atomic.AtomicReference;

public class ObTableClientQueryStreamResult extends AbstractQueryStreamResult {

    private static final Logger logger = TableClientLoggerFactory
                                           .getLogger(ObTableClientQueryStreamResult.class);
    protected ObTableClient     client;

    protected ObTableQueryResult referToNewPartition(ObPair partIdWithObTable)
                                                                                                  throws Exception {
        ObTableQueryRequest request = new ObTableQueryRequest();
        request.setTableName(tableName);
        request.setTableQuery(tableQuery);
        request.setPartitionId(partIdWithObTable.getRight().getPartitionId());
        request.setTableId(partIdWithObTable.getRight().getTableId());
        request.setEntityType(entityType);
        if (operationTimeout > 0) {
            request.setTimeout(operationTimeout);
        } else {
            request.setTimeout(partIdWithObTable.getRight().getObTable()
                .getObTableOperationTimeout());
        }
        request.setConsistencyLevel(getReadConsistency().toObTableConsistencyLevel());
        return execute(partIdWithObTable, request);
    }

    @Override
    protected ObTableQueryResult execute(ObPair partIdWithIndex,
                                         ObPayload request) throws Exception {
        // Construct connection reference (useless in sync query)
        AtomicReference connectionRef = new AtomicReference<>();

        // execute request
        ObTableQueryResult result = (ObTableQueryResult) commonExecute(this.client, logger,
            partIdWithIndex, request, connectionRef);

        cacheStreamNext(partIdWithIndex, checkObTableQueryResult(result));

        return result;
    }

    @Override
    protected ObTableQueryAsyncResult executeAsync(ObPair partIdWithObTable,
                                                   ObPayload streamRequest) throws Exception {
        throw new IllegalArgumentException("not support this execute");
    }

    /**
     * Get client.
     * @return client
     */
    public ObTableClient getClient() {
        return client;
    }

    /*
     * Set client.
     */
    public void setClient(ObTableClient client) {
        this.client = client;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy