org.mariadb.jdbc.message.client.QueryPacket Maven / Gradle / Ivy
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.message.client;
import java.io.IOException;
import java.io.InputStream;
import org.mariadb.jdbc.client.Context;
import org.mariadb.jdbc.client.socket.Writer;
import org.mariadb.jdbc.message.ClientMessage;
/** Query client packet COM_QUERY see https://mariadb.com/kb/en/com_query/ */
public final class QueryPacket implements RedoableClientMessage {
private final String sql;
private final InputStream localInfileInputStream;
/**
* Constructor
*
* @param sql sql command
*/
public QueryPacket(String sql) {
this.sql = sql;
this.localInfileInputStream = null;
}
/**
* Constructor with local infile input stream
*
* @param sql sql
* @param localInfileInputStream local infile input stream
*/
public QueryPacket(String sql, InputStream localInfileInputStream) {
this.sql = sql;
this.localInfileInputStream = localInfileInputStream;
}
public int batchUpdateLength() {
return 1;
}
@Override
public int encode(Writer writer, Context context) throws IOException {
writer.initPacket();
writer.writeByte(0x03);
writer.writeString(this.sql);
writer.flush();
return 1;
}
/**
* Check that command is a COMMIT command
*
* @return true if a commit command
*/
public boolean isCommit() {
return "COMMIT".equalsIgnoreCase(sql);
}
public boolean validateLocalFileName(String fileName, Context context) {
return ClientMessage.validateLocalFileName(sql, null, fileName, context);
}
public InputStream getLocalInfileInputStream() {
return localInfileInputStream;
}
public String description() {
return sql;
}
}