system_mysql_db_refs.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # This test must examine integrity of current system database
  3. #
  4. set @name="This is a very long string, that mustn't find room in a system field like Table_name. Thus it should be cut by the actual size of the field. So we can use this string to find out the actual length of the field and to use it in any compare queries";
  5. #
  6. # If this part is wrong, most likely you've done wrong modification of system database "mysql"
  7. #
  8. create table test_db select * from mysql.db;
  9. delete from test_db;
  10. --disable_warnings
  11. insert into test_db (Host,Db,User) values (@name,@name,@name);
  12. --enable_warnings
  13. create table test_host select * from mysql.host;
  14. delete from test_host;
  15. --disable_warnings
  16. insert into test_host (Host,Db) values (@name,@name);
  17. --enable_warnings
  18. create table test_user select * from mysql.user;
  19. delete from test_user;
  20. --disable_warnings
  21. insert into test_user (Host,User) values (@name,@name);
  22. --enable_warnings
  23. create table test_func select * from mysql.func;
  24. delete from test_func;
  25. --disable_warnings
  26. insert into test_func (name) values (@name);
  27. --enable_warnings
  28. create table test_tables_priv select * from mysql.tables_priv;
  29. delete from test_tables_priv;
  30. --disable_warnings
  31. insert into test_tables_priv (Host,Db,User,Table_name) values (@name,@name,@name,@name);
  32. --enable_warnings
  33. create table test_columns_priv select * from mysql.columns_priv;
  34. delete from test_columns_priv;
  35. --disable_warnings
  36. insert into test_columns_priv (Host,Db,User,Table_name,Column_name) values (@name,@name,@name,@name,@name);
  37. --enable_warnings
  38. # 'Host' field must be the same for all the tables:
  39. select
  40.  if(isnull(test_db.Host),'WRONG!!!','ok') as test_db_Host,
  41.  if(isnull(test_host.Host),'WRONG!!!','ok') as test_host_Host,
  42.  if(isnull(test_user.Host),'WRONG!!!','ok') as test_user_Host,
  43.  if(isnull(test_tables_priv.Host),'WRONG!!!','ok') as test_tables_priv_Host,
  44.  if(isnull(test_columns_priv.Host),'WRONG!!!','ok') as test_columns_priv_Host
  45. from      test_db
  46. left join test_host         on test_db.Host=test_host.Host
  47. left join test_user         on test_db.Host=test_user.Host
  48. left join test_tables_priv  on test_db.Host=test_tables_priv.Host
  49. left join test_columns_priv on test_db.Host=test_columns_priv.Host;
  50. # 'Db' field must be the same for all the tables:
  51. select
  52.  if(isnull(test_db.Db),'WRONG!!!','ok') as test_db_Db,
  53.  if(isnull(test_host.Db),'WRONG!!!','ok') as test_host_Db,
  54.  if(isnull(test_tables_priv.Db),'WRONG!!!','ok') as test_tables_priv_Db,
  55.  if(isnull(test_columns_priv.Db),'WRONG!!!','ok') as est_columns_priv_Db
  56. from      test_db
  57. left join test_host         on test_db.Db=test_host.Db
  58. left join test_tables_priv  on test_db.Db=test_tables_priv.Db
  59. left join test_columns_priv on test_db.Db=test_columns_priv.Db;
  60. # 'User' field must be the same for all the tables:
  61. select
  62.  if(isnull(test_db.User),'WRONG!!!','ok') as test_db_User,
  63.  if(isnull(test_user.User),'WRONG!!!','ok') as test_user_User,
  64.  if(isnull(test_tables_priv.User),'WRONG!!!','ok') as test_tables_priv_User,
  65.  if(isnull(test_columns_priv.User),'WRONG!!!','ok') as test_columns_priv_User
  66. from      test_db
  67. left join test_user         on test_db.User=test_user.User
  68. left join test_tables_priv  on test_db.User=test_tables_priv.User
  69. left join test_columns_priv on test_db.User=test_columns_priv.User;
  70. # 'Table_name' field must be the same for all the tables:
  71. select
  72.  if(isnull(test_tables_priv.User),'WRONG!!!','ok') as test_tables_priv_User,
  73.  if(isnull(test_columns_priv.User),'WRONG!!!','ok') as test_columns_priv_User
  74. from      test_tables_priv
  75. left join test_columns_priv on test_tables_priv.Table_name=test_columns_priv.Table_name;
  76. drop table test_columns_priv;
  77. drop table test_tables_priv;
  78. drop table test_func;
  79. drop table test_host;
  80. drop table test_user;
  81. drop table test_db;
  82. # End of 4.1 tests