~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sql_parse.cc

Big merge.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
#define DRIZZLE_LEX 1
17
17
#include <drizzled/server_includes.h>
18
18
#include <mysys/hash.h>
19
 
#include <drizzled/db.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>
193
193
  switch (command) {
194
194
  case COM_INIT_DB:
195
195
  {
196
 
    LEX_STRING tmp;
 
196
    string database_name(packet);
 
197
    NonNormalisedDatabaseName non_normalised_database_name(database_name);
 
198
    NormalisedDatabaseName normalised_database_name(non_normalised_database_name);
 
199
 
197
200
    status_var_increment(session->status_var.com_stat[SQLCOM_CHANGE_DB]);
198
 
    tmp.str= packet;
199
 
    tmp.length= packet_length;
200
 
    if (!mysql_change_db(session, &tmp, false))
 
201
 
 
202
    if (! mysql_change_db(session, normalised_database_name, false))
201
203
    {
202
204
      session->my_ok();
203
205
    }
356
358
  if (schema_table_name.compare("TABLES") == 0 ||
357
359
      schema_table_name.compare("TABLE_NAMES") == 0)
358
360
  {
359
 
    LEX_STRING db;
360
361
    size_t dummy;
361
362
    if (lex->select_lex.db == NULL &&
362
363
        lex->copy_db_to(&lex->select_lex.db, &dummy))
364
365
      return (1);
365
366
    }
366
367
    schema_select_lex= new Select_Lex();
367
 
    db.str= schema_select_lex->db= lex->select_lex.db;
 
368
    schema_select_lex->db= lex->select_lex.db;
 
369
 
 
370
    string database_name(schema_select_lex->db);
 
371
    NonNormalisedDatabaseName non_normalised_database_name(database_name);
 
372
    NormalisedDatabaseName normalised_database_name(non_normalised_database_name);
 
373
 
368
374
    schema_select_lex->table_list.first= NULL;
369
 
    db.length= strlen(db.str);
370
375
 
371
 
    if (check_db_name(&db))
 
376
    if (! normalised_database_name.isValid())
372
377
    {
373
 
      my_error(ER_WRONG_DB_NAME, MYF(0), db.str);
 
378
      my_error(ER_WRONG_DB_NAME, MYF(0),
 
379
               normalised_database_name.to_string().c_str());
374
380
      return (1);
375
381
    }
376
382
  }
942
948
    return NULL;
943
949
  }
944
950
 
945
 
  if (table->is_derived_table() == false && table->db.str &&
946
 
      check_db_name(&table->db))
 
951
  if (table->is_derived_table() == false && table->db.str)
947
952
  {
948
 
    my_error(ER_WRONG_DB_NAME, MYF(0), table->db.str);
949
 
    return NULL;
 
953
    string database_name(table->db.str);
 
954
    NonNormalisedDatabaseName non_normalised_database_name(database_name);
 
955
    NormalisedDatabaseName normalised_database_name(non_normalised_database_name);
 
956
 
 
957
    if (! normalised_database_name.isValid())
 
958
    {
 
959
      my_error(ER_WRONG_DB_NAME, MYF(0), normalised_database_name.to_string().c_str());
 
960
      return NULL;
 
961
    }
 
962
 
 
963
    strncpy(table->db.str, normalised_database_name.to_string().c_str(),
 
964
            table->db.length);
950
965
  }
951
966
 
952
967
  if (!alias)                                   /* Alias is case sensitive */