@@ -219,23 +219,23 @@ int spider_udf_direct_sql_create_conn_key(
219219 tables_on_different_db_are_joinable ();
220220 direct_sql->conn_key_length
221221 = 1
222- + direct_sql->tgt_wrapper_length + 1
223- + direct_sql->tgt_host_length + 1
224- + 5 + 1
225- + direct_sql->tgt_socket_length + 1
226- + (tables_on_different_db_are_joinable ?
227- 0 : direct_sql->tgt_default_db_name_length + 1 )
228- + direct_sql->tgt_username_length + 1
229- + direct_sql->tgt_password_length + 1
230- + direct_sql->tgt_ssl_ca_length + 1
231- + direct_sql->tgt_ssl_capath_length + 1
232- + direct_sql->tgt_ssl_cert_length + 1
233- + direct_sql->tgt_ssl_cipher_length + 1
234- + direct_sql->tgt_ssl_key_length + 1
235- + 1 + 1
236- + direct_sql->tgt_default_file_length + 1
237- + direct_sql->tgt_default_group_length + 1
238- + direct_sql->tgt_dsn_length ;
222+ + ( direct_sql->tgt_wrapper ? direct_sql-> tgt_wrapper_length + 2 : 0 )
223+ + ( direct_sql->tgt_host ? direct_sql-> tgt_host_length + 2 : 0 )
224+ + 5 + 2
225+ + ( direct_sql->tgt_socket ? direct_sql-> tgt_socket_length + 2 : 0 )
226+ + (! tables_on_different_db_are_joinable && direct_sql-> tgt_default_db_name ?
227+ direct_sql->tgt_default_db_name_length + 2 : 0 )
228+ + ( direct_sql->tgt_username ? direct_sql-> tgt_username_length + 2 : 0 )
229+ + ( direct_sql->tgt_password ? direct_sql-> tgt_password_length + 2 : 0 )
230+ + ( direct_sql->tgt_ssl_ca ? direct_sql-> tgt_ssl_ca_length + 2 : 0 )
231+ + ( direct_sql->tgt_ssl_capath ? direct_sql-> tgt_ssl_capath_length + 2 : 0 )
232+ + ( direct_sql->tgt_ssl_cert ? direct_sql-> tgt_ssl_cert_length + 2 : 0 )
233+ + ( direct_sql->tgt_ssl_cipher ? direct_sql-> tgt_ssl_cipher_length + 2 : 0 )
234+ + ( direct_sql->tgt_ssl_key ? direct_sql-> tgt_ssl_key_length + 2 : 0 )
235+ + 1 + 2
236+ + ( direct_sql->tgt_default_file ? direct_sql-> tgt_default_file_length + 2 : 0 )
237+ + ( direct_sql->tgt_default_group ? direct_sql-> tgt_default_group_length + 2 : 0 )
238+ + ( direct_sql->tgt_dsn ? direct_sql-> tgt_dsn_length + 2 : 0 ) ;
239239 if (!(direct_sql->conn_key = (char *)
240240 spider_malloc (spider_current_trx, SPD_MID_UDF_DIRECT_SQL_CREATE_CONN_KEY_1, direct_sql->conn_key_length + 1 ,
241241 MYF (MY_WME | MY_ZEROFILL)))
@@ -245,96 +245,36 @@ int spider_udf_direct_sql_create_conn_key(
245245 *direct_sql->conn_key = ' 0' + 48 - direct_sql->connection_channel ;
246246 else
247247 *direct_sql->conn_key = ' 0' + direct_sql->connection_channel ;
248- DBUG_PRINT ( " info " ,( " spider tgt_wrapper=%s " , direct_sql-> tgt_wrapper )) ;
249- tmp_name = strmov ( direct_sql->conn_key + 1 , direct_sql-> tgt_wrapper ) ;
250- DBUG_PRINT ( " info " ,( " spider tgt_host=%s " , direct_sql->tgt_host ) );
251- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_host );
248+ int counter= 0 ;
249+ tmp_name= direct_sql->conn_key + 1 ;
250+ spider_create_conn_key_add_one (&counter, &tmp_name , direct_sql->tgt_wrapper );
251+ spider_create_conn_key_add_one (&counter, &tmp_name , direct_sql->tgt_host );
252252 my_sprintf (port_str, (port_str, " %05ld" , direct_sql->tgt_port ));
253- DBUG_PRINT (" info" ,(" spider port_str=%s" , port_str));
254- tmp_name = strmov (tmp_name + 1 , port_str);
255- if (direct_sql->tgt_socket )
253+ spider_create_conn_key_add_one (&counter, &tmp_name, port_str);
254+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_socket );
255+ counter++;
256+ if (!tables_on_different_db_are_joinable && direct_sql->tgt_default_db_name )
256257 {
257- DBUG_PRINT (" info" ,(" spider tgt_socket=%s" , direct_sql->tgt_socket ));
258- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_socket );
259- } else
258+ *tmp_name= (char ) counter;
259+ tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_default_db_name );
260260 tmp_name++;
261- if (!tables_on_different_db_are_joinable)
262- {
263- if (direct_sql->tgt_default_db_name )
264- {
265- DBUG_PRINT (" info" ,(" spider tgt_default_db_name=%s" ,
266- direct_sql->tgt_default_db_name ));
267- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_default_db_name );
268- } else
269- tmp_name++;
270261 }
271- if (direct_sql->tgt_username )
272- {
273- DBUG_PRINT (" info" ,(" spider tgt_username=%s" , direct_sql->tgt_username ));
274- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_username );
275- } else
276- tmp_name++;
277- if (direct_sql->tgt_password )
278- {
279- DBUG_PRINT (" info" ,(" spider tgt_password=%s" , direct_sql->tgt_password ));
280- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_password );
281- } else
282- tmp_name++;
283- if (direct_sql->tgt_ssl_ca )
284- {
285- DBUG_PRINT (" info" ,(" spider tgt_ssl_ca=%s" , direct_sql->tgt_ssl_ca ));
286- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_ssl_ca );
287- } else
288- tmp_name++;
289- if (direct_sql->tgt_ssl_capath )
290- {
291- DBUG_PRINT (" info" ,(" spider tgt_ssl_capath=%s" ,
292- direct_sql->tgt_ssl_capath ));
293- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_ssl_capath );
294- } else
295- tmp_name++;
296- if (direct_sql->tgt_ssl_cert )
297- {
298- DBUG_PRINT (" info" ,(" spider tgt_ssl_cert=%s" , direct_sql->tgt_ssl_cert ));
299- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_ssl_cert );
300- } else
301- tmp_name++;
302- if (direct_sql->tgt_ssl_cipher )
303- {
304- DBUG_PRINT (" info" ,(" spider tgt_ssl_cipher=%s" ,
305- direct_sql->tgt_ssl_cipher ));
306- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_ssl_cipher );
307- } else
308- tmp_name++;
309- if (direct_sql->tgt_ssl_key )
310- {
311- DBUG_PRINT (" info" ,(" spider tgt_ssl_key=%s" , direct_sql->tgt_ssl_key ));
312- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_ssl_key );
313- } else
314- tmp_name++;
315- tmp_name++;
316- *tmp_name = ' 0' + ((char ) direct_sql->tgt_ssl_vsc );
317- if (direct_sql->tgt_default_file )
318- {
319- DBUG_PRINT (" info" ,(" spider tgt_default_file=%s" ,
320- direct_sql->tgt_default_file ));
321- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_default_file );
322- } else
323- tmp_name++;
324- if (direct_sql->tgt_default_group )
325- {
326- DBUG_PRINT (" info" ,(" spider tgt_default_group=%s" ,
327- direct_sql->tgt_default_group ));
328- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_default_group );
329- } else
330- tmp_name++;
331- if (direct_sql->tgt_dsn )
332- {
333- DBUG_PRINT (" info" ,(" spider tgt_dsn=%s" ,
334- direct_sql->tgt_dsn ));
335- tmp_name = strmov (tmp_name + 1 , direct_sql->tgt_dsn );
336- } else
337- tmp_name++;
262+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_username );
263+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_password );
264+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_ssl_ca );
265+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_ssl_capath );
266+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_ssl_cert );
267+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_ssl_cipher );
268+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_ssl_key );
269+ counter++;
270+ *tmp_name= (char ) counter;
271+ tmp_name++;
272+ *tmp_name = ' 0' + ((char ) direct_sql->tgt_ssl_vsc );
273+ tmp_name++;
274+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_default_file );
275+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_default_group );
276+ spider_create_conn_key_add_one (&counter, &tmp_name, direct_sql->tgt_dsn );
277+ tmp_name++;
338278#ifdef SPIDER_HAS_HASH_VALUE_TYPE
339279 direct_sql->conn_key_hash_value = my_calc_hash (&spider_open_connections,
340280 (uchar*) direct_sql->conn_key , direct_sql->conn_key_length );
@@ -350,7 +290,7 @@ static inline void spider_maybe_memcpy_string(
350290 uint src_len)
351291{
352292 *dest_len= src_len;
353- if (src_len )
293+ if (src )
354294 {
355295 *dest= tmp;
356296 memcpy (*dest, src, src_len);
@@ -416,13 +356,12 @@ SPIDER_CONN *spider_udf_direct_sql_create_conn(
416356 conn->conn_key_length = direct_sql->conn_key_length ;
417357 conn->conn_key = tmp_name;
418358 memcpy (conn->conn_key , direct_sql->conn_key , direct_sql->conn_key_length );
419- conn->tgt_wrapper_length = direct_sql->tgt_wrapper_length ;
420- conn->tgt_wrapper = tmp_wrapper;
421- memcpy (conn->tgt_wrapper , direct_sql->tgt_wrapper ,
422- direct_sql->tgt_wrapper_length );
423- conn->tgt_host_length = direct_sql->tgt_host_length ;
424- conn->tgt_host = tmp_host;
425- memcpy (conn->tgt_host , direct_sql->tgt_host , direct_sql->tgt_host_length );
359+ spider_maybe_memcpy_string (
360+ &conn->tgt_wrapper , direct_sql->tgt_wrapper , tmp_wrapper,
361+ &conn->tgt_wrapper_length , direct_sql->tgt_wrapper_length );
362+ spider_maybe_memcpy_string (
363+ &conn->tgt_host , direct_sql->tgt_host , tmp_host,
364+ &conn->tgt_host_length , direct_sql->tgt_host_length );
426365 conn->tgt_port = direct_sql->tgt_port ;
427366 spider_maybe_memcpy_string (
428367 &conn->tgt_socket , direct_sql->tgt_socket , tmp_socket,
0 commit comments