package io.mycat.backend.postgresql.utils; import io.mycat.backend.postgresql.packet.DataRow; import io.mycat.backend.postgresql.packet.DataRow.DataColumn; import io.mycat.backend.postgresql.packet.PostgreSQLPacket.DateType; import io.mycat.backend.postgresql.packet.RowDescription; import io.mycat.backend.postgresql.packet.RowDescription.ColumnDescription; import io.mycat.server.Fields; import io.mycat.server.packet.FieldPacket; import io.mycat.server.packet.RowDataPacket; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; /********* * 数据包适配 * @author Coollf * */ public class PgPacketApaterUtils { private static final Charset UTF8 = Charset.forName("utf-8"); /** * 列标示转换成Mysql的数据 * @param description * @return */ public static List<FieldPacket> rowDescConvertFieldPacket(RowDescription description){ List<FieldPacket> fieldPks = new ArrayList<FieldPacket>(description.getColumnNumber()); for(ColumnDescription c: description.getColumns()){ FieldPacket fieldPk = new FieldPacket(); fieldPk.name = c.getColumnName().getBytes(UTF8); fieldPk.type = convertFieldType(c.getColumnType()); fieldPks.add(fieldPk); } //TODO 等待实现 return fieldPks; } /*** * 将pg的sql类型转换成 * @param columnType * @return */ private static int convertFieldType(DateType columnType) { if(columnType == DateType.timestamp_){ return Fields.FIELD_TYPE_TIMESTAMP; } return Fields.FIELD_TYPE_VARCHAR; } /*** * 行数据转换成mysql的数据 * @param dataRow * @return */ public static RowDataPacket rowDataConvertRowDataPacket(DataRow dataRow){ RowDataPacket curRow = new RowDataPacket(dataRow.getColumnNumber()); for(DataColumn c: dataRow.getColumns()){ curRow.add(c.getData()); } return curRow; } }