~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_parse.cc

Remove PLUGIN and MODULES.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
16
16
#define DRIZZLE_LEX 1
17
 
#include <drizzled/server_includes.h>
18
 
#include <mysys/hash.h>
19
 
#include <drizzled/db.h>
 
17
#include "config.h"
 
18
#include <drizzled/my_hash.h>
20
19
#include <drizzled/error.h>
21
20
#include <drizzled/nested_join.h>
22
21
#include <drizzled/query_id.h>
24
23
#include <drizzled/data_home.h>
25
24
#include <drizzled/sql_base.h>
26
25
#include <drizzled/show.h>
 
26
#include <drizzled/db.h>
27
27
#include <drizzled/plugin/info_schema_table.h>
28
28
#include <drizzled/function/time/unix_timestamp.h>
29
29
#include <drizzled/function/get_system_var.h>
37
37
#include <drizzled/statement.h>
38
38
#include <drizzled/statement/alter_table.h>
39
39
#include "drizzled/probes.h"
 
40
#include "drizzled/session_list.h"
 
41
#include "drizzled/global_charset_info.h"
 
42
 
40
43
 
41
44
#include "drizzled/plugin/logging.h"
42
45
#include "drizzled/plugin/info_schema_table.h"
 
46
#include "drizzled/optimizer/explain_plan.h"
 
47
#include "drizzled/pthread_globals.h"
 
48
 
 
49
#include <limits.h>
43
50
 
44
51
#include <bitset>
45
52
#include <algorithm>
46
53
 
 
54
#include "drizzled/internal/my_sys.h"
 
55
 
47
56
using namespace drizzled;
48
57
using namespace std;
49
58
 
117
126
 
118
127
  sql_command_flags[SQLCOM_SHOW_STATUS]=      CF_STATUS_COMMAND;
119
128
  sql_command_flags[SQLCOM_SHOW_DATABASES]=   CF_STATUS_COMMAND;
120
 
  sql_command_flags[SQLCOM_SHOW_OPEN_TABLES]= CF_STATUS_COMMAND;
121
129
  sql_command_flags[SQLCOM_SHOW_FIELDS]=      CF_STATUS_COMMAND;
122
130
  sql_command_flags[SQLCOM_SHOW_KEYS]=        CF_STATUS_COMMAND;
123
131
  sql_command_flags[SQLCOM_SHOW_VARIABLES]=   CF_STATUS_COMMAND;
124
132
  sql_command_flags[SQLCOM_SHOW_WARNS]= CF_STATUS_COMMAND;
125
133
  sql_command_flags[SQLCOM_SHOW_ERRORS]= CF_STATUS_COMMAND;
126
 
  sql_command_flags[SQLCOM_SHOW_ENGINE_STATUS]= CF_STATUS_COMMAND;
127
134
  sql_command_flags[SQLCOM_SHOW_PROCESSLIST]= CF_STATUS_COMMAND;
128
135
  sql_command_flags[SQLCOM_SHOW_CREATE_DB]=  CF_STATUS_COMMAND;
129
136
  sql_command_flags[SQLCOM_SHOW_CREATE]=  CF_STATUS_COMMAND;
172
179
  session->command= command;
173
180
  session->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */
174
181
  session->set_time();
175
 
  session->query_id= query_id.value();
 
182
  session->setQueryId(query_id.value());
176
183
 
177
184
  switch( command ) {
178
185
  /* Ignore these statements. */
209
216
      break;                                    // fatal error is set
210
217
    DRIZZLE_QUERY_START(session->query,
211
218
                        session->thread_id,
212
 
                        const_cast<const char *>(session->db ? session->db : ""));
 
219
                        const_cast<const char *>(session->db.empty() ? "" : session->db.c_str()));
213
220
    const char* end_of_stmt= NULL;
214
221
 
215
222
    mysql_parse(session, session->query, session->query_length, &end_of_stmt);
306
313
  session->query_length= 0;
307
314
 
308
315
  session->set_proc_info(NULL);
309
 
  free_root(session->mem_root,MYF(MY_KEEP_PREALLOC));
 
316
  free_root(session->mem_root,MYF(memory::KEEP_PREALLOC));
310
317
 
311
318
  if (DRIZZLE_QUERY_DONE_ENABLED() || DRIZZLE_COMMAND_DONE_ENABLED())
312
319
  {
353
360
  Select_Lex *schema_select_lex= NULL;
354
361
 
355
362
 
356
 
  if (schema_table_name.compare("TABLES") == 0 ||
 
363
  if (schema_table_name.compare("OLD_TABLES") == 0 ||
357
364
      schema_table_name.compare("TABLE_NAMES") == 0)
358
365
  {
359
366
    LEX_STRING db;
374
381
      return (1);
375
382
    }
376
383
  }
377
 
  else if (schema_table_name.compare("COLUMNS") == 0 ||
378
 
           schema_table_name.compare("STATISTICS") == 0)
 
384
  else if (schema_table_name.compare("OLD_COLUMNS") == 0 ||
 
385
           schema_table_name.compare("OLD_STATISTICS") == 0)
379
386
  {
380
387
    assert(table_ident);
381
388
    TableList **query_tables_last= lex->query_tables_last;
532
539
      if (!(result= new select_send()))
533
540
        return true;
534
541
      session->send_explain_fields(result);
535
 
      res= mysql_explain_union(session, &session->lex->unit, result);
 
542
      optimizer::ExplainPlan planner;
 
543
      res= planner.explainUnion(session, &session->lex->unit, result);
536
544
      if (lex->describe & DESCRIBE_EXTENDED)
537
545
      {
538
546
        char buff[1024];
775
783
            session->query_length--;
776
784
          DRIZZLE_QUERY_EXEC_START(session->query,
777
785
                                   session->thread_id,
778
 
                                   const_cast<const char *>(session->db ? session->db : ""));
 
786
                                   const_cast<const char *>(session->db.empty() ? "" : session->db.c_str()));
779
787
          /* Actually execute the query */
780
788
          mysql_execute_command(session);
781
789
          DRIZZLE_QUERY_EXEC_DONE(0);
1475
1483
  uint32_t error=ER_NO_SUCH_THREAD;
1476
1484
  pthread_mutex_lock(&LOCK_thread_count); // For unlink from list
1477
1485
  
1478
 
  for( vector<Session*>::iterator it= session_list.begin(); it != session_list.end(); ++it )
 
1486
  for( vector<Session*>::iterator it= getSessionList().begin(); it != getSessionList().end(); ++it )
1479
1487
  {
1480
1488
    if ((*it)->thread_id == id)
1481
1489
    {
1662
1670
    my_error(ER_DBACCESS_DENIED_ERROR, MYF(0), "", "", INFORMATION_SCHEMA_NAME.c_str());
1663
1671
    return true;
1664
1672
  }
 
1673
  if (strcmp(identifier.getDBName(), DATA_DICTIONARY) == 0)
 
1674
  {
 
1675
    my_error(ER_DBACCESS_DENIED_ERROR, MYF(0), "", "", DATA_DICTIONARY);
 
1676
    return true;
 
1677
  }
1665
1678
 
1666
1679
  return false;
1667
1680
}