|
119 | 119 | #undef OFFSET
|
120 | 120 |
|
121 | 121 | #define NOPARSE
|
| 122 | +#define NJDBC |
122 | 123 | #if defined(UNIX)
|
123 | 124 | #include "osutil.h"
|
124 | 125 | #endif // UNIX
|
|
128 | 129 | #include "odbccat.h"
|
129 | 130 | #endif // ODBC_SUPPORT
|
130 | 131 | #if defined(JDBC_SUPPORT)
|
131 |
| -#include "jdbccat.h" |
| 132 | +#include "tabjdbc.h" |
132 | 133 | #include "jdbconn.h"
|
133 | 134 | #endif // JDBC_SUPPORT
|
134 | 135 | #include "xtable.h"
|
@@ -5224,7 +5225,7 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
|
5224 | 5225 | #endif
|
5225 | 5226 | #if defined(JDBC_SUPPORT)
|
5226 | 5227 | driver= GetListOption(g, "Driver", topt->oplist, NULL);
|
5227 |
| - url= GetListOption(g, "URL", topt->oplist, NULL); |
| 5228 | +// url= GetListOption(g, "URL", topt->oplist, NULL); |
5228 | 5229 | tabtyp = GetListOption(g, "Tabtype", topt->oplist, NULL);
|
5229 | 5230 | #endif // JDBC_SUPPORT
|
5230 | 5231 | mxe= atoi(GetListOption(g,"maxerr", topt->oplist, "0"));
|
@@ -5325,18 +5326,31 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
|
5325 | 5326 | case TAB_JDBC:
|
5326 | 5327 | if (fnc & FNC_DRIVER) {
|
5327 | 5328 | ok= true;
|
5328 |
| - } else if (!url && !(url= strz(g, create_info->connect_string))) { |
| 5329 | + } else if (!(url= strz(g, create_info->connect_string))) { |
5329 | 5330 | strcpy(g->Message, "Missing URL");
|
5330 | 5331 | } else {
|
5331 |
| - // Store ODBC additional parameters |
| 5332 | + // Store JDBC additional parameters |
| 5333 | + int rc; |
| 5334 | + PJDBCDEF jdef= new(g) JDBCDEF(); |
| 5335 | + |
| 5336 | + jdef->SetName(create_info->alias); |
5332 | 5337 | sjp= (PJPARM)PlugSubAlloc(g, NULL, sizeof(JDBCPARM));
|
5333 | 5338 | sjp->Driver= driver;
|
5334 |
| - sjp->Url= url; |
5335 |
| - sjp->User= (char*)user; |
5336 |
| - sjp->Pwd= (char*)pwd; |
5337 | 5339 | sjp->Fsize= 0;
|
5338 | 5340 | sjp->Scrollable= false;
|
5339 |
| - ok= true; |
| 5341 | + |
| 5342 | + if ((rc = jdef->ParseURL(g, url, false)) == RC_OK) { |
| 5343 | + sjp->Url= url; |
| 5344 | + sjp->User= (char*)user; |
| 5345 | + sjp->Pwd= (char*)pwd; |
| 5346 | + ok= true; |
| 5347 | + } else if (rc == RC_NF) { |
| 5348 | + if (jdef->GetTabname()) |
| 5349 | + tab= jdef->GetTabname(); |
| 5350 | + |
| 5351 | + ok= jdef->SetParms(sjp); |
| 5352 | + } // endif rc |
| 5353 | + |
5340 | 5354 | } // endif's
|
5341 | 5355 |
|
5342 | 5356 | supfnc |= (FNC_DRIVER | FNC_TABLE);
|
@@ -5775,12 +5789,10 @@ static int connect_assisted_discovery(handlerton *, THD* thd,
|
5775 | 5789 |
|
5776 | 5790 | switch (typ) {
|
5777 | 5791 | case TYPE_DOUBLE:
|
| 5792 | + case TYPE_DECIM: |
5778 | 5793 | // Some data sources do not count dec in length (prec)
|
5779 | 5794 | prec += (dec + 2); // To be safe
|
5780 | 5795 | break;
|
5781 |
| - case TYPE_DECIM: |
5782 |
| - prec= len; |
5783 |
| - break; |
5784 | 5796 | default:
|
5785 | 5797 | dec= 0;
|
5786 | 5798 | } // endswitch typ
|
|
0 commit comments