diff options
-rw-r--r-- | myisammrg/myrg_open.c | 9 | ||||
-rw-r--r-- | sql/handler.cc | 3 |
2 files changed, 6 insertions, 6 deletions
diff --git a/myisammrg/myrg_open.c b/myisammrg/myrg_open.c index 7ff00270c68..5188669cad1 100644 --- a/myisammrg/myrg_open.c +++ b/myisammrg/myrg_open.c @@ -33,7 +33,7 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) { int save_errno,i,errpos; - uint files,dir_length,length,options, key_parts; + uint files,dir_length,length,key_parts; ulonglong file_offset; char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end; MYRG_INFO info,*m_info; @@ -110,13 +110,11 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) } errpos=2; - options= (uint) ~0; for (i=files ; i-- > 0 ; ) { uint j; m_info->open_tables[i].table=isam; m_info->options|=isam->s->options; - options&=isam->s->options; m_info->records+=isam->state->records; m_info->del+=isam->state->del; m_info->data_file_length+=isam->state->data_file_length; @@ -125,9 +123,8 @@ MYRG_INFO *myrg_open(const char *name, int mode, int handle_locking) if (i) isam=(MI_INFO*) (isam->open_list.next->data); } - /* Don't force readonly if not all tables are readonly */ - if (! (options & (HA_OPTION_COMPRESS_RECORD | HA_OPTION_READ_ONLY_DATA))) - m_info->options&= ~(HA_OPTION_COMPRESS_RECORD | HA_OPTION_READ_ONLY_DATA); + /* Don't mark table readonly, for ALTER TABLE ... UNION=(...) to work */ + m_info->options&= ~(HA_OPTION_COMPRESS_RECORD | HA_OPTION_READ_ONLY_DATA); /* Fix fileinfo for easyer debugging (actually set by rrnd) */ file_offset=0; diff --git a/sql/handler.cc b/sql/handler.cc index 4ea5bc0e9f5..505f64dff43 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -801,6 +801,9 @@ void handler::print_error(int error, myf errflag) int textno=ER_GET_ERRNO; switch (error) { + case EACCES: + textno=ER_OPEN_AS_READONLY; + break; case EAGAIN: textno=ER_FILE_USED; break; |