1To Do List 2========== 3 4This list is ordered top-to-bottom by priority. 5Things that are broken and need mending are at the top, 6followed by things that should work before the next release, 7followed by features that should be added/fixed/reworked (grouped by library). 8 9Everyone is encouraged to add to the list. Developers can do it directly; 10anyone else can post a patch to SourceForge. 11In this way we can communicate with each 12other about the project's priorities and needs. 13 14Must be fixed: 15==== 16 17* ctlib parameters, handle all case even in tds7 18 * handle and test prepared query 19 (? and @ syntax should be supported) 20* cancellation 21 * ctlib seems to hang reading row while in IDLE state 22 (tds_peek if not in pending state hang... update) 23 Applied but could not test fix from ML 21 May 2008: 24 "Problem with FreeTDS validating SQL commands 25 (actually a ct_cancel() error)" 26 I don't know if this is still true. Upper libraries 27 should not use tds_peek as it does handle cancellation. 28 29Work in progress: 30==== 31 32* be able to disable iconv for BCP (see Sybase documentation) 33 I have a patch to disable it, how to handle NVARCHAR? -- freddy77 34* BCP under ODBC. There is an experimental patch trying to 35 implement it. 36 37For future versions (in priority order within library): 38 39All 40---- 41 42* Cache protocol discovery (TDSVER=0.0). Save port/instance into some permanent storage. 43 tsql should report progress in verbose mode. 44* retain values used from freetds.conf, so we can report them. 45* add a way for tsql to report host, port, and TDS version for 46 the connection it's attempting. 47 Actually libTDS does the name resolution in tds_connect and then 48 just connect so there is no way for tsql to report these information. 49* move error message macro/prototype to tds.h.in; use in dblib.c. 50* conversion from ucs2 to utf8, provide for 2+ bytes/character 51* change numeric format to improve performance ?? 52 * little/big endian based on platform 53 * already packet at word 54 * correctly aligned to read directly packetized 55* limit copy of data (now wire -> tds -> temp -> client) 56 use a method like zero-copy 57 In token.c getting row should write data even to client 58 (callback, new user types, see ctlib conversion functions) 59 In query.c writing data do the same (use additional column fields?) 60 Situation is much improved in 0.95 version. 61 In ODBC is much better as wire -> tds are never performed and 62 convert extension to give client buffer is used if possible so 63 to avoid the temp step. 64* review the way parameters are packed 65 (too complicate, see ctlib bulk, cf "bulk copy and row buffer") 66* improve cursor support on dblib and ctlib 67* read on partial packet, do not wait entire one 68* detect if realloc accepts NULL pointers (in configure.ac) 69* support for password longer than 30 characters under Sybase 70 (anybody know how ??) 71* under Sybase using prepared statements and BLOBs we shouldn't try to 72 prepare every time (cache failure preparing, see odbc unittests logs, 73 binary_test) 74 done in ODBC ?? 75* Native bcp has no iconv support; character bcp files are assumed be encoded 76 with the client's charset. More flexibility one both sides would be good. 77* date/time on Sybase (from 12.5) 78* encrypted connection for Sybase 79 80db-lib 81---- 82 83* add DBTEXTLIMIT (dbsetopt), PHP require it to support textlimit ini value 84 85ct-lib 86---- 87 88* dynamic placeholders (DBD::Sybase) 89* ct_option() calls (CS_OPT_ROWCOUNT, CS_OPT_TEXTSIZE, among others) 90* async function, async calls (dbpoll() and friends) 91* support all type of bind in ct_bind (CS_VARBINARY_TYPE and other) 92 search "site:.sybase.com CS_VARBINARY ct_bind" on google for more info 93* complete sqlstate and other field in message (for Python) 94 95odbc 96---- 97 98* SQLDescribeParam (Sybase seems to require it) 99 A 100% success for DBD::ODBC require this. 100 Require parsing of the string to extract placeholders ("?") type, 101 something like "INSERT INTO test_table(field_a) VALUES(?)" -> 102 "SELECT field_a FROM test_table(NOLOCK) WHERE 0=1" 103* Star Office complains that these TypeInfo constants are not implemented in SQLGetInfo: 104 47 SQL_USER_NAME 105 (handle environment callbacks) 106 do a "SELECT USER_NAME()". If data pending MS do another connection with 107 same login. 108* SQLNativeSql and fill SQLGetInfo according (mssql7+ handle odbc escapes 109 directly) 110* it seems that if statement it's wrong and we issue SQLPrepare on SQLExecute 111 it try to send unprepared dynamic... state on dynamic?? 112* odbc array binding 113 test large field (like image) have language queries some limits? 114 do we have to split large multiple queries? 115* report error just before returning SQL_ERROR from inner function? 116* handle async flags ?? 117* handle no termination on odbc_set_string* 118 119Test and fix 120---- 121 122* hidden fields (FOR BROWSE select, see flag test on tds) 123 * what happen if we bind to an hidden field?? 124 * if we use SQLGetData?? 125 * if we request informations with SQLDescribeCol/SQLColAttribute(s)/ 126 SQLGetDescField?? 127 * as you noted returning # columns hidden fields are not counted (there 128 is however a setting which is a mssql extension which threat hidden 129 columns as normal) 130 (cfr "SQLNumResultCols() is wrong (+1)" Jan 8 2008) 131* test: descriptors work 132 * what happen to SQL_DESC_DATETIME_INTERVAL_CODE and SQL_DESC_CONCISE_TYPE 133 changing only SQL_DESC_TYPE (with SQLSetDescField) 134* test: set SQL_C_DEFAULT and call SQLFetch (numeric, others) 135* test: SQLGetStmtAttr(SQL_ATTR_ROW_NUMBER) 136 * all binded parameters 137 * no bind and sqlgetdata 138 * before first fetch 139 * after last fetch 140 141 142pool 143---- 144 145* get connection pooling working with all protocol versions 146* Make pool configuration a non-recompile process 147 148server 149---- 150 151* Server API needs more work. It's in a quite ugly state. 152 It's more experimental. Should be disabled by default to state it. 153