diff --git a/lib/modules/Sql.pmod/tds.pike b/lib/modules/Sql.pmod/tds.pike
index 9658ef4fc404f6289ad632e2de69ade29cc46f4e..12439fb011cec319c71f071e03991c3431e6d6fe 100644
--- a/lib/modules/Sql.pmod/tds.pike
+++ b/lib/modules/Sql.pmod/tds.pike
@@ -1,13 +1,13 @@
 /*
- * $Id: tds.pike,v 1.16 2006/02/16 12:09:51 grubba Exp $
+ * $Id: tds.pike,v 1.17 2006/02/16 12:40:01 grubba Exp $
  *
  * A Pike implementation of the TDS protocol.
  *
  * Henrik Grubbstr�m 2006-02-08.
  */
 
-/* #define TDS_DEBUG */
-/* #define TDS_CONVERT_DEBUG */
+#define TDS_DEBUG
+#define TDS_CONVERT_DEBUG
 
 #ifdef TDS_DEBUG
 #define TDS_WERROR(X...)	werror("TDS:" + X)
@@ -946,6 +946,7 @@ static {
 	  TDS_WERROR("TDS7_RESULT_TOKEN\n");
 	  inp->get_byte();
 	  column_info = tds7_process_result(inp);
+#if 0
 	  if (inp->peek_byte() == TDS_TABNAME_TOKEN) {
 	    TDS_WERROR("TDS_TABNAME_TOKEN\n");
 	    process_default_tokens(inp, inp->get_byte());
@@ -955,6 +956,40 @@ static {
 	      //process_colinfo();	// FIXME!
 	    }
 	  }
+#endif /* 0 */
+	  break;
+	case TDS_TABNAME_TOKEN:
+	  inp->get_byte();
+	  string raw = inp->get_raw(inp->get_smallint());
+	  werror("Got TAB_NAME: %O\n"
+		 "column_info: %O\n",
+		 raw, column_info);
+	  break;
+	case TDS_COLINFO_TOKEN:
+	  inp->get_byte();
+	  string colinfo = inp->get_raw(inp->get_smallint());
+	  if (column_info) {
+	    while (sizeof(colinfo) > 2) {
+	      int colno = colinfo[0];
+	      int flags = colinfo[2];
+	      colinfo = colinfo[3..];
+	      if (!colno || (colno > sizeof(column_info))) {
+		break;
+	      }
+	      column_info[colno]->writeable = !(flags & 0x4);
+	      column_info[colno]->identity = !!(flags & 0x8);
+	      column_info[colno]->hidden = !!(flags & 0x10);
+	      if ((flags & 0x20) && sizeof(colinfo)) {
+		int len = colinfo[0]<<1;
+		string raw = colinfo[1..len];
+		colinfo = colinfo[len+1..];
+		column_info[colno]->real_name = utf16_to_string(raw);
+	      }
+	    }
+	  } else {
+	    TDS_WERROR("TDS_COLINFO_TOKEN without active column info\n"
+		       "  raw: %O\n", colinfo);
+	  }
 	  break;
 	case TDS_DONE_TOKEN:
 	  TDS_WERROR("  TDS_DONE_TOKEN pending\n");