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

MySQL数据库

开发平台:

Visual C++

  1.   case 774:
  2. #line 3172 "sql_yacc.yy"
  3.     {
  4.     if (yyvsp[-1].item_list != NULL)
  5.       yyval.item = new Item_func_udf_float(yyvsp[-3].udf, *yyvsp[-1].item_list);
  6.     else
  7.       yyval.item = new Item_func_udf_float(yyvsp[-3].udf);
  8.   }
  9.     break;
  10.   case 775:
  11. #line 3179 "sql_yacc.yy"
  12.     {
  13.     if (yyvsp[-1].item_list != NULL)
  14.       yyval.item = new Item_func_udf_int(yyvsp[-3].udf, *yyvsp[-1].item_list);
  15.     else
  16.       yyval.item = new Item_func_udf_int(yyvsp[-3].udf);
  17.   }
  18.     break;
  19.   case 776:
  20. #line 3186 "sql_yacc.yy"
  21.     {
  22.             yyval.item= new Item_func_unique_users(yyvsp[-7].item,atoi(yyvsp[-5].lex_str.str),atoi(yyvsp[-3].lex_str.str), * yyvsp[-1].item_list);
  23.   }
  24.     break;
  25.   case 777:
  26. #line 3190 "sql_yacc.yy"
  27.     {
  28.     yyval.item= new Item_func_unix_timestamp();
  29.     Lex->safe_to_cache_query=0;
  30.   }
  31.     break;
  32.   case 778:
  33. #line 3195 "sql_yacc.yy"
  34.     { yyval.item= new Item_func_unix_timestamp(yyvsp[-1].item); }
  35.     break;
  36.   case 779:
  37. #line 3197 "sql_yacc.yy"
  38.     { yyval.item= new Item_func_user(); Lex->safe_to_cache_query=0; }
  39.     break;
  40.   case 780:
  41. #line 3199 "sql_yacc.yy"
  42.     { yyval.item= new Item_func_curdate_utc(); Lex->safe_to_cache_query=0;}
  43.     break;
  44.   case 781:
  45. #line 3201 "sql_yacc.yy"
  46.     { yyval.item= new Item_func_curtime_utc(); Lex->safe_to_cache_query=0;}
  47.     break;
  48.   case 782:
  49. #line 3203 "sql_yacc.yy"
  50.     { yyval.item= new Item_func_now_utc(); Lex->safe_to_cache_query=0;}
  51.     break;
  52.   case 783:
  53. #line 3205 "sql_yacc.yy"
  54.     {
  55.             yyval.item= new Item_func_week(yyvsp[-1].item,new Item_int((char*) "0",
  56.    YYTHD->variables.default_week_format,1));
  57.           }
  58.     break;
  59.   case 784:
  60. #line 3210 "sql_yacc.yy"
  61.     { yyval.item= new Item_func_week(yyvsp[-3].item,yyvsp[-1].item); }
  62.     break;
  63.   case 785:
  64. #line 3212 "sql_yacc.yy"
  65.     { yyval.item= new Item_func_year(yyvsp[-1].item); }
  66.     break;
  67.   case 786:
  68. #line 3214 "sql_yacc.yy"
  69.     { yyval.item= new Item_func_yearweek(yyvsp[-1].item,new Item_int((char*) "0",0,1)); }
  70.     break;
  71.   case 787:
  72. #line 3216 "sql_yacc.yy"
  73.     { yyval.item= new Item_func_yearweek(yyvsp[-3].item, yyvsp[-1].item); }
  74.     break;
  75.   case 788:
  76. #line 3218 "sql_yacc.yy"
  77.     {
  78.     yyval.item=new Item_func_benchmark(yyvsp[-3].ulong_num,yyvsp[-1].item);
  79.     Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
  80.   }
  81.     break;
  82.   case 789:
  83. #line 3223 "sql_yacc.yy"
  84.     { yyval.item=new Item_extract( yyvsp[-3].interval, yyvsp[-1].item); }
  85.     break;
  86.   case 790:
  87. #line 3227 "sql_yacc.yy"
  88.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  89.     break;
  90.   case 791:
  91. #line 3229 "sql_yacc.yy"
  92.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  93.     break;
  94.   case 792:
  95. #line 3231 "sql_yacc.yy"
  96.     { yyval.item= GEOM_NEW(Item_func_geometry_from_wkb(yyvsp[-1].item)); }
  97.     break;
  98.   case 793:
  99. #line 3233 "sql_yacc.yy"
  100.     { yyval.item= GEOM_NEW(Item_func_geometry_from_wkb(yyvsp[-3].item, yyvsp[-1].item)); }
  101.     break;
  102.   case 794:
  103. #line 3235 "sql_yacc.yy"
  104.     { yyval.item= GEOM_NEW(Item_func_spatial_collection(* yyvsp[-1].item_list,
  105.                            Geometry::wkb_geometrycollection,
  106.                            Geometry::wkb_point)); }
  107.     break;
  108.   case 795:
  109. #line 3239 "sql_yacc.yy"
  110.     { yyval.item= GEOM_NEW(Item_func_spatial_collection(* yyvsp[-1].item_list,
  111.                   Geometry::wkb_linestring, Geometry::wkb_point)); }
  112.     break;
  113.   case 796:
  114. #line 3242 "sql_yacc.yy"
  115.     { yyval.item= GEOM_NEW( Item_func_spatial_collection(* yyvsp[-1].item_list,
  116.                    Geometry::wkb_multilinestring, Geometry::wkb_linestring)); }
  117.     break;
  118.   case 797:
  119. #line 3245 "sql_yacc.yy"
  120.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  121.     break;
  122.   case 798:
  123. #line 3247 "sql_yacc.yy"
  124.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  125.     break;
  126.   case 799:
  127. #line 3249 "sql_yacc.yy"
  128.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  129.     break;
  130.   case 800:
  131. #line 3251 "sql_yacc.yy"
  132.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  133.     break;
  134.   case 801:
  135. #line 3253 "sql_yacc.yy"
  136.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  137.     break;
  138.   case 802:
  139. #line 3255 "sql_yacc.yy"
  140.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  141.     break;
  142.   case 803:
  143. #line 3257 "sql_yacc.yy"
  144.     { yyval.item= GEOM_NEW(Item_func_spatial_collection(* yyvsp[-1].item_list,
  145.                   Geometry::wkb_multipoint, Geometry::wkb_point)); }
  146.     break;
  147.   case 804:
  148. #line 3260 "sql_yacc.yy"
  149.     { yyval.item= GEOM_NEW(Item_func_spatial_collection(* yyvsp[-1].item_list,
  150.                   Geometry::wkb_multipolygon, Geometry::wkb_polygon)); }
  151.     break;
  152.   case 805:
  153. #line 3263 "sql_yacc.yy"
  154.     { yyval.item= GEOM_NEW(Item_func_point(yyvsp[-3].item,yyvsp[-1].item)); }
  155.     break;
  156.   case 806:
  157. #line 3265 "sql_yacc.yy"
  158.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  159.     break;
  160.   case 807:
  161. #line 3267 "sql_yacc.yy"
  162.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  163.     break;
  164.   case 808:
  165. #line 3269 "sql_yacc.yy"
  166.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  167.     break;
  168.   case 809:
  169. #line 3271 "sql_yacc.yy"
  170.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  171.     break;
  172.   case 810:
  173. #line 3273 "sql_yacc.yy"
  174.     { yyval.item= GEOM_NEW(Item_func_spatial_collection(* yyvsp[-1].item_list,
  175.           Geometry::wkb_polygon, Geometry::wkb_linestring)); }
  176.     break;
  177.   case 811:
  178. #line 3276 "sql_yacc.yy"
  179.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  180.     break;
  181.   case 812:
  182. #line 3278 "sql_yacc.yy"
  183.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  184.     break;
  185.   case 813:
  186. #line 3280 "sql_yacc.yy"
  187.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-1].item)); }
  188.     break;
  189.   case 814:
  190. #line 3282 "sql_yacc.yy"
  191.     { yyval.item= GEOM_NEW(Item_func_geometry_from_text(yyvsp[-3].item, yyvsp[-1].item)); }
  192.     break;
  193.   case 815:
  194. #line 3286 "sql_yacc.yy"
  195.     { yyval.num= FT_NL;  }
  196.     break;
  197.   case 816:
  198. #line 3287 "sql_yacc.yy"
  199.     { yyval.num= FT_NL | FT_EXPAND; }
  200.     break;
  201.   case 817:
  202. #line 3288 "sql_yacc.yy"
  203.     { yyval.num= FT_BOOL; }
  204.     break;
  205.   case 818:
  206. #line 3292 "sql_yacc.yy"
  207.     { yyval.item_list= NULL; }
  208.     break;
  209.   case 819:
  210. #line 3293 "sql_yacc.yy"
  211.     { yyval.item_list= yyvsp[0].item_list;}
  212.     break;
  213.   case 820:
  214. #line 3296 "sql_yacc.yy"
  215.     {
  216.   LEX *lex= Lex;
  217.   if (lex->current_select->inc_in_sum_expr())
  218.   {
  219.     yyerror(ER(ER_SYNTAX_ERROR));
  220.     YYABORT;
  221.   }
  222. }
  223.     break;
  224.   case 821:
  225. #line 3305 "sql_yacc.yy"
  226.     {
  227.   Select->in_sum_expr--;
  228.   yyval.item_list= yyvsp[0].item_list;
  229. }
  230.     break;
  231.   case 822:
  232. #line 3312 "sql_yacc.yy"
  233.     { yyval.item=new Item_sum_avg(yyvsp[-1].item); }
  234.     break;
  235.   case 823:
  236. #line 3314 "sql_yacc.yy"
  237.     { yyval.item=new Item_sum_and(yyvsp[-1].item); }
  238.     break;
  239.   case 824:
  240. #line 3316 "sql_yacc.yy"
  241.     { yyval.item=new Item_sum_or(yyvsp[-1].item); }
  242.     break;
  243.   case 825:
  244. #line 3318 "sql_yacc.yy"
  245.     { yyval.item=new Item_sum_xor(yyvsp[-1].item); }
  246.     break;
  247.   case 826:
  248. #line 3320 "sql_yacc.yy"
  249.     { yyval.item=new Item_sum_count(new Item_int((int32) 0L,1)); }
  250.     break;
  251.   case 827:
  252. #line 3322 "sql_yacc.yy"
  253.     { yyval.item=new Item_sum_count(yyvsp[-1].item); }
  254.     break;
  255.   case 828:
  256. #line 3324 "sql_yacc.yy"
  257.     { Select->in_sum_expr++; }
  258.     break;
  259.   case 829:
  260. #line 3326 "sql_yacc.yy"
  261.     { Select->in_sum_expr--; }
  262.     break;
  263.   case 830:
  264. #line 3328 "sql_yacc.yy"
  265.     { yyval.item=new Item_sum_count_distinct(* yyvsp[-2].item_list); }
  266.     break;
  267.   case 831:
  268. #line 3330 "sql_yacc.yy"
  269.     { yyval.item= new Item_sum_unique_users(yyvsp[-7].item,atoi(yyvsp[-5].lex_str.str),atoi(yyvsp[-3].lex_str.str),yyvsp[-1].item); }
  270.     break;
  271.   case 832:
  272. #line 3332 "sql_yacc.yy"
  273.     { yyval.item=new Item_sum_min(yyvsp[-1].item); }
  274.     break;
  275.   case 833:
  276. #line 3334 "sql_yacc.yy"
  277.     { yyval.item=new Item_sum_max(yyvsp[-1].item); }
  278.     break;
  279.   case 834:
  280. #line 3336 "sql_yacc.yy"
  281.     { yyval.item=new Item_sum_std(yyvsp[-1].item); }
  282.     break;
  283.   case 835:
  284. #line 3338 "sql_yacc.yy"
  285.     { yyval.item=new Item_sum_variance(yyvsp[-1].item); }
  286.     break;
  287.   case 836:
  288. #line 3340 "sql_yacc.yy"
  289.     { yyval.item=new Item_sum_sum(yyvsp[-1].item); }
  290.     break;
  291.   case 837:
  292. #line 3342 "sql_yacc.yy"
  293.     { Select->in_sum_expr++; }
  294.     break;
  295.   case 838:
  296. #line 3346 "sql_yacc.yy"
  297.     {
  298.     Select->in_sum_expr--;
  299.     yyval.item=new Item_func_group_concat(yyvsp[-5].num,yyvsp[-3].item_list,Select->gorder_list,yyvsp[-1].string);
  300.     yyvsp[-3].item_list->empty();
  301.   }
  302.     break;
  303.   case 839:
  304. #line 3353 "sql_yacc.yy"
  305.     { yyval.num = 0; }
  306.     break;
  307.   case 840:
  308. #line 3354 "sql_yacc.yy"
  309.     { yyval.num = 1; }
  310.     break;
  311.   case 841:
  312. #line 3357 "sql_yacc.yy"
  313.     { yyval.string = new (YYTHD->mem_root) String(",",1,default_charset_info); }
  314.     break;
  315.   case 842:
  316. #line 3358 "sql_yacc.yy"
  317.     { yyval.string = yyvsp[0].string; }
  318.     break;
  319.   case 843:
  320. #line 3363 "sql_yacc.yy"
  321.     {
  322.             Select->gorder_list = NULL;
  323.   }
  324.     break;
  325.   case 844:
  326. #line 3367 "sql_yacc.yy"
  327.     {
  328.             SELECT_LEX *select= Select;
  329.             select->gorder_list=
  330.       (SQL_LIST*) sql_memdup((char*) &select->order_list,
  331.      sizeof(st_sql_list));
  332.     select->order_list.empty();
  333.   }
  334.     break;
  335.   case 845:
  336. #line 3378 "sql_yacc.yy"
  337.     {
  338.   LEX *lex= Lex;
  339.   if (lex->current_select->inc_in_sum_expr())
  340.   {
  341.     yyerror(ER(ER_SYNTAX_ERROR));
  342.     YYABORT;
  343.   }
  344. }
  345.     break;
  346.   case 846:
  347. #line 3387 "sql_yacc.yy"
  348.     {
  349.   Select->in_sum_expr--;
  350.   yyval.item= yyvsp[0].item;
  351. }
  352.     break;
  353.   case 847:
  354. #line 3393 "sql_yacc.yy"
  355.     { yyval.cast_type=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; }
  356.     break;
  357.   case 848:
  358. #line 3394 "sql_yacc.yy"
  359.     { yyval.cast_type=ITEM_CAST_CHAR; }
  360.     break;
  361.   case 849:
  362. #line 3395 "sql_yacc.yy"
  363.     { yyval.cast_type=ITEM_CAST_CHAR; Lex->charset= national_charset_info; }
  364.     break;
  365.   case 850:
  366. #line 3396 "sql_yacc.yy"
  367.     { yyval.cast_type=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->length= (char*)0; }
  368.     break;
  369.   case 851:
  370. #line 3397 "sql_yacc.yy"
  371.     { yyval.cast_type=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->length= (char*)0; }
  372.     break;
  373.   case 852:
  374. #line 3398 "sql_yacc.yy"
  375.     { yyval.cast_type=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->length= (char*)0; }
  376.     break;
  377.   case 853:
  378. #line 3399 "sql_yacc.yy"
  379.     { yyval.cast_type=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->length= (char*)0; }
  380.     break;
  381.   case 854:
  382. #line 3400 "sql_yacc.yy"
  383.     { yyval.cast_type=ITEM_CAST_DATE; Lex->charset= NULL; Lex->length= (char*)0; }
  384.     break;
  385.   case 855:
  386. #line 3401 "sql_yacc.yy"
  387.     { yyval.cast_type=ITEM_CAST_TIME; Lex->charset= NULL; Lex->length= (char*)0; }
  388.     break;
  389.   case 856:
  390. #line 3402 "sql_yacc.yy"
  391.     { yyval.cast_type=ITEM_CAST_DATETIME; Lex->charset= NULL; Lex->length= (char*)0; }
  392.     break;
  393.   case 857:
  394. #line 3406 "sql_yacc.yy"
  395.     { Select->expr_list.push_front(new List<Item>); }
  396.     break;
  397.   case 858:
  398. #line 3408 "sql_yacc.yy"
  399.     { yyval.item_list= Select->expr_list.pop(); }
  400.     break;
  401.   case 859:
  402. #line 3411 "sql_yacc.yy"
  403.     { Select->expr_list.head()->push_back(yyvsp[0].item); }
  404.     break;
  405.   case 860:
  406. #line 3412 "sql_yacc.yy"
  407.     { Select->expr_list.head()->push_back(yyvsp[0].item); }
  408.     break;
  409.   case 861:
  410. #line 3415 "sql_yacc.yy"
  411.     { yyval.item_list= yyvsp[0].item_list; }
  412.     break;
  413.   case 862:
  414. #line 3416 "sql_yacc.yy"
  415.     { yyval.item_list= yyvsp[-1].item_list; }
  416.     break;
  417.   case 863:
  418. #line 3419 "sql_yacc.yy"
  419.     { Select->expr_list.push_front(new List<Item>); }
  420.     break;
  421.   case 864:
  422. #line 3421 "sql_yacc.yy"
  423.     { yyval.item_list= Select->expr_list.pop(); }
  424.     break;
  425.   case 865:
  426. #line 3424 "sql_yacc.yy"
  427.     { Select->expr_list.head()->push_back(yyvsp[0].item); }
  428.     break;
  429.   case 866:
  430. #line 3425 "sql_yacc.yy"
  431.     { Select->expr_list.head()->push_back(yyvsp[0].item); }
  432.     break;
  433.   case 867:
  434. #line 3428 "sql_yacc.yy"
  435.     { yyval.item= NULL; }
  436.     break;
  437.   case 868:
  438. #line 3429 "sql_yacc.yy"
  439.     { yyval.item= yyvsp[0].item; }
  440.     break;
  441.   case 869:
  442. #line 3432 "sql_yacc.yy"
  443.     { yyval.item= NULL; }
  444.     break;
  445.   case 870:
  446. #line 3433 "sql_yacc.yy"
  447.     { yyval.item= yyvsp[0].item; }
  448.     break;
  449.   case 871:
  450. #line 3436 "sql_yacc.yy"
  451.     { Select->when_list.push_front(new List<Item>); }
  452.     break;
  453.   case 872:
  454. #line 3438 "sql_yacc.yy"
  455.     { yyval.item_list= Select->when_list.pop(); }
  456.     break;
  457.   case 873:
  458. #line 3442 "sql_yacc.yy"
  459.     {
  460.     SELECT_LEX *sel=Select;
  461.     sel->when_list.head()->push_back(yyvsp[-2].item);
  462.     sel->when_list.head()->push_back(yyvsp[0].item);
  463. }
  464.     break;
  465.   case 874:
  466. #line 3448 "sql_yacc.yy"
  467.     {
  468.     SELECT_LEX *sel=Select;
  469.     sel->when_list.head()->push_back(yyvsp[-2].item);
  470.     sel->when_list.head()->push_back(yyvsp[0].item);
  471.   }
  472.     break;
  473.   case 875:
  474. #line 3455 "sql_yacc.yy"
  475.     { yyval.table_list=yyvsp[0].table_list; }
  476.     break;
  477.   case 876:
  478. #line 3456 "sql_yacc.yy"
  479.     { yyval.table_list=yyvsp[0].table_list; }
  480.     break;
  481.   case 877:
  482. #line 3457 "sql_yacc.yy"
  483.     { yyval.table_list=yyvsp[0].table_list; }
  484.     break;
  485.   case 878:
  486. #line 3459 "sql_yacc.yy"
  487.     { yyval.table_list=yyvsp[0].table_list ; yyvsp[-2].table_list->next->straight=1; }
  488.     break;
  489.   case 879:
  490. #line 3461 "sql_yacc.yy"
  491.     { add_join_on(yyvsp[-2].table_list,yyvsp[0].item); yyval.table_list=yyvsp[-2].table_list; }
  492.     break;
  493.   case 880:
  494. #line 3464 "sql_yacc.yy"
  495.     {
  496.     SELECT_LEX *sel= Select;
  497.     sel->db1=yyvsp[-3].table_list->db; sel->table1=yyvsp[-3].table_list->alias;
  498.     sel->db2=yyvsp[-1].table_list->db; sel->table2=yyvsp[-1].table_list->alias;
  499.   }
  500.     break;
  501.   case 881:
  502. #line 3470 "sql_yacc.yy"
  503.     { add_join_on(yyvsp[-5].table_list,yyvsp[-1].item); yyval.table_list=yyvsp[-5].table_list; }
  504.     break;
  505.   case 882:
  506. #line 3473 "sql_yacc.yy"
  507.     { add_join_on(yyvsp[-2].table_list,yyvsp[0].item); yyvsp[-2].table_list->outer_join|=JOIN_TYPE_LEFT; yyval.table_list=yyvsp[-2].table_list; }
  508.     break;
  509.   case 883:
  510. #line 3475 "sql_yacc.yy"
  511.     {
  512.     SELECT_LEX *sel= Select;
  513.     sel->db1=yyvsp[-4].table_list->db; sel->table1=yyvsp[-4].table_list->alias;
  514.     sel->db2=yyvsp[0].table_list->db; sel->table2=yyvsp[0].table_list->alias;
  515.   }
  516.     break;
  517.   case 884:
  518. #line 3481 "sql_yacc.yy"
  519.     { add_join_on(yyvsp[-5].table_list,yyvsp[-1].item); yyvsp[-5].table_list->outer_join|=JOIN_TYPE_LEFT; yyval.table_list=yyvsp[-5].table_list; }
  520.     break;
  521.   case 885:
  522. #line 3483 "sql_yacc.yy"
  523.     {
  524.     add_join_natural(yyvsp[-5].table_list,yyvsp[-5].table_list->next);
  525.     yyvsp[-5].table_list->next->outer_join|=JOIN_TYPE_LEFT;
  526.     yyval.table_list=yyvsp[0].table_list;
  527.   }
  528.     break;
  529.   case 886:
  530. #line 3489 "sql_yacc.yy"
  531.     { add_join_on(yyvsp[-6].table_list,yyvsp[0].item); yyvsp[-6].table_list->outer_join|=JOIN_TYPE_RIGHT; yyval.table_list=yyvsp[-2].table_list; }
  532.     break;
  533.   case 887:
  534. #line 3491 "sql_yacc.yy"
  535.     {
  536.     SELECT_LEX *sel= Select;
  537.     sel->db1=yyvsp[-4].table_list->db; sel->table1=yyvsp[-4].table_list->alias;
  538.     sel->db2=yyvsp[0].table_list->db; sel->table2=yyvsp[0].table_list->alias;
  539.   }
  540.     break;
  541.   case 888:
  542. #line 3497 "sql_yacc.yy"
  543.     { add_join_on(yyvsp[-9].table_list,yyvsp[-1].item); yyvsp[-9].table_list->outer_join|=JOIN_TYPE_RIGHT; yyval.table_list=yyvsp[-5].table_list; }
  544.     break;
  545.   case 889:
  546. #line 3499 "sql_yacc.yy"
  547.     {
  548.     add_join_natural(yyvsp[-5].table_list->next,yyvsp[-5].table_list);
  549.     yyvsp[-5].table_list->outer_join|=JOIN_TYPE_RIGHT;
  550.     yyval.table_list=yyvsp[0].table_list;
  551.   }
  552.     break;
  553.   case 890:
  554. #line 3505 "sql_yacc.yy"
  555.     { add_join_natural(yyvsp[-3].table_list,yyvsp[-3].table_list->next); yyval.table_list=yyvsp[0].table_list; }
  556.     break;
  557.   case 891:
  558. #line 3508 "sql_yacc.yy"
  559.     {}
  560.     break;
  561.   case 892:
  562. #line 3509 "sql_yacc.yy"
  563.     {}
  564.     break;
  565.   case 893:
  566. #line 3510 "sql_yacc.yy"
  567.     {}
  568.     break;
  569.   case 894:
  570. #line 3514 "sql_yacc.yy"
  571.     {
  572.   SELECT_LEX *sel= Select;
  573.   sel->use_index_ptr=sel->ignore_index_ptr=0;
  574.   sel->table_join_options= 0;
  575. }
  576.     break;
  577.   case 895:
  578. #line 3520 "sql_yacc.yy"
  579.     {
  580.   LEX *lex= Lex;
  581.   SELECT_LEX *sel= lex->current_select;
  582.   if (!(yyval.table_list= sel->add_table_to_list(lex->thd, yyvsp[-2].table, yyvsp[-1].lex_str_ptr,
  583.    sel->get_table_join_options(),
  584.    lex->lock_option,
  585.    sel->get_use_index(),
  586.    sel->get_ignore_index())))
  587.     YYABORT;
  588. }
  589.     break;
  590.   case 896:
  591. #line 3531 "sql_yacc.yy"
  592.     { add_join_on(yyvsp[-3].table_list,yyvsp[-1].item); yyvsp[-3].table_list->outer_join|=JOIN_TYPE_LEFT; yyval.table_list=yyvsp[-3].table_list; }
  593.     break;
  594.   case 897:
  595. #line 3533 "sql_yacc.yy"
  596.     {
  597.   LEX *lex=Lex;
  598.   SELECT_LEX_UNIT *unit= lex->current_select->master_unit();
  599.   lex->current_select= unit->outer_select();
  600.   if (!(yyval.table_list= lex->current_select->
  601.                 add_table_to_list(lex->thd, new Table_ident(unit), yyvsp[0].lex_str_ptr, 0,
  602.   TL_READ,(List<String> *)0,
  603.                           (List<String> *)0)))
  604.     YYABORT;
  605. }
  606.     break;
  607.   case 898:
  608. #line 3544 "sql_yacc.yy"
  609.     { yyval.table_list=yyvsp[-1].table_list; }
  610.     break;
  611.   case 900:
  612. #line 3549 "sql_yacc.yy"
  613.     {
  614.     LEX *lex= Lex;
  615.             SELECT_LEX * sel= lex->current_select;
  616.     if (sel->set_braces(1))
  617.     {
  618.       yyerror(ER(ER_SYNTAX_ERROR));
  619.       YYABORT;
  620.     }
  621.             /* select in braces, can't contain global parameters */
  622.     if (sel->master_unit()->fake_select_lex)
  623.               sel->master_unit()->global_parameters=
  624.                  sel->master_unit()->fake_select_lex;
  625.   }
  626.     break;
  627.   case 901:
  628. #line 3564 "sql_yacc.yy"
  629.     {
  630.   LEX *lex= Lex;
  631.   lex->derived_tables= 1;
  632.   if (((int)lex->sql_command >= (int)SQLCOM_HA_OPEN &&
  633.        lex->sql_command <= (int)SQLCOM_HA_READ) ||
  634.        lex->sql_command == (int)SQLCOM_KILL)
  635.   {
  636.     yyerror(ER(ER_SYNTAX_ERROR));
  637.     YYABORT;
  638.   }
  639.   if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE ||
  640.               mysql_new_select(lex, 1))
  641.     YYABORT;
  642.   mysql_init_select(lex);
  643.   lex->current_select->linkage= DERIVED_TABLE_TYPE;
  644.   lex->current_select->parsing_place= SELECT_LIST;
  645. }
  646.     break;
  647.   case 902:
  648. #line 3582 "sql_yacc.yy"
  649.     {
  650.   Select->parsing_place= NO_MATTER;
  651. }
  652.     break;
  653.   case 904:
  654. #line 3589 "sql_yacc.yy"
  655.     {}
  656.     break;
  657.   case 905:
  658. #line 3590 "sql_yacc.yy"
  659.     {}
  660.     break;
  661.   case 906:
  662. #line 3593 "sql_yacc.yy"
  663.     {}
  664.     break;
  665.   case 907:
  666. #line 3595 "sql_yacc.yy"
  667.     {
  668.     SELECT_LEX *sel= Select;
  669.     sel->use_index= *yyvsp[0].string_list;
  670.     sel->use_index_ptr= &sel->use_index;
  671.   }
  672.     break;
  673.   case 908:
  674. #line 3601 "sql_yacc.yy"
  675.     {
  676.     SELECT_LEX *sel= Select;
  677.     sel->use_index= *yyvsp[0].string_list;
  678.     sel->use_index_ptr= &sel->use_index;
  679.     sel->table_join_options|= TL_OPTION_FORCE_INDEX;
  680.   }
  681.     break;
  682.   case 909:
  683. #line 3608 "sql_yacc.yy"
  684.     {
  685.     SELECT_LEX *sel= Select;
  686.     sel->ignore_index= *yyvsp[0].string_list;
  687.     sel->ignore_index_ptr= &sel->ignore_index;
  688.   }
  689.     break;
  690.   case 910:
  691. #line 3615 "sql_yacc.yy"
  692.     { Select->interval_list.empty(); }
  693.     break;
  694.   case 911:
  695. #line 3617 "sql_yacc.yy"
  696.     { yyval.string_list= &Select->interval_list; }
  697.     break;
  698.   case 912:
  699. #line 3621 "sql_yacc.yy"
  700.     {}
  701.     break;
  702.   case 913:
  703. #line 3622 "sql_yacc.yy"
  704.     {}
  705.     break;
  706.   case 914:
  707. #line 3627 "sql_yacc.yy"
  708.     { Select->
  709.     interval_list.push_back(new (YYTHD->mem_root) String((const char*) yyvsp[0].lex_str.str, yyvsp[0].lex_str.length,
  710.     system_charset_info)); }
  711.     break;
  712.   case 915:
  713. #line 3631 "sql_yacc.yy"
  714.     { Select->
  715.     interval_list.push_back(new (YYTHD->mem_root) String((const char*) yyvsp[0].lex_str.str, yyvsp[0].lex_str.length,
  716.     system_charset_info)); }
  717.     break;
  718.   case 916:
  719. #line 3635 "sql_yacc.yy"
  720.     { Select->
  721.     interval_list.push_back(new (YYTHD->mem_root) String("PRIMARY", 7,
  722.     system_charset_info)); }
  723.     break;
  724.   case 917:
  725. #line 3641 "sql_yacc.yy"
  726.     {
  727.     SELECT_LEX *sel= Select;
  728.     if (!(yyval.item= new Item_func_eq(new Item_field(sel->db1, sel->table1,
  729.       yyvsp[0].lex_str.str),
  730.        new Item_field(sel->db2, sel->table2,
  731.       yyvsp[0].lex_str.str))))
  732.       YYABORT;
  733.   }
  734.     break;
  735.   case 918:
  736. #line 3650 "sql_yacc.yy"
  737.     {
  738.     SELECT_LEX *sel= Select;
  739.     if (!(yyval.item= new Item_cond_and(new Item_func_eq(new Item_field(sel->db1,sel->table1,yyvsp[0].lex_str.str), new Item_field(sel->db2,sel->table2,yyvsp[0].lex_str.str)), yyvsp[-2].item)))
  740.       YYABORT;
  741.   }
  742.     break;
  743.   case 919:
  744. #line 3657 "sql_yacc.yy"
  745.     { yyval.interval=INTERVAL_DAY_HOUR; }
  746.     break;
  747.   case 920:
  748. #line 3658 "sql_yacc.yy"
  749.     { yyval.interval=INTERVAL_DAY_MICROSECOND; }
  750.     break;
  751.   case 921:
  752. #line 3659 "sql_yacc.yy"
  753.     { yyval.interval=INTERVAL_DAY_MINUTE; }
  754.     break;
  755.   case 922:
  756. #line 3660 "sql_yacc.yy"
  757.     { yyval.interval=INTERVAL_DAY_SECOND; }
  758.     break;
  759.   case 923:
  760. #line 3661 "sql_yacc.yy"
  761.     { yyval.interval=INTERVAL_DAY; }
  762.     break;
  763.   case 924:
  764. #line 3662 "sql_yacc.yy"
  765.     { yyval.interval=INTERVAL_HOUR_MICROSECOND; }
  766.     break;
  767.   case 925:
  768. #line 3663 "sql_yacc.yy"
  769.     { yyval.interval=INTERVAL_HOUR_MINUTE; }
  770.     break;
  771.   case 926:
  772. #line 3664 "sql_yacc.yy"
  773.     { yyval.interval=INTERVAL_HOUR_SECOND; }
  774.     break;
  775.   case 927:
  776. #line 3665 "sql_yacc.yy"
  777.     { yyval.interval=INTERVAL_HOUR; }
  778.     break;
  779.   case 928:
  780. #line 3666 "sql_yacc.yy"
  781.     { yyval.interval=INTERVAL_MICROSECOND; }
  782.     break;
  783.   case 929:
  784. #line 3667 "sql_yacc.yy"
  785.     { yyval.interval=INTERVAL_MINUTE_MICROSECOND; }
  786.     break;
  787.   case 930:
  788. #line 3668 "sql_yacc.yy"
  789.     { yyval.interval=INTERVAL_MINUTE_SECOND; }
  790.     break;
  791.   case 931:
  792. #line 3669 "sql_yacc.yy"
  793.     { yyval.interval=INTERVAL_MINUTE; }
  794.     break;
  795.   case 932:
  796. #line 3670 "sql_yacc.yy"
  797.     { yyval.interval=INTERVAL_MONTH; }
  798.     break;
  799.   case 933:
  800. #line 3671 "sql_yacc.yy"
  801.     { yyval.interval=INTERVAL_SECOND_MICROSECOND; }
  802.     break;
  803.   case 934:
  804. #line 3672 "sql_yacc.yy"
  805.     { yyval.interval=INTERVAL_SECOND; }
  806.     break;
  807.   case 935:
  808. #line 3673 "sql_yacc.yy"
  809.     { yyval.interval=INTERVAL_YEAR_MONTH; }
  810.     break;
  811.   case 936:
  812. #line 3674 "sql_yacc.yy"
  813.     { yyval.interval=INTERVAL_YEAR; }
  814.     break;
  815.   case 937:
  816. #line 3678 "sql_yacc.yy"
  817.     {yyval.date_time_type=MYSQL_TIMESTAMP_DATE;}
  818.     break;
  819.   case 938:
  820. #line 3679 "sql_yacc.yy"
  821.     {yyval.date_time_type=MYSQL_TIMESTAMP_TIME;}
  822.     break;
  823.   case 939:
  824. #line 3680 "sql_yacc.yy"
  825.     {yyval.date_time_type=MYSQL_TIMESTAMP_DATETIME;}
  826.     break;
  827.   case 940:
  828. #line 3681 "sql_yacc.yy"
  829.     {yyval.date_time_type=MYSQL_TIMESTAMP_DATETIME;}
  830.     break;
  831.   case 944:
  832. #line 3690 "sql_yacc.yy"
  833.     { yyval.lex_str_ptr=0; }
  834.     break;
  835.   case 945:
  836. #line 3692 "sql_yacc.yy"
  837.     { yyval.lex_str_ptr= (LEX_STRING*) sql_memdup(&yyvsp[0].lex_str,sizeof(LEX_STRING)); }
  838.     break;
  839.   case 948:
  840. #line 3700 "sql_yacc.yy"
  841.     { Select->where= 0; }
  842.     break;
  843.   case 949:
  844. #line 3702 "sql_yacc.yy"
  845.     {
  846.             Select->parsing_place= IN_WHERE;
  847.           }
  848.     break;
  849.   case 950:
  850. #line 3706 "sql_yacc.yy"
  851.     {
  852.             SELECT_LEX *select= Select;
  853.     select->where= yyvsp[0].item;
  854.             select->parsing_place= NO_MATTER;
  855.     if (yyvsp[0].item)
  856.       yyvsp[0].item->top_level_item();
  857.   }
  858.     break;
  859.   case 952:
  860. #line 3718 "sql_yacc.yy"
  861.     {
  862.     Select->parsing_place= IN_HAVING;
  863.           }
  864.     break;
  865.   case 953:
  866. #line 3722 "sql_yacc.yy"
  867.     {
  868.     SELECT_LEX *sel= Select;
  869.     sel->having= yyvsp[0].item;
  870.     sel->parsing_place= NO_MATTER;
  871.     if (yyvsp[0].item)
  872.       yyvsp[0].item->top_level_item();
  873.   }
  874.     break;
  875.   case 954:
  876. #line 3732 "sql_yacc.yy"
  877.     { yyval.item= yyvsp[0].item; }
  878.     break;
  879.   case 955:
  880. #line 3734 "sql_yacc.yy"
  881.     { 
  882.             yyval.item= new Item_string("\", 1, &my_charset_latin1);
  883.           }
  884.     break;
  885.   case 958:
  886. #line 3750 "sql_yacc.yy"
  887.     { if (add_group_to_list(YYTHD, yyvsp[-1].item,(bool) yyvsp[0].num)) YYABORT; }
  888.     break;
  889.   case 959:
  890. #line 3752 "sql_yacc.yy"
  891.     { if (add_group_to_list(YYTHD, yyvsp[-1].item,(bool) yyvsp[0].num)) YYABORT; }
  892.     break;
  893.   case 960:
  894. #line 3755 "sql_yacc.yy"
  895.     {}
  896.     break;
  897.   case 961:
  898. #line 3757 "sql_yacc.yy"
  899.     {
  900.     LEX *lex=Lex;
  901.     if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
  902.     {
  903.       net_printf(lex->thd, ER_WRONG_USAGE, "WITH CUBE",
  904.        "global union parameters");
  905.       YYABORT;
  906.     }
  907.     lex->current_select->olap= CUBE_TYPE;
  908.     net_printf(lex->thd, ER_NOT_SUPPORTED_YET, "CUBE");
  909.     YYABORT; /* To be deleted in 5.1 */
  910.   }
  911.     break;
  912.   case 962:
  913. #line 3770 "sql_yacc.yy"
  914.     {
  915.     LEX *lex= Lex;
  916.     if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
  917.     {
  918.       net_printf(lex->thd, ER_WRONG_USAGE, "WITH ROLLUP",
  919.        "global union parameters");
  920.       YYABORT;
  921.     }
  922.     lex->current_select->olap= ROLLUP_TYPE;
  923.   }
  924.     break;
  925.   case 965:
  926. #line 3792 "sql_yacc.yy"
  927.     {
  928.   LEX *lex=Lex;
  929.   if (lex->current_select->linkage != GLOBAL_OPTIONS_TYPE &&
  930.       lex->current_select->olap !=
  931.       UNSPECIFIED_OLAP_TYPE)
  932.   {
  933.     net_printf(lex->thd, ER_WRONG_USAGE,
  934.        "CUBE/ROLLUP",
  935.        "ORDER BY");
  936.     YYABORT;
  937.   }
  938. }
  939.     break;
  940.   case 967:
  941. #line 3807 "sql_yacc.yy"
  942.     { if (add_order_to_list(YYTHD, yyvsp[-1].item,(bool) yyvsp[0].num)) YYABORT; }
  943.     break;
  944.   case 968:
  945. #line 3809 "sql_yacc.yy"
  946.     { if (add_order_to_list(YYTHD, yyvsp[-1].item,(bool) yyvsp[0].num)) YYABORT; }
  947.     break;
  948.   case 969:
  949. #line 3812 "sql_yacc.yy"
  950.     { yyval.num =  1; }
  951.     break;
  952.   case 970:
  953. #line 3813 "sql_yacc.yy"
  954.     { yyval.num =1; }
  955.     break;
  956.   case 971:
  957. #line 3814 "sql_yacc.yy"
  958.     { yyval.num =0; }
  959.     break;
  960.   case 972:
  961. #line 3819 "sql_yacc.yy"
  962.     {
  963.   LEX *lex= Lex;
  964.   SELECT_LEX *sel= lex->current_select;
  965.           sel->offset_limit= 0L;
  966.           sel->select_limit= HA_POS_ERROR;
  967. }
  968.     break;
  969.   case 973:
  970. #line 3825 "sql_yacc.yy"
  971.     {}
  972.     break;
  973.   case 974:
  974. #line 3829 "sql_yacc.yy"
  975.     {}
  976.     break;
  977.   case 975:
  978. #line 3830 "sql_yacc.yy"
  979.     {}
  980.     break;
  981.   case 976:
  982. #line 3834 "sql_yacc.yy"
  983.     {}
  984.     break;
  985.   case 977:
  986. #line 3839 "sql_yacc.yy"
  987.     {
  988.             SELECT_LEX *sel= Select;
  989.             sel->select_limit= yyvsp[0].ulong_num;
  990.             sel->offset_limit= 0L;
  991.     sel->explicit_limit= 1;
  992.   }
  993.     break;
  994.   case 978:
  995. #line 3846 "sql_yacc.yy"
  996.     {
  997.     SELECT_LEX *sel= Select;
  998.     sel->select_limit= yyvsp[0].ulong_num;
  999.     sel->offset_limit= yyvsp[-2].ulong_num;
  1000.     sel->explicit_limit= 1;
  1001.   }
  1002.     break;
  1003.   case 979:
  1004. #line 3853 "sql_yacc.yy"
  1005.     {
  1006.     SELECT_LEX *sel= Select;
  1007.     sel->select_limit= yyvsp[-2].ulong_num;
  1008.     sel->offset_limit= yyvsp[0].ulong_num;
  1009.     sel->explicit_limit= 1;
  1010.   }
  1011.     break;
  1012.   case 980:
  1013. #line 3864 "sql_yacc.yy"
  1014.     {
  1015.   LEX *lex=Lex;
  1016.   lex->current_select->select_limit= HA_POS_ERROR;
  1017. }
  1018.     break;
  1019.   case 981:
  1020. #line 3869 "sql_yacc.yy"
  1021.     {
  1022.   SELECT_LEX *sel= Select;
  1023.   sel->select_limit= (ha_rows) yyvsp[0].ulonglong_number;
  1024.   sel->explicit_limit= 1;
  1025. }
  1026.     break;
  1027.   case 982:
  1028. #line 3876 "sql_yacc.yy"
  1029.     { int error; yyval.ulong_num= (ulong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1030.     break;
  1031.   case 983:
  1032. #line 3877 "sql_yacc.yy"
  1033.     { int error; yyval.ulong_num= (ulong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1034.     break;
  1035.   case 984:
  1036. #line 3878 "sql_yacc.yy"
  1037.     { int error; yyval.ulong_num= (ulong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1038.     break;
  1039.   case 985:
  1040. #line 3879 "sql_yacc.yy"
  1041.     { int error; yyval.ulong_num= (ulong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1042.     break;
  1043.   case 986:
  1044. #line 3880 "sql_yacc.yy"
  1045.     { int error; yyval.ulong_num= (ulong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1046.     break;
  1047.   case 987:
  1048. #line 3884 "sql_yacc.yy"
  1049.     { int error; yyval.ulonglong_number= (ulonglong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1050.     break;
  1051.   case 988:
  1052. #line 3885 "sql_yacc.yy"
  1053.     { int error; yyval.ulonglong_number= (ulonglong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1054.     break;
  1055.   case 989:
  1056. #line 3886 "sql_yacc.yy"
  1057.     { int error; yyval.ulonglong_number= (ulonglong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1058.     break;
  1059.   case 990:
  1060. #line 3887 "sql_yacc.yy"
  1061.     { int error; yyval.ulonglong_number= (ulonglong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1062.     break;
  1063.   case 991:
  1064. #line 3888 "sql_yacc.yy"
  1065.     { int error; yyval.ulonglong_number= (ulonglong) my_strtoll10(yyvsp[0].lex_str.str, (char**) 0, &error); }
  1066.     break;
  1067.   case 993:
  1068. #line 3894 "sql_yacc.yy"
  1069.     {
  1070.     LEX *lex=Lex;
  1071.     if (&lex->select_lex != lex->current_select)
  1072.     {
  1073.       net_printf(lex->thd, ER_WRONG_USAGE,
  1074.   "PROCEDURE",
  1075.   "subquery");
  1076.       YYABORT;
  1077.     }
  1078.     lex->proc_list.elements=0;
  1079.     lex->proc_list.first=0;
  1080.     lex->proc_list.next= (byte**) &lex->proc_list.first;
  1081.     if (add_proc_to_list(lex->thd, new Item_field(NULL,NULL,yyvsp[0].lex_str.str)))
  1082.       YYABORT;
  1083.     Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
  1084.   }
  1085.     break;
  1086.   case 995:
  1087. #line 3914 "sql_yacc.yy"
  1088.     {}
  1089.     break;
  1090.   case 996:
  1091. #line 3915 "sql_yacc.yy"
  1092.     {}
  1093.     break;
  1094.   case 999:
  1095. #line 3923 "sql_yacc.yy"
  1096.     {
  1097.     LEX *lex= Lex;
  1098.     if (add_proc_to_list(lex->thd, yyvsp[0].item))
  1099.       YYABORT;
  1100.     if (!yyvsp[0].item->name)
  1101.       yyvsp[0].item->set_name(yyvsp[-1].simple_string,(uint) ((char*) lex->tok_end - yyvsp[-1].simple_string), YYTHD->charset());
  1102.   }
  1103.     break;
  1104.   case 1000:
  1105. #line 3934 "sql_yacc.yy"
  1106.     {
  1107.              LEX *lex=Lex;
  1108.      if (!lex->describe && (!(lex->result= new select_dumpvar())))
  1109.         YYABORT;
  1110.    }
  1111.     break;
  1112.   case 1001:
  1113. #line 3940 "sql_yacc.yy"
  1114.     {}
  1115.     break;
  1116.   case 1003:
  1117. #line 3945 "sql_yacc.yy"
  1118.     {}
  1119.     break;
  1120.   case 1004:
  1121. #line 3949 "sql_yacc.yy"
  1122.     {
  1123.              LEX *lex=Lex;
  1124.      if (lex->result && ((select_dumpvar *)lex->result)->var_list.push_back((LEX_STRING*) sql_memdup(&yyvsp[0].lex_str,sizeof(LEX_STRING))))
  1125.        YYABORT;
  1126.    }
  1127.     break;
  1128.   case 1005:
  1129. #line 3958 "sql_yacc.yy"
  1130.     {
  1131.           LEX *lex= Lex;
  1132.           lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
  1133.           if (!(lex->exchange= new sql_exchange(yyvsp[0].lex_str.str, 0)) ||
  1134.               !(lex->result= new select_export(lex->exchange)))
  1135.             YYABORT;
  1136. }
  1137.     break;
  1138.   case 1007:
  1139. #line 3967 "sql_yacc.yy"
  1140.     {
  1141.   LEX *lex=Lex;
  1142.   if (!lex->describe)
  1143.   {
  1144.     lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
  1145.     if (!(lex->exchange= new sql_exchange(yyvsp[0].lex_str.str,1)))
  1146.       YYABORT;
  1147.     if (!(lex->result= new select_dump(lex->exchange)))
  1148.       YYABORT;
  1149.   }
  1150. }
  1151.     break;
  1152.   case 1008:
  1153. #line 3979 "sql_yacc.yy"
  1154.     {
  1155.   Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
  1156. }
  1157.     break;
  1158.   case 1009:
  1159. #line 3989 "sql_yacc.yy"
  1160.     {
  1161.   LEX *lex=Lex;
  1162.   lex->sql_command = SQLCOM_DO;
  1163.   mysql_init_select(lex);
  1164. }
  1165.     break;
  1166.   case 1010:
  1167. #line 3995 "sql_yacc.yy"
  1168.     {
  1169.   Lex->insert_list= yyvsp[0].item_list;
  1170. }
  1171.     break;
  1172.   case 1011:
  1173. #line 4006 "sql_yacc.yy"
  1174.     {
  1175.   LEX *lex=Lex;
  1176.   lex->sql_command = SQLCOM_DROP_TABLE;
  1177.   lex->drop_temporary= yyvsp[-4].num;
  1178.   lex->drop_if_exists= yyvsp[-2].num;
  1179. }
  1180.     break;
  1181.   case 1012:
  1182. #line 4012 "sql_yacc.yy"
  1183.     {}
  1184.     break;
  1185.   case 1013:
  1186. #line 4013 "sql_yacc.yy"
  1187.     {
  1188.      LEX *lex=Lex;
  1189.      lex->sql_command= SQLCOM_DROP_INDEX;
  1190.      lex->alter_info.drop_list.empty();
  1191.      lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY,
  1192.                                                                 yyvsp[-3].lex_str.str));
  1193.      if (!lex->current_select->add_table_to_list(lex->thd, yyvsp[-1].table, NULL,
  1194. TL_OPTION_UPDATING))
  1195.       YYABORT;
  1196.   }
  1197.     break;
  1198.   case 1014:
  1199. #line 4024 "sql_yacc.yy"
  1200.     {
  1201.     LEX *lex=Lex;
  1202.     lex->sql_command= SQLCOM_DROP_DB;
  1203.     lex->drop_if_exists=yyvsp[-1].num;
  1204.     lex->name=yyvsp[0].lex_str.str;
  1205.  }
  1206.     break;
  1207.   case 1015:
  1208. #line 4031 "sql_yacc.yy"
  1209.     {
  1210.     LEX *lex=Lex;
  1211.     lex->sql_command = SQLCOM_DROP_FUNCTION;
  1212.     lex->udf.name = yyvsp[0].lex_str;
  1213.   }
  1214.     break;
  1215.   case 1016:
  1216. #line 4037 "sql_yacc.yy"
  1217.     {
  1218.     LEX *lex=Lex;
  1219.     lex->sql_command = SQLCOM_DROP_USER;
  1220.     lex->users_list.empty();
  1221.   }
  1222.     break;
  1223.   case 1017:
  1224. #line 4043 "sql_yacc.yy"
  1225.     {}
  1226.     break;
  1227.   case 1020:
  1228. #line 4053 "sql_yacc.yy"
  1229.     {
  1230.   if (!Select->add_table_to_list(YYTHD, yyvsp[0].table, NULL, TL_OPTION_UPDATING))
  1231.     YYABORT;
  1232. }
  1233.     break;
  1234.   case 1021:
  1235. #line 4060 "sql_yacc.yy"
  1236.     { yyval.num= 0; }
  1237.     break;
  1238.   case 1022:
  1239. #line 4061 "sql_yacc.yy"
  1240.     { yyval.num= 1; }
  1241.     break;
  1242.   case 1023:
  1243. #line 4065 "sql_yacc.yy"
  1244.     { yyval.num= 0; }
  1245.     break;
  1246.   case 1024:
  1247. #line 4066 "sql_yacc.yy"
  1248.     { yyval.num= 1; }
  1249.     break;
  1250.   case 1025:
  1251. #line 4074 "sql_yacc.yy"
  1252.     {
  1253.   LEX *lex= Lex;
  1254.   lex->sql_command= SQLCOM_INSERT;
  1255.   lex->duplicates= DUP_ERROR;
  1256.           mysql_init_select(lex);
  1257.   /* for subselects */
  1258.           lex->lock_option= (using_update_log) ? TL_READ_NO_INSERT : TL_READ;
  1259.   lex->select_lex.resolve_mode= SELECT_LEX::INSERT_MODE;
  1260. }
  1261.     break;
  1262.   case 1026:
  1263. #line 4084 "sql_yacc.yy"
  1264.     {
  1265.   Select->set_lock_for_tables(yyvsp[-2].lock_type);
  1266.   Lex->current_select= &Lex->select_lex;
  1267. }
  1268.     break;
  1269.   case 1027:
  1270. #line 4089 "sql_yacc.yy"
  1271.     {}
  1272.     break;
  1273.   case 1028:
  1274. #line 4094 "sql_yacc.yy"
  1275.     {
  1276.   LEX *lex=Lex;
  1277.   lex->sql_command = SQLCOM_REPLACE;
  1278.   lex->duplicates= DUP_REPLACE;
  1279.           mysql_init_select(lex);
  1280.   lex->select_lex.resolve_mode= SELECT_LEX::INSERT_MODE;
  1281. }
  1282.     break;
  1283.   case 1029:
  1284. #line 4102 "sql_yacc.yy"
  1285.     {
  1286.   Select->set_lock_for_tables(yyvsp[-1].lock_type);
  1287.   Lex->current_select= &Lex->select_lex;
  1288. }
  1289.     break;
  1290.   case 1030:
  1291. #line 4107 "sql_yacc.yy"
  1292.     {}
  1293.     break;
  1294.   case 1031:
  1295. #line 4111 "sql_yacc.yy"
  1296.     { yyval.lock_type= TL_WRITE_CONCURRENT_INSERT; }
  1297.     break;
  1298.   case 1032:
  1299. #line 4112 "sql_yacc.yy"
  1300.     { yyval.lock_type= TL_WRITE_LOW_PRIORITY; }
  1301.     break;
  1302.   case 1033:
  1303. #line 4113 "sql_yacc.yy"
  1304.     { yyval.lock_type= TL_WRITE_DELAYED; }
  1305.     break;
  1306.   case 1034:
  1307. #line 4114 "sql_yacc.yy"
  1308.     { yyval.lock_type= TL_WRITE; }
  1309.     break;
  1310.   case 1035:
  1311. #line 4118 "sql_yacc.yy"
  1312.     { yyval.lock_type= yyvsp[0].lock_type; }
  1313.     break;
  1314.   case 1036:
  1315. #line 4119 "sql_yacc.yy"
  1316.     { yyval.lock_type= TL_WRITE_DELAYED; }
  1317.     break;
  1318.   case 1037:
  1319. #line 4122 "sql_yacc.yy"
  1320.     {}
  1321.     break;
  1322.   case 1038:
  1323. #line 4123 "sql_yacc.yy"
  1324.     {}
  1325.     break;
  1326.   case 1039:
  1327. #line 4127 "sql_yacc.yy"
  1328.     {
  1329.   LEX *lex=Lex;
  1330.   lex->field_list.empty();
  1331.   lex->many_values.empty();
  1332.   lex->insert_list=0;
  1333. }
  1334.     break;
  1335.   case 1040:
  1336. #line 4135 "sql_yacc.yy"
  1337.     {}
  1338.     break;
  1339.   case 1041:
  1340. #line 4136 "sql_yacc.yy"
  1341.     {}
  1342.     break;
  1343.   case 1042:
  1344. #line 4137 "sql_yacc.yy"
  1345.     {}
  1346.     break;
  1347.   case 1043:
  1348. #line 4139 "sql_yacc.yy"
  1349.     {
  1350.     LEX *lex=Lex;
  1351.     if (!(lex->insert_list = new List_item) ||
  1352. lex->many_values.push_back(lex->insert_list))
  1353.       YYABORT;
  1354.    }
  1355.     break;
  1356.   case 1045:
  1357. #line 4148 "sql_yacc.yy"
  1358.     { }
  1359.     break;
  1360.   case 1046:
  1361. #line 4149 "sql_yacc.yy"
  1362.     { }
  1363.     break;
  1364.   case 1047:
  1365. #line 4150 "sql_yacc.yy"
  1366.     { }
  1367.     break;
  1368.   case 1048:
  1369. #line 4153 "sql_yacc.yy"
  1370.     { Lex->field_list.push_back(yyvsp[0].item); }
  1371.     break;
  1372.   case 1049:
  1373. #line 4154 "sql_yacc.yy"
  1374.     { Lex->field_list.push_back(yyvsp[0].item); }
  1375.     break;
  1376.   case 1050:
  1377. #line 4157 "sql_yacc.yy"
  1378.     {}
  1379.     break;
  1380.   case 1051:
  1381. #line 4158 "sql_yacc.yy"
  1382.     {}
  1383.     break;
  1384.   case 1052:
  1385. #line 4159 "sql_yacc.yy"
  1386.     { Select->set_braces(0);}
  1387.     break;
  1388.   case 1053:
  1389. #line 4159 "sql_yacc.yy"
  1390.     {}
  1391.     break;
  1392.   case 1054:
  1393. #line 4160 "sql_yacc.yy"
  1394.     { Select->set_braces(1);}
  1395.     break;
  1396.   case 1055:
  1397. #line 4160 "sql_yacc.yy"
  1398.     {}
  1399.     break;
  1400.   case 1060:
  1401. #line 4174 "sql_yacc.yy"
  1402.     {
  1403.   LEX *lex=Lex;
  1404.   if (lex->field_list.push_back(yyvsp[-2].item) ||
  1405.       lex->insert_list->push_back(yyvsp[0].item))
  1406.     YYABORT;
  1407.  }
  1408.     break;
  1409.   case 1061:
  1410. #line 4181 "sql_yacc.yy"
  1411.     {}
  1412.     break;
  1413.   case 1062:
  1414. #line 4182 "sql_yacc.yy"
  1415.     {}
  1416.     break;
  1417.   case 1063:
  1418. #line 4186 "sql_yacc.yy"
  1419.     {}
  1420.     break;
  1421.   case 1064:
  1422. #line 4187 "sql_yacc.yy"
  1423.     {}
  1424.     break;
  1425.   case 1065:
  1426. #line 4192 "sql_yacc.yy"
  1427.     {
  1428.     if (!(Lex->insert_list = new List_item))
  1429.       YYABORT;
  1430.  }
  1431.     break;
  1432.   case 1066:
  1433. #line 4197 "sql_yacc.yy"
  1434.     {
  1435.   LEX *lex=Lex;
  1436.   if (lex->many_values.push_back(lex->insert_list))
  1437.     YYABORT;
  1438.  }
  1439.     break;
  1440.   case 1067:
  1441. #line 4204 "sql_yacc.yy"
  1442.     {}
  1443.     break;
  1444.   case 1069:
  1445. #line 4209 "sql_yacc.yy"
  1446.     {
  1447.   if (Lex->insert_list->push_back(yyvsp[0].item))
  1448.     YYABORT;
  1449. }
  1450.     break;
  1451.   case 1070:
  1452. #line 4214 "sql_yacc.yy"
  1453.     {
  1454.     if (Lex->insert_list->push_back(yyvsp[0].item))
  1455.       YYABORT;
  1456.   }
  1457.     break;
  1458.   case 1071:
  1459. #line 4221 "sql_yacc.yy"
  1460.     { yyval.item= yyvsp[0].item;}
  1461.     break;
  1462.   case 1072:
  1463. #line 4222 "sql_yacc.yy"
  1464.     {yyval.item= new Item_default_value(); }
  1465.     break;
  1466.   case 1074:
  1467. #line 4227 "sql_yacc.yy"
  1468.     { Lex->duplicates= DUP_UPDATE; }
  1469.     break;
  1470.   case 1076:
  1471. #line 4235 "sql_yacc.yy"
  1472.     {
  1473.   LEX *lex= Lex;
  1474.   mysql_init_select(lex);
  1475.           lex->sql_command= SQLCOM_UPDATE;
  1476.   lex->lock_option= TL_UNLOCK;  /* Will be set later */
  1477.   lex->duplicates= DUP_ERROR; 
  1478.         }
  1479.     break;
  1480.   case 1077:
  1481. #line 4244 "sql_yacc.yy"
  1482.     {
  1483.   LEX *lex= Lex;
  1484.           if (lex->select_lex.table_list.elements > 1)
  1485.   {
  1486.             lex->sql_command= SQLCOM_UPDATE_MULTI;
  1487.     lex->multi_lock_option= yyvsp[-4].lock_type;
  1488.   }
  1489.   else if (lex->select_lex.get_table_list()->derived)
  1490.   {
  1491.     /* it is single table update and it is update of derived table */
  1492.     net_printf(lex->thd, ER_NON_UPDATABLE_TABLE,
  1493.        lex->select_lex.get_table_list()->alias, "UPDATE");
  1494.     YYABORT;
  1495.   }
  1496.   else
  1497.     Select->set_lock_for_tables(yyvsp[-4].lock_type);
  1498. }
  1499.     break;
  1500.   case 1078:
  1501. #line 4261 "sql_yacc.yy"
  1502.     {}
  1503.     break;
  1504.   case 1081:
  1505. #line 4270 "sql_yacc.yy"
  1506.     {
  1507.   if (add_item_to_list(YYTHD, yyvsp[-2].item) || add_value_to_list(YYTHD, yyvsp[0].item))
  1508.     YYABORT;
  1509. }
  1510.     break;
  1511.   case 1084:
  1512. #line 4281 "sql_yacc.yy"
  1513.     {
  1514.   LEX *lex= Lex;
  1515.   if (lex->update_list.push_back(yyvsp[-2].item) || 
  1516.       lex->value_list.push_back(yyvsp[0].item))
  1517.     YYABORT;
  1518. }
  1519.     break;
  1520.   case 1085:
  1521. #line 4289 "sql_yacc.yy"
  1522.     { yyval.lock_type= YYTHD->update_lock_default; }
  1523.     break;
  1524.   case 1086:
  1525. #line 4290 "sql_yacc.yy"
  1526.     { yyval.lock_type= TL_WRITE_LOW_PRIORITY; }
  1527.     break;
  1528.   case 1087:
  1529. #line 4296 "sql_yacc.yy"
  1530.     {
  1531.   LEX *lex= Lex;
  1532.   lex->sql_command= SQLCOM_DELETE;
  1533.           mysql_init_select(lex);
  1534.   lex->lock_option= lex->thd->update_lock_default;
  1535.   lex->ignore= 0;
  1536.   lex->select_lex.init_order();
  1537. }
  1538.     break;
  1539.   case 1088:
  1540. #line 4304 "sql_yacc.yy"
  1541.     {}
  1542.     break;
  1543.   case 1089:
  1544. #line 4309 "sql_yacc.yy"
  1545.     {
  1546.   if (!Select->add_table_to_list(YYTHD, yyvsp[0].table, NULL, TL_OPTION_UPDATING,
  1547.  Lex->lock_option))
  1548.     YYABORT;
  1549. }
  1550.     break;
  1551.   case 1090:
  1552. #line 4315 "sql_yacc.yy"
  1553.     {}
  1554.     break;
  1555.   case 1091:
  1556. #line 4316 "sql_yacc.yy"
  1557.     {mysql_init_multi_delete(Lex);}
  1558.     break;
  1559.   case 1092:
  1560. #line 4317 "sql_yacc.yy"
  1561.     {fix_multi_delete_lex(Lex);}
  1562.     break;
  1563.   case 1094:
  1564. #line 4318 "sql_yacc.yy"
  1565.     { mysql_init_multi_delete(Lex);}
  1566.     break;
  1567.   case 1095:
  1568. #line 4319 "sql_yacc.yy"
  1569.     {fix_multi_delete_lex(Lex);}
  1570.     break;
  1571.   case 1096:
  1572. #line 4320 "sql_yacc.yy"
  1573.     {}
  1574.     break;
  1575.   case 1097:
  1576. #line 4324 "sql_yacc.yy"
  1577.     {}
  1578.     break;
  1579.   case 1098:
  1580. #line 4325 "sql_yacc.yy"
  1581.     {}
  1582.     break;
  1583.   case 1099:
  1584. #line 4329 "sql_yacc.yy"
  1585.     {
  1586.   if (!Select->add_table_to_list(YYTHD, new Table_ident(yyvsp[-2].lex_str), yyvsp[0].lex_str_ptr,
  1587.  TL_OPTION_UPDATING, Lex->lock_option))
  1588.     YYABORT;
  1589.         }
  1590.     break;
  1591.   case 1100:
  1592. #line 4335 "sql_yacc.yy"
  1593.     {
  1594.     if (!Select->add_table_to_list(YYTHD,
  1595.    new Table_ident(YYTHD, yyvsp[-4].lex_str, yyvsp[-2].lex_str, 0),
  1596.    yyvsp[0].lex_str_ptr, TL_OPTION_UPDATING,
  1597.    Lex->lock_option))
  1598.       YYABORT;
  1599.   }
  1600.     break;
  1601.   case 1101:
  1602. #line 4345 "sql_yacc.yy"
  1603.     {}
  1604.     break;
  1605.   case 1102:
  1606. #line 4346 "sql_yacc.yy"
  1607.     {}
  1608.     break;
  1609.   case 1103:
  1610. #line 4350 "sql_yacc.yy"
  1611.     {}
  1612.     break;
  1613.   case 1104:
  1614. #line 4351 "sql_yacc.yy"
  1615.     {}
  1616.     break;
  1617.   case 1105:
  1618. #line 4354 "sql_yacc.yy"
  1619.     { Select->options|= OPTION_QUICK; }
  1620.     break;
  1621.   case 1106:
  1622. #line 4355 "sql_yacc.yy"
  1623.     { Lex->lock_option= TL_WRITE_LOW_PRIORITY; }
  1624.     break;
  1625.   case 1107:
  1626. #line 4356 "sql_yacc.yy"
  1627.     { Lex->ignore= 1; }
  1628.     break;
  1629.   case 1108:
  1630. #line 4360 "sql_yacc.yy"
  1631.     {
  1632.   LEX* lex= Lex;
  1633.   lex->sql_command= SQLCOM_TRUNCATE;
  1634.   lex->select_lex.options= 0;
  1635.   lex->select_lex.init_order();
  1636. }
  1637.     break;
  1638.   case 1111:
  1639. #line 4375 "sql_yacc.yy"
  1640.     {
  1641.   LEX *lex=Lex;
  1642.   lex->wild=0;
  1643.   bzero((char*) &lex->create_info,sizeof(lex->create_info));
  1644. }
  1645.     break;
  1646.   case 1112:
  1647. #line 4381 "sql_yacc.yy"
  1648.     {}
  1649.     break;
  1650.   case 1113:
  1651. #line 4386 "sql_yacc.yy"
  1652.     { Lex->sql_command= SQLCOM_SHOW_DATABASES; }
  1653.     break;
  1654.   case 1114:
  1655. #line 4388 "sql_yacc.yy"
  1656.     {
  1657.     LEX *lex= Lex;
  1658.     lex->sql_command= SQLCOM_SHOW_TABLES;
  1659.     lex->select_lex.db= yyvsp[-1].simple_string;
  1660.    }
  1661.     break;
  1662.   case 1115:
  1663. #line 4394 "sql_yacc.yy"
  1664.     {
  1665.     LEX *lex= Lex;
  1666.     lex->sql_command= SQLCOM_SHOW_TABLES;
  1667.     lex->describe= DESCRIBE_EXTENDED;
  1668.     lex->select_lex.db= yyvsp[-1].simple_string;
  1669.   }
  1670.     break;
  1671.   case 1116:
  1672. #line 4401 "sql_yacc.yy"
  1673.     {
  1674.     LEX *lex= Lex;
  1675.     lex->sql_command= SQLCOM_SHOW_OPEN_TABLES;
  1676.     lex->select_lex.db= yyvsp[-1].simple_string;
  1677.   }
  1678.     break;
  1679.   case 1117:
  1680. #line 4407 "sql_yacc.yy"
  1681.     { Lex->create_info.db_type= yyvsp[0].db_type; }
  1682.     break;
  1683.   case 1119:
  1684. #line 4410 "sql_yacc.yy"
  1685.     {
  1686.     Lex->sql_command= SQLCOM_SHOW_FIELDS;
  1687.     if (yyvsp[-1].simple_string)
  1688.       yyvsp[-2].table->change_db(yyvsp[-1].simple_string);
  1689.     if (!Select->add_table_to_list(YYTHD, yyvsp[-2].table, NULL, 0))
  1690.       YYABORT;
  1691.   }
  1692.     break;
  1693.   case 1120:
  1694. #line 4421 "sql_yacc.yy"
  1695.     {
  1696.     Lex->sql_command = SQLCOM_SHOW_NEW_MASTER;
  1697.     Lex->mi.log_file_name = yyvsp[-8].lex_str.str;
  1698.     Lex->mi.pos = yyvsp[-4].ulonglong_number;
  1699.     Lex->mi.server_id = yyvsp[0].ulong_num;
  1700.           }
  1701.     break;
  1702.   case 1121:
  1703. #line 4428 "sql_yacc.yy"
  1704.     {
  1705.     Lex->sql_command = SQLCOM_SHOW_BINLOGS;
  1706.           }
  1707.     break;
  1708.   case 1122:
  1709. #line 4432 "sql_yacc.yy"
  1710.     {
  1711.     Lex->sql_command = SQLCOM_SHOW_SLAVE_HOSTS;
  1712.           }
  1713.     break;
  1714.   case 1123:
  1715. #line 4436 "sql_yacc.yy"
  1716.     {
  1717.     LEX *lex= Lex;
  1718.     lex->sql_command= SQLCOM_SHOW_BINLOG_EVENTS;
  1719.           }
  1720.     break;
  1721.   case 1125:
  1722. #line 4441 "sql_yacc.yy"
  1723.     {
  1724.     Lex->sql_command= SQLCOM_SHOW_KEYS;
  1725.     if (yyvsp[0].simple_string)
  1726.       yyvsp[-1].table->change_db(yyvsp[0].simple_string);
  1727.     if (!Select->add_table_to_list(YYTHD, yyvsp[-1].table, NULL, 0))
  1728.       YYABORT;
  1729.   }
  1730.     break;
  1731.   case 1126:
  1732. #line 4449 "sql_yacc.yy"
  1733.     {
  1734.     LEX *lex=Lex;
  1735.     lex->sql_command= SQLCOM_SHOW_COLUMN_TYPES;
  1736.   }
  1737.     break;
  1738.   case 1127:
  1739. #line 4454 "sql_yacc.yy"
  1740.     {
  1741.     LEX *lex=Lex;
  1742.     lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
  1743.     WARN_DEPRECATED("SHOW TABLE TYPES", "SHOW [STORAGE] ENGINES");
  1744.   }
  1745.     break;
  1746.   case 1128:
  1747. #line 4460 "sql_yacc.yy"
  1748.     {
  1749.     LEX *lex=Lex;
  1750.     lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES;
  1751.   }
  1752.     break;
  1753.   case 1129:
  1754. #line 4465 "sql_yacc.yy"
  1755.     {
  1756.     LEX *lex=Lex;
  1757.     lex->sql_command= SQLCOM_SHOW_PRIVILEGES;
  1758.   }
  1759.     break;
  1760.   case 1130:
  1761. #line 4470 "sql_yacc.yy"
  1762.     { (void) create_select_for_variable("warning_count"); }
  1763.     break;
  1764.   case 1131:
  1765. #line 4472 "sql_yacc.yy"
  1766.     { (void) create_select_for_variable("error_count"); }
  1767.     break;
  1768.   case 1132:
  1769. #line 4474 "sql_yacc.yy"
  1770.     { Lex->sql_command = SQLCOM_SHOW_WARNS;}
  1771.     break;
  1772.   case 1133:
  1773. #line 4476 "sql_yacc.yy"
  1774.     { Lex->sql_command = SQLCOM_SHOW_ERRORS;}
  1775.     break;
  1776.   case 1134:
  1777. #line 4478 "sql_yacc.yy"
  1778.     { Lex->sql_command= SQLCOM_SHOW_STATUS; }
  1779.     break;
  1780.   case 1135:
  1781. #line 4480 "sql_yacc.yy"
  1782.     { Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS; WARN_DEPRECATED("SHOW INNODB STATUS", "SHOW ENGINE INNODB STATUS"); }
  1783.     break;
  1784.   case 1136:
  1785. #line 4482 "sql_yacc.yy"
  1786.     { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;}
  1787.     break;
  1788.   case 1137:
  1789. #line 4484 "sql_yacc.yy"
  1790.     {
  1791.     THD *thd= YYTHD;
  1792.     thd->lex->sql_command= SQLCOM_SHOW_VARIABLES;
  1793.     thd->lex->option_type= (enum_var_type) yyvsp[-2].num;
  1794.   }
  1795.     break;
  1796.   case 1138:
  1797. #line 4490 "sql_yacc.yy"
  1798.     { Lex->sql_command= SQLCOM_SHOW_CHARSETS; }
  1799.     break;
  1800.   case 1139:
  1801. #line 4492 "sql_yacc.yy"
  1802.     { Lex->sql_command= SQLCOM_SHOW_COLLATIONS; }
  1803.     break;
  1804.   case 1140:
  1805. #line 4494 "sql_yacc.yy"
  1806.     { Lex->sql_command= SQLCOM_SHOW_LOGS; WARN_DEPRECATED("SHOW BDB LOGS", "SHOW ENGINE BDB LOGS"); }
  1807.     break;
  1808.   case 1141:
  1809. #line 4496 "sql_yacc.yy"
  1810.     { Lex->sql_command= SQLCOM_SHOW_LOGS; WARN_DEPRECATED("SHOW LOGS", "SHOW ENGINE BDB LOGS"); }
  1811.     break;
  1812.   case 1142:
  1813. #line 4498 "sql_yacc.yy"
  1814.     {
  1815.     LEX *lex=Lex;
  1816.     lex->sql_command= SQLCOM_SHOW_GRANTS;
  1817.     THD *thd= lex->thd;
  1818.     LEX_USER *curr_user;
  1819.             if (!(curr_user= (LEX_USER*) thd->alloc(sizeof(st_lex_user))))
  1820.               YYABORT;
  1821.             curr_user->user.str= thd->priv_user;
  1822.             curr_user->user.length= strlen(thd->priv_user);
  1823.             if (*thd->priv_host != 0)
  1824.             {
  1825.               curr_user->host.str= thd->priv_host;
  1826.               curr_user->host.length= strlen(thd->priv_host);
  1827.             }
  1828.             else
  1829.             {
  1830.               curr_user->host.str= (char *) "%";
  1831.               curr_user->host.length= 1;
  1832.             }
  1833.             curr_user->password.str=NullS;
  1834.     lex->grant_user= curr_user;
  1835.   }
  1836.     break;
  1837.   case 1143:
  1838. #line 4521 "sql_yacc.yy"
  1839.     {
  1840.     LEX *lex=Lex;
  1841.     lex->sql_command= SQLCOM_SHOW_GRANTS;
  1842.     lex->grant_user=yyvsp[0].lex_user;
  1843.     lex->grant_user->password.str=NullS;
  1844.   }
  1845.     break;
  1846.   case 1144:
  1847. #line 4528 "sql_yacc.yy"
  1848.     {
  1849.     Lex->sql_command=SQLCOM_SHOW_CREATE_DB;
  1850.     Lex->create_info.options=yyvsp[-1].num;
  1851.     Lex->name=yyvsp[0].lex_str.str;
  1852.   }
  1853.     break;
  1854.   case 1145:
  1855. #line 4534 "sql_yacc.yy"
  1856.     {
  1857.     Lex->sql_command = SQLCOM_SHOW_CREATE;
  1858.     if (!Select->add_table_to_list(YYTHD, yyvsp[0].table, NULL,0))
  1859.       YYABORT;
  1860.   }
  1861.     break;
  1862.   case 1146:
  1863. #line 4540 "sql_yacc.yy"
  1864.     {
  1865.     Lex->sql_command = SQLCOM_SHOW_MASTER_STAT;
  1866.           }
  1867.     break;
  1868.   case 1147:
  1869. #line 4544 "sql_yacc.yy"
  1870.     {
  1871.     Lex->sql_command = SQLCOM_SHOW_SLAVE_STAT;
  1872.           }
  1873.     break;
  1874.   case 1148:
  1875. #line 4550 "sql_yacc.yy"
  1876.     {
  1877.     switch (Lex->create_info.db_type) {
  1878.     case DB_TYPE_NDBCLUSTER:
  1879.       Lex->sql_command = SQLCOM_SHOW_NDBCLUSTER_STATUS;
  1880.       break;
  1881.     case DB_TYPE_INNODB:
  1882.       Lex->sql_command = SQLCOM_SHOW_INNODB_STATUS;
  1883.       break;
  1884.     default:
  1885.       net_printf(YYTHD, ER_NOT_SUPPORTED_YET, "STATUS");
  1886.       YYABORT;
  1887.     }
  1888.   }
  1889.     break;
  1890.   case 1149:
  1891. #line 4564 "sql_yacc.yy"
  1892.     {
  1893.     switch (Lex->create_info.db_type) {
  1894.     case DB_TYPE_BERKELEY_DB:
  1895.       Lex->sql_command = SQLCOM_SHOW_LOGS;
  1896.       break;
  1897.     default:
  1898.       net_printf(YYTHD, ER_NOT_SUPPORTED_YET, "LOGS");
  1899.       YYABORT;
  1900.     }
  1901.   }
  1902.     break;
  1903.   case 1154:
  1904. #line 4584 "sql_yacc.yy"
  1905.     { yyval.simple_string= 0; }
  1906.     break;
  1907.   case 1155:
  1908. #line 4585 "sql_yacc.yy"
  1909.     { yyval.simple_string= yyvsp[0].lex_str.str; }
  1910.     break;
  1911.   case 1157:
  1912. #line 4590 "sql_yacc.yy"
  1913.     { Lex->wild=  new (YYTHD->mem_root) String(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length,
  1914.                                                       system_charset_info); }
  1915.     break;
  1916.   case 1158:
  1917. #line 4594 "sql_yacc.yy"
  1918.     { Lex->verbose=0; }
  1919.     break;
  1920.   case 1159:
  1921. #line 4595 "sql_yacc.yy"
  1922.     { Lex->verbose=1; }
  1923.     break;
  1924.   case 1162:
  1925. #line 4602 "sql_yacc.yy"
  1926.     { Lex->mi.log_file_name = 0; }
  1927.     break;
  1928.   case 1163:
  1929. #line 4603 "sql_yacc.yy"
  1930.     { Lex->mi.log_file_name = yyvsp[0].lex_str.str; }
  1931.     break;
  1932.   case 1164:
  1933. #line 4606 "sql_yacc.yy"
  1934.     { Lex->mi.pos = 4; /* skip magic number */ }
  1935.     break;
  1936.   case 1165:
  1937. #line 4607 "sql_yacc.yy"
  1938.     { Lex->mi.pos = yyvsp[0].ulonglong_number; }
  1939.     break;
  1940.   case 1166:
  1941. #line 4613 "sql_yacc.yy"
  1942.     {
  1943.   LEX *lex=Lex;
  1944.   lex->wild=0;
  1945.   lex->verbose=0;
  1946.   lex->sql_command=SQLCOM_SHOW_FIELDS;
  1947.   if (!Select->add_table_to_list(lex->thd, yyvsp[0].table, NULL,0))
  1948.     YYABORT;
  1949. }
  1950.     break;
  1951.   case 1167:
  1952. #line 4621 "sql_yacc.yy"
  1953.     {}
  1954.     break;
  1955.   case 1168:
  1956. #line 4623 "sql_yacc.yy"
  1957.     { Lex->describe|= DESCRIBE_NORMAL; }
  1958.     break;
  1959.   case 1169:
  1960. #line 4625 "sql_yacc.yy"
  1961.     {
  1962.     LEX *lex=Lex;
  1963.     lex->select_lex.options|= SELECT_DESCRIBE;
  1964.   }
  1965.     break;
  1966.   case 1172:
  1967. #line 4636 "sql_yacc.yy"
  1968.     {}
  1969.     break;
  1970.   case 1173:
  1971. #line 4637 "sql_yacc.yy"
  1972.     { Lex->describe|= DESCRIBE_EXTENDED; }
  1973.     break;
  1974.   case 1174:
  1975. #line 4641 "sql_yacc.yy"
  1976.     {}
  1977.     break;
  1978.   case 1175:
  1979. #line 4642 "sql_yacc.yy"
  1980.     { Lex->wild= yyvsp[0].string; }
  1981.     break;
  1982.   case 1176:
  1983. #line 4644 "sql_yacc.yy"
  1984.     { Lex->wild= new (YYTHD->mem_root) String((const char*) yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,system_charset_info); }
  1985.     break;
  1986.   case 1177:
  1987. #line 4651 "sql_yacc.yy"
  1988.     {
  1989.   LEX *lex=Lex;
  1990.   lex->sql_command= SQLCOM_FLUSH; lex->type=0;
  1991.           lex->no_write_to_binlog= yyvsp[0].num;
  1992. }
  1993.     break;
  1994.   case 1178:
  1995. #line 4657 "sql_yacc.yy"
  1996.     {}
  1997.     break;
  1998.   case 1181:
  1999. #line 4665 "sql_yacc.yy"
  2000.     { Lex->type|= REFRESH_TABLES; }
  2001.     break;
  2002.   case 1182:
  2003. #line 4665 "sql_yacc.yy"
  2004.     {}
  2005.     break;
  2006.   case 1183:
  2007. #line 4666 "sql_yacc.yy"
  2008.     { Lex->type|= REFRESH_TABLES | REFRESH_READ_LOCK; }
  2009.     break;
  2010.   case 1184:
  2011. #line 4667 "sql_yacc.yy"
  2012.     { Lex->type|= REFRESH_QUERY_CACHE_FREE; }
  2013.     break;
  2014.   case 1185:
  2015. #line 4668 "sql_yacc.yy"
  2016.     { Lex->type|= REFRESH_HOSTS; }
  2017.     break;
  2018.   case 1186:
  2019. #line 4669 "sql_yacc.yy"
  2020.     { Lex->type|= REFRESH_GRANT; }
  2021.     break;
  2022.   case 1187:
  2023. #line 4670 "sql_yacc.yy"
  2024.     { Lex->type|= REFRESH_LOG; }
  2025.     break;
  2026.   case 1188:
  2027. #line 4671 "sql_yacc.yy"
  2028.     { Lex->type|= REFRESH_STATUS; }
  2029.     break;
  2030.   case 1189:
  2031. #line 4672 "sql_yacc.yy"
  2032.     { Lex->type|= REFRESH_SLAVE; }
  2033.     break;
  2034.   case 1190:
  2035. #line 4673 "sql_yacc.yy"
  2036.     { Lex->type|= REFRESH_MASTER; }
  2037.     break;
  2038.   case 1191:
  2039. #line 4674 "sql_yacc.yy"
  2040.     { Lex->type|= REFRESH_DES_KEY_FILE; }
  2041.     break;
  2042.   case 1192:
  2043. #line 4675 "sql_yacc.yy"
  2044.     { Lex->type|= REFRESH_USER_RESOURCES; }
  2045.     break;
  2046.   case 1193:
  2047. #line 4678 "sql_yacc.yy"
  2048.     {;}
  2049.     break;
  2050.   case 1194:
  2051. #line 4679 "sql_yacc.yy"
  2052.     {;}
  2053.     break;
  2054.   case 1195:
  2055. #line 4683 "sql_yacc.yy"
  2056.     {
  2057.   LEX *lex=Lex;
  2058.   lex->sql_command= SQLCOM_RESET; lex->type=0;
  2059. }
  2060.     break;
  2061.   case 1196:
  2062. #line 4687 "sql_yacc.yy"
  2063.     {}
  2064.     break;
  2065.   case 1199:
  2066. #line 4695 "sql_yacc.yy"
  2067.     { Lex->type|= REFRESH_SLAVE; }
  2068.     break;
  2069.   case 1200:
  2070. #line 4696 "sql_yacc.yy"
  2071.     { Lex->type|= REFRESH_MASTER; }
  2072.     break;
  2073.   case 1201:
  2074. #line 4697 "sql_yacc.yy"
  2075.     { Lex->type|= REFRESH_QUERY_CACHE;}
  2076.     break;
  2077.   case 1202:
  2078. #line 4701 "sql_yacc.yy"
  2079.     {
  2080.   LEX *lex=Lex;
  2081.   lex->type=0;
  2082. }
  2083.     break;
  2084.   case 1203:
  2085. #line 4705 "sql_yacc.yy"
  2086.     {}
  2087.     break;
  2088.   case 1205:
  2089. #line 4714 "sql_yacc.yy"
  2090.     {
  2091.    Lex->sql_command = SQLCOM_PURGE;
  2092.    Lex->to_log = yyvsp[0].lex_str.str;
  2093.         }
  2094.     break;
  2095.   case 1206:
  2096. #line 4719 "sql_yacc.yy"
  2097.     {
  2098.   if (!yyvsp[0].item)
  2099.     /* Can only be an out of memory situation, no need for a message */
  2100.     YYABORT;
  2101.   if (yyvsp[0].item->fix_fields(Lex->thd, 0, &yyvsp[0].item) || yyvsp[0].item->check_cols(1))
  2102.   {
  2103.     net_printf(Lex->thd, ER_WRONG_ARGUMENTS, "PURGE LOGS BEFORE");
  2104.     YYABORT;
  2105.   }
  2106.   Item *tmp= new Item_func_unix_timestamp(yyvsp[0].item);
  2107.   /*
  2108.     it is OK only emulate fix_fieds, because we need only
  2109.             value of constant
  2110.   */
  2111.   tmp->quick_fix_field();
  2112.   Lex->sql_command = SQLCOM_PURGE_BEFORE;
  2113.   Lex->purge_time= (ulong) tmp->val_int();
  2114. }
  2115.     break;
  2116.   case 1207:
  2117. #line 4743 "sql_yacc.yy"
  2118.     {
  2119.   LEX *lex=Lex;
  2120.   if (yyvsp[0].item->fix_fields(lex->thd, 0, &yyvsp[0].item) || yyvsp[0].item->check_cols(1))
  2121.   {
  2122.     send_error(lex->thd, ER_SET_CONSTANTS_ONLY);
  2123.     YYABORT;
  2124.   }
  2125.           lex->sql_command=SQLCOM_KILL;
  2126.   lex->thread_id= (ulong) yyvsp[0].item->val_int();
  2127. }
  2128.     break;
  2129.   case 1208:
  2130. #line 4757 "sql_yacc.yy"
  2131.     {
  2132.   LEX *lex=Lex;
  2133.   lex->sql_command=SQLCOM_CHANGE_DB;
  2134.   lex->select_lex.db= yyvsp[0].lex_str.str;
  2135. }
  2136.     break;
  2137.   case 1209:
  2138. #line 4766 "sql_yacc.yy"
  2139.     {
  2140.   LEX *lex=Lex;
  2141.   lex->sql_command= SQLCOM_LOAD;
  2142.   lex->lock_option= yyvsp[-3].lock_type;
  2143.   lex->local_file=  yyvsp[-2].num;
  2144.   lex->duplicates= DUP_ERROR;
  2145.   lex->ignore= 0;
  2146.   if (!(lex->exchange= new sql_exchange(yyvsp[0].lex_str.str,0)))
  2147.     YYABORT;
  2148.   lex->field_list.empty();
  2149. }
  2150.     break;
  2151.   case 1210:
  2152. #line 4779 "sql_yacc.yy"
  2153.     {
  2154.   if (!Select->add_table_to_list(YYTHD, yyvsp[-4].table, NULL, TL_OPTION_UPDATING))
  2155.     YYABORT;
  2156. }
  2157.     break;
  2158.   case 1211:
  2159. #line 4785 "sql_yacc.yy"
  2160.     {
  2161.   Lex->sql_command = SQLCOM_LOAD_MASTER_TABLE;
  2162.   if (!Select->add_table_to_list(YYTHD, yyvsp[-2].table, NULL, TL_OPTION_UPDATING))
  2163.     YYABORT;
  2164.         }
  2165.     break;
  2166.   case 1212:
  2167. #line 4793 "sql_yacc.yy"
  2168.     {
  2169.   Lex->sql_command = SQLCOM_LOAD_MASTER_DATA;
  2170.         }
  2171.     break;
  2172.   case 1213:
  2173. #line 4798 "sql_yacc.yy"
  2174.     { yyval.num=0;}
  2175.     break;
  2176.   case 1214:
  2177. #line 4799 "sql_yacc.yy"
  2178.     { yyval.num=1;}
  2179.     break;
  2180.   case 1215:
  2181. #line 4802 "sql_yacc.yy"
  2182.     { yyval.lock_type= YYTHD->update_lock_default; }
  2183.     break;
  2184.   case 1216:
  2185. #line 4803 "sql_yacc.yy"
  2186.     { yyval.lock_type= TL_WRITE_CONCURRENT_INSERT ; }
  2187.     break;
  2188.   case 1217:
  2189. #line 4804 "sql_yacc.yy"
  2190.     { yyval.lock_type= TL_WRITE_LOW_PRIORITY; }
  2191.     break;
  2192.   case 1218:
  2193. #line 4808 "sql_yacc.yy"
  2194.     { Lex->duplicates=DUP_ERROR; }
  2195.     break;
  2196.   case 1219:
  2197. #line 4809 "sql_yacc.yy"
  2198.     { Lex->duplicates=DUP_REPLACE; }
  2199.     break;
  2200.   case 1220:
  2201. #line 4810 "sql_yacc.yy"
  2202.     { Lex->ignore= 1; }
  2203.     break;
  2204.   case 1225:
  2205. #line 4822 "sql_yacc.yy"
  2206.     {
  2207.             DBUG_ASSERT(Lex->exchange);
  2208.             Lex->exchange->field_term= yyvsp[0].string;
  2209.           }
  2210.     break;
  2211.   case 1226:
  2212. #line 4827 "sql_yacc.yy"
  2213.     {
  2214.             LEX *lex= Lex;
  2215.             DBUG_ASSERT(lex->exchange);
  2216.             lex->exchange->enclosed= yyvsp[0].string;
  2217.             lex->exchange->opt_enclosed= 1;
  2218.   }
  2219.     break;
  2220.   case 1227:
  2221. #line 4834 "sql_yacc.yy"
  2222.     {
  2223.             DBUG_ASSERT(Lex->exchange);
  2224.             Lex->exchange->enclosed= yyvsp[0].string;
  2225.           }
  2226.     break;
  2227.   case 1228:
  2228. #line 4839 "sql_yacc.yy"
  2229.     {
  2230.             DBUG_ASSERT(Lex->exchange);
  2231.             Lex->exchange->escaped= yyvsp[0].string;
  2232.           }
  2233.     break;
  2234.   case 1233:
  2235. #line 4854 "sql_yacc.yy"
  2236.     {
  2237.             DBUG_ASSERT(Lex->exchange);
  2238.             Lex->exchange->line_term= yyvsp[0].string;
  2239.           }
  2240.     break;
  2241.   case 1234:
  2242. #line 4859 "sql_yacc.yy"
  2243.     {
  2244.             DBUG_ASSERT(Lex->exchange);
  2245.             Lex->exchange->line_start= yyvsp[0].string;
  2246.           }
  2247.     break;
  2248.   case 1236:
  2249. #line 4867 "sql_yacc.yy"
  2250.     {
  2251.             DBUG_ASSERT(Lex->exchange);
  2252.             Lex->exchange->skip_lines= atol(yyvsp[-1].lex_str.str);
  2253.           }
  2254.     break;
  2255.   case 1237:
  2256. #line 4876 "sql_yacc.yy"
  2257.     {
  2258.   THD *thd= YYTHD;
  2259.   yyval.item = new Item_string(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,thd->variables.collation_connection);
  2260. }
  2261.     break;
  2262.   case 1238:
  2263. #line 4881 "sql_yacc.yy"
  2264.     { yyval.item=  new Item_string(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,national_charset_info); }
  2265.     break;
  2266.   case 1239:
  2267. #line 4883 "sql_yacc.yy"
  2268.     { yyval.item = new Item_string(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,Lex->charset); }
  2269.     break;
  2270.   case 1240:
  2271. #line 4885 "sql_yacc.yy"
  2272.     { ((Item_string*) yyvsp[-1].item)->append(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length); }
  2273.     break;
  2274.   case 1241:
  2275. #line 4890 "sql_yacc.yy"
  2276.     { yyval.string=  new (YYTHD->mem_root) String(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,YYTHD->variables.collation_connection); }
  2277.     break;
  2278.   case 1242:
  2279. #line 4892 "sql_yacc.yy"
  2280.     {
  2281.     Item *tmp = new Item_varbinary(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length);
  2282.     /*
  2283.       it is OK only emulate fix_fieds, because we need only
  2284.               value of constant
  2285.     */
  2286.     yyval.string= tmp ?
  2287.       tmp->quick_fix_field(), tmp->val_str((String*) 0) :
  2288.       (String*) 0;
  2289.   }
  2290.     break;
  2291.   case 1243:
  2292. #line 4906 "sql_yacc.yy"
  2293.     {
  2294.           THD *thd=YYTHD;
  2295.   LEX *lex= thd->lex;
  2296.           Item_param *item= new Item_param((uint) (lex->tok_start -
  2297.                                                    (uchar *) thd->query));
  2298.           if (!(yyval.item= item) || lex->param_list.push_back(item))
  2299.           {
  2300.             send_error(thd, ER_OUT_OF_RESOURCES);
  2301.             YYABORT;
  2302.           }
  2303.         }
  2304.     break;
  2305.   case 1244:
  2306. #line 4920 "sql_yacc.yy"
  2307.     { yyval.item = yyvsp[0].item; }
  2308.     break;
  2309.   case 1245:
  2310. #line 4921 "sql_yacc.yy"
  2311.     { yyval.item = yyvsp[0].item_num; }
  2312.     break;
  2313.   case 1246:
  2314. #line 4923 "sql_yacc.yy"
  2315.     {
  2316.     yyvsp[0].item_num->max_length++;
  2317.     yyval.item= yyvsp[0].item_num->neg();
  2318.   }
  2319.     break;
  2320.   case 1247:
  2321. #line 4931 "sql_yacc.yy"
  2322.     { yyval.item = yyvsp[0].item; }
  2323.     break;
  2324.   case 1248:
  2325. #line 4932 "sql_yacc.yy"
  2326.     { yyval.item = yyvsp[0].item_num; }
  2327.     break;
  2328.   case 1249:
  2329. #line 4933 "sql_yacc.yy"
  2330.     { yyval.item = new Item_null();
  2331.   Lex->next_state=MY_LEX_OPERATOR_OR_IDENT;}
  2332.     break;
  2333.   case 1250:
  2334. #line 4935 "sql_yacc.yy"
  2335.     { yyval.item= new Item_int((char*) "FALSE",0,1); }
  2336.     break;
  2337.   case 1251:
  2338. #line 4936 "sql_yacc.yy"
  2339.     { yyval.item= new Item_int((char*) "TRUE",1,1); }
  2340.     break;
  2341.   case 1252: