private Column(BaseConnection con, ResultSet rs) throws SQLException {

			int typeOid = (int)rs.getLong("atttypid");
			int typeMod = rs.getInt("atttypmod");

			position = rs.getInt("attnum");
			name = rs.getString("attname");
			typeName = con.getTypeInfo().getPGType(typeOid);
			decimalDigits = con.getTypeInfo().getScale(typeOid, typeMod);
			columnSize = con.getTypeInfo().getPrecision(typeOid, typeMod);
			if (columnSize == 0) {
				columnSize = con.getTypeInfo().getDisplaySize(typeOid, typeMod);
			}
			if (columnSize == Integer.MAX_VALUE) {
				columnSize = 0;
			}
			nullable = rs.getBoolean("attnotnull") ? java.sql.DatabaseMetaData.columnNoNulls : java.sql.DatabaseMetaData.columnNullable;
			String columnDef = rs.getString("adsrc");
			if (columnDef != null) {
				defaultValue = columnDef.replace("nextval('" + schema.getName() + ".", "nextval('"); // remove schema name
				isAutoincrement = columnDef.indexOf("nextval(") != -1;
			} else {
				defaultValue = null;
				isAutoincrement = false;
			}
			if (isAutoincrement) {
				PreparedStatement stmt = null;
				try {
					stmt = con.prepareStatement(
							"SELECT pg_get_serial_sequence( ? , ? ) AS sequencename");
					stmt.setString(1, getFullname());
					stmt.setString(2, name);
					ResultSet rs2 = stmt.executeQuery();
					if (rs2.next() && rs2.getString("sequencename") != null) {
						sequenceName = rs2.getString("sequencename").replace(schema.getName() + ".", "");
					} else {
						sequenceName = null;
					}
					rs2.close();
				} finally {
					if (stmt != null) stmt.close();
				}
			} else sequenceName = null;
		}