package io.mycat.backend.postgresql.packet;
// Bind (F)
// Byte1('B')
// 标识该信息是一个绑定命令。
//
// Int32
// 以字节记的消息内容的长度,包括长度本身。
//
// String
// 目标入口的名字(空字串则选取未命名的入口)。
//
// String
// 源准备好语句的名字(空字串则选取未命名的准备好语句)。
//
// Int16
//
// 后面跟着的参数格式代码的数目(在下面的 C 中说明)。 这个数值可以是零,表示没有参数,或者是参数都使用缺省格式(文本); 或者是一,这种情况下声明的格式代码应用于所有参数;或者它可以等于实际数目的参数。
//
// Int16[C]
// 参数格式代码。目前每个都必须是零(文本)或者一(二进制)。
//
// Int16
// 后面跟着的参数值的数目(可能为零)。这些必须和查询需要的参数个数匹配。
//
// 然后,每个参数都会出现下面的字段对:
//
// Int32
// 参数值的长度,以字节记(这个长度并不包含长度本身)。可以为零。 一个特殊的情况是,-1 表示一个 NULL 参数值。在 NULL 的情况下, 后面不会跟着数值字节。
//
// Byten
// 参数值,格式是关联的格式代码标明的。n 是上面的长度。
//
// 在最后一个参数之后,出现下面的字段:
//
// Int16
//
// 后面跟着的结果字段格式代码数目(下面的 R 描述)。 这个数目可以是零表示没有结果字段,或者结果字段都使用缺省格式(文本); 或者是一,这种情况下声明格式代码应用于所有结果字段(如果有的话);或者它可以等于查询的结果字段的实际数目。
//
// Int16[R]
// 结果字段格式代码。目前每个必须是零(文本)或者一(二进制)。
public class Bind extends PostgreSQLPacket {
public static class DataParameter {
/**
* 字段值的长度,以字节记(这个长度不包括它自己)。 可以为零。一个特殊的情况是,-1 表示一个 NULL 的字段值。 在 NULL
* 的情况下就没有跟着数据字段。
*/
private int length;
private byte[] data;
private boolean isNull;
/**
* @return the length
*/
public int getLength() {
return length;
}
/**
* @param length the length to set
*/
public void setLength(int length) {
this.length = length;
}
/**
* @return the data
*/
public byte[] getData() {
return data;
}
/**
* @param data the data to set
*/
public void setData(byte[] data) {
this.data = data;
}
/**
* @return the isNull
*/
public boolean isNull() {
return isNull;
}
/**
* @param isNull the isNull to set
*/
public void setNull(boolean isNull) {
this.isNull = isNull;
}
}
private char marker;
private int length;
private String name;
private String sql;
private short parameterProtocolNumber;
private DataProtocol[] parameterProtocol;
private short parameterNumber;
private DataParameter[] parameter;
private short resultNumber;
private DataProtocol[] resultProtocol;
@Override
public int getLength() {
return length;
}
@Override
public char getMarker() {
return marker;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the sql
*/
public String getSql() {
return sql;
}
/**
* @return the parameterProtocolNumber
*/
public short getParameterProtocolNumber() {
return parameterProtocolNumber;
}
/**
* @return the parameterProtocol
*/
public DataProtocol[] getParameterProtocol() {
return parameterProtocol;
}
/**
* @return the parameterNumber
*/
public short getParameterNumber() {
return parameterNumber;
}
/**
* @return the parameter
*/
public DataParameter[] getParameter() {
return parameter;
}
/**
* @return the resultNumber
*/
public short getResultNumber() {
return resultNumber;
}
/**
* @return the resultProtocol
*/
public DataProtocol[] getResultProtocol() {
return resultProtocol;
}
}