Re: Sybase large identifier support

"James K. Lowden" <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
On Mon, 14 Nov 2011 12:22:49 +0100
"Ludo Brands" <[email protected]> wrote:

> Is support for large identifiers planned?

Planned, no.  Possible, possibly.  

I had to write a little parser to understand your capabilities, output
attached.  TDS_REQ_LARGEIDENT is bit 83, which you'll note is byte 11,
and FreeTDS sends 9 capability bytes.  

I haven't looked into it, but I would hope that you could add two bytes
to the defaultcaps variable defined in src/tds/mem.c.  

There also might be a baked-in assumption about 30-character identifier
names, but I doubt it.  DBMAXNAME is defined as 30 but used in
only two places.  (Don't name your database with more than 30
characters.)  Otherwise you should be OK because most of the code
doesn't care which version of the protocol you're using.  

> A nasty problem with this version of ASE is that the maximum
> identifier length is 28 even with quoted_identifier off. The docs
> specify a length of 30 when quoted_identifier off. The server always
> returns "The identifier that starts with '...' is too long.  Maximum
> length is 28."

Wow.  If they keep shrinking the identifiers and the company,  it's a
race between being bought be Computer Associates and have zero-length
table names.  

--jkl

_______________________________________________
FreeTDS mailing list
[email protected]
http://lists.ibiblio.org/mailman/listinfo/freetds
freetds.txt (text/plain, 1.5 KB)
reading 22 capabilities
request
byte 9 is 0
byte 8 is 8
 60 ( 8):	RESERVED
byte 7 is e
 52 ( 8):	TDS_DATA_VOID
 51 ( 4):	TDS_DATA_INT8
 50 ( 2):	TDS_DATA_BITN
byte 6 is 6d
 47 (40):	TDS_PROTO_DYNAMIC
 46 (20):	TDS_DATA_BOUNDARY
 44 ( 8):	TDS_REQ_URGEVT
 43 ( 4):	TDS_PROTO_BULK
 41 ( 1):	TDS_CON_LOGICAL
byte 5 is 7f
 39 (40):	TDS_CON_OOB
 38 (20):	TDS_CSR_MULTI
 37 (10):	TDS_CSR_REL
 36 ( 8):	TDS_CSR_ABS
 35 ( 4):	TDS_CSR_LAST
 34 ( 2):	TDS_CSR_FIRST
 33 ( 1):	TDS_CSR_PREV
byte 4 is ff
 32 (80):	TDS_DATA_MONEYN
 31 (40):	TDS_DATA_DATETIMEN
 30 (20):	TDS_DATA_INTN
 29 (10):	TDS_DATA_LBIN
 28 ( 8):	TDS_DATA_LCHAR
 27 ( 4):	TDS_DATA_DEC
 26 ( 2):	TDS_DATA_IMAGE
 25 ( 1):	TDS_DATA_TEXT
byte 3 is ff
 24 (80):	TDS_DATA_NUM
 23 (40):	TDS_DATA_FLT8
 22 (20):	TDS_DATA_FLT4
 21 (10):	TDS_DATA_DATE4
 20 ( 8):	TDS_DATA_DATE8
 19 ( 4):	TDS_DATA_MNY4
 18 ( 2):	TDS_DATA_MNY8
 17 ( 1):	TDS_DATA_VBIN
byte 2 is ff
 16 (80):	TDS_DATA_BIN
 15 (40):	TDS_DATA_VCHAR
 14 (20):	TDS_DATA_CHAR
 13 (10):	TDS_DATA_BIT
 12 ( 8):	TDS_DATA_INT4
 11 ( 4):	TDS_DATA_INT2
 10 ( 2):	TDS_DATA_INT1
  9 ( 1):	TDS_REQ_PARAM
byte 1 is fe
  8 (80):	TDS_REQ_MSG
  7 (40):	TDS_REQ_DYNF
  6 (20):	TDS_REQ_CURSOR
  5 (10):	TDS_REQ_BCP
  4 ( 8):	TDS_REQ_MSTMT
  3 ( 4):	TDS_REQ_EVT
  2 ( 2):	TDS_REQ_RPC
response
byte 9 is 0
byte 8 is 0
byte 7 is 0
byte 6 is 0
byte 5 is 2
 34 ( 2):	TDS_RES_NOSTRIPBLANKS
byte 4 is 68
 31 (40):	TDS_DATA_NOSENSITIVITY
 30 (20):	TDS_PROTO_NOBULK
 28 ( 8):	TDS_CON_NOINBAND
byte 3 is 0
byte 2 is 0
byte 1 is 0
sybase.txt (text/plain, 2.2 KB)
reading 24 capabilities
request
byte 12 is 7
 91 ( 4):	unknown
 90 ( 2):	unknown
 89 ( 1):	TDS_REQ_MIGRATE
byte 11 is cd
 88 (80):	unknown
 87 (40):	TDS_REQ_DBRPC2
 84 ( 8):	TDS_REQ_BLOB_NCHAR_16
 83 ( 4):	TDS_REQ_LARGEIDENT
 81 ( 1):	TDS_CAP_CLUSTERFAILOVER
byte 10 is ff
 80 (80):	TDS_DATA_UNITEXT
 79 (40):	TDS_REQ_SRVPKTSIZE
 78 (20):	TDS_CSR_KEYSETDRIVEN
 77 (10):	TDS_CSR_SEMISENSITIVE
 76 ( 8):	TDS_CSR_INSENSITIVE
 75 ( 4):	TDS_CSR_SENSITIVE
 74 ( 2):	TDS_CSR_SCROLL
 73 ( 1):	TDS_DATA_INTERVAL
byte 9 is 85
 72 (80):	TDS_DATA_TIME
 67 ( 4):	TDS_IMAGE_NCHAR
 65 ( 1):	TDS_CUR_IMPLICIT
byte 8 is ee
 64 (80):	TDS_DATA_UINTN
 63 (40):	TDS_DATA_UINT8
 62 (20):	TDS_DATA_UINT4
 60 ( 8):	RESERVED
 59 ( 4):	TDS_WIDETABLE
 58 ( 2):	TDS_DATA_COLUMNSTATUS
byte 7 is ef
 56 (80):	unknown
 55 (40):	TDS_OBJECT_CHAR
 54 (20):	TDS_OBJECT_JAVA1
 52 ( 8):	TDS_DATA_VOID
 51 ( 4):	TDS_DATA_INT8
 50 ( 2):	TDS_DATA_BITN
 49 ( 1):	TDS_DATA_FLTN
byte 6 is 65
 47 (40):	TDS_PROTO_DYNAMIC
 46 (20):	TDS_DATA_BOUNDARY
 43 ( 4):	TDS_PROTO_BULK
 41 ( 1):	TDS_CON_LOGICAL
byte 5 is 7f
 39 (40):	TDS_CON_OOB
 38 (20):	TDS_CSR_MULTI
 37 (10):	TDS_CSR_REL
 36 ( 8):	TDS_CSR_ABS
 35 ( 4):	TDS_CSR_LAST
 34 ( 2):	TDS_CSR_FIRST
 33 ( 1):	TDS_CSR_PREV
byte 4 is ff
 32 (80):	TDS_DATA_MONEYN
 31 (40):	TDS_DATA_DATETIMEN
 30 (20):	TDS_DATA_INTN
 29 (10):	TDS_DATA_LBIN
 28 ( 8):	TDS_DATA_LCHAR
 27 ( 4):	TDS_DATA_DEC
 26 ( 2):	TDS_DATA_IMAGE
 25 ( 1):	TDS_DATA_TEXT
byte 3 is ff
 24 (80):	TDS_DATA_NUM
 23 (40):	TDS_DATA_FLT8
 22 (20):	TDS_DATA_FLT4
 21 (10):	TDS_DATA_DATE4
 20 ( 8):	TDS_DATA_DATE8
 19 ( 4):	TDS_DATA_MNY4
 18 ( 2):	TDS_DATA_MNY8
 17 ( 1):	TDS_DATA_VBIN
byte 2 is ff
 16 (80):	TDS_DATA_BIN
 15 (40):	TDS_DATA_VCHAR
 14 (20):	TDS_DATA_CHAR
 13 (10):	TDS_DATA_BIT
 12 ( 8):	TDS_DATA_INT4
 11 ( 4):	TDS_DATA_INT2
 10 ( 2):	TDS_DATA_INT1
  9 ( 1):	TDS_REQ_PARAM
byte 1 is d6
  8 (80):	TDS_REQ_MSG
  7 (40):	TDS_REQ_DYNF
  5 (10):	TDS_REQ_BCP
  3 ( 4):	TDS_REQ_EVT
  2 ( 2):	TDS_REQ_RPC
response
byte 8 is 0
byte 7 is 6
 51 ( 4):	TDS_DATA_NODATE
 50 ( 2):	TDS_BLOB_NONCHAR_SCSU
byte 6 is 80
 48 (80):	TDS_BLOB_NONCHAR_16
byte 5 is 6
 35 ( 4):	TDS_DATA_NOINT8
 34 ( 2):	TDS_RES_NOSTRIPBLANKS
byte 4 is 48
 31 (40):	TDS_DATA_NOSENSITIVITY
 28 ( 8):	TDS_CON_NOINBAND
byte 3 is 0
byte 2 is 0
byte 1 is 0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.