PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Database » MDB » Bug #1292

[MDB1] mssql feature request: listTableIndexes()

Details

Submitted2004-04-26 22:57 UTC
Fromthierry dot bo at netcourrier dot com
Assignedlsmith
StatusClosed
PackageMDB
PHP Version4.3.4
OSwin32XP
Roadmaps(Not assigned)

Comments

[2004-04-26 22:57 UTC] thierry dot bo at netcourrier dot com

Description:
------------
Hi,

here is my proposal for listTableIndexes() method for MDB1 mssql driver.

The important thing is that I get it working no matter the value of 'optimize' option. That is what I want the method behaves, but as mysql method does not behaves like that, I don't know if this is a bug or a feature:

If you call '$mdb->listTableIndexes('my_table')' with MDB1.3 and mysql with 'portability' option, you get a null result instead of an array.

Reproduce code:
---------------
http://www.thierrybo.freesurf.fr/temp/

[2004-05-19 09:23 UTC] smith at backendmedia dot com

I have added the method.
I cant reproduce your problems on MySQL though. Could you provide more details about your MySQl setup? Or better yet paste the output of the following query:
SHOW INDEX FROM [table]

where [table] is a table with a bunch of different indexes

[2004-05-19 17:54 UTC] thierry dot bo at netcourrier dot com

Well, now I can't reproduce the problem, instead but it fails whatever option I choose. This is with 1.3, not cvs. The problem is at the begining of fetchCol() in common.php:

function fetchCol($result, $colnum = 0)
{
$fetchmode = is_numeric($colnum) ? MDB_FETCHMODE_ORDERED : MDB_FETCHMODE_ASSOC;
$column = array();
$row = $this->fetchInto($result, $fetchmode);
if (is_array($row)) {
if (!array_key_exists($colnum, $row)) {
return($this->raiseError(MDB_ERROR_TRUNCATED));
}

If optimize is set to 'portability', $colnum == 'Key_name' and keys in $row are lowercased ('key_name'), so this raise error MDB_ERROR_TRUNCATED.

If optimize is set to 'performance', $colnum == 'key_name' but keys in $row are left unchanged ('Key_name'), so this also raise error MDB_ERROR_TRUNCATED.

TB

[2004-05-19 18:01 UTC] smith at backendmedia dot com

This bug has been fixed in CVS.

In case this was a documentation problem, the fix will show up at the
end of next Sunday (CET) on pear.php.net.

In case this was a pear.php.net website problem, the change will show
up on the website in short time.

Thank you for the report, and for helping us make PEAR better.

actually I lied in my last commit .. I just flipped things around to be more clear. I will try to reproduce the problem. Can you give me the information I asked in my previous reply (mysql version and output from the sql query)?

[2004-05-19 18:19 UTC] thierry dot bo at netcourrier dot com

Actually I reproduced my initial behavior (bug only with portability). This is againt the cvs version, but at the moment I did not updated it since 09 april 2004.

SHOW index FROM mrbs_entry

mrbs_entry, 0, mrbs_entry_pkey, 1, id, A, 0, , , , BTREE, ,
mrbs_entry, 1, idxStartTime, 1, start_time, A, 0, , , , BTREE, ,
mrbs_entry, 1, idxEndTime, 1, end_time, A, 0, , , , BTREE,

Mysql version: Mysql 4.0.13-nt --standalone

SHOW STATUS:
Aborted_clients, 24,
Aborted_connects, 0,
Bytes_received, 3526,
Bytes_sent, 20190,
Com_admin_commands, 0,
Com_alter_table, 0,
Com_analyze, 0,
Com_backup_table, 0,
Com_begin, 0,
Com_change_db, 48,
Com_change_master, 0,
Com_check, 0,
Com_commit, 0,
Com_create_db, 0,
Com_create_function, 0,
Com_create_index, 0,
Com_create_table, 0,
Com_delete, 0,
Com_delete_multi, 0,
Com_drop_db, 0,
Com_drop_function, 0,
Com_drop_index, 0,
Com_drop_table, 0,
Com_flush, 0,
Com_grant, 0,
Com_ha_close, 0,
Com_ha_open, 0,
Com_ha_read, 0,
Com_insert, 0,
Com_insert_select, 0,
Com_kill, 0,
Com_load, 0,
Com_load_master_data, 0,
Com_load_master_table, 0,
Com_lock_tables, 0,
Com_optimize, 0,
Com_purge, 0,
Com_rename_table, 0,
Com_repair, 0,
Com_replace, 0,
Com_replace_select, 0,
Com_reset, 0,
Com_restore_table, 0,
Com_revoke, 0,
Com_rollback, 0,
Com_select, 31,
Com_set_option, 0,
Com_show_binlog_events, 0,
Com_show_binlogs, 0,
Com_show_create, 0,
Com_show_databases, 2,
Com_show_fields, 8,
Com_show_grants, 0,
Com_show_keys, 24,
Com_show_logs, 0,
Com_show_master_status, 0,
Com_show_new_master, 0,
Com_show_open_tables, 0,
Com_show_processlist, 0,
Com_show_slave_hosts, 0,
Com_show_slave_status, 0,
Com_show_status, 1,
Com_show_innodb_status, 0,
Com_show_tables, 3,
Com_show_variables, 0,
Com_slave_start, 0,
Com_slave_stop, 0,
Com_truncate, 0,
Com_unlock_tables, 0,
Com_update, 0,
Connections, 27,
Created_tmp_disk_tables, 0,
Created_tmp_tables, 0,
Created_tmp_files, 0,
Delayed_insert_threads, 0,
Delayed_writes, 0,
Delayed_errors, 0,
Flush_commands, 1,
Handler_commit, 0,
Handler_delete, 0,
Handler_read_first, 12,
Handler_read_key, 0,
Handler_read_next, 0,
Handler_read_prev, 0,
Handler_read_rnd, 0,
Handler_read_rnd_next, 25,
Handler_rollback, 0,
Handler_update, 0,
Handler_write, 0,
Key_blocks_used, 1,
Key_read_requests, 2,
Key_reads, 1,
Key_write_requests, 0,
Key_writes, 0,
Max_used_connections, 1,
Not_flushed_key_blocks, 0,
Not_flushed_delayed_rows, 0,
Open_tables, 3,
Open_files, 6,
Open_streams, 0,
Opened_tables, 11,
Questions, 119,
Qcache_queries_in_cache, 0,
Qcache_inserts, 0,
Qcache_hits, 0,
Qcache_lowmem_prunes, 0,
Qcache_not_cached, 0,
Qcache_free_memory, 0,
Qcache_free_blocks, 0,
Qcache_total_blocks, 0,
Rpl_status, NULL,
Select_full_join, 0,
Select_full_range_join, 0,
Select_range, 0,
Select_range_check, 0,
Select_scan, 0,
Slave_open_temp_tables, 0,
Slave_running, OFF,
Slow_launch_threads, 0,
Slow_queries, 0,
Sort_merge_passes, 0,
Sort_range, 0,
Sort_rows, 0,
Sort_scan, 0,
Table_locks_immediate, 13,
Table_locks_waited, 0,
Threads_cached, 0,
Threads_created, 26,
Threads_connected, 1,
Threads_running, 1,
Uptime, 3832

SHOW VARIABLES:
back_log, 50,
basedir, F:\MYSQL\,
binlog_cache_size, 32768,
bulk_insert_buffer_size, 8388608,
character_set, latin1,
character_sets, latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5,
concurrent_insert, ON,
connect_timeout, 5,
convert_character_set, ,
datadir, F:\MYSQL\data\,
delay_key_write, ON,
delayed_insert_limit, 100,
delayed_insert_timeout, 300,
delayed_queue_size, 1000,
flush, OFF,
flush_time, 1800,
ft_boolean_syntax, + -><()~*:""&|,
ft_min_word_len, 4,
ft_max_word_len, 254,
ft_max_word_len_for_sort, 20,
ft_stopword_file, (built-in),
have_bdb, NO,
have_crypt, NO,
have_innodb, YES,
have_isam, YES,
have_raid, NO,
have_symlink, YES,
have_openssl, NO,
have_query_cache, YES,
init_file, ,
innodb_additional_mem_pool_size, 1048576,
innodb_buffer_pool_size, 8388608,
innodb_data_file_path, ibdata1:10M:autoextend,
innodb_data_home_dir, ,
innodb_file_io_threads, 4,
innodb_force_recovery, 0,
innodb_thread_concurrency, 8,
innodb_flush_log_at_trx_commit, 1,
innodb_fast_shutdown, ON,
innodb_flush_method, ,
innodb_lock_wait_timeout, 50,
innodb_log_arch_dir, .\,
innodb_log_archive, OFF,
innodb_log_buffer_size, 1048576,
innodb_log_file_size, 5242880,
innodb_log_files_in_group, 2,
innodb_log_group_home_dir, .\,
innodb_mirrored_log_groups, 1,
innodb_max_dirty_pages_pct, 90,
interactive_timeout, 28800,
join_buffer_size, 131072,
key_buffer_size, 8388600,
language, F:\MYSQL\share\french\,
large_files_support, ON,
local_infile, ON,
log, OFF,
log_update, OFF,
log_bin, OFF,
log_slave_updates, OFF,
log_slow_queries, OFF,
log_warnings, OFF,
long_query_time, 10,
low_priority_updates, OFF,
lower_case_table_names, ON,
max_allowed_packet, 1048576,
max_binlog_cache_size, 4294967295,
max_binlog_size, 1073741824,
max_connections, 100,
max_connect_errors, 10,
max_delayed_threads, 20,
max_heap_table_size, 16777216,
max_join_size, 4294967295,
max_sort_length, 1024,
max_user_connections, 0,
max_tmp_tables, 32,
max_write_lock_count, 4294967295,
myisam_max_extra_sort_file_size, 268435456,
myisam_max_sort_file_size, 2147483647,
myisam_repair_threads, 1,
myisam_recover_options, OFF,
myisam_sort_buffer_size, 8388608,
named_pipe, OFF,
net_buffer_length, 16384,
net_read_timeout, 30,
net_retry_count, 10,
net_write_timeout, 60,
new, OFF,
open_files_limit, 0,
pid_file, F:\MYSQL\data\thierry.pid,
log_error, .\thierry.err,
port, 3306,
protocol_version, 10,
read_buffer_size, 131072,
read_rnd_buffer_size, 262144,
rpl_recovery_rank, 0,
query_cache_limit, 1048576,
query_cache_size, 0,
query_cache_type, ON,
server_id, 0,
slave_net_timeout, 3600,
skip_external_locking, ON,
skip_networking, OFF,
skip_show_database, OFF,
slow_launch_time, 2,
sort_buffer_size, 2097144,
sql_mode, 0,
table_cache, 64,
table_type, MYISAM,
thread_cache_size, 0,
thread_stack, 196608,
tx_isolation, REPEATABLE-READ,
timezone, Amér. du Sud occid.,
tmp_table_size, 33554432,
tmpdir, C:\DOCUME~1\T6C56~1.BOT\LOCALS~1\Temp\,
version, 4.0.13-nt,
wait_timeout, 28800