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

MySQL数据库

开发平台:

Visual C++

  1. #line 4937 "sql_yacc.yy"
  2.     { yyval.item = new Item_varbinary(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length);}
  3.     break;
  4.   case 1253:
  5. #line 4939 "sql_yacc.yy"
  6.     {
  7.     Item *tmp= new Item_varbinary(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length);
  8.     /*
  9.       it is OK only emulate fix_fieds, because we need only
  10.               value of constant
  11.     */
  12.     String *str= tmp ?
  13.       tmp->quick_fix_field(), tmp->val_str((String*) 0) :
  14.       (String*) 0;
  15.     yyval.item= new Item_string(str ? str->ptr() : "",
  16. str ? str->length() : 0,
  17. Lex->charset);
  18.   }
  19.     break;
  20.   case 1254:
  21. #line 4952 "sql_yacc.yy"
  22.     { yyval.item = yyvsp[0].item; }
  23.     break;
  24.   case 1255:
  25. #line 4953 "sql_yacc.yy"
  26.     { yyval.item = yyvsp[0].item; }
  27.     break;
  28.   case 1256:
  29. #line 4954 "sql_yacc.yy"
  30.     { yyval.item = yyvsp[0].item; }
  31.     break;
  32.   case 1257:
  33. #line 4957 "sql_yacc.yy"
  34.     { int error; yyval.item_num = new Item_int(yyvsp[0].lex_str.str, (longlong) my_strtoll10(yyvsp[0].lex_str.str, NULL, &error), yyvsp[0].lex_str.length); }
  35.     break;
  36.   case 1258:
  37. #line 4958 "sql_yacc.yy"
  38.     { int error; yyval.item_num = new Item_int(yyvsp[0].lex_str.str, (longlong) my_strtoll10(yyvsp[0].lex_str.str, NULL, &error), yyvsp[0].lex_str.length); }
  39.     break;
  40.   case 1259:
  41. #line 4959 "sql_yacc.yy"
  42.     { yyval.item_num = new Item_uint(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length); }
  43.     break;
  44.   case 1260:
  45. #line 4960 "sql_yacc.yy"
  46.     { yyval.item_num = new Item_real(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length); }
  47.     break;
  48.   case 1261:
  49. #line 4961 "sql_yacc.yy"
  50.     { yyval.item_num = new Item_float(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length); }
  51.     break;
  52.   case 1262:
  53. #line 4969 "sql_yacc.yy"
  54.     { yyval.item=yyvsp[0].item; }
  55.     break;
  56.   case 1263:
  57. #line 4970 "sql_yacc.yy"
  58.     { yyval.item=yyvsp[0].item; }
  59.     break;
  60.   case 1264:
  61. #line 4974 "sql_yacc.yy"
  62.     {
  63.   yyval.item = new Item_field(NullS,yyvsp[-2].lex_str.str,"*");
  64.   Lex->current_select->with_wild++;
  65. }
  66.     break;
  67.   case 1265:
  68. #line 4979 "sql_yacc.yy"
  69.     {
  70.   yyval.item = new Item_field((YYTHD->client_capabilities &
  71.          CLIENT_NO_SCHEMA ? NullS : yyvsp[-4].lex_str.str),
  72.      yyvsp[-2].lex_str.str,"*");
  73.   Lex->current_select->with_wild++;
  74. }
  75.     break;
  76.   case 1266:
  77. #line 4988 "sql_yacc.yy"
  78.     { yyval.item=yyvsp[0].item; }
  79.     break;
  80.   case 1267:
  81. #line 4992 "sql_yacc.yy"
  82.     {
  83.   SELECT_LEX *sel=Select;
  84.   yyval.item= (sel->parsing_place != IN_HAVING ||
  85.        sel->get_in_sum_expr() > 0) ?
  86.               (Item*) new Item_field(NullS,NullS,yyvsp[0].lex_str.str) :
  87.       (Item*) new Item_ref(NullS, NullS, yyvsp[0].lex_str.str);
  88. }
  89.     break;
  90.   case 1268:
  91. #line 5000 "sql_yacc.yy"
  92.     {
  93.   THD *thd= YYTHD;
  94.   LEX *lex= thd->lex;
  95.   SELECT_LEX *sel= lex->current_select;
  96.   if (sel->no_table_names_allowed)
  97.   {
  98.     my_printf_error(ER_TABLENAME_NOT_ALLOWED_HERE,
  99.     ER(ER_TABLENAME_NOT_ALLOWED_HERE),
  100.     MYF(0), yyvsp[-2].lex_str.str, thd->where);
  101.   }
  102.   yyval.item= (sel->parsing_place != IN_HAVING ||
  103.        sel->get_in_sum_expr() > 0) ?
  104.       (Item*) new Item_field(NullS,yyvsp[-2].lex_str.str,yyvsp[0].lex_str.str) :
  105.       (Item*) new Item_ref(NullS, yyvsp[-2].lex_str.str, yyvsp[0].lex_str.str);
  106. }
  107.     break;
  108.   case 1269:
  109. #line 5016 "sql_yacc.yy"
  110.     {
  111.   THD *thd= YYTHD;
  112.   LEX *lex= thd->lex;
  113.   SELECT_LEX *sel= lex->current_select;
  114.   if (sel->no_table_names_allowed)
  115.   {
  116.     my_printf_error(ER_TABLENAME_NOT_ALLOWED_HERE,
  117.     ER(ER_TABLENAME_NOT_ALLOWED_HERE),
  118.     MYF(0), yyvsp[-2].lex_str.str, thd->where);
  119.   }
  120.   yyval.item= (sel->parsing_place != IN_HAVING ||
  121.        sel->get_in_sum_expr() > 0) ?
  122.       (Item*) new Item_field(NullS,yyvsp[-2].lex_str.str,yyvsp[0].lex_str.str) :
  123.               (Item*) new Item_ref(NullS, yyvsp[-2].lex_str.str, yyvsp[0].lex_str.str);
  124. }
  125.     break;
  126.   case 1270:
  127. #line 5032 "sql_yacc.yy"
  128.     {
  129.   THD *thd= YYTHD;
  130.   LEX *lex= thd->lex;
  131.   SELECT_LEX *sel= lex->current_select;
  132.   if (sel->no_table_names_allowed)
  133.   {
  134.     my_printf_error(ER_TABLENAME_NOT_ALLOWED_HERE,
  135.     ER(ER_TABLENAME_NOT_ALLOWED_HERE),
  136.     MYF(0), yyvsp[-2].lex_str.str, thd->where);
  137.   }
  138.   yyval.item= (sel->parsing_place != IN_HAVING ||
  139.        sel->get_in_sum_expr() > 0) ?
  140.       (Item*) new Item_field((YYTHD->client_capabilities &
  141.       CLIENT_NO_SCHEMA ? NullS : yyvsp[-4].lex_str.str),
  142.      yyvsp[-2].lex_str.str, yyvsp[0].lex_str.str) :
  143.       (Item*) new Item_ref((YYTHD->client_capabilities &
  144.     CLIENT_NO_SCHEMA ? NullS : yyvsp[-4].lex_str.str),
  145.                                    yyvsp[-2].lex_str.str, yyvsp[0].lex_str.str);
  146. }
  147.     break;
  148.   case 1271:
  149. #line 5054 "sql_yacc.yy"
  150.     { yyval.lex_str=yyvsp[0].lex_str;}
  151.     break;
  152.   case 1272:
  153. #line 5056 "sql_yacc.yy"
  154.     {
  155.             TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
  156.             if (my_strcasecmp(table_alias_charset, yyvsp[-4].lex_str.str, table->db))
  157.             {
  158.               net_printf(YYTHD, ER_WRONG_DB_NAME, yyvsp[-4].lex_str.str);
  159.               YYABORT;
  160.             }
  161.             if (my_strcasecmp(table_alias_charset, yyvsp[-2].lex_str.str, table->real_name))
  162.             {
  163.               net_printf(YYTHD, ER_WRONG_TABLE_NAME, yyvsp[-2].lex_str.str);
  164.               YYABORT;
  165.             }
  166.             yyval.lex_str=yyvsp[0].lex_str;
  167.           }
  168.     break;
  169.   case 1273:
  170. #line 5071 "sql_yacc.yy"
  171.     {
  172.             TABLE_LIST *table= (TABLE_LIST*) Select->table_list.first;
  173.             if (my_strcasecmp(table_alias_charset, yyvsp[-2].lex_str.str, table->alias))
  174.             {
  175.               net_printf(YYTHD, ER_WRONG_TABLE_NAME, yyvsp[-2].lex_str.str);
  176.               YYABORT;
  177.             }
  178.             yyval.lex_str=yyvsp[0].lex_str;
  179.           }
  180.     break;
  181.   case 1274:
  182. #line 5080 "sql_yacc.yy"
  183.     { yyval.lex_str=yyvsp[0].lex_str;}
  184.     break;
  185.   case 1275:
  186. #line 5083 "sql_yacc.yy"
  187.     { yyval.table=new Table_ident(yyvsp[0].lex_str); }
  188.     break;
  189.   case 1276:
  190. #line 5084 "sql_yacc.yy"
  191.     { yyval.table=new Table_ident(YYTHD, yyvsp[-2].lex_str,yyvsp[0].lex_str,0);}
  192.     break;
  193.   case 1277:
  194. #line 5085 "sql_yacc.yy"
  195.     { yyval.table=new Table_ident(yyvsp[0].lex_str);}
  196.     break;
  197.   case 1278:
  198. #line 5089 "sql_yacc.yy"
  199.     { LEX_STRING db={(char*) any_db,3}; yyval.table=new Table_ident(YYTHD, db,yyvsp[0].lex_str,0); }
  200.     break;
  201.   case 1279:
  202. #line 5093 "sql_yacc.yy"
  203.     { yyval.lex_str= yyvsp[0].lex_str; }
  204.     break;
  205.   case 1280:
  206. #line 5095 "sql_yacc.yy"
  207.     {
  208.     THD *thd= YYTHD;
  209.     if (thd->charset_is_system_charset)
  210.             {
  211.               CHARSET_INFO *cs= system_charset_info;
  212.               int dummy_error;
  213.               uint wlen= cs->cset->well_formed_len(cs, yyvsp[0].lex_str.str,
  214.                                                    yyvsp[0].lex_str.str+yyvsp[0].lex_str.length,
  215.                                                    yyvsp[0].lex_str.length, &dummy_error);
  216.               if (wlen < yyvsp[0].lex_str.length)
  217.               {
  218.                 net_printf(YYTHD, ER_INVALID_CHARACTER_STRING, cs->csname,
  219.                            yyvsp[0].lex_str.str + wlen);
  220.                 YYABORT;
  221.               }
  222.       yyval.lex_str= yyvsp[0].lex_str;
  223.             }
  224.     else
  225.       thd->convert_string(&yyval.lex_str, system_charset_info,
  226.   yyvsp[0].lex_str.str, yyvsp[0].lex_str.length, thd->charset());
  227.   }
  228.     break;
  229.   case 1281:
  230. #line 5120 "sql_yacc.yy"
  231.     {
  232.   THD *thd= YYTHD;
  233.   if (thd->charset_is_system_charset)
  234.     yyval.lex_str= yyvsp[0].lex_str;
  235.   else
  236.     thd->convert_string(&yyval.lex_str, system_charset_info,
  237. yyvsp[0].lex_str.str, yyvsp[0].lex_str.length, thd->charset());
  238. }
  239.     break;
  240.   case 1282:
  241. #line 5132 "sql_yacc.yy"
  242.     {
  243.   THD *thd= YYTHD;
  244.   if (thd->charset_is_collation_connection)
  245.     yyval.lex_str= yyvsp[0].lex_str;
  246.   else
  247.     thd->convert_string(&yyval.lex_str, thd->variables.collation_connection,
  248. yyvsp[0].lex_str.str, yyvsp[0].lex_str.length, thd->charset());
  249. }
  250.     break;
  251.   case 1283:
  252. #line 5144 "sql_yacc.yy"
  253.     { yyval.lex_str=yyvsp[0].lex_str; }
  254.     break;
  255.   case 1284:
  256. #line 5146 "sql_yacc.yy"
  257.     {
  258.   THD *thd= YYTHD;
  259.   yyval.lex_str.str=    thd->strmake(yyvsp[0].symbol.str, yyvsp[0].symbol.length);
  260.   yyval.lex_str.length= yyvsp[0].symbol.length;
  261. }
  262.     break;
  263.   case 1285:
  264. #line 5154 "sql_yacc.yy"
  265.     { yyval.lex_str=yyvsp[0].lex_str;}
  266.     break;
  267.   case 1286:
  268. #line 5155 "sql_yacc.yy"
  269.     { yyval.lex_str=yyvsp[0].lex_str;}
  270.     break;
  271.   case 1287:
  272. #line 5156 "sql_yacc.yy"
  273.     { yyval.lex_str=yyvsp[0].lex_str;}
  274.     break;
  275.   case 1288:
  276. #line 5160 "sql_yacc.yy"
  277.     {
  278.   THD *thd= YYTHD;
  279.   if (!(yyval.lex_user=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
  280.     YYABORT;
  281.   yyval.lex_user->user = yyvsp[0].lex_str;
  282.   yyval.lex_user->host.str= (char *) "%";
  283.   yyval.lex_user->host.length= 1;
  284. }
  285.     break;
  286.   case 1289:
  287. #line 5169 "sql_yacc.yy"
  288.     {
  289.     THD *thd= YYTHD;
  290.     if (!(yyval.lex_user=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
  291.       YYABORT;
  292.     yyval.lex_user->user = yyvsp[-2].lex_str; yyval.lex_user->host=yyvsp[0].lex_str;
  293.   }
  294.     break;
  295.   case 1290:
  296. #line 5176 "sql_yacc.yy"
  297.     {
  298.           THD *thd= YYTHD;
  299.           if (!(yyval.lex_user=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
  300.             YYABORT;
  301.           yyval.lex_user->user.str= thd->priv_user;
  302.           yyval.lex_user->user.length= strlen(thd->priv_user);
  303.           if (*thd->priv_host != 0)
  304.           {
  305.             yyval.lex_user->host.str= thd->priv_host;
  306.             yyval.lex_user->host.length= strlen(thd->priv_host);
  307.           }
  308.           else
  309.           {
  310.             yyval.lex_user->host.str= (char *) "%";
  311.             yyval.lex_user->host.length= 1;
  312.           }
  313. }
  314.     break;
  315.   case 1291:
  316. #line 5197 "sql_yacc.yy"
  317.     {}
  318.     break;
  319.   case 1292:
  320. #line 5198 "sql_yacc.yy"
  321.     {}
  322.     break;
  323.   case 1293:
  324. #line 5199 "sql_yacc.yy"
  325.     {}
  326.     break;
  327.   case 1294:
  328. #line 5200 "sql_yacc.yy"
  329.     {}
  330.     break;
  331.   case 1295:
  332. #line 5201 "sql_yacc.yy"
  333.     {}
  334.     break;
  335.   case 1296:
  336. #line 5202 "sql_yacc.yy"
  337.     {}
  338.     break;
  339.   case 1297:
  340. #line 5203 "sql_yacc.yy"
  341.     {}
  342.     break;
  343.   case 1298:
  344. #line 5204 "sql_yacc.yy"
  345.     {}
  346.     break;
  347.   case 1299:
  348. #line 5205 "sql_yacc.yy"
  349.     {}
  350.     break;
  351.   case 1300:
  352. #line 5206 "sql_yacc.yy"
  353.     {}
  354.     break;
  355.   case 1301:
  356. #line 5207 "sql_yacc.yy"
  357.     {}
  358.     break;
  359.   case 1302:
  360. #line 5208 "sql_yacc.yy"
  361.     {}
  362.     break;
  363.   case 1303:
  364. #line 5209 "sql_yacc.yy"
  365.     {}
  366.     break;
  367.   case 1304:
  368. #line 5210 "sql_yacc.yy"
  369.     {}
  370.     break;
  371.   case 1305:
  372. #line 5211 "sql_yacc.yy"
  373.     {}
  374.     break;
  375.   case 1306:
  376. #line 5212 "sql_yacc.yy"
  377.     {}
  378.     break;
  379.   case 1307:
  380. #line 5213 "sql_yacc.yy"
  381.     {}
  382.     break;
  383.   case 1308:
  384. #line 5214 "sql_yacc.yy"
  385.     {}
  386.     break;
  387.   case 1309:
  388. #line 5215 "sql_yacc.yy"
  389.     {}
  390.     break;
  391.   case 1310:
  392. #line 5216 "sql_yacc.yy"
  393.     {}
  394.     break;
  395.   case 1311:
  396. #line 5217 "sql_yacc.yy"
  397.     {}
  398.     break;
  399.   case 1312:
  400. #line 5218 "sql_yacc.yy"
  401.     {}
  402.     break;
  403.   case 1313:
  404. #line 5219 "sql_yacc.yy"
  405.     {}
  406.     break;
  407.   case 1314:
  408. #line 5220 "sql_yacc.yy"
  409.     {}
  410.     break;
  411.   case 1315:
  412. #line 5221 "sql_yacc.yy"
  413.     {}
  414.     break;
  415.   case 1316:
  416. #line 5222 "sql_yacc.yy"
  417.     {}
  418.     break;
  419.   case 1317:
  420. #line 5223 "sql_yacc.yy"
  421.     {}
  422.     break;
  423.   case 1318:
  424. #line 5224 "sql_yacc.yy"
  425.     {}
  426.     break;
  427.   case 1319:
  428. #line 5225 "sql_yacc.yy"
  429.     {}
  430.     break;
  431.   case 1320:
  432. #line 5226 "sql_yacc.yy"
  433.     {}
  434.     break;
  435.   case 1321:
  436. #line 5227 "sql_yacc.yy"
  437.     {}
  438.     break;
  439.   case 1322:
  440. #line 5228 "sql_yacc.yy"
  441.     {}
  442.     break;
  443.   case 1323:
  444. #line 5229 "sql_yacc.yy"
  445.     {}
  446.     break;
  447.   case 1324:
  448. #line 5230 "sql_yacc.yy"
  449.     {}
  450.     break;
  451.   case 1325:
  452. #line 5231 "sql_yacc.yy"
  453.     {}
  454.     break;
  455.   case 1326:
  456. #line 5232 "sql_yacc.yy"
  457.     {}
  458.     break;
  459.   case 1327:
  460. #line 5233 "sql_yacc.yy"
  461.     {}
  462.     break;
  463.   case 1328:
  464. #line 5234 "sql_yacc.yy"
  465.     {}
  466.     break;
  467.   case 1329:
  468. #line 5235 "sql_yacc.yy"
  469.     {}
  470.     break;
  471.   case 1330:
  472. #line 5236 "sql_yacc.yy"
  473.     {}
  474.     break;
  475.   case 1331:
  476. #line 5237 "sql_yacc.yy"
  477.     {}
  478.     break;
  479.   case 1332:
  480. #line 5238 "sql_yacc.yy"
  481.     {}
  482.     break;
  483.   case 1333:
  484. #line 5239 "sql_yacc.yy"
  485.     {}
  486.     break;
  487.   case 1334:
  488. #line 5240 "sql_yacc.yy"
  489.     {}
  490.     break;
  491.   case 1335:
  492. #line 5241 "sql_yacc.yy"
  493.     {}
  494.     break;
  495.   case 1336:
  496. #line 5242 "sql_yacc.yy"
  497.     {}
  498.     break;
  499.   case 1337:
  500. #line 5243 "sql_yacc.yy"
  501.     {}
  502.     break;
  503.   case 1338:
  504. #line 5244 "sql_yacc.yy"
  505.     {}
  506.     break;
  507.   case 1339:
  508. #line 5245 "sql_yacc.yy"
  509.     {}
  510.     break;
  511.   case 1340:
  512. #line 5246 "sql_yacc.yy"
  513.     {}
  514.     break;
  515.   case 1341:
  516. #line 5247 "sql_yacc.yy"
  517.     {}
  518.     break;
  519.   case 1342:
  520. #line 5248 "sql_yacc.yy"
  521.     {}
  522.     break;
  523.   case 1343:
  524. #line 5249 "sql_yacc.yy"
  525.     {}
  526.     break;
  527.   case 1344:
  528. #line 5250 "sql_yacc.yy"
  529.     {}
  530.     break;
  531.   case 1345:
  532. #line 5251 "sql_yacc.yy"
  533.     {}
  534.     break;
  535.   case 1346:
  536. #line 5252 "sql_yacc.yy"
  537.     {}
  538.     break;
  539.   case 1347:
  540. #line 5253 "sql_yacc.yy"
  541.     {}
  542.     break;
  543.   case 1348:
  544. #line 5254 "sql_yacc.yy"
  545.     {}
  546.     break;
  547.   case 1349:
  548. #line 5255 "sql_yacc.yy"
  549.     {}
  550.     break;
  551.   case 1350:
  552. #line 5256 "sql_yacc.yy"
  553.     {}
  554.     break;
  555.   case 1351:
  556. #line 5257 "sql_yacc.yy"
  557.     {}
  558.     break;
  559.   case 1352:
  560. #line 5258 "sql_yacc.yy"
  561.     {}
  562.     break;
  563.   case 1353:
  564. #line 5259 "sql_yacc.yy"
  565.     {}
  566.     break;
  567.   case 1354:
  568. #line 5260 "sql_yacc.yy"
  569.     {}
  570.     break;
  571.   case 1355:
  572. #line 5261 "sql_yacc.yy"
  573.     {}
  574.     break;
  575.   case 1356:
  576. #line 5262 "sql_yacc.yy"
  577.     {}
  578.     break;
  579.   case 1357:
  580. #line 5263 "sql_yacc.yy"
  581.     {}
  582.     break;
  583.   case 1358:
  584. #line 5264 "sql_yacc.yy"
  585.     {}
  586.     break;
  587.   case 1359:
  588. #line 5265 "sql_yacc.yy"
  589.     {}
  590.     break;
  591.   case 1360:
  592. #line 5266 "sql_yacc.yy"
  593.     {}
  594.     break;
  595.   case 1361:
  596. #line 5267 "sql_yacc.yy"
  597.     {}
  598.     break;
  599.   case 1362:
  600. #line 5268 "sql_yacc.yy"
  601.     {}
  602.     break;
  603.   case 1363:
  604. #line 5269 "sql_yacc.yy"
  605.     {}
  606.     break;
  607.   case 1364:
  608. #line 5270 "sql_yacc.yy"
  609.     {}
  610.     break;
  611.   case 1365:
  612. #line 5271 "sql_yacc.yy"
  613.     {}
  614.     break;
  615.   case 1366:
  616. #line 5272 "sql_yacc.yy"
  617.     {}
  618.     break;
  619.   case 1367:
  620. #line 5273 "sql_yacc.yy"
  621.     {}
  622.     break;
  623.   case 1368:
  624. #line 5274 "sql_yacc.yy"
  625.     {}
  626.     break;
  627.   case 1369:
  628. #line 5275 "sql_yacc.yy"
  629.     {}
  630.     break;
  631.   case 1370:
  632. #line 5276 "sql_yacc.yy"
  633.     {}
  634.     break;
  635.   case 1371:
  636. #line 5277 "sql_yacc.yy"
  637.     {}
  638.     break;
  639.   case 1372:
  640. #line 5278 "sql_yacc.yy"
  641.     {}
  642.     break;
  643.   case 1373:
  644. #line 5279 "sql_yacc.yy"
  645.     {}
  646.     break;
  647.   case 1374:
  648. #line 5280 "sql_yacc.yy"
  649.     {}
  650.     break;
  651.   case 1375:
  652. #line 5281 "sql_yacc.yy"
  653.     {}
  654.     break;
  655.   case 1376:
  656. #line 5282 "sql_yacc.yy"
  657.     {}
  658.     break;
  659.   case 1377:
  660. #line 5283 "sql_yacc.yy"
  661.     {}
  662.     break;
  663.   case 1378:
  664. #line 5284 "sql_yacc.yy"
  665.     {}
  666.     break;
  667.   case 1379:
  668. #line 5285 "sql_yacc.yy"
  669.     {}
  670.     break;
  671.   case 1380:
  672. #line 5286 "sql_yacc.yy"
  673.     {}
  674.     break;
  675.   case 1381:
  676. #line 5287 "sql_yacc.yy"
  677.     {}
  678.     break;
  679.   case 1382:
  680. #line 5288 "sql_yacc.yy"
  681.     {}
  682.     break;
  683.   case 1383:
  684. #line 5289 "sql_yacc.yy"
  685.     {}
  686.     break;
  687.   case 1384:
  688. #line 5290 "sql_yacc.yy"
  689.     {}
  690.     break;
  691.   case 1385:
  692. #line 5291 "sql_yacc.yy"
  693.     {}
  694.     break;
  695.   case 1386:
  696. #line 5292 "sql_yacc.yy"
  697.     {}
  698.     break;
  699.   case 1387:
  700. #line 5293 "sql_yacc.yy"
  701.     {}
  702.     break;
  703.   case 1388:
  704. #line 5294 "sql_yacc.yy"
  705.     {}
  706.     break;
  707.   case 1389:
  708. #line 5295 "sql_yacc.yy"
  709.     {}
  710.     break;
  711.   case 1390:
  712. #line 5296 "sql_yacc.yy"
  713.     {}
  714.     break;
  715.   case 1391:
  716. #line 5297 "sql_yacc.yy"
  717.     {}
  718.     break;
  719.   case 1392:
  720. #line 5298 "sql_yacc.yy"
  721.     {}
  722.     break;
  723.   case 1393:
  724. #line 5299 "sql_yacc.yy"
  725.     {}
  726.     break;
  727.   case 1394:
  728. #line 5300 "sql_yacc.yy"
  729.     {}
  730.     break;
  731.   case 1395:
  732. #line 5301 "sql_yacc.yy"
  733.     {}
  734.     break;
  735.   case 1396:
  736. #line 5302 "sql_yacc.yy"
  737.     {}
  738.     break;
  739.   case 1397:
  740. #line 5303 "sql_yacc.yy"
  741.     {}
  742.     break;
  743.   case 1398:
  744. #line 5304 "sql_yacc.yy"
  745.     {}
  746.     break;
  747.   case 1399:
  748. #line 5305 "sql_yacc.yy"
  749.     {}
  750.     break;
  751.   case 1400:
  752. #line 5306 "sql_yacc.yy"
  753.     {}
  754.     break;
  755.   case 1401:
  756. #line 5307 "sql_yacc.yy"
  757.     {}
  758.     break;
  759.   case 1402:
  760. #line 5308 "sql_yacc.yy"
  761.     {}
  762.     break;
  763.   case 1403:
  764. #line 5309 "sql_yacc.yy"
  765.     {}
  766.     break;
  767.   case 1404:
  768. #line 5310 "sql_yacc.yy"
  769.     {}
  770.     break;
  771.   case 1405:
  772. #line 5311 "sql_yacc.yy"
  773.     {}
  774.     break;
  775.   case 1406:
  776. #line 5312 "sql_yacc.yy"
  777.     {}
  778.     break;
  779.   case 1407:
  780. #line 5313 "sql_yacc.yy"
  781.     {}
  782.     break;
  783.   case 1408:
  784. #line 5314 "sql_yacc.yy"
  785.     {}
  786.     break;
  787.   case 1409:
  788. #line 5315 "sql_yacc.yy"
  789.     {}
  790.     break;
  791.   case 1410:
  792. #line 5316 "sql_yacc.yy"
  793.     {}
  794.     break;
  795.   case 1411:
  796. #line 5317 "sql_yacc.yy"
  797.     {}
  798.     break;
  799.   case 1412:
  800. #line 5318 "sql_yacc.yy"
  801.     {}
  802.     break;
  803.   case 1413:
  804. #line 5319 "sql_yacc.yy"
  805.     {}
  806.     break;
  807.   case 1414:
  808. #line 5320 "sql_yacc.yy"
  809.     {}
  810.     break;
  811.   case 1415:
  812. #line 5321 "sql_yacc.yy"
  813.     {}
  814.     break;
  815.   case 1416:
  816. #line 5322 "sql_yacc.yy"
  817.     {}
  818.     break;
  819.   case 1417:
  820. #line 5323 "sql_yacc.yy"
  821.     {}
  822.     break;
  823.   case 1418:
  824. #line 5324 "sql_yacc.yy"
  825.     {}
  826.     break;
  827.   case 1419:
  828. #line 5325 "sql_yacc.yy"
  829.     {}
  830.     break;
  831.   case 1420:
  832. #line 5326 "sql_yacc.yy"
  833.     {}
  834.     break;
  835.   case 1421:
  836. #line 5327 "sql_yacc.yy"
  837.     {}
  838.     break;
  839.   case 1422:
  840. #line 5328 "sql_yacc.yy"
  841.     {}
  842.     break;
  843.   case 1423:
  844. #line 5329 "sql_yacc.yy"
  845.     {}
  846.     break;
  847.   case 1424:
  848. #line 5330 "sql_yacc.yy"
  849.     {}
  850.     break;
  851.   case 1425:
  852. #line 5331 "sql_yacc.yy"
  853.     {}
  854.     break;
  855.   case 1426:
  856. #line 5332 "sql_yacc.yy"
  857.     {}
  858.     break;
  859.   case 1427:
  860. #line 5333 "sql_yacc.yy"
  861.     {}
  862.     break;
  863.   case 1428:
  864. #line 5334 "sql_yacc.yy"
  865.     {}
  866.     break;
  867.   case 1429:
  868. #line 5335 "sql_yacc.yy"
  869.     {}
  870.     break;
  871.   case 1430:
  872. #line 5336 "sql_yacc.yy"
  873.     {}
  874.     break;
  875.   case 1431:
  876. #line 5337 "sql_yacc.yy"
  877.     {}
  878.     break;
  879.   case 1432:
  880. #line 5338 "sql_yacc.yy"
  881.     {}
  882.     break;
  883.   case 1433:
  884. #line 5339 "sql_yacc.yy"
  885.     {}
  886.     break;
  887.   case 1434:
  888. #line 5340 "sql_yacc.yy"
  889.     {}
  890.     break;
  891.   case 1435:
  892. #line 5341 "sql_yacc.yy"
  893.     {}
  894.     break;
  895.   case 1436:
  896. #line 5342 "sql_yacc.yy"
  897.     {}
  898.     break;
  899.   case 1437:
  900. #line 5343 "sql_yacc.yy"
  901.     {}
  902.     break;
  903.   case 1438:
  904. #line 5344 "sql_yacc.yy"
  905.     {}
  906.     break;
  907.   case 1439:
  908. #line 5345 "sql_yacc.yy"
  909.     {}
  910.     break;
  911.   case 1440:
  912. #line 5346 "sql_yacc.yy"
  913.     {}
  914.     break;
  915.   case 1441:
  916. #line 5347 "sql_yacc.yy"
  917.     {}
  918.     break;
  919.   case 1442:
  920. #line 5348 "sql_yacc.yy"
  921.     {}
  922.     break;
  923.   case 1443:
  924. #line 5349 "sql_yacc.yy"
  925.     {}
  926.     break;
  927.   case 1444:
  928. #line 5350 "sql_yacc.yy"
  929.     {}
  930.     break;
  931.   case 1445:
  932. #line 5351 "sql_yacc.yy"
  933.     {}
  934.     break;
  935.   case 1446:
  936. #line 5352 "sql_yacc.yy"
  937.     {}
  938.     break;
  939.   case 1447:
  940. #line 5353 "sql_yacc.yy"
  941.     {}
  942.     break;
  943.   case 1448:
  944. #line 5354 "sql_yacc.yy"
  945.     {}
  946.     break;
  947.   case 1449:
  948. #line 5355 "sql_yacc.yy"
  949.     {}
  950.     break;
  951.   case 1450:
  952. #line 5356 "sql_yacc.yy"
  953.     {}
  954.     break;
  955.   case 1451:
  956. #line 5357 "sql_yacc.yy"
  957.     {}
  958.     break;
  959.   case 1452:
  960. #line 5358 "sql_yacc.yy"
  961.     {}
  962.     break;
  963.   case 1453:
  964. #line 5359 "sql_yacc.yy"
  965.     {}
  966.     break;
  967.   case 1454:
  968. #line 5360 "sql_yacc.yy"
  969.     {}
  970.     break;
  971.   case 1455:
  972. #line 5361 "sql_yacc.yy"
  973.     {}
  974.     break;
  975.   case 1456:
  976. #line 5362 "sql_yacc.yy"
  977.     {}
  978.     break;
  979.   case 1457:
  980. #line 5363 "sql_yacc.yy"
  981.     {}
  982.     break;
  983.   case 1458:
  984. #line 5364 "sql_yacc.yy"
  985.     {}
  986.     break;
  987.   case 1459:
  988. #line 5365 "sql_yacc.yy"
  989.     {}
  990.     break;
  991.   case 1460:
  992. #line 5366 "sql_yacc.yy"
  993.     {}
  994.     break;
  995.   case 1461:
  996. #line 5367 "sql_yacc.yy"
  997.     {}
  998.     break;
  999.   case 1462:
  1000. #line 5368 "sql_yacc.yy"
  1001.     {}
  1002.     break;
  1003.   case 1463:
  1004. #line 5369 "sql_yacc.yy"
  1005.     {}
  1006.     break;
  1007.   case 1464:
  1008. #line 5370 "sql_yacc.yy"
  1009.     {}
  1010.     break;
  1011.   case 1465:
  1012. #line 5371 "sql_yacc.yy"
  1013.     {}
  1014.     break;
  1015.   case 1466:
  1016. #line 5372 "sql_yacc.yy"
  1017.     {}
  1018.     break;
  1019.   case 1467:
  1020. #line 5373 "sql_yacc.yy"
  1021.     {}
  1022.     break;
  1023.   case 1468:
  1024. #line 5374 "sql_yacc.yy"
  1025.     {}
  1026.     break;
  1027.   case 1469:
  1028. #line 5375 "sql_yacc.yy"
  1029.     {}
  1030.     break;
  1031.   case 1470:
  1032. #line 5376 "sql_yacc.yy"
  1033.     {}
  1034.     break;
  1035.   case 1471:
  1036. #line 5377 "sql_yacc.yy"
  1037.     {}
  1038.     break;
  1039.   case 1472:
  1040. #line 5378 "sql_yacc.yy"
  1041.     {}
  1042.     break;
  1043.   case 1473:
  1044. #line 5379 "sql_yacc.yy"
  1045.     {}
  1046.     break;
  1047.   case 1474:
  1048. #line 5380 "sql_yacc.yy"
  1049.     {}
  1050.     break;
  1051.   case 1475:
  1052. #line 5381 "sql_yacc.yy"
  1053.     {}
  1054.     break;
  1055.   case 1476:
  1056. #line 5382 "sql_yacc.yy"
  1057.     {}
  1058.     break;
  1059.   case 1477:
  1060. #line 5383 "sql_yacc.yy"
  1061.     {}
  1062.     break;
  1063.   case 1478:
  1064. #line 5384 "sql_yacc.yy"
  1065.     {}
  1066.     break;
  1067.   case 1479:
  1068. #line 5385 "sql_yacc.yy"
  1069.     {}
  1070.     break;
  1071.   case 1480:
  1072. #line 5386 "sql_yacc.yy"
  1073.     {}
  1074.     break;
  1075.   case 1481:
  1076. #line 5387 "sql_yacc.yy"
  1077.     {}
  1078.     break;
  1079.   case 1482:
  1080. #line 5388 "sql_yacc.yy"
  1081.     {}
  1082.     break;
  1083.   case 1483:
  1084. #line 5389 "sql_yacc.yy"
  1085.     {}
  1086.     break;
  1087.   case 1484:
  1088. #line 5390 "sql_yacc.yy"
  1089.     {}
  1090.     break;
  1091.   case 1485:
  1092. #line 5391 "sql_yacc.yy"
  1093.     {}
  1094.     break;
  1095.   case 1486:
  1096. #line 5392 "sql_yacc.yy"
  1097.     {}
  1098.     break;
  1099.   case 1487:
  1100. #line 5393 "sql_yacc.yy"
  1101.     {}
  1102.     break;
  1103.   case 1488:
  1104. #line 5394 "sql_yacc.yy"
  1105.     {}
  1106.     break;
  1107.   case 1489:
  1108. #line 5395 "sql_yacc.yy"
  1109.     {}
  1110.     break;
  1111.   case 1490:
  1112. #line 5396 "sql_yacc.yy"
  1113.     {}
  1114.     break;
  1115.   case 1491:
  1116. #line 5397 "sql_yacc.yy"
  1117.     {}
  1118.     break;
  1119.   case 1492:
  1120. #line 5398 "sql_yacc.yy"
  1121.     {}
  1122.     break;
  1123.   case 1493:
  1124. #line 5399 "sql_yacc.yy"
  1125.     {}
  1126.     break;
  1127.   case 1494:
  1128. #line 5400 "sql_yacc.yy"
  1129.     {}
  1130.     break;
  1131.   case 1495:
  1132. #line 5401 "sql_yacc.yy"
  1133.     {}
  1134.     break;
  1135.   case 1496:
  1136. #line 5402 "sql_yacc.yy"
  1137.     {}
  1138.     break;
  1139.   case 1497:
  1140. #line 5403 "sql_yacc.yy"
  1141.     {}
  1142.     break;
  1143.   case 1498:
  1144. #line 5404 "sql_yacc.yy"
  1145.     {}
  1146.     break;
  1147.   case 1499:
  1148. #line 5405 "sql_yacc.yy"
  1149.     {}
  1150.     break;
  1151.   case 1500:
  1152. #line 5412 "sql_yacc.yy"
  1153.     {
  1154.   LEX *lex=Lex;
  1155.   lex->sql_command= SQLCOM_SET_OPTION;
  1156.           mysql_init_select(lex);
  1157.   lex->option_type=OPT_SESSION;
  1158.   lex->var_list.empty();
  1159.           lex->one_shot_set= 0;
  1160. }
  1161.     break;
  1162.   case 1501:
  1163. #line 5421 "sql_yacc.yy"
  1164.     {}
  1165.     break;
  1166.   case 1502:
  1167. #line 5425 "sql_yacc.yy"
  1168.     {}
  1169.     break;
  1170.   case 1503:
  1171. #line 5426 "sql_yacc.yy"
  1172.     {}
  1173.     break;
  1174.   case 1506:
  1175. #line 5433 "sql_yacc.yy"
  1176.     {}
  1177.     break;
  1178.   case 1507:
  1179. #line 5434 "sql_yacc.yy"
  1180.     {}
  1181.     break;
  1182.   case 1508:
  1183. #line 5438 "sql_yacc.yy"
  1184.     {}
  1185.     break;
  1186.   case 1509:
  1187. #line 5439 "sql_yacc.yy"
  1188.     { Lex->option_type= OPT_GLOBAL; }
  1189.     break;
  1190.   case 1510:
  1191. #line 5440 "sql_yacc.yy"
  1192.     { Lex->option_type= OPT_SESSION; }
  1193.     break;
  1194.   case 1511:
  1195. #line 5441 "sql_yacc.yy"
  1196.     { Lex->option_type= OPT_SESSION; }
  1197.     break;
  1198.   case 1512:
  1199. #line 5445 "sql_yacc.yy"
  1200.     {}
  1201.     break;
  1202.   case 1513:
  1203. #line 5446 "sql_yacc.yy"
  1204.     { Lex->option_type= OPT_SESSION; Lex->one_shot_set= 1; }
  1205.     break;
  1206.   case 1514:
  1207. #line 5450 "sql_yacc.yy"
  1208.     { yyval.num=OPT_SESSION; }
  1209.     break;
  1210.   case 1515:
  1211. #line 5451 "sql_yacc.yy"
  1212.     { yyval.num=OPT_GLOBAL; }
  1213.     break;
  1214.   case 1516:
  1215. #line 5452 "sql_yacc.yy"
  1216.     { yyval.num=OPT_SESSION; }
  1217.     break;
  1218.   case 1517:
  1219. #line 5453 "sql_yacc.yy"
  1220.     { yyval.num=OPT_SESSION; }
  1221.     break;
  1222.   case 1518:
  1223. #line 5457 "sql_yacc.yy"
  1224.     { yyval.num=OPT_DEFAULT; }
  1225.     break;
  1226.   case 1519:
  1227. #line 5458 "sql_yacc.yy"
  1228.     { yyval.num=OPT_GLOBAL; }
  1229.     break;
  1230.   case 1520:
  1231. #line 5459 "sql_yacc.yy"
  1232.     { yyval.num=OPT_SESSION; }
  1233.     break;
  1234.   case 1521:
  1235. #line 5460 "sql_yacc.yy"
  1236.     { yyval.num=OPT_SESSION; }
  1237.     break;
  1238.   case 1522:
  1239. #line 5465 "sql_yacc.yy"
  1240.     {
  1241.           LEX *lex=Lex;
  1242.           lex->var_list.push_back(new set_var(lex->option_type, yyvsp[-2].variable.var,
  1243.                                   &yyvsp[-2].variable.base_name, yyvsp[0].item));
  1244.         }
  1245.     break;
  1246.   case 1523:
  1247. #line 5471 "sql_yacc.yy"
  1248.     {
  1249.           LEX *lex=Lex;
  1250.           LEX_STRING tmp;
  1251.           tmp.str=0;
  1252.           tmp.length=0;
  1253.           lex->var_list.push_back(new set_var(lex->option_type,
  1254.                                               find_sys_var("tx_isolation"),
  1255.                                               &tmp,
  1256.                                               new Item_int((int32) yyvsp[0].tx_isolation)));
  1257.         }
  1258.     break;
  1259.   case 1524:
  1260. #line 5485 "sql_yacc.yy"
  1261.     {
  1262.   Lex->var_list.push_back(new set_var_user(new Item_func_set_user_var(yyvsp[-2].lex_str,yyvsp[0].item)));
  1263. }
  1264.     break;
  1265.   case 1525:
  1266. #line 5489 "sql_yacc.yy"
  1267.     {
  1268.           LEX *lex=Lex;
  1269.           lex->var_list.push_back(new set_var((enum_var_type) yyvsp[-3].num, yyvsp[-2].variable.var,
  1270.                                   &yyvsp[-2].variable.base_name, yyvsp[0].item));
  1271.         }
  1272.     break;
  1273.   case 1526:
  1274. #line 5495 "sql_yacc.yy"
  1275.     {
  1276.   THD *thd= YYTHD;
  1277.   LEX *lex= Lex;
  1278.   yyvsp[0].charset= yyvsp[0].charset ? yyvsp[0].charset: global_system_variables.character_set_client;
  1279.   lex->var_list.push_back(new set_var_collation_client(yyvsp[0].charset,thd->variables.collation_database,yyvsp[0].charset));
  1280. }
  1281.     break;
  1282.   case 1527:
  1283. #line 5502 "sql_yacc.yy"
  1284.     {
  1285.   THD *thd= YYTHD;
  1286.   LEX *lex= Lex;
  1287.   yyvsp[-1].charset= yyvsp[-1].charset ? yyvsp[-1].charset : global_system_variables.character_set_client;
  1288.   yyvsp[0].charset= yyvsp[0].charset ? yyvsp[0].charset : yyvsp[-1].charset;
  1289.   if (!my_charset_same(yyvsp[-1].charset,yyvsp[0].charset))
  1290.   {
  1291.     net_printf(thd,ER_COLLATION_CHARSET_MISMATCH,yyvsp[0].charset->name,yyvsp[-1].charset->csname);
  1292.     YYABORT;
  1293.   }
  1294.   lex->var_list.push_back(new set_var_collation_client(yyvsp[0].charset,yyvsp[0].charset,yyvsp[0].charset));
  1295. }
  1296.     break;
  1297.   case 1528:
  1298. #line 5515 "sql_yacc.yy"
  1299.     {
  1300.     THD *thd=YYTHD;
  1301.     LEX_USER *user;
  1302.     if (!(user=(LEX_USER*) thd->alloc(sizeof(LEX_USER))))
  1303.       YYABORT;
  1304.     user->host.str=0;
  1305.     user->user.str=thd->priv_user;
  1306.     thd->lex->var_list.push_back(new set_var_password(user, yyvsp[0].simple_string));
  1307.   }
  1308.     break;
  1309.   case 1529:
  1310. #line 5525 "sql_yacc.yy"
  1311.     {
  1312.     Lex->var_list.push_back(new set_var_password(yyvsp[-2].lex_user,yyvsp[0].simple_string));
  1313.   }
  1314.     break;
  1315.   case 1530:
  1316. #line 5532 "sql_yacc.yy"
  1317.     {
  1318.   sys_var *tmp=find_sys_var(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length);
  1319.   if (!tmp)
  1320.     YYABORT;
  1321.   yyval.variable.var= tmp;
  1322.   yyval.variable.base_name.str=0;
  1323.   yyval.variable.base_name.length=0;
  1324.           /*
  1325.             If this is time_zone variable we should open time zone
  1326.             describing tables 
  1327.           */
  1328.           if (tmp == &sys_time_zone)
  1329.     Lex->time_zone_tables_used= &fake_time_zone_tables_list;
  1330. }
  1331.     break;
  1332.   case 1531:
  1333. #line 5547 "sql_yacc.yy"
  1334.     {
  1335.             if (check_reserved_words(&yyvsp[-2].lex_str))
  1336.             {
  1337.       yyerror(ER(ER_SYNTAX_ERROR));
  1338.               YYABORT;
  1339.             }
  1340.     sys_var *tmp=find_sys_var(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length);
  1341.     if (!tmp)
  1342.       YYABORT;
  1343.     if (!tmp->is_struct())
  1344.       net_printf(YYTHD, ER_VARIABLE_IS_NOT_STRUCT, yyvsp[0].lex_str.str);
  1345.     yyval.variable.var= tmp;
  1346.     yyval.variable.base_name= yyvsp[-2].lex_str;
  1347.   }
  1348.     break;
  1349.   case 1532:
  1350. #line 5562 "sql_yacc.yy"
  1351.     {
  1352.     sys_var *tmp=find_sys_var(yyvsp[0].lex_str.str, yyvsp[0].lex_str.length);
  1353.     if (!tmp)
  1354.       YYABORT;
  1355.     if (!tmp->is_struct())
  1356.       net_printf(YYTHD, ER_VARIABLE_IS_NOT_STRUCT, yyvsp[0].lex_str.str);
  1357.     yyval.variable.var= tmp;
  1358.     yyval.variable.base_name.str=    (char*) "default";
  1359.     yyval.variable.base_name.length= 7;
  1360.   }
  1361.     break;
  1362.   case 1533:
  1363. #line 5575 "sql_yacc.yy"
  1364.     { yyval.tx_isolation= ISO_READ_UNCOMMITTED; }
  1365.     break;
  1366.   case 1534:
  1367. #line 5576 "sql_yacc.yy"
  1368.     { yyval.tx_isolation= ISO_READ_COMMITTED; }
  1369.     break;
  1370.   case 1535:
  1371. #line 5577 "sql_yacc.yy"
  1372.     { yyval.tx_isolation= ISO_REPEATABLE_READ; }
  1373.     break;
  1374.   case 1536:
  1375. #line 5578 "sql_yacc.yy"
  1376.     { yyval.tx_isolation= ISO_SERIALIZABLE; }
  1377.     break;
  1378.   case 1537:
  1379. #line 5582 "sql_yacc.yy"
  1380.     { yyval.simple_string=yyvsp[0].lex_str.str;}
  1381.     break;
  1382.   case 1538:
  1383. #line 5584 "sql_yacc.yy"
  1384.     {
  1385.     yyval.simple_string= yyvsp[-1].lex_str.length ? YYTHD->variables.old_passwords ?
  1386.         Item_func_old_password::alloc(YYTHD, yyvsp[-1].lex_str.str) :
  1387.         Item_func_password::alloc(YYTHD, yyvsp[-1].lex_str.str) :
  1388.       yyvsp[-1].lex_str.str;
  1389.   }
  1390.     break;
  1391.   case 1539:
  1392. #line 5591 "sql_yacc.yy"
  1393.     {
  1394.     yyval.simple_string= yyvsp[-1].lex_str.length ? Item_func_old_password::alloc(YYTHD, yyvsp[-1].lex_str.str) :
  1395.       yyvsp[-1].lex_str.str;
  1396.   }
  1397.     break;
  1398.   case 1540:
  1399. #line 5599 "sql_yacc.yy"
  1400.     { yyval.item=yyvsp[0].item; }
  1401.     break;
  1402.   case 1541:
  1403. #line 5600 "sql_yacc.yy"
  1404.     { yyval.item=0; }
  1405.     break;
  1406.   case 1542:
  1407. #line 5601 "sql_yacc.yy"
  1408.     { yyval.item=new Item_string("ON",  2, system_charset_info); }
  1409.     break;
  1410.   case 1543:
  1411. #line 5602 "sql_yacc.yy"
  1412.     { yyval.item=new Item_string("ALL", 3, system_charset_info); }
  1413.     break;
  1414.   case 1544:
  1415. #line 5603 "sql_yacc.yy"
  1416.     { yyval.item=new Item_string("binary", 6, system_charset_info); }
  1417.     break;
  1418.   case 1545:
  1419. #line 5611 "sql_yacc.yy"
  1420.     {
  1421.   Lex->sql_command=SQLCOM_LOCK_TABLES;
  1422. }
  1423.     break;
  1424.   case 1546:
  1425. #line 5615 "sql_yacc.yy"
  1426.     {}
  1427.     break;
  1428.   case 1551:
  1429. #line 5628 "sql_yacc.yy"
  1430.     {
  1431.   if (!Select->add_table_to_list(YYTHD, yyvsp[-2].table, yyvsp[-1].lex_str_ptr, 0, (thr_lock_type) yyvsp[0].num))
  1432.    YYABORT;
  1433. }
  1434.     break;
  1435.   case 1552:
  1436. #line 5635 "sql_yacc.yy"
  1437.     { yyval.num=TL_READ_NO_INSERT; }
  1438.     break;
  1439.   case 1553:
  1440. #line 5636 "sql_yacc.yy"
  1441.     { yyval.num=YYTHD->update_lock_default; }
  1442.     break;
  1443.   case 1554:
  1444. #line 5637 "sql_yacc.yy"
  1445.     { yyval.num=TL_WRITE_LOW_PRIORITY; }
  1446.     break;
  1447.   case 1555:
  1448. #line 5638 "sql_yacc.yy"
  1449.     { yyval.num= TL_READ; }
  1450.     break;
  1451.   case 1556:
  1452. #line 5642 "sql_yacc.yy"
  1453.     { Lex->sql_command=SQLCOM_UNLOCK_TABLES; }
  1454.     break;
  1455.   case 1557:
  1456. #line 5652 "sql_yacc.yy"
  1457.     {
  1458.   LEX *lex= Lex;
  1459.   lex->sql_command = SQLCOM_HA_OPEN;
  1460.   if (!lex->current_select->add_table_to_list(lex->thd, yyvsp[-2].table, yyvsp[0].lex_str_ptr, 0))
  1461.     YYABORT;
  1462. }
  1463.     break;
  1464.   case 1558:
  1465. #line 5659 "sql_yacc.yy"
  1466.     {
  1467.   LEX *lex= Lex;
  1468.   lex->sql_command = SQLCOM_HA_CLOSE;
  1469.   if (!lex->current_select->add_table_to_list(lex->thd, yyvsp[-1].table, 0, 0))
  1470.     YYABORT;
  1471. }
  1472.     break;
  1473.   case 1559:
  1474. #line 5666 "sql_yacc.yy"
  1475.     {
  1476.   LEX *lex=Lex;
  1477.   lex->sql_command = SQLCOM_HA_READ;
  1478.   lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */
  1479.   lex->current_select->select_limit= 1;
  1480.   lex->current_select->offset_limit= 0L;
  1481.   if (!lex->current_select->add_table_to_list(lex->thd, yyvsp[-1].table, 0, 0))
  1482.     YYABORT;
  1483.         }
  1484.     break;
  1485.   case 1560:
  1486. #line 5675 "sql_yacc.yy"
  1487.     {}
  1488.     break;
  1489.   case 1561:
  1490. #line 5679 "sql_yacc.yy"
  1491.     { Lex->backup_dir= 0; }
  1492.     break;
  1493.   case 1562:
  1494. #line 5680 "sql_yacc.yy"
  1495.     { Lex->backup_dir= yyvsp[-1].lex_str.str; }
  1496.     break;
  1497.   case 1563:
  1498. #line 5684 "sql_yacc.yy"
  1499.     { Lex->ha_read_mode = RFIRST; }
  1500.     break;
  1501.   case 1564:
  1502. #line 5685 "sql_yacc.yy"
  1503.     { Lex->ha_read_mode = RNEXT;  }
  1504.     break;
  1505.   case 1565:
  1506. #line 5689 "sql_yacc.yy"
  1507.     { Lex->ha_read_mode = RFIRST; }
  1508.     break;
  1509.   case 1566:
  1510. #line 5690 "sql_yacc.yy"
  1511.     { Lex->ha_read_mode = RNEXT;  }
  1512.     break;
  1513.   case 1567:
  1514. #line 5691 "sql_yacc.yy"
  1515.     { Lex->ha_read_mode = RPREV;  }
  1516.     break;
  1517.   case 1568:
  1518. #line 5692 "sql_yacc.yy"
  1519.     { Lex->ha_read_mode = RLAST;  }
  1520.     break;
  1521.   case 1569:
  1522. #line 5694 "sql_yacc.yy"
  1523.     {
  1524.   LEX *lex=Lex;
  1525.   lex->ha_read_mode = RKEY;
  1526.   lex->ha_rkey_mode=yyvsp[0].ha_rkey_mode;
  1527.   if (!(lex->insert_list = new List_item))
  1528.     YYABORT;
  1529. }
  1530.     break;
  1531.   case 1570:
  1532. #line 5700 "sql_yacc.yy"
  1533.     { }
  1534.     break;
  1535.   case 1571:
  1536. #line 5704 "sql_yacc.yy"
  1537.     { yyval.ha_rkey_mode=HA_READ_KEY_EXACT;   }
  1538.     break;
  1539.   case 1572:
  1540. #line 5705 "sql_yacc.yy"
  1541.     { yyval.ha_rkey_mode=HA_READ_KEY_OR_NEXT; }
  1542.     break;
  1543.   case 1573:
  1544. #line 5706 "sql_yacc.yy"
  1545.     { yyval.ha_rkey_mode=HA_READ_KEY_OR_PREV; }
  1546.     break;
  1547.   case 1574:
  1548. #line 5707 "sql_yacc.yy"
  1549.     { yyval.ha_rkey_mode=HA_READ_AFTER_KEY;   }
  1550.     break;
  1551.   case 1575:
  1552. #line 5708 "sql_yacc.yy"
  1553.     { yyval.ha_rkey_mode=HA_READ_BEFORE_KEY;  }
  1554.     break;
  1555.   case 1576:
  1556. #line 5715 "sql_yacc.yy"
  1557.     {
  1558.   LEX *lex=Lex;
  1559.   lex->sql_command = SQLCOM_REVOKE;
  1560.   lex->users_list.empty();
  1561.   lex->columns.empty();
  1562.   lex->grant= lex->grant_tot_col=0;
  1563.   lex->select_lex.db=0;
  1564.   lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
  1565.   lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
  1566.   bzero((char*) &lex->mqh, sizeof(lex->mqh));
  1567. }
  1568.     break;
  1569.   case 1577:
  1570. #line 5727 "sql_yacc.yy"
  1571.     {}
  1572.     break;
  1573.   case 1578:
  1574. #line 5732 "sql_yacc.yy"
  1575.     {}
  1576.     break;
  1577.   case 1579:
  1578. #line 5735 "sql_yacc.yy"
  1579.     {
  1580.   Lex->sql_command = SQLCOM_REVOKE_ALL;
  1581. }
  1582.     break;
  1583.   case 1580:
  1584. #line 5742 "sql_yacc.yy"
  1585.     {
  1586.   LEX *lex=Lex;
  1587.   lex->users_list.empty();
  1588.   lex->columns.empty();
  1589.   lex->sql_command = SQLCOM_GRANT;
  1590.   lex->grant= lex->grant_tot_col= 0;
  1591.   lex->select_lex.db= 0;
  1592.   lex->ssl_type= SSL_TYPE_NOT_SPECIFIED;
  1593.   lex->ssl_cipher= lex->x509_subject= lex->x509_issuer= 0;
  1594.   bzero((char *)&(lex->mqh),sizeof(lex->mqh));
  1595. }
  1596.     break;
  1597.   case 1581:
  1598. #line 5755 "sql_yacc.yy"
  1599.     {}
  1600.     break;
  1601.   case 1582:
  1602. #line 5759 "sql_yacc.yy"
  1603.     {}
  1604.     break;
  1605.   case 1583:
  1606. #line 5760 "sql_yacc.yy"
  1607.     { Lex->grant = GLOBAL_ACLS;}
  1608.     break;
  1609.   case 1588:
  1610. #line 5773 "sql_yacc.yy"
  1611.     { Lex->which_columns = SELECT_ACL;}
  1612.     break;
  1613.   case 1589:
  1614. #line 5773 "sql_yacc.yy"
  1615.     {}
  1616.     break;
  1617.   case 1590:
  1618. #line 5774 "sql_yacc.yy"
  1619.     { Lex->which_columns = INSERT_ACL;}
  1620.     break;
  1621.   case 1591:
  1622. #line 5774 "sql_yacc.yy"
  1623.     {}
  1624.     break;
  1625.   case 1592:
  1626. #line 5775 "sql_yacc.yy"
  1627.     { Lex->which_columns = UPDATE_ACL; }
  1628.     break;
  1629.   case 1593:
  1630. #line 5775 "sql_yacc.yy"
  1631.     {}
  1632.     break;
  1633.   case 1594:
  1634. #line 5776 "sql_yacc.yy"
  1635.     { Lex->which_columns = REFERENCES_ACL;}
  1636.     break;
  1637.   case 1595:
  1638. #line 5776 "sql_yacc.yy"
  1639.     {}
  1640.     break;
  1641.   case 1596:
  1642. #line 5777 "sql_yacc.yy"
  1643.     { Lex->grant |= DELETE_ACL;}
  1644.     break;
  1645.   case 1597:
  1646. #line 5778 "sql_yacc.yy"
  1647.     {}
  1648.     break;
  1649.   case 1598:
  1650. #line 5779 "sql_yacc.yy"
  1651.     { Lex->grant |= INDEX_ACL;}
  1652.     break;
  1653.   case 1599:
  1654. #line 5780 "sql_yacc.yy"
  1655.     { Lex->grant |= ALTER_ACL;}
  1656.     break;
  1657.   case 1600:
  1658. #line 5781 "sql_yacc.yy"
  1659.     { Lex->grant |= CREATE_ACL;}
  1660.     break;
  1661.   case 1601:
  1662. #line 5782 "sql_yacc.yy"
  1663.     { Lex->grant |= DROP_ACL;}
  1664.     break;
  1665.   case 1602:
  1666. #line 5783 "sql_yacc.yy"
  1667.     { Lex->grant |= EXECUTE_ACL;}
  1668.     break;
  1669.   case 1603:
  1670. #line 5784 "sql_yacc.yy"
  1671.     { Lex->grant |= RELOAD_ACL;}
  1672.     break;
  1673.   case 1604:
  1674. #line 5785 "sql_yacc.yy"
  1675.     { Lex->grant |= SHUTDOWN_ACL;}
  1676.     break;
  1677.   case 1605:
  1678. #line 5786 "sql_yacc.yy"
  1679.     { Lex->grant |= PROCESS_ACL;}
  1680.     break;
  1681.   case 1606:
  1682. #line 5787 "sql_yacc.yy"
  1683.     { Lex->grant |= FILE_ACL;}
  1684.     break;
  1685.   case 1607:
  1686. #line 5788 "sql_yacc.yy"
  1687.     { Lex->grant |= GRANT_ACL;}
  1688.     break;
  1689.   case 1608:
  1690. #line 5789 "sql_yacc.yy"
  1691.     { Lex->grant |= SHOW_DB_ACL;}
  1692.     break;
  1693.   case 1609:
  1694. #line 5790 "sql_yacc.yy"
  1695.     { Lex->grant |= SUPER_ACL;}
  1696.     break;
  1697.   case 1610:
  1698. #line 5791 "sql_yacc.yy"
  1699.     { Lex->grant |= CREATE_TMP_ACL;}
  1700.     break;
  1701.   case 1611:
  1702. #line 5792 "sql_yacc.yy"
  1703.     { Lex->grant |= LOCK_TABLES_ACL; }
  1704.     break;
  1705.   case 1612:
  1706. #line 5793 "sql_yacc.yy"
  1707.     { Lex->grant |= REPL_SLAVE_ACL;}
  1708.     break;
  1709.   case 1613:
  1710. #line 5794 "sql_yacc.yy"
  1711.     { Lex->grant |= REPL_CLIENT_ACL;}
  1712.     break;
  1713.   case 1614:
  1714. #line 5799 "sql_yacc.yy"
  1715.     {}
  1716.     break;
  1717.   case 1615:
  1718. #line 5800 "sql_yacc.yy"
  1719.     {}
  1720.     break;
  1721.   case 1618:
  1722. #line 5810 "sql_yacc.yy"
  1723.     {
  1724.   LEX *lex=Lex;
  1725.   if (lex->x509_subject)
  1726.   {
  1727.     net_printf(lex->thd,ER_DUP_ARGUMENT, "SUBJECT");
  1728.     YYABORT;
  1729.   }
  1730.   lex->x509_subject=yyvsp[0].lex_str.str;
  1731. }
  1732.     break;
  1733.   case 1619:
  1734. #line 5820 "sql_yacc.yy"
  1735.     {
  1736.   LEX *lex=Lex;
  1737.   if (lex->x509_issuer)
  1738.   {
  1739.     net_printf(lex->thd,ER_DUP_ARGUMENT, "ISSUER");
  1740.     YYABORT;
  1741.   }
  1742.   lex->x509_issuer=yyvsp[0].lex_str.str;
  1743. }
  1744.     break;
  1745.   case 1620:
  1746. #line 5830 "sql_yacc.yy"
  1747.     {
  1748.   LEX *lex=Lex;
  1749.   if (lex->ssl_cipher)
  1750.   {
  1751.     net_printf(lex->thd,ER_DUP_ARGUMENT, "CIPHER");
  1752.     YYABORT;
  1753.   }
  1754.   lex->ssl_cipher=yyvsp[0].lex_str.str;
  1755. }
  1756.     break;
  1757.   case 1621:
  1758. #line 5843 "sql_yacc.yy"
  1759.     {
  1760.     LEX *lex= Lex;
  1761.     lex->current_select->db= lex->thd->db;
  1762.     if (lex->grant == GLOBAL_ACLS)
  1763.       lex->grant = DB_ACLS & ~GRANT_ACL;
  1764.     else if (lex->columns.elements)
  1765.     {
  1766.       send_error(lex->thd,ER_ILLEGAL_GRANT_FOR_TABLE);
  1767.       YYABORT;
  1768.     }
  1769.   }
  1770.     break;
  1771.   case 1622:
  1772. #line 5855 "sql_yacc.yy"
  1773.     {
  1774.     LEX *lex= Lex;
  1775.     lex->current_select->db = yyvsp[-2].lex_str.str;
  1776.     if (lex->grant == GLOBAL_ACLS)
  1777.       lex->grant = DB_ACLS & ~GRANT_ACL;
  1778.     else if (lex->columns.elements)
  1779.     {
  1780.       send_error(lex->thd,ER_ILLEGAL_GRANT_FOR_TABLE);
  1781.       YYABORT;
  1782.     }
  1783.   }
  1784.     break;
  1785.   case 1623:
  1786. #line 5867 "sql_yacc.yy"
  1787.     {
  1788.     LEX *lex= Lex;
  1789.     lex->current_select->db = NULL;
  1790.     if (lex->grant == GLOBAL_ACLS)
  1791.       lex->grant= GLOBAL_ACLS & ~GRANT_ACL;
  1792.     else if (lex->columns.elements)
  1793.     {
  1794.       send_error(lex->thd,ER_ILLEGAL_GRANT_FOR_TABLE);
  1795.       YYABORT;
  1796.     }
  1797.   }
  1798.     break;
  1799.   case 1624:
  1800. #line 5879 "sql_yacc.yy"
  1801.     {
  1802.     LEX *lex=Lex;
  1803.     if (!lex->current_select->add_table_to_list(lex->thd, yyvsp[0].table,NULL,0))
  1804.       YYABORT;
  1805.     if (lex->grant == GLOBAL_ACLS)
  1806.       lex->grant =  TABLE_ACLS & ~GRANT_ACL;
  1807.   }
  1808.     break;
  1809.   case 1625:
  1810. #line 5890 "sql_yacc.yy"
  1811.     { if (Lex->users_list.push_back(yyvsp[0].lex_user)) YYABORT;}
  1812.     break;
  1813.   case 1626:
  1814. #line 5892 "sql_yacc.yy"
  1815.     {
  1816.     if (Lex->users_list.push_back(yyvsp[0].lex_user))
  1817.       YYABORT;
  1818.   }
  1819.     break;
  1820.   case 1627:
  1821. #line 5901 "sql_yacc.yy"
  1822.     {
  1823.    yyval.lex_user=yyvsp[-3].lex_user; yyvsp[-3].lex_user->password=yyvsp[0].lex_str;
  1824.    if (yyvsp[0].lex_str.length)
  1825.    {
  1826.              if (YYTHD->variables.old_passwords)
  1827.              {
  1828.                char *buff= 
  1829.                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1);
  1830.                if (buff)
  1831.                  make_scrambled_password_323(buff, yyvsp[0].lex_str.str);
  1832.                yyvsp[-3].lex_user->password.str= buff;
  1833.                yyvsp[-3].lex_user->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323;
  1834.              }
  1835.              else
  1836.              {
  1837.                char *buff= 
  1838.                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1);
  1839.                if (buff)
  1840.                  make_scrambled_password(buff, yyvsp[0].lex_str.str);
  1841.                yyvsp[-3].lex_user->password.str= buff;
  1842.                yyvsp[-3].lex_user->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH;
  1843.              }
  1844.   }
  1845. }
  1846.     break;
  1847.   case 1628:
  1848. #line 5926 "sql_yacc.yy"
  1849.     { yyval.lex_user=yyvsp[-4].lex_user; yyvsp[-4].lex_user->password=yyvsp[0].lex_str ; }
  1850.     break;
  1851.   case 1629:
  1852. #line 5928 "sql_yacc.yy"
  1853.     { yyval.lex_user=yyvsp[0].lex_user; yyvsp[0].lex_user->password.str=NullS; }
  1854.     break;
  1855.   case 1630:
  1856. #line 5934 "sql_yacc.yy"
  1857.     {
  1858.   LEX *lex=Lex;
  1859.   lex->grant |= lex->which_columns;
  1860. }
  1861.     break;
  1862.   case 1634:
  1863. #line 5946 "sql_yacc.yy"
  1864.     {
  1865.   String *new_str = new (YYTHD->mem_root) String((const char*) yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,system_charset_info);
  1866.   List_iterator <LEX_COLUMN> iter(Lex->columns);
  1867.   class LEX_COLUMN *point;
  1868.   LEX *lex=Lex;
  1869.   while ((point=iter++))
  1870.   {
  1871.     if (!my_strcasecmp(system_charset_info,
  1872.                                point->column.ptr(), new_str->ptr()))
  1873. break;
  1874.   }
  1875.   lex->grant_tot_col|= lex->which_columns;
  1876.   if (point)
  1877.     point->rights |= lex->which_columns;
  1878.   else
  1879.     lex->columns.push_back(new LEX_COLUMN (*new_str,lex->which_columns));
  1880. }
  1881.     break;
  1882.   case 1636:
  1883. #line 5968 "sql_yacc.yy"
  1884.     {
  1885.             Lex->ssl_type=SSL_TYPE_SPECIFIED;
  1886.           }
  1887.     break;
  1888.   case 1637:
  1889. #line 5972 "sql_yacc.yy"
  1890.     {
  1891.             Lex->ssl_type=SSL_TYPE_ANY;
  1892.           }
  1893.     break;
  1894.   case 1638:
  1895. #line 5976 "sql_yacc.yy"
  1896.     {
  1897.             Lex->ssl_type=SSL_TYPE_X509;
  1898.           }
  1899.     break;
  1900.   case 1639:
  1901. #line 5980 "sql_yacc.yy"
  1902.     {
  1903.     Lex->ssl_type=SSL_TYPE_NONE;
  1904.   }
  1905.     break;
  1906.   case 1640:
  1907. #line 5986 "sql_yacc.yy"
  1908.     {}
  1909.     break;
  1910.   case 1642:
  1911. #line 5990 "sql_yacc.yy"
  1912.     {}
  1913.     break;
  1914.   case 1643:
  1915. #line 5991 "sql_yacc.yy"
  1916.     {}
  1917.     break;
  1918.   case 1644:
  1919. #line 5995 "sql_yacc.yy"
  1920.     { Lex->grant |= GRANT_ACL;}
  1921.     break;
  1922.   case 1645:
  1923. #line 5997 "sql_yacc.yy"
  1924.     {
  1925.   Lex->mqh.questions=yyvsp[0].ulong_num;
  1926.   Lex->mqh.bits |= 1;
  1927. }
  1928.     break;
  1929.   case 1646:
  1930. #line 6002 "sql_yacc.yy"
  1931.     {
  1932.   Lex->mqh.updates=yyvsp[0].ulong_num;
  1933.   Lex->mqh.bits |= 2;
  1934. }
  1935.     break;
  1936.   case 1647:
  1937. #line 6007 "sql_yacc.yy"
  1938.     {
  1939.   Lex->mqh.connections=yyvsp[0].ulong_num;
  1940.   Lex->mqh.bits |= 4;
  1941. }
  1942.     break;
  1943.   case 1648:
  1944. #line 6014 "sql_yacc.yy"
  1945.     { Lex->sql_command = SQLCOM_BEGIN; Lex->start_transaction_opt= 0;}
  1946.     break;
  1947.   case 1649:
  1948. #line 6014 "sql_yacc.yy"
  1949.     {}
  1950.     break;
  1951.   case 1650:
  1952. #line 6018 "sql_yacc.yy"
  1953.     {}
  1954.     break;
  1955.   case 1651:
  1956. #line 6019 "sql_yacc.yy"
  1957.     {;}
  1958.     break;
  1959.   case 1652:
  1960. #line 6023 "sql_yacc.yy"
  1961.     { Lex->sql_command = SQLCOM_COMMIT;}
  1962.     break;
  1963.   case 1653:
  1964. #line 6027 "sql_yacc.yy"
  1965.     {
  1966.   Lex->sql_command = SQLCOM_ROLLBACK;
  1967. }
  1968.     break;
  1969.   case 1654:
  1970. #line 6031 "sql_yacc.yy"
  1971.     {
  1972.   Lex->sql_command = SQLCOM_ROLLBACK_TO_SAVEPOINT;
  1973.   Lex->savepoint_name = yyvsp[0].lex_str.str;
  1974. }
  1975.     break;
  1976.   case 1655:
  1977. #line 6037 "sql_yacc.yy"
  1978.     {
  1979.   Lex->sql_command = SQLCOM_SAVEPOINT;
  1980.   Lex->savepoint_name = yyvsp[0].lex_str.str;
  1981. }
  1982.     break;
  1983.   case 1656:
  1984. #line 6048 "sql_yacc.yy"
  1985.     {}
  1986.     break;
  1987.   case 1658:
  1988. #line 6054 "sql_yacc.yy"
  1989.     {
  1990.   LEX *lex=Lex;
  1991.   if (lex->exchange)
  1992.   {
  1993.     /* Only the last SELECT can have  INTO...... */
  1994.     net_printf(lex->thd, ER_WRONG_USAGE, "UNION", "INTO");
  1995.     YYABORT;
  1996.   }
  1997.   if (lex->current_select->linkage == GLOBAL_OPTIONS_TYPE)
  1998.   {
  1999.             yyerror(ER(ER_SYNTAX_ERROR));
  2000.     YYABORT;
  2001.   }
  2002.   if (mysql_new_select(lex, 0))
  2003.     YYABORT;
  2004.           mysql_init_select(lex);
  2005.   lex->current_select->linkage=UNION_TYPE;
  2006.           if (yyvsp[0].num) /* UNION DISTINCT - remember position */
  2007.             lex->current_select->master_unit()->union_distinct=
  2008.                                                       lex->current_select;
  2009. }
  2010.     break;
  2011.   case 1659:
  2012. #line 6075 "sql_yacc.yy"
  2013.     {}
  2014.     break;
  2015.   case 1660:
  2016. #line 6079 "sql_yacc.yy"
  2017.     {}
  2018.     break;
  2019.   case 1661:
  2020. #line 6080 "sql_yacc.yy"
  2021.     {}
  2022.     break;
  2023.   case 1662:
  2024. #line 6084 "sql_yacc.yy"
  2025.     {}
  2026.     break;
  2027.   case 1663:
  2028. #line 6086 "sql_yacc.yy"
  2029.     {
  2030.     THD *thd= YYTHD;
  2031.     LEX *lex= thd->lex;
  2032.     DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE);
  2033.     SELECT_LEX *sel= lex->current_select;
  2034.     SELECT_LEX_UNIT *unit= sel->master_unit();
  2035.     SELECT_LEX *fake= unit->fake_select_lex;
  2036.     if (fake)
  2037.     {
  2038.       unit->global_parameters= fake;
  2039.       fake->no_table_names_allowed= 1;
  2040.       lex->current_select= fake;
  2041.     }
  2042.     thd->where= "global ORDER clause";
  2043.   }
  2044.     break;
  2045.   case 1664:
  2046. #line 6102 "sql_yacc.yy"
  2047.     {
  2048.     THD *thd= YYTHD;
  2049.     thd->lex->current_select->no_table_names_allowed= 0;
  2050.     thd->where= "";
  2051.           }
  2052.     break;
  2053.   case 1667:
  2054. #line 6115 "sql_yacc.yy"
  2055.     { yyval.num=1; }
  2056.     break;
  2057.   case 1668:
  2058. #line 6116 "sql_yacc.yy"
  2059.     { yyval.num=1; }
  2060.     break;
  2061.   case 1669:
  2062. #line 6117 "sql_yacc.yy"
  2063.     { yyval.num=0; }
  2064.     break;
  2065.   case 1670:
  2066. #line 6123 "sql_yacc.yy"
  2067.     {
  2068.   yyval.item= yyvsp[-1].item;
  2069. }
  2070.     break;
  2071.   case 1671:
  2072. #line 6129 "sql_yacc.yy"
  2073.     {
  2074.   yyval.item= new Item_singlerow_subselect(Lex->current_select->
  2075.    master_unit()->first_select());
  2076. }
  2077.     break;
  2078.   case 1672:
  2079. #line 6137 "sql_yacc.yy"
  2080.     {
  2081.   yyval.item= yyvsp[-1].item;
  2082. }
  2083.     break;
  2084.   case 1673:
  2085. #line 6143 "sql_yacc.yy"
  2086.     {
  2087.   yyval.item= new Item_exists_subselect(Lex->current_select->master_unit()->
  2088. first_select());
  2089. }
  2090.     break;
  2091.   case 1674:
  2092. #line 6151 "sql_yacc.yy"
  2093.     {
  2094.     yyval.select_lex= yyvsp[-1].select_lex;
  2095.   }
  2096.     break;
  2097.   case 1675:
  2098. #line 6157 "sql_yacc.yy"
  2099.     {
  2100.     yyval.select_lex= Lex->current_select->master_unit()->first_select();
  2101.   }
  2102.     break;
  2103.   case 1676:
  2104. #line 6163 "sql_yacc.yy"
  2105.     {
  2106.   LEX *lex=Lex;
  2107.   if (((int)lex->sql_command >= (int)SQLCOM_HA_OPEN &&
  2108.        lex->sql_command <= (int)SQLCOM_HA_READ) ||
  2109.        lex->sql_command == (int)SQLCOM_KILL)
  2110.   {
  2111.             yyerror(ER(ER_SYNTAX_ERROR));
  2112.     YYABORT;
  2113.   }
  2114.   if (mysql_new_select(Lex, 1))
  2115.     YYABORT;
  2116. }
  2117.     break;
  2118.   case 1677:
  2119. #line 6178 "sql_yacc.yy"
  2120.     {
  2121.   LEX *lex=Lex;
  2122.   lex->current_select = lex->current_select->return_after_parsing();
  2123. }
  2124.     break;
  2125.     }
  2126. /* Line 1000 of yacc.c.  */
  2127. #line 21863 "sql_yacc.cc"
  2128.   yyvsp -= yylen;
  2129.   yyssp -= yylen;
  2130.   YY_STACK_PRINT (yyss, yyssp);
  2131.   *++yyvsp = yyval;
  2132.   /* Now `shift' the result of the reduction.  Determine what state
  2133.      that goes to, based on the state we popped back to and the rule
  2134.      number reduced by.  */
  2135.   yyn = yyr1[yyn];
  2136.   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
  2137.   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
  2138.     yystate = yytable[yystate];
  2139.   else
  2140.     yystate = yydefgoto[yyn - YYNTOKENS];
  2141.   goto yynewstate;
  2142. /*------------------------------------.
  2143. | yyerrlab -- here on detecting error |
  2144. `------------------------------------*/
  2145. yyerrlab:
  2146.   /* If not already recovering from an error, report this error.  */
  2147.   if (!yyerrstatus)
  2148.     {
  2149.       ++yynerrs;
  2150. #if YYERROR_VERBOSE
  2151.       yyn = yypact[yystate];
  2152.       if (YYPACT_NINF < yyn && yyn < YYLAST)
  2153. {
  2154.   YYSIZE_T yysize = 0;
  2155.   int yytype = YYTRANSLATE (yychar);
  2156.   const char* yyprefix;
  2157.   char *yymsg;
  2158.   int yyx;
  2159.   /* Start YYX at -YYN if negative to avoid negative indexes in
  2160.      YYCHECK.  */
  2161.   int yyxbegin = yyn < 0 ? -yyn : 0;
  2162.   /* Stay within bounds of both yycheck and yytname.  */
  2163.   int yychecklim = YYLAST - yyn;
  2164.   int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  2165.   int yycount = 0;
  2166.   yyprefix = ", expecting ";
  2167.   for (yyx = yyxbegin; yyx < yyxend; ++yyx)
  2168.     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
  2169.       {
  2170. yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
  2171. yycount += 1;
  2172. if (yycount == 5)
  2173.   {
  2174.     yysize = 0;
  2175.     break;
  2176.   }
  2177.       }
  2178.   yysize += (sizeof ("syntax error, unexpected ")
  2179.      + yystrlen (yytname[yytype]));
  2180.   yymsg = (char *) YYSTACK_ALLOC (yysize);
  2181.   if (yymsg != 0)
  2182.     {
  2183.       char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
  2184.       yyp = yystpcpy (yyp, yytname[yytype]);
  2185.       if (yycount < 5)
  2186. {
  2187.   yyprefix = ", expecting ";
  2188.   for (yyx = yyxbegin; yyx < yyxend; ++yyx)
  2189.     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
  2190.       {
  2191. yyp = yystpcpy (yyp, yyprefix);
  2192. yyp = yystpcpy (yyp, yytname[yyx]);
  2193. yyprefix = " or ";
  2194.       }
  2195. }
  2196.       yyerror (yymsg);
  2197.       YYSTACK_FREE (yymsg);
  2198.     }
  2199.   else
  2200.     yyerror ("syntax error; also virtual memory exhausted");
  2201. }
  2202.       else
  2203. #endif /* YYERROR_VERBOSE */
  2204. yyerror ("syntax error");
  2205.     }
  2206.   if (yyerrstatus == 3)
  2207.     {
  2208.       /* If just tried and failed to reuse lookahead token after an
  2209.  error, discard it.  */
  2210.       if (yychar <= YYEOF)
  2211.         {
  2212.           /* If at end of input, pop the error token,
  2213.      then the rest of the stack, then return failure.  */
  2214.   if (yychar == YYEOF)
  2215.      for (;;)
  2216.        {
  2217.  YYPOPSTACK;
  2218.  if (yyssp == yyss)
  2219.    YYABORT;
  2220.  YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
  2221.  yydestruct (yystos[*yyssp], yyvsp);
  2222.        }
  2223.         }
  2224.       else
  2225. {
  2226.   YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
  2227.   yydestruct (yytoken, &yylval);
  2228.   yychar = YYEMPTY;
  2229. }
  2230.     }
  2231.   /* Else will try to reuse lookahead token after shifting the error
  2232.      token.  */
  2233.   goto yyerrlab1;
  2234. /*---------------------------------------------------.
  2235. | yyerrorlab -- error raised explicitly by YYERROR.  |
  2236. `---------------------------------------------------*/
  2237. yyerrorlab:
  2238. #ifdef __GNUC__
  2239.   /* Pacify GCC when the user code never invokes YYERROR and the label
  2240.      yyerrorlab therefore never appears in user code.  */
  2241.   if (0)
  2242.      goto yyerrorlab;
  2243. #endif
  2244.   yyvsp -= yylen;
  2245.   yyssp -= yylen;
  2246.   yystate = *yyssp;
  2247.   goto yyerrlab1;
  2248. /*-------------------------------------------------------------.
  2249. | yyerrlab1 -- common code for both syntax error and YYERROR.  |
  2250. `-------------------------------------------------------------*/
  2251. yyerrlab1:
  2252.   yyerrstatus = 3; /* Each real token shifted decrements this.  */
  2253.   for (;;)
  2254.     {
  2255.       yyn = yypact[yystate];
  2256.       if (yyn != YYPACT_NINF)
  2257. {
  2258.   yyn += YYTERROR;
  2259.   if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  2260.     {
  2261.       yyn = yytable[yyn];
  2262.       if (0 < yyn)
  2263. break;
  2264.     }
  2265. }
  2266.       /* Pop the current state because it cannot handle the error token.  */
  2267.       if (yyssp == yyss)
  2268. YYABORT;
  2269.       YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
  2270.       yydestruct (yystos[yystate], yyvsp);
  2271.       YYPOPSTACK;
  2272.       yystate = *yyssp;
  2273.       YY_STACK_PRINT (yyss, yyssp);
  2274.     }
  2275.   if (yyn == YYFINAL)
  2276.     YYACCEPT;
  2277.   YYDPRINTF ((stderr, "Shifting error token, "));
  2278.   *++yyvsp = yylval;
  2279.   yystate = yyn;
  2280.   goto yynewstate;
  2281. /*-------------------------------------.
  2282. | yyacceptlab -- YYACCEPT comes here.  |
  2283. `-------------------------------------*/
  2284. yyacceptlab:
  2285.   yyresult = 0;
  2286.   goto yyreturn;
  2287. /*-----------------------------------.
  2288. | yyabortlab -- YYABORT comes here.  |
  2289. `-----------------------------------*/
  2290. yyabortlab:
  2291.   yyresult = 1;
  2292.   goto yyreturn;
  2293. #ifndef yyoverflow
  2294. /*----------------------------------------------.
  2295. | yyoverflowlab -- parser overflow comes here.  |
  2296. `----------------------------------------------*/
  2297. yyoverflowlab:
  2298.   yyerror ("parser stack overflow");
  2299.   yyresult = 2;
  2300.   /* Fall through.  */
  2301. #endif
  2302. yyreturn:
  2303. #ifndef yyoverflow
  2304.   if (yyss != yyssa)
  2305.     YYSTACK_FREE (yyss);
  2306. #endif
  2307.   return yyresult;
  2308. }