Skip to content
Snippets Groups Projects
Commit d8afe75b authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Now uses the block size requested by the server.

Fixes support for large queries.

Rev: lib/modules/Sql.pmod/tds.pike:1.14
parent 05aab1ef
No related branches found
No related tags found
No related merge requests found
/* /*
* $Id: tds.pike,v 1.13 2006/02/15 13:15:44 grubba Exp $ * $Id: tds.pike,v 1.14 2006/02/15 13:46:40 grubba Exp $
* *
* A Pike implementation of the TDS protocol. * A Pike implementation of the TDS protocol.
* *
...@@ -180,6 +180,7 @@ static { ...@@ -180,6 +180,7 @@ static {
void tds_error(string msg, mixed ... args) void tds_error(string msg, mixed ... args)
{ {
if (sizeof(args)) msg = sprintf(msg, @args); if (sizeof(args)) msg = sprintf(msg, @args);
TDS_WERROR("ERROR: %s", msg);
predef::error(last_error = msg); predef::error(last_error = msg);
} }
...@@ -238,7 +239,7 @@ static { ...@@ -238,7 +239,7 @@ static {
busy = !(done = 1); busy = !(done = 1);
int errno = socket->errno(); int errno = socket->errno();
Disconnect(); Disconnect();
tds_error("Failed to read packet header: %O, %s.\n", predef::error("Failed to read packet header: %O, %s.\n",
header, strerror(errno)); header, strerror(errno));
} }
TDS_WERROR("Read header:\n%s\n", hex_dump(header)); TDS_WERROR("Read header:\n%s\n", hex_dump(header));
...@@ -467,7 +468,7 @@ static { ...@@ -467,7 +468,7 @@ static {
tds_error("Sending packet on busy connection!\n"); tds_error("Sending packet on busy connection!\n");
} }
array(string) packets = ((string) p)/32768.0; array(string) packets = ((string) p)/(float)(block_size-8);
foreach(packets; int i; string raw) { foreach(packets; int i; string raw) {
// NOTE: Network byteorder!! // NOTE: Network byteorder!!
raw = sprintf("%1c%1c%2c\0\0%1c\0%s", raw = sprintf("%1c%1c%2c\0\0%1c\0%s",
...@@ -478,7 +479,7 @@ static { ...@@ -478,7 +479,7 @@ static {
TDS_WERROR("Wrapped packet: %O\n%s\n", raw, hex_dump(raw)); TDS_WERROR("Wrapped packet: %O\n%s\n", raw, hex_dump(raw));
if (socket->write(raw) != sizeof(raw)) { if (socket->write(raw) != sizeof(raw)) {
Disconnect(); Disconnect();
tds_error("Failed to send packet.\n" predef::error("Failed to send packet.\n"
"raw: %O\n", raw); "raw: %O\n", raw);
} }
} }
...@@ -668,8 +669,10 @@ static { ...@@ -668,8 +669,10 @@ static {
tds_error("%d: %s:%s:%d %s\n", tds_error("%d: %s:%s:%d %s\n",
level, proc_name, server, line, message); level, proc_name, server, line, message);
} else { } else {
#if 0
last_error = sprintf("%d: %s:%s:%d %s\n", last_error = sprintf("%d: %s:%s:%d %s\n",
level, proc_name, server, line, message); level, proc_name, server, line, message);
#endif
TDS_WERROR("%d: %s:%s:%d %s\n", TDS_WERROR("%d: %s:%s:%d %s\n",
level, proc_name, server, line, message); level, proc_name, server, line, message);
} }
...@@ -1311,7 +1314,7 @@ static { ...@@ -1311,7 +1314,7 @@ static {
} }
} }
static void disconnect() void disconnect()
{ {
socket->close(); socket->close();
destruct(); destruct();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment