@@ -2066,120 +2066,6 @@ impl<'trans, 'stmt> Iterator for LazyRows<'trans, 'stmt> {
2066
2066
}
2067
2067
}
2068
2068
2069
- /*
2070
- pub fn execute<I, J>(&self, rows: I) -> Result<u64>
2071
- where I: Iterator<Item=J>, J: StreamIterator {
2072
- let mut conn = self.conn.conn.borrow_mut();
2073
-
2074
- debug!("executing COPY IN statement {}", self.name);
2075
- try!(conn.write_messages(&[
2076
- Bind {
2077
- portal: "",
2078
- statement: &self.name,
2079
- formats: &[],
2080
- values: &[],
2081
- result_formats: &[]
2082
- },
2083
- Execute {
2084
- portal: "",
2085
- max_rows: 0,
2086
- },
2087
- Sync]));
2088
-
2089
- match try!(conn.read_message()) {
2090
- BindComplete => {},
2091
- ErrorResponse { fields } => {
2092
- try!(conn.wait_for_ready());
2093
- return DbError::new(fields);
2094
- }
2095
- _ => {
2096
- conn.desynchronized = true;
2097
- return Err(Error::IoError(bad_response()));
2098
- }
2099
- }
2100
-
2101
- match try!(conn.read_message()) {
2102
- CopyInResponse { .. } => {}
2103
- _ => {
2104
- conn.desynchronized = true;
2105
- return Err(Error::IoError(bad_response()));
2106
- }
2107
- }
2108
-
2109
- let mut buf = vec![];
2110
- let _ = buf.write_all(b"PGCOPY\n\xff\r\n\x00");
2111
- let _ = buf.write_i32::<BigEndian>(0);
2112
- let _ = buf.write_i32::<BigEndian>(0);
2113
-
2114
- 'l: for mut row in rows {
2115
- let _ = buf.write_i16::<BigEndian>(self.column_types.len() as i16);
2116
-
2117
- let mut types = self.column_types.iter();
2118
- loop {
2119
- match (row.next(), types.next()) {
2120
- (Some(val), Some(ty)) => {
2121
- let mut inner_buf = vec![];
2122
- match val.to_sql_checked(ty, &mut inner_buf, &SessionInfo::new(&*conn)) {
2123
- Ok(IsNull::Yes) => {
2124
- let _ = buf.write_i32::<BigEndian>(-1);
2125
- }
2126
- Ok(IsNull::No) => {
2127
- let _ = buf.write_i32::<BigEndian>(inner_buf.len() as i32);
2128
- let _ = buf.write_all(&inner_buf);
2129
- }
2130
- Err(err) => {
2131
- // FIXME this is not the right way to handle this
2132
- try_desync!(conn, conn.stream.write_message(
2133
- &CopyFail {
2134
- message: &err.to_string(),
2135
- }));
2136
- break 'l;
2137
- }
2138
- }
2139
- }
2140
- (Some(_), None) | (None, Some(_)) => {
2141
- try_desync!(conn, conn.stream.write_message(
2142
- &CopyFail {
2143
- message: "Invalid column count",
2144
- }));
2145
- break 'l;
2146
- }
2147
- (None, None) => break
2148
- }
2149
- }
2150
-
2151
- try_desync!(conn, conn.stream.write_message(
2152
- &CopyData {
2153
- data: &buf
2154
- }));
2155
- buf.clear();
2156
- }
2157
-
2158
- let _ = buf.write_i16::<BigEndian>(-1);
2159
- try!(conn.write_messages(&[
2160
- CopyData {
2161
- data: &buf,
2162
- },
2163
- CopyDone,
2164
- Sync]));
2165
-
2166
- let num = match try!(conn.read_message()) {
2167
- CommandComplete { tag } => util::parse_update_count(tag),
2168
- ErrorResponse { fields } => {
2169
- try!(conn.wait_for_ready());
2170
- return DbError::new(fields);
2171
- }
2172
- _ => {
2173
- conn.desynchronized = true;
2174
- return Err(Error::IoError(bad_response()));
2175
- }
2176
- };
2177
-
2178
- try!(conn.wait_for_ready());
2179
- Ok(num)
2180
- }
2181
- */
2182
-
2183
2069
/// A trait allowing abstraction over connections and transactions
2184
2070
pub trait GenericConnection {
2185
2071
/// Like `Connection::prepare`.
0 commit comments