sql_yacc.cpp
Upload User: romrleung
Upload Date: 2022-05-23
Package Size: 18897k
Code Size: 979k
Category:

MySQL

Development Platform:

Visual C++

  1.   case 292:
  2. #line 1639 "sql_yacc.yy"
  3.     { yyval.charset=yyvsp[0].charset;   }
  4.     break;
  5.   case 293:
  6. #line 1640 "sql_yacc.yy"
  7.     { yyval.charset=NULL; }
  8.     break;
  9.   case 294:
  10. #line 1645 "sql_yacc.yy"
  11.     {
  12.   if (!(yyval.charset=get_charset_by_csname(yyvsp[0].lex_str.str,MY_CS_PRIMARY,MYF(0))) &&
  13.       !(yyval.charset=get_old_charset_by_name(yyvsp[0].lex_str.str)))
  14.   {
  15.     net_printf(YYTHD,ER_UNKNOWN_CHARACTER_SET,yyvsp[0].lex_str.str);
  16.     YYABORT;
  17.   }
  18. }
  19.     break;
  20.   case 295:
  21. #line 1653 "sql_yacc.yy"
  22.     { yyval.charset= &my_charset_bin; }
  23.     break;
  24.   case 296:
  25. #line 1657 "sql_yacc.yy"
  26.     { yyval.charset=yyvsp[0].charset;   }
  27.     break;
  28.   case 297:
  29. #line 1658 "sql_yacc.yy"
  30.     { yyval.charset=NULL; }
  31.     break;
  32.   case 298:
  33. #line 1662 "sql_yacc.yy"
  34.     {
  35.   if (!(yyval.charset=get_charset_by_name(yyvsp[0].lex_str.str,MYF(0))))
  36.   {
  37.     net_printf(YYTHD,ER_UNKNOWN_COLLATION,yyvsp[0].lex_str.str);
  38.     YYABORT;
  39.   }
  40. }
  41.     break;
  42.   case 299:
  43. #line 1671 "sql_yacc.yy"
  44.     { yyval.charset=NULL; }
  45.     break;
  46.   case 300:
  47. #line 1672 "sql_yacc.yy"
  48.     { yyval.charset=yyvsp[0].charset; }
  49.     break;
  50.   case 301:
  51. #line 1676 "sql_yacc.yy"
  52.     { yyval.charset=yyvsp[0].charset;   }
  53.     break;
  54.   case 302:
  55. #line 1677 "sql_yacc.yy"
  56.     { yyval.charset=NULL; }
  57.     break;
  58.   case 303:
  59. #line 1680 "sql_yacc.yy"
  60.     {}
  61.     break;
  62.   case 304:
  63. #line 1681 "sql_yacc.yy"
  64.     {}
  65.     break;
  66.   case 305:
  67. #line 1684 "sql_yacc.yy"
  68.     { Lex->charset=NULL; }
  69.     break;
  70.   case 306:
  71. #line 1685 "sql_yacc.yy"
  72.     { Lex->charset=&my_charset_latin1; }
  73.     break;
  74.   case 307:
  75. #line 1686 "sql_yacc.yy"
  76.     { Lex->charset=&my_charset_bin; }
  77.     break;
  78.   case 308:
  79. #line 1688 "sql_yacc.yy"
  80.     {
  81.   if (!(Lex->charset=get_charset_by_csname("ucs2",MY_CS_PRIMARY,MYF(0))))
  82.   {
  83.     net_printf(YYTHD,ER_UNKNOWN_CHARACTER_SET,"ucs2");
  84.     YYABORT;
  85.   }
  86. }
  87.     break;
  88.   case 309:
  89. #line 1695 "sql_yacc.yy"
  90.     { Lex->charset=yyvsp[0].charset; }
  91.     break;
  92.   case 312:
  93. #line 1704 "sql_yacc.yy"
  94.     {
  95.   LEX *lex=Lex;
  96.   lex->fk_delete_opt= lex->fk_update_opt= lex->fk_match_option= 0;
  97.   lex->ref_list.empty();
  98. }
  99.     break;
  100.   case 313:
  101. #line 1710 "sql_yacc.yy"
  102.     {
  103.   yyval.table=yyvsp[-2].table;
  104. }
  105.     break;
  106.   case 314:
  107. #line 1715 "sql_yacc.yy"
  108.     {}
  109.     break;
  110.   case 315:
  111. #line 1716 "sql_yacc.yy"
  112.     {}
  113.     break;
  114.   case 316:
  115. #line 1719 "sql_yacc.yy"
  116.     { Lex->ref_list.push_back(new key_part_spec(yyvsp[0].lex_str.str)); }
  117.     break;
  118.   case 317:
  119. #line 1720 "sql_yacc.yy"
  120.     { Lex->ref_list.push_back(new key_part_spec(yyvsp[0].lex_str.str)); }
  121.     break;
  122.   case 318:
  123. #line 1724 "sql_yacc.yy"
  124.     {}
  125.     break;
  126.   case 319:
  127. #line 1725 "sql_yacc.yy"
  128.     {}
  129.     break;
  130.   case 320:
  131. #line 1728 "sql_yacc.yy"
  132.     {}
  133.     break;
  134.   case 321:
  135. #line 1729 "sql_yacc.yy"
  136.     {}
  137.     break;
  138.   case 322:
  139. #line 1732 "sql_yacc.yy"
  140.     { Lex->fk_delete_opt= yyvsp[0].num; }
  141.     break;
  142.   case 323:
  143. #line 1733 "sql_yacc.yy"
  144.     { Lex->fk_update_opt= yyvsp[0].num; }
  145.     break;
  146.   case 324:
  147. #line 1734 "sql_yacc.yy"
  148.     { Lex->fk_match_option= foreign_key::FK_MATCH_FULL; }
  149.     break;
  150.   case 325:
  151. #line 1735 "sql_yacc.yy"
  152.     { Lex->fk_match_option= foreign_key::FK_MATCH_PARTIAL; }
  153.     break;
  154.   case 326:
  155. #line 1736 "sql_yacc.yy"
  156.     { Lex->fk_match_option= foreign_key::FK_MATCH_SIMPLE; }
  157.     break;
  158.   case 327:
  159. #line 1739 "sql_yacc.yy"
  160.     { yyval.num= (int) foreign_key::FK_OPTION_RESTRICT; }
  161.     break;
  162.   case 328:
  163. #line 1740 "sql_yacc.yy"
  164.     { yyval.num= (int) foreign_key::FK_OPTION_CASCADE; }
  165.     break;
  166.   case 329:
  167. #line 1741 "sql_yacc.yy"
  168.     { yyval.num= (int) foreign_key::FK_OPTION_SET_NULL; }
  169.     break;
  170.   case 330:
  171. #line 1742 "sql_yacc.yy"
  172.     { yyval.num= (int) foreign_key::FK_OPTION_NO_ACTION; }
  173.     break;
  174.   case 331:
  175. #line 1743 "sql_yacc.yy"
  176.     { yyval.num= (int) foreign_key::FK_OPTION_DEFAULT;  }
  177.     break;
  178.   case 332:
  179. #line 1746 "sql_yacc.yy"
  180.     { yyval.key_type= Key::MULTIPLE; }
  181.     break;
  182.   case 333:
  183. #line 1747 "sql_yacc.yy"
  184.     { yyval.key_type= Key::FULLTEXT; }
  185.     break;
  186.   case 334:
  187. #line 1749 "sql_yacc.yy"
  188.     {
  189. #ifdef HAVE_SPATIAL
  190.     yyval.key_type= Key::SPATIAL;
  191. #else
  192.     net_printf(Lex->thd, ER_FEATURE_DISABLED,
  193.        sym_group_geom.name, sym_group_geom.needed_define);
  194.     YYABORT;
  195. #endif
  196.   }
  197.     break;
  198.   case 335:
  199. #line 1760 "sql_yacc.yy"
  200.     { yyval.key_type= Key::PRIMARY; }
  201.     break;
  202.   case 336:
  203. #line 1761 "sql_yacc.yy"
  204.     { yyval.key_type= Key::UNIQUE; }
  205.     break;
  206.   case 337:
  207. #line 1764 "sql_yacc.yy"
  208.     {}
  209.     break;
  210.   case 338:
  211. #line 1765 "sql_yacc.yy"
  212.     {}
  213.     break;
  214.   case 339:
  215. #line 1768 "sql_yacc.yy"
  216.     {}
  217.     break;
  218.   case 341:
  219. #line 1773 "sql_yacc.yy"
  220.     {}
  221.     break;
  222.   case 342:
  223. #line 1774 "sql_yacc.yy"
  224.     {}
  225.     break;
  226.   case 343:
  227. #line 1775 "sql_yacc.yy"
  228.     {}
  229.     break;
  230.   case 344:
  231. #line 1778 "sql_yacc.yy"
  232.     { yyval.key_type= Key::MULTIPLE; }
  233.     break;
  234.   case 345:
  235. #line 1779 "sql_yacc.yy"
  236.     { yyval.key_type= Key::UNIQUE; }
  237.     break;
  238.   case 346:
  239. #line 1780 "sql_yacc.yy"
  240.     { yyval.key_type= Key::FULLTEXT;}
  241.     break;
  242.   case 347:
  243. #line 1782 "sql_yacc.yy"
  244.     {
  245. #ifdef HAVE_SPATIAL
  246.     yyval.key_type= Key::SPATIAL;
  247. #else
  248.     net_printf(Lex->thd, ER_FEATURE_DISABLED,
  249.                sym_group_geom.name, sym_group_geom.needed_define);
  250.     YYABORT;
  251. #endif
  252.   }
  253.     break;
  254.   case 348:
  255. #line 1794 "sql_yacc.yy"
  256.     { yyval.key_alg= HA_KEY_ALG_UNDEF; }
  257.     break;
  258.   case 349:
  259. #line 1795 "sql_yacc.yy"
  260.     { yyval.key_alg= yyvsp[0].key_alg; }
  261.     break;
  262.   case 350:
  263. #line 1796 "sql_yacc.yy"
  264.     { yyval.key_alg= yyvsp[0].key_alg; }
  265.     break;
  266.   case 351:
  267. #line 1799 "sql_yacc.yy"
  268.     { yyval.key_alg= HA_KEY_ALG_BTREE; }
  269.     break;
  270.   case 352:
  271. #line 1801 "sql_yacc.yy"
  272.     {
  273.     yyval.key_alg= HA_KEY_ALG_RTREE;
  274.   }
  275.     break;
  276.   case 353:
  277. #line 1804 "sql_yacc.yy"
  278.     { yyval.key_alg= HA_KEY_ALG_HASH; }
  279.     break;
  280.   case 354:
  281. #line 1807 "sql_yacc.yy"
  282.     { Lex->col_list.push_back(yyvsp[-1].key_part); }
  283.     break;
  284.   case 355:
  285. #line 1808 "sql_yacc.yy"
  286.     { Lex->col_list.push_back(yyvsp[-1].key_part); }
  287.     break;
  288.   case 356:
  289. #line 1811 "sql_yacc.yy"
  290.     { yyval.key_part=new key_part_spec(yyvsp[0].lex_str.str); }
  291.     break;
  292.   case 357:
  293. #line 1813 "sql_yacc.yy"
  294.     {
  295.           int key_part_len= atoi(yyvsp[-1].lex_str.str);
  296. #if MYSQL_VERSION_ID < 50000
  297.           if (!key_part_len)
  298.           {
  299.             my_printf_error(ER_UNKNOWN_ERROR,
  300.                             "Key part '%s' length cannot be 0",
  301.                             MYF(0), yyvsp[-3].lex_str.str);
  302.           }
  303. #endif
  304.           yyval.key_part=new key_part_spec(yyvsp[-3].lex_str.str,(uint) key_part_len);
  305.         }
  306.     break;
  307.   case 358:
  308. #line 1827 "sql_yacc.yy"
  309.     { yyval.simple_string=(char*) 0; }
  310.     break;
  311.   case 359:
  312. #line 1828 "sql_yacc.yy"
  313.     { yyval.simple_string=yyvsp[0].lex_str.str; }
  314.     break;
  315.   case 360:
  316. #line 1831 "sql_yacc.yy"
  317.     { yyval.lex_str.str= 0; yyval.lex_str.length= 0; }
  318.     break;
  319.   case 361:
  320. #line 1832 "sql_yacc.yy"
  321.     { yyval.lex_str=yyvsp[0].lex_str; }
  322.     break;
  323.   case 362:
  324. #line 1835 "sql_yacc.yy"
  325.     { Lex->interval_list.push_back(yyvsp[0].string); }
  326.     break;
  327.   case 363:
  328. #line 1836 "sql_yacc.yy"
  329.     { Lex->interval_list.push_back(yyvsp[0].string); }
  330.     break;
  331.   case 364:
  332. #line 1844 "sql_yacc.yy"
  333.     {
  334.   THD *thd= YYTHD;
  335.   LEX *lex= thd->lex;
  336.   lex->sql_command= SQLCOM_ALTER_TABLE;
  337.   lex->name= 0;
  338.   lex->duplicates= DUP_ERROR; 
  339.   if (!lex->select_lex.add_table_to_list(thd, yyvsp[0].table, NULL,
  340.  TL_OPTION_UPDATING))
  341.     YYABORT;
  342.   lex->create_list.empty();
  343.   lex->key_list.empty();
  344.   lex->col_list.empty();
  345.           lex->select_lex.init_order();
  346.   lex->select_lex.db=lex->name=0;
  347.   bzero((char*) &lex->create_info,sizeof(lex->create_info));
  348.   lex->create_info.db_type= DB_TYPE_DEFAULT;
  349.   lex->create_info.default_table_charset= NULL;
  350.   lex->create_info.row_type= ROW_TYPE_NOT_USED;
  351.   lex->alter_info.reset();          
  352.   lex->alter_info.is_simple= 1;
  353.   lex->alter_info.flags= 0;
  354. }
  355.     break;
  356.   case 365:
  357. #line 1867 "sql_yacc.yy"
  358.     {}
  359.     break;
  360.   case 366:
  361. #line 1869 "sql_yacc.yy"
  362.     {
  363.             Lex->create_info.default_table_charset= NULL;
  364.             Lex->create_info.used_fields= 0;
  365.           }
  366.     break;
  367.   case 367:
  368. #line 1874 "sql_yacc.yy"
  369.     {
  370.     LEX *lex=Lex;
  371.     lex->sql_command=SQLCOM_ALTER_DB;
  372.     lex->name= yyvsp[-2].simple_string;
  373.   }
  374.     break;
  375.   case 368:
  376. #line 1882 "sql_yacc.yy"
  377.     { yyval.simple_string= 0; }
  378.     break;
  379.   case 369:
  380. #line 1883 "sql_yacc.yy"
  381.     { yyval.simple_string= yyvsp[0].lex_str.str; }
  382.     break;
  383.   case 371:
  384. #line 1887 "sql_yacc.yy"
  385.     { Lex->alter_info.tablespace_op= DISCARD_TABLESPACE; }
  386.     break;
  387.   case 372:
  388. #line 1888 "sql_yacc.yy"
  389.     { Lex->alter_info.tablespace_op= IMPORT_TABLESPACE; }
  390.     break;
  391.   case 375:
  392. #line 1894 "sql_yacc.yy"
  393.     {
  394.   LEX *lex=Lex;
  395.   lex->change=0; 
  396.   lex->alter_info.flags|= ALTER_ADD_COLUMN; 
  397. }
  398.     break;
  399.   case 376:
  400. #line 1901 "sql_yacc.yy"
  401.     { Lex->alter_info.is_simple= 0; }
  402.     break;
  403.   case 377:
  404. #line 1903 "sql_yacc.yy"
  405.     { 
  406.     LEX *lex=Lex;
  407.     lex->alter_info.is_simple= 0; 
  408.     lex->alter_info.flags|= ALTER_ADD_INDEX; 
  409.   }
  410.     break;
  411.   case 378:
  412. #line 1908 "sql_yacc.yy"
  413.     { Lex->alter_info.is_simple= 0; }
  414.     break;
  415.   case 379:
  416. #line 1910 "sql_yacc.yy"
  417.     {
  418.      LEX *lex=Lex;
  419.      lex->change= yyvsp[0].lex_str.str; 
  420.      lex->alter_info.is_simple= 0;
  421.      lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
  422.   }
  423.     break;
  424.   case 381:
  425. #line 1918 "sql_yacc.yy"
  426.     {
  427.             LEX *lex=Lex;
  428.             lex->length=lex->dec=0; lex->type=0;
  429.             lex->default_value= lex->on_update_value= 0;
  430.     lex->comment=0;
  431.     lex->charset= NULL;
  432.             lex->alter_info.is_simple= 0;
  433.     lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
  434.           }
  435.     break;
  436.   case 382:
  437. #line 1928 "sql_yacc.yy"
  438.     {
  439.             LEX *lex=Lex;
  440.             if (add_field_to_list(lex->thd,yyvsp[-3].lex_str.str,
  441.                                   (enum enum_field_types) yyvsp[-1].num,
  442.                                   lex->length,lex->dec,lex->type,
  443.                                   lex->default_value, lex->on_update_value,
  444.                                   lex->comment,
  445.   yyvsp[-3].lex_str.str, &lex->interval_list, lex->charset,
  446.   lex->uint_geom_type))
  447.        YYABORT;
  448.           }
  449.     break;
  450.   case 384:
  451. #line 1941 "sql_yacc.yy"
  452.     {
  453.     LEX *lex=Lex;
  454.     lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::COLUMN,
  455.                                     yyvsp[-1].lex_str.str)); 
  456.     lex->alter_info.is_simple= 0;
  457.     lex->alter_info.flags|= ALTER_DROP_COLUMN;
  458.   }
  459.     break;
  460.   case 385:
  461. #line 1948 "sql_yacc.yy"
  462.     { Lex->alter_info.is_simple= 0; }
  463.     break;
  464.   case 386:
  465. #line 1950 "sql_yacc.yy"
  466.     {
  467.     LEX *lex=Lex;
  468.     lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY,
  469.                primary_key_name));
  470.     lex->alter_info.is_simple= 0;
  471.     lex->alter_info.flags|= ALTER_DROP_INDEX;
  472.   }
  473.     break;
  474.   case 387:
  475. #line 1958 "sql_yacc.yy"
  476.     {
  477.     LEX *lex=Lex;
  478.     lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY,
  479.                        yyvsp[0].lex_str.str));
  480.     lex->alter_info.is_simple= 0;
  481.     lex->alter_info.flags|= ALTER_DROP_INDEX;
  482.   }
  483.     break;
  484.   case 388:
  485. #line 1965 "sql_yacc.yy"
  486.     { Lex->alter_info.keys_onoff= DISABLE; }
  487.     break;
  488.   case 389:
  489. #line 1966 "sql_yacc.yy"
  490.     { Lex->alter_info.keys_onoff= ENABLE; }
  491.     break;
  492.   case 390:
  493. #line 1968 "sql_yacc.yy"
  494.     {
  495.     LEX *lex=Lex;
  496.     lex->alter_info.alter_list.push_back(new Alter_column(yyvsp[-3].lex_str.str,yyvsp[0].item));
  497.     lex->alter_info.is_simple= 0;
  498.     lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
  499.   }
  500.     break;
  501.   case 391:
  502. #line 1975 "sql_yacc.yy"
  503.     {
  504.     LEX *lex=Lex;
  505.     lex->alter_info.alter_list.push_back(new Alter_column(yyvsp[-2].lex_str.str,
  506.                                                                   (Item*) 0));
  507.     lex->alter_info.is_simple= 0;
  508.     lex->alter_info.flags|= ALTER_CHANGE_COLUMN;
  509.   }
  510.     break;
  511.   case 392:
  512. #line 1983 "sql_yacc.yy"
  513.     {
  514.     LEX *lex=Lex;
  515.     lex->select_lex.db=yyvsp[0].table->db.str;
  516.     lex->name= yyvsp[0].table->table.str;
  517.             if (check_table_name(yyvsp[0].table->table.str,yyvsp[0].table->table.length) ||
  518.                 yyvsp[0].table->db.str && check_db_name(yyvsp[0].table->db.str))
  519.             {
  520.               net_printf(lex->thd,ER_WRONG_TABLE_NAME,yyvsp[0].table->table.str);
  521.               YYABORT;
  522.             }
  523.     lex->alter_info.flags|= ALTER_RENAME;
  524.   }
  525.     break;
  526.   case 393:
  527. #line 1996 "sql_yacc.yy"
  528.     {
  529.     if (!yyvsp[-1].charset)
  530.     {
  531.       THD *thd= YYTHD;
  532.       yyvsp[-1].charset= thd->variables.collation_database;
  533.     }
  534.     yyvsp[0].charset= yyvsp[0].charset ? yyvsp[0].charset : yyvsp[-1].charset;
  535.     if (!my_charset_same(yyvsp[-1].charset,yyvsp[0].charset))
  536.     {
  537.       net_printf(YYTHD,ER_COLLATION_CHARSET_MISMATCH,
  538.  yyvsp[0].charset->name,yyvsp[-1].charset->csname);
  539.       YYABORT;
  540.     }
  541.     LEX *lex= Lex;
  542.     lex->create_info.table_charset= 
  543.       lex->create_info.default_table_charset= yyvsp[0].charset;
  544.     lex->create_info.used_fields|= (HA_CREATE_USED_CHARSET |
  545.     HA_CREATE_USED_DEFAULT_CHARSET);
  546.     lex->alter_info.is_simple= 0;
  547.   }
  548.     break;
  549.   case 394:
  550. #line 2017 "sql_yacc.yy"
  551.     {
  552.     LEX *lex=Lex;
  553.     lex->alter_info.is_simple= 0; 
  554.     lex->alter_info.flags|= ALTER_OPTIONS;
  555.   }
  556.     break;
  557.   case 395:
  558. #line 2023 "sql_yacc.yy"
  559.     {
  560.     LEX *lex=Lex;
  561.     lex->alter_info.is_simple= 0; 
  562.     lex->alter_info.flags|= ALTER_ORDER;
  563.   }
  564.     break;
  565.   case 396:
  566. #line 2030 "sql_yacc.yy"
  567.     {}
  568.     break;
  569.   case 397:
  570. #line 2031 "sql_yacc.yy"
  571.     {}
  572.     break;
  573.   case 398:
  574. #line 2034 "sql_yacc.yy"
  575.     { Lex->ignore= 0;}
  576.     break;
  577.   case 399:
  578. #line 2035 "sql_yacc.yy"
  579.     { Lex->ignore= 1;}
  580.     break;
  581.   case 400:
  582. #line 2039 "sql_yacc.yy"
  583.     {}
  584.     break;
  585.   case 401:
  586. #line 2040 "sql_yacc.yy"
  587.     {}
  588.     break;
  589.   case 402:
  590. #line 2041 "sql_yacc.yy"
  591.     {}
  592.     break;
  593.   case 403:
  594. #line 2044 "sql_yacc.yy"
  595.     {}
  596.     break;
  597.   case 404:
  598. #line 2045 "sql_yacc.yy"
  599.     { store_position_for_column(yyvsp[0].lex_str.str); }
  600.     break;
  601.   case 405:
  602. #line 2046 "sql_yacc.yy"
  603.     { store_position_for_column(first_keyword); }
  604.     break;
  605.   case 406:
  606. #line 2049 "sql_yacc.yy"
  607.     {}
  608.     break;
  609.   case 407:
  610. #line 2050 "sql_yacc.yy"
  611.     {}
  612.     break;
  613.   case 408:
  614. #line 2051 "sql_yacc.yy"
  615.     {}
  616.     break;
  617.   case 409:
  618. #line 2052 "sql_yacc.yy"
  619.     {}
  620.     break;
  621.   case 410:
  622. #line 2060 "sql_yacc.yy"
  623.     {
  624.     LEX *lex=Lex;
  625.             lex->sql_command = SQLCOM_SLAVE_START;
  626.     lex->type = 0;
  627.     /* We'll use mi structure for UNTIL options */
  628.     bzero((char*) &lex->mi, sizeof(lex->mi));
  629.             /* If you change this code don't forget to update SLAVE START too */
  630.           }
  631.     break;
  632.   case 411:
  633. #line 2069 "sql_yacc.yy"
  634.     {}
  635.     break;
  636.   case 412:
  637. #line 2071 "sql_yacc.yy"
  638.     {
  639.     LEX *lex=Lex;
  640.             lex->sql_command = SQLCOM_SLAVE_STOP;
  641.     lex->type = 0;
  642.             /* If you change this code don't forget to update SLAVE STOP too */
  643.           }
  644.     break;
  645.   case 413:
  646. #line 2078 "sql_yacc.yy"
  647.     {
  648.    LEX *lex=Lex;
  649.            lex->sql_command = SQLCOM_SLAVE_START;
  650.    lex->type = 0;
  651.     /* We'll use mi structure for UNTIL options */
  652.     bzero((char*) &lex->mi, sizeof(lex->mi));
  653.           }
  654.     break;
  655.   case 414:
  656. #line 2086 "sql_yacc.yy"
  657.     {}
  658.     break;
  659.   case 415:
  660. #line 2088 "sql_yacc.yy"
  661.     {
  662.    LEX *lex=Lex;
  663.            lex->sql_command = SQLCOM_SLAVE_STOP;
  664.    lex->type = 0;
  665.          }
  666.     break;
  667.   case 416:
  668. #line 2098 "sql_yacc.yy"
  669.     {
  670.            Lex->sql_command = SQLCOM_BEGIN;
  671.            Lex->start_transaction_opt= yyvsp[0].num;
  672.         }
  673.     break;
  674.   case 417:
  675. #line 2105 "sql_yacc.yy"
  676.     { yyval.num = 0; }
  677.     break;
  678.   case 418:
  679. #line 2107 "sql_yacc.yy"
  680.     {
  681.            yyval.num= MYSQL_START_TRANS_OPT_WITH_CONS_SNAPSHOT;
  682.         }
  683.     break;
  684.   case 419:
  685. #line 2113 "sql_yacc.yy"
  686.     { Lex->slave_thd_opt= 0; }
  687.     break;
  688.   case 420:
  689. #line 2115 "sql_yacc.yy"
  690.     {}
  691.     break;
  692.   case 423:
  693. #line 2124 "sql_yacc.yy"
  694.     {}
  695.     break;
  696.   case 424:
  697. #line 2125 "sql_yacc.yy"
  698.     { Lex->slave_thd_opt|=SLAVE_SQL; }
  699.     break;
  700.   case 425:
  701. #line 2126 "sql_yacc.yy"
  702.     { Lex->slave_thd_opt|=SLAVE_IO; }
  703.     break;
  704.   case 426:
  705. #line 2130 "sql_yacc.yy"
  706.     {}
  707.     break;
  708.   case 427:
  709. #line 2132 "sql_yacc.yy"
  710.     {
  711.             LEX *lex=Lex;
  712.             if ((lex->mi.log_file_name || lex->mi.pos) &&
  713.                 (lex->mi.relay_log_name || lex->mi.relay_log_pos) ||
  714.                 !((lex->mi.log_file_name && lex->mi.pos) ||
  715.                   (lex->mi.relay_log_name && lex->mi.relay_log_pos)))
  716.             {
  717.                send_error(lex->thd, ER_BAD_SLAVE_UNTIL_COND);
  718.                YYABORT;
  719.             }
  720.           }
  721.     break;
  722.   case 430:
  723. #line 2153 "sql_yacc.yy"
  724.     {
  725.    Lex->sql_command = SQLCOM_RESTORE_TABLE;
  726. }
  727.     break;
  728.   case 431:
  729. #line 2157 "sql_yacc.yy"
  730.     {
  731.   Lex->backup_dir = yyvsp[0].lex_str.str;
  732.         }
  733.     break;
  734.   case 432:
  735. #line 2163 "sql_yacc.yy"
  736.     {
  737.    Lex->sql_command = SQLCOM_BACKUP_TABLE;
  738. }
  739.     break;
  740.   case 433:
  741. #line 2167 "sql_yacc.yy"
  742.     {
  743.   Lex->backup_dir = yyvsp[0].lex_str.str;
  744.         }
  745.     break;
  746.   case 434:
  747. #line 2173 "sql_yacc.yy"
  748.     {
  749.    LEX *lex=Lex;
  750.    lex->sql_command = SQLCOM_CHECKSUM;
  751. }
  752.     break;
  753.   case 435:
  754. #line 2178 "sql_yacc.yy"
  755.     {}
  756.     break;
  757.   case 436:
  758. #line 2182 "sql_yacc.yy"
  759.     { Lex->check_opt.flags= 0; }
  760.     break;
  761.   case 437:
  762. #line 2183 "sql_yacc.yy"
  763.     { Lex->check_opt.flags= T_QUICK; }
  764.     break;
  765.   case 438:
  766. #line 2184 "sql_yacc.yy"
  767.     { Lex->check_opt.flags= T_EXTEND; }
  768.     break;
  769.   case 439:
  770. #line 2189 "sql_yacc.yy"
  771.     {
  772.    LEX *lex=Lex;
  773.    lex->sql_command = SQLCOM_REPAIR;
  774.            lex->no_write_to_binlog= yyvsp[-1].num;
  775.    lex->check_opt.init();
  776. }
  777.     break;
  778.   case 440:
  779. #line 2196 "sql_yacc.yy"
  780.     {}
  781.     break;
  782.   case 441:
  783. #line 2200 "sql_yacc.yy"
  784.     { Lex->check_opt.flags = T_MEDIUM; }
  785.     break;
  786.   case 442:
  787. #line 2201 "sql_yacc.yy"
  788.     {}
  789.     break;
  790.   case 443:
  791. #line 2204 "sql_yacc.yy"
  792.     {}
  793.     break;
  794.   case 444:
  795. #line 2205 "sql_yacc.yy"
  796.     {}
  797.     break;
  798.   case 445:
  799. #line 2208 "sql_yacc.yy"
  800.     { Lex->check_opt.flags|= T_QUICK; }
  801.     break;
  802.   case 446:
  803. #line 2209 "sql_yacc.yy"
  804.     { Lex->check_opt.flags|= T_EXTEND; }
  805.     break;
  806.   case 447:
  807. #line 2210 "sql_yacc.yy"
  808.     { Lex->check_opt.sql_flags|= TT_USEFRM; }
  809.     break;
  810.   case 448:
  811. #line 2214 "sql_yacc.yy"
  812.     {
  813.    LEX *lex=Lex;
  814.    lex->sql_command = SQLCOM_ANALYZE;
  815.            lex->no_write_to_binlog= yyvsp[-1].num;
  816.    lex->check_opt.init();
  817. }
  818.     break;
  819.   case 449:
  820. #line 2221 "sql_yacc.yy"
  821.     {}
  822.     break;
  823.   case 450:
  824. #line 2226 "sql_yacc.yy"
  825.     {
  826.    LEX *lex=Lex;
  827.    lex->sql_command = SQLCOM_CHECK;
  828.    lex->check_opt.init();
  829. }
  830.     break;
  831.   case 451:
  832. #line 2232 "sql_yacc.yy"
  833.     {}
  834.     break;
  835.   case 452:
  836. #line 2236 "sql_yacc.yy"
  837.     { Lex->check_opt.flags = T_MEDIUM; }
  838.     break;
  839.   case 453:
  840. #line 2237 "sql_yacc.yy"
  841.     {}
  842.     break;
  843.   case 454:
  844. #line 2240 "sql_yacc.yy"
  845.     {}
  846.     break;
  847.   case 455:
  848. #line 2241 "sql_yacc.yy"
  849.     {}
  850.     break;
  851.   case 456:
  852. #line 2244 "sql_yacc.yy"
  853.     { Lex->check_opt.flags|= T_QUICK; }
  854.     break;
  855.   case 457:
  856. #line 2245 "sql_yacc.yy"
  857.     { Lex->check_opt.flags|= T_FAST; }
  858.     break;
  859.   case 458:
  860. #line 2246 "sql_yacc.yy"
  861.     { Lex->check_opt.flags|= T_MEDIUM; }
  862.     break;
  863.   case 459:
  864. #line 2247 "sql_yacc.yy"
  865.     { Lex->check_opt.flags|= T_EXTEND; }
  866.     break;
  867.   case 460:
  868. #line 2248 "sql_yacc.yy"
  869.     { Lex->check_opt.flags|= T_CHECK_ONLY_CHANGED; }
  870.     break;
  871.   case 461:
  872. #line 2252 "sql_yacc.yy"
  873.     {
  874.    LEX *lex=Lex;
  875.    lex->sql_command = SQLCOM_OPTIMIZE;
  876.            lex->no_write_to_binlog= yyvsp[-1].num;
  877.    lex->check_opt.init();
  878. }
  879.     break;
  880.   case 462:
  881. #line 2259 "sql_yacc.yy"
  882.     {}
  883.     break;
  884.   case 463:
  885. #line 2263 "sql_yacc.yy"
  886.     { yyval.num= 0; }
  887.     break;
  888.   case 464:
  889. #line 2264 "sql_yacc.yy"
  890.     { yyval.num= 1; }
  891.     break;
  892.   case 465:
  893. #line 2265 "sql_yacc.yy"
  894.     { yyval.num= 1; }
  895.     break;
  896.   case 466:
  897. #line 2270 "sql_yacc.yy"
  898.     {
  899.    Lex->sql_command=SQLCOM_RENAME_TABLE;
  900. }
  901.     break;
  902.   case 467:
  903. #line 2274 "sql_yacc.yy"
  904.     {}
  905.     break;
  906.   case 470:
  907. #line 2283 "sql_yacc.yy"
  908.     {
  909.   LEX *lex=Lex;
  910.   SELECT_LEX *sl= lex->current_select;
  911.   if (!sl->add_table_to_list(lex->thd, yyvsp[-2].table,NULL,TL_OPTION_UPDATING,
  912.      TL_IGNORE) ||
  913.       !sl->add_table_to_list(lex->thd, yyvsp[0].table,NULL,TL_OPTION_UPDATING,
  914.      TL_IGNORE))
  915.     YYABORT;
  916. }
  917.     break;
  918.   case 471:
  919. #line 2295 "sql_yacc.yy"
  920.     {
  921.           LEX *lex=Lex;
  922.           lex->sql_command= SQLCOM_ASSIGN_TO_KEYCACHE;
  923.   lex->name_and_length= yyvsp[0].lex_str;
  924.         }
  925.     break;
  926.   case 474:
  927. #line 2308 "sql_yacc.yy"
  928.     {
  929.           LEX *lex=Lex;
  930.           SELECT_LEX *sel= &lex->select_lex;
  931.           if (!sel->add_table_to_list(lex->thd, yyvsp[-1].table, NULL, 0,
  932.                                       TL_READ,
  933.                                       sel->get_use_index(),
  934.                                       (List<String> *)0))
  935.             YYABORT;
  936.         }
  937.     break;
  938.   case 475:
  939. #line 2320 "sql_yacc.yy"
  940.     { yyval.lex_str= yyvsp[0].lex_str; }
  941.     break;
  942.   case 476:
  943. #line 2321 "sql_yacc.yy"
  944.     { yyval.lex_str = default_key_cache_base; }
  945.     break;
  946.   case 477:
  947. #line 2326 "sql_yacc.yy"
  948.     {
  949.   LEX *lex=Lex;
  950.   lex->sql_command=SQLCOM_PRELOAD_KEYS;
  951. }
  952.     break;
  953.   case 478:
  954. #line 2331 "sql_yacc.yy"
  955.     {}
  956.     break;
  957.   case 481:
  958. #line 2340 "sql_yacc.yy"
  959.     {
  960.   LEX *lex=Lex;
  961.   SELECT_LEX *sel= &lex->select_lex;
  962.   if (!sel->add_table_to_list(lex->thd, yyvsp[-2].table, NULL, yyvsp[0].num,
  963.                                       TL_READ,
  964.                                       sel->get_use_index(),
  965.                                       (List<String> *)0))
  966.             YYABORT;
  967. }
  968.     break;
  969.   case 482:
  970. #line 2352 "sql_yacc.yy"
  971.     { Select->interval_list.empty(); }
  972.     break;
  973.   case 483:
  974. #line 2354 "sql_yacc.yy"
  975.     {
  976.           LEX *lex=Lex;
  977.           SELECT_LEX *sel= &lex->select_lex;
  978.           sel->use_index= sel->interval_list;
  979.         }
  980.     break;
  981.   case 484:
  982. #line 2362 "sql_yacc.yy"
  983.     { Lex->select_lex.use_index_ptr= 0; }
  984.     break;
  985.   case 485:
  986. #line 2364 "sql_yacc.yy"
  987.     {
  988.             SELECT_LEX *sel= &Lex->select_lex;
  989.     sel->use_index_ptr= &sel->use_index;
  990.   }
  991.     break;
  992.   case 486:
  993. #line 2372 "sql_yacc.yy"
  994.     { yyval.num= 0; }
  995.     break;
  996.   case 487:
  997. #line 2373 "sql_yacc.yy"
  998.     { yyval.num= TL_OPTION_IGNORE_LEAVES; }
  999.     break;
  1000.   case 488:
  1001. #line 2383 "sql_yacc.yy"
  1002.     {
  1003.   LEX *lex= Lex;
  1004.   lex->sql_command= SQLCOM_SELECT;
  1005.   lex->select_lex.resolve_mode= SELECT_LEX::SELECT_MODE;
  1006. }
  1007.     break;
  1008.   case 491:
  1009. #line 2398 "sql_yacc.yy"
  1010.     {
  1011.     LEX *lex= Lex;
  1012.             SELECT_LEX * sel= lex->current_select;
  1013.     if (sel->set_braces(1))
  1014.     {
  1015.       yyerror(ER(ER_SYNTAX_ERROR));
  1016.       YYABORT;
  1017.     }
  1018.   if (sel->linkage == UNION_TYPE &&
  1019.       !sel->master_unit()->first_select()->braces)
  1020.   {
  1021.     yyerror(ER(ER_SYNTAX_ERROR));
  1022.     YYABORT;
  1023.   }
  1024.             /* select in braces, can't contain global parameters */
  1025.     if (sel->master_unit()->fake_select_lex)
  1026.               sel->master_unit()->global_parameters=
  1027.                  sel->master_unit()->fake_select_lex;
  1028.           }
  1029.     break;
  1030.   case 493:
  1031. #line 2421 "sql_yacc.yy"
  1032.     {
  1033.   LEX *lex= Lex;
  1034.           SELECT_LEX * sel= lex->current_select;
  1035.           if (lex->current_select->set_braces(0))
  1036.   {
  1037.     yyerror(ER(ER_SYNTAX_ERROR));
  1038.     YYABORT;
  1039.   }
  1040.   if (sel->linkage == UNION_TYPE &&
  1041.       sel->master_unit()->first_select()->braces)
  1042.   {
  1043.     yyerror(ER(ER_SYNTAX_ERROR));
  1044.     YYABORT;
  1045.   }
  1046. }
  1047.     break;
  1048.   case 495:
  1049. #line 2440 "sql_yacc.yy"
  1050.     {
  1051.   LEX *lex= Lex;
  1052.   SELECT_LEX *sel= lex->current_select;
  1053.   if (sel->linkage != UNION_TYPE)
  1054.     mysql_init_select(lex);
  1055.   lex->current_select->parsing_place= SELECT_LIST;
  1056. }
  1057.     break;
  1058.   case 496:
  1059. #line 2448 "sql_yacc.yy"
  1060.     {
  1061.   Select->parsing_place= NO_MATTER;
  1062. }
  1063.     break;
  1064.   case 498:
  1065. #line 2454 "sql_yacc.yy"
  1066.     {}
  1067.     break;
  1068.   case 506:
  1069. #line 2473 "sql_yacc.yy"
  1070.     {
  1071.     if (test_all_bits(Select->options, SELECT_ALL | SELECT_DISTINCT))
  1072.     {
  1073.       net_printf(Lex->thd, ER_WRONG_USAGE, "ALL", "DISTINCT");
  1074.               YYABORT;
  1075.     }
  1076.           }
  1077.     break;
  1078.   case 509:
  1079. #line 2487 "sql_yacc.yy"
  1080.     { Select->options|= SELECT_STRAIGHT_JOIN; }
  1081.     break;
  1082.   case 510:
  1083. #line 2489 "sql_yacc.yy"
  1084.     {
  1085.     if (check_simple_select())
  1086.       YYABORT;
  1087.     Lex->lock_option= TL_READ_HIGH_PRIORITY;
  1088.   }
  1089.     break;
  1090.   case 511:
  1091. #line 2494 "sql_yacc.yy"
  1092.     { Select->options|= SELECT_DISTINCT; }
  1093.     break;
  1094.   case 512:
  1095. #line 2495 "sql_yacc.yy"
  1096.     { Select->options|= SELECT_SMALL_RESULT; }
  1097.     break;
  1098.   case 513:
  1099. #line 2496 "sql_yacc.yy"
  1100.     { Select->options|= SELECT_BIG_RESULT; }
  1101.     break;
  1102.   case 514:
  1103. #line 2498 "sql_yacc.yy"
  1104.     {
  1105.     if (check_simple_select())
  1106.       YYABORT;
  1107.     Select->options|= OPTION_BUFFER_RESULT;
  1108.   }
  1109.     break;
  1110.   case 515:
  1111. #line 2504 "sql_yacc.yy"
  1112.     {
  1113.     if (check_simple_select())
  1114.       YYABORT;
  1115.     Select->options|= OPTION_FOUND_ROWS;
  1116.   }
  1117.     break;
  1118.   case 516:
  1119. #line 2509 "sql_yacc.yy"
  1120.     { Lex->safe_to_cache_query=0; }
  1121.     break;
  1122.   case 517:
  1123. #line 2511 "sql_yacc.yy"
  1124.     {
  1125.     Lex->select_lex.options|= OPTION_TO_QUERY_CACHE;
  1126.   }
  1127.     break;
  1128.   case 518:
  1129. #line 2514 "sql_yacc.yy"
  1130.     { Select->options|= SELECT_ALL; }
  1131.     break;
  1132.   case 520:
  1133. #line 2520 "sql_yacc.yy"
  1134.     {
  1135.     LEX *lex=Lex;
  1136.     lex->current_select->set_lock_for_tables(TL_WRITE);
  1137.     lex->safe_to_cache_query=0;
  1138.   }
  1139.     break;
  1140.   case 521:
  1141. #line 2526 "sql_yacc.yy"
  1142.     {
  1143.     LEX *lex=Lex;
  1144.     lex->current_select->
  1145.       set_lock_for_tables(TL_READ_WITH_SHARED_LOCKS);
  1146.     lex->safe_to_cache_query=0;
  1147.   }
  1148.     break;
  1149.   case 524:
  1150. #line 2538 "sql_yacc.yy"
  1151.     {
  1152.     THD *thd= YYTHD;
  1153.     if (add_item_to_list(thd, new Item_field(NULL, NULL, "*")))
  1154.       YYABORT;
  1155.     (thd->lex->current_select->with_wild)++;
  1156.   }
  1157.     break;
  1158.   case 525:
  1159. #line 2548 "sql_yacc.yy"
  1160.     {
  1161.     if (add_item_to_list(YYTHD, yyvsp[-2].item))
  1162.       YYABORT;
  1163.     if (yyvsp[0].lex_str.str)
  1164.       yyvsp[-2].item->set_name(yyvsp[0].lex_str.str,yyvsp[0].lex_str.length,system_charset_info);
  1165.     else if (!yyvsp[-2].item->name)
  1166.       yyvsp[-2].item->set_name(yyvsp[-3].simple_string,(uint) (yyvsp[-1].simple_string - yyvsp[-3].simple_string), YYTHD->charset());
  1167.   }
  1168.     break;
  1169.   case 526:
  1170. #line 2558 "sql_yacc.yy"
  1171.     { yyval.simple_string=(char*) Lex->tok_start; }
  1172.     break;
  1173.   case 527:
  1174. #line 2561 "sql_yacc.yy"
  1175.     { yyval.simple_string=(char*) Lex->tok_end; }
  1176.     break;
  1177.   case 528:
  1178. #line 2564 "sql_yacc.yy"
  1179.     { yyval.item=yyvsp[0].item; }
  1180.     break;
  1181.   case 529:
  1182. #line 2565 "sql_yacc.yy"
  1183.     { yyval.item=yyvsp[0].item; }
  1184.     break;
  1185.   case 530:
  1186. #line 2568 "sql_yacc.yy"
  1187.     { yyval.lex_str.str=0;}
  1188.     break;
  1189.   case 531:
  1190. #line 2569 "sql_yacc.yy"
  1191.     { yyval.lex_str=yyvsp[0].lex_str; }
  1192.     break;
  1193.   case 532:
  1194. #line 2570 "sql_yacc.yy"
  1195.     { yyval.lex_str=yyvsp[0].lex_str; }
  1196.     break;
  1197.   case 533:
  1198. #line 2571 "sql_yacc.yy"
  1199.     { yyval.lex_str=yyvsp[0].lex_str; }
  1200.     break;
  1201.   case 534:
  1202. #line 2572 "sql_yacc.yy"
  1203.     { yyval.lex_str=yyvsp[0].lex_str; }
  1204.     break;
  1205.   case 535:
  1206. #line 2576 "sql_yacc.yy"
  1207.     {}
  1208.     break;
  1209.   case 536:
  1210. #line 2577 "sql_yacc.yy"
  1211.     {}
  1212.     break;
  1213.   case 537:
  1214. #line 2581 "sql_yacc.yy"
  1215.     { yyval.item= yyvsp[0].item; }
  1216.     break;
  1217.   case 538:
  1218. #line 2582 "sql_yacc.yy"
  1219.     { yyval.item= yyvsp[0].item; }
  1220.     break;
  1221.   case 539:
  1222. #line 2585 "sql_yacc.yy"
  1223.     { yyval.boolfunc2creator = &comp_eq_creator; }
  1224.     break;
  1225.   case 540:
  1226. #line 2586 "sql_yacc.yy"
  1227.     { yyval.boolfunc2creator = &comp_ge_creator; }
  1228.     break;
  1229.   case 541:
  1230. #line 2587 "sql_yacc.yy"
  1231.     { yyval.boolfunc2creator = &comp_gt_creator; }
  1232.     break;
  1233.   case 542:
  1234. #line 2588 "sql_yacc.yy"
  1235.     { yyval.boolfunc2creator = &comp_le_creator; }
  1236.     break;
  1237.   case 543:
  1238. #line 2589 "sql_yacc.yy"
  1239.     { yyval.boolfunc2creator = &comp_lt_creator; }
  1240.     break;
  1241.   case 544:
  1242. #line 2590 "sql_yacc.yy"
  1243.     { yyval.boolfunc2creator = &comp_ne_creator; }
  1244.     break;
  1245.   case 545:
  1246. #line 2593 "sql_yacc.yy"
  1247.     { yyval.num = 1; }
  1248.     break;
  1249.   case 546:
  1250. #line 2594 "sql_yacc.yy"
  1251.     { yyval.num = 0; }
  1252.     break;
  1253.   case 547:
  1254. #line 2600 "sql_yacc.yy"
  1255.     { yyvsp[-1].item_list->push_front(yyvsp[-4].item); yyval.item= new Item_func_in(*yyvsp[-1].item_list); }
  1256.     break;
  1257.   case 548:
  1258. #line 2602 "sql_yacc.yy"
  1259.     {
  1260.       yyvsp[-1].item_list->push_front(yyvsp[-5].item);
  1261.       Item_func_in *item= new Item_func_in(*yyvsp[-1].item_list);
  1262.       item->negate();
  1263.       yyval.item= item;
  1264.     }
  1265.     break;
  1266.   case 549:
  1267. #line 2609 "sql_yacc.yy"
  1268.     { yyval.item= new Item_in_subselect(yyvsp[-2].item, yyvsp[0].select_lex); }
  1269.     break;
  1270.   case 550:
  1271. #line 2611 "sql_yacc.yy"
  1272.     {
  1273.             yyval.item= new Item_func_not(new Item_in_subselect(yyvsp[-3].item, yyvsp[0].select_lex));
  1274.           }
  1275.     break;
  1276.   case 551:
  1277. #line 2615 "sql_yacc.yy"
  1278.     { yyval.item= new Item_func_between(yyvsp[-4].item,yyvsp[-2].item,yyvsp[0].item); }
  1279.     break;
  1280.   case 552:
  1281. #line 2617 "sql_yacc.yy"
  1282.     {
  1283.       Item_func_between *item= new Item_func_between(yyvsp[-5].item,yyvsp[-2].item,yyvsp[0].item);
  1284.       item->negate();
  1285.       yyval.item= item;
  1286.     }
  1287.     break;
  1288.   case 553:
  1289. #line 2622 "sql_yacc.yy"
  1290.     { yyval.item= or_or_concat(YYTHD, yyvsp[-2].item,yyvsp[0].item); }
  1291.     break;
  1292.   case 554:
  1293. #line 2623 "sql_yacc.yy"
  1294.     { yyval.item= new Item_cond_or(yyvsp[-2].item,yyvsp[0].item); }
  1295.     break;
  1296.   case 555:
  1297. #line 2624 "sql_yacc.yy"
  1298.     { yyval.item= new Item_cond_xor(yyvsp[-2].item,yyvsp[0].item); }
  1299.     break;
  1300.   case 556:
  1301. #line 2625 "sql_yacc.yy"
  1302.     { yyval.item= new Item_cond_and(yyvsp[-2].item,yyvsp[0].item); }
  1303.     break;
  1304.   case 557:
  1305. #line 2627 "sql_yacc.yy"
  1306.     {
  1307.     yyval.item= new Item_func_eq(new Item_func_soundex(yyvsp[-3].item),
  1308.  new Item_func_soundex(yyvsp[0].item));
  1309.   }
  1310.     break;
  1311.   case 558:
  1312. #line 2632 "sql_yacc.yy"
  1313.     { yyval.item= new Item_func_like(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].item); }
  1314.     break;
  1315.   case 559:
  1316. #line 2634 "sql_yacc.yy"
  1317.     { yyval.item= new Item_func_not(new Item_func_like(yyvsp[-4].item,yyvsp[-1].item,yyvsp[0].item));}
  1318.     break;
  1319.   case 560:
  1320. #line 2635 "sql_yacc.yy"
  1321.     { yyval.item= new Item_func_regex(yyvsp[-2].item,yyvsp[0].item); }
  1322.     break;
  1323.   case 561:
  1324. #line 2637 "sql_yacc.yy"
  1325.     { yyval.item= new Item_func_not(new Item_func_regex(yyvsp[-3].item,yyvsp[0].item)); }
  1326.     break;
  1327.   case 562:
  1328. #line 2638 "sql_yacc.yy"
  1329.     { yyval.item= new Item_func_isnull(yyvsp[-2].item); }
  1330.     break;
  1331.   case 563:
  1332. #line 2639 "sql_yacc.yy"
  1333.     { yyval.item= new Item_func_isnotnull(yyvsp[-3].item); }
  1334.     break;
  1335.   case 564:
  1336. #line 2640 "sql_yacc.yy"
  1337.     { yyval.item= new Item_func_equal(yyvsp[-2].item,yyvsp[0].item); }
  1338.     break;
  1339.   case 565:
  1340. #line 2641 "sql_yacc.yy"
  1341.     { yyval.item= (*yyvsp[-1].boolfunc2creator)(0)->create(yyvsp[-2].item,yyvsp[0].item); }
  1342.     break;
  1343.   case 566:
  1344. #line 2643 "sql_yacc.yy"
  1345.     {
  1346.   yyval.item= all_any_subquery_creator(yyvsp[-3].item, yyvsp[-2].boolfunc2creator, yyvsp[-1].num, yyvsp[0].select_lex);
  1347. }
  1348.     break;
  1349.   case 567:
  1350. #line 2646 "sql_yacc.yy"
  1351.     { yyval.item= new Item_func_shift_left(yyvsp[-2].item,yyvsp[0].item); }
  1352.     break;
  1353.   case 568:
  1354. #line 2647 "sql_yacc.yy"
  1355.     { yyval.item= new Item_func_shift_right(yyvsp[-2].item,yyvsp[0].item); }
  1356.     break;
  1357.   case 569:
  1358. #line 2648 "sql_yacc.yy"
  1359.     { yyval.item= new Item_func_plus(yyvsp[-2].item,yyvsp[0].item); }
  1360.     break;
  1361.   case 570:
  1362. #line 2649 "sql_yacc.yy"
  1363.     { yyval.item= new Item_func_minus(yyvsp[-2].item,yyvsp[0].item); }
  1364.     break;
  1365.   case 571:
  1366. #line 2650 "sql_yacc.yy"
  1367.     { yyval.item= new Item_func_mul(yyvsp[-2].item,yyvsp[0].item); }
  1368.     break;
  1369.   case 572:
  1370. #line 2651 "sql_yacc.yy"
  1371.     { yyval.item= new Item_func_div(yyvsp[-2].item,yyvsp[0].item); }
  1372.     break;
  1373.   case 573:
  1374. #line 2652 "sql_yacc.yy"
  1375.     { yyval.item= new Item_func_int_div(yyvsp[-2].item,yyvsp[0].item); }
  1376.     break;
  1377.   case 574:
  1378. #line 2653 "sql_yacc.yy"
  1379.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1380.     break;
  1381.   case 575:
  1382. #line 2654 "sql_yacc.yy"
  1383.     { yyval.item= new Item_func_bit_or(yyvsp[-2].item,yyvsp[0].item); }
  1384.     break;
  1385.   case 576:
  1386. #line 2655 "sql_yacc.yy"
  1387.     { yyval.item= new Item_func_bit_xor(yyvsp[-2].item,yyvsp[0].item); }
  1388.     break;
  1389.   case 577:
  1390. #line 2656 "sql_yacc.yy"
  1391.     { yyval.item= new Item_func_bit_and(yyvsp[-2].item,yyvsp[0].item); }
  1392.     break;
  1393.   case 578:
  1394. #line 2657 "sql_yacc.yy"
  1395.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1396.     break;
  1397.   case 579:
  1398. #line 2659 "sql_yacc.yy"
  1399.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,0); }
  1400.     break;
  1401.   case 580:
  1402. #line 2661 "sql_yacc.yy"
  1403.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,1); }
  1404.     break;
  1405.   case 581:
  1406. #line 2667 "sql_yacc.yy"
  1407.     { yyval.item= new Item_func_between(yyvsp[-4].item,yyvsp[-2].item,yyvsp[0].item); }
  1408.     break;
  1409.   case 582:
  1410. #line 2669 "sql_yacc.yy"
  1411.     {
  1412.       Item_func_between *item= new Item_func_between(yyvsp[-5].item,yyvsp[-2].item,yyvsp[0].item);
  1413.       item->negate();
  1414.       yyval.item= item;
  1415.     }
  1416.     break;
  1417.   case 583:
  1418. #line 2674 "sql_yacc.yy"
  1419.     { yyval.item= or_or_concat(YYTHD, yyvsp[-2].item,yyvsp[0].item); }
  1420.     break;
  1421.   case 584:
  1422. #line 2675 "sql_yacc.yy"
  1423.     { yyval.item= new Item_cond_or(yyvsp[-2].item,yyvsp[0].item); }
  1424.     break;
  1425.   case 585:
  1426. #line 2676 "sql_yacc.yy"
  1427.     { yyval.item= new Item_cond_xor(yyvsp[-2].item,yyvsp[0].item); }
  1428.     break;
  1429.   case 586:
  1430. #line 2677 "sql_yacc.yy"
  1431.     { yyval.item= new Item_cond_and(yyvsp[-2].item,yyvsp[0].item); }
  1432.     break;
  1433.   case 587:
  1434. #line 2679 "sql_yacc.yy"
  1435.     {
  1436.     yyval.item= new Item_func_eq(new Item_func_soundex(yyvsp[-3].item),
  1437.  new Item_func_soundex(yyvsp[0].item));
  1438.   }
  1439.     break;
  1440.   case 588:
  1441. #line 2684 "sql_yacc.yy"
  1442.     { yyval.item= new Item_func_like(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].item); }
  1443.     break;
  1444.   case 589:
  1445. #line 2686 "sql_yacc.yy"
  1446.     { yyval.item= new Item_func_not(new Item_func_like(yyvsp[-4].item,yyvsp[-1].item,yyvsp[0].item)); }
  1447.     break;
  1448.   case 590:
  1449. #line 2687 "sql_yacc.yy"
  1450.     { yyval.item= new Item_func_regex(yyvsp[-2].item,yyvsp[0].item); }
  1451.     break;
  1452.   case 591:
  1453. #line 2689 "sql_yacc.yy"
  1454.     { yyval.item= new Item_func_not(new Item_func_regex(yyvsp[-3].item,yyvsp[0].item)); }
  1455.     break;
  1456.   case 592:
  1457. #line 2690 "sql_yacc.yy"
  1458.     { yyval.item= new Item_func_isnull(yyvsp[-2].item); }
  1459.     break;
  1460.   case 593:
  1461. #line 2691 "sql_yacc.yy"
  1462.     { yyval.item= new Item_func_isnotnull(yyvsp[-3].item); }
  1463.     break;
  1464.   case 594:
  1465. #line 2692 "sql_yacc.yy"
  1466.     { yyval.item= new Item_func_equal(yyvsp[-2].item,yyvsp[0].item); }
  1467.     break;
  1468.   case 595:
  1469. #line 2693 "sql_yacc.yy"
  1470.     { yyval.item= (*yyvsp[-1].boolfunc2creator)(0)->create(yyvsp[-2].item,yyvsp[0].item); }
  1471.     break;
  1472.   case 596:
  1473. #line 2695 "sql_yacc.yy"
  1474.     {
  1475.   all_any_subquery_creator(yyvsp[-3].item, yyvsp[-2].boolfunc2creator, yyvsp[-1].num, yyvsp[0].select_lex);
  1476. }
  1477.     break;
  1478.   case 597:
  1479. #line 2698 "sql_yacc.yy"
  1480.     { yyval.item= new Item_func_shift_left(yyvsp[-2].item,yyvsp[0].item); }
  1481.     break;
  1482.   case 598:
  1483. #line 2699 "sql_yacc.yy"
  1484.     { yyval.item= new Item_func_shift_right(yyvsp[-2].item,yyvsp[0].item); }
  1485.     break;
  1486.   case 599:
  1487. #line 2700 "sql_yacc.yy"
  1488.     { yyval.item= new Item_func_plus(yyvsp[-2].item,yyvsp[0].item); }
  1489.     break;
  1490.   case 600:
  1491. #line 2701 "sql_yacc.yy"
  1492.     { yyval.item= new Item_func_minus(yyvsp[-2].item,yyvsp[0].item); }
  1493.     break;
  1494.   case 601:
  1495. #line 2702 "sql_yacc.yy"
  1496.     { yyval.item= new Item_func_mul(yyvsp[-2].item,yyvsp[0].item); }
  1497.     break;
  1498.   case 602:
  1499. #line 2703 "sql_yacc.yy"
  1500.     { yyval.item= new Item_func_div(yyvsp[-2].item,yyvsp[0].item); }
  1501.     break;
  1502.   case 603:
  1503. #line 2704 "sql_yacc.yy"
  1504.     { yyval.item= new Item_func_int_div(yyvsp[-2].item,yyvsp[0].item); }
  1505.     break;
  1506.   case 604:
  1507. #line 2705 "sql_yacc.yy"
  1508.     { yyval.item= new Item_func_bit_or(yyvsp[-2].item,yyvsp[0].item); }
  1509.     break;
  1510.   case 605:
  1511. #line 2706 "sql_yacc.yy"
  1512.     { yyval.item= new Item_func_bit_xor(yyvsp[-2].item,yyvsp[0].item); }
  1513.     break;
  1514.   case 606:
  1515. #line 2707 "sql_yacc.yy"
  1516.     { yyval.item= new Item_func_bit_and(yyvsp[-2].item,yyvsp[0].item); }
  1517.     break;
  1518.   case 607:
  1519. #line 2708 "sql_yacc.yy"
  1520.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1521.     break;
  1522.   case 608:
  1523. #line 2709 "sql_yacc.yy"
  1524.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1525.     break;
  1526.   case 609:
  1527. #line 2711 "sql_yacc.yy"
  1528.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,0); }
  1529.     break;
  1530.   case 610:
  1531. #line 2713 "sql_yacc.yy"
  1532.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,1); }
  1533.     break;
  1534.   case 612:
  1535. #line 2719 "sql_yacc.yy"
  1536.     { yyvsp[-1].item_list->push_front(yyvsp[-4].item); yyval.item= new Item_func_in(*yyvsp[-1].item_list); }
  1537.     break;
  1538.   case 613:
  1539. #line 2721 "sql_yacc.yy"
  1540.     {
  1541.       yyvsp[-1].item_list->push_front(yyvsp[-5].item);
  1542.       Item_func_in *item= new Item_func_in(*yyvsp[-1].item_list);
  1543.       item->negate();
  1544.       yyval.item= item;
  1545.     }
  1546.     break;
  1547.   case 614:
  1548. #line 2728 "sql_yacc.yy"
  1549.     { yyval.item= new Item_in_subselect(yyvsp[-2].item, yyvsp[0].select_lex); }
  1550.     break;
  1551.   case 615:
  1552. #line 2730 "sql_yacc.yy"
  1553.     {
  1554.             yyval.item= new Item_func_not(new Item_in_subselect(yyvsp[-3].item, yyvsp[0].select_lex));
  1555.           }
  1556.     break;
  1557.   case 616:
  1558. #line 2734 "sql_yacc.yy"
  1559.     { yyval.item= new Item_func_between(yyvsp[-4].item,yyvsp[-2].item,yyvsp[0].item); }
  1560.     break;
  1561.   case 617:
  1562. #line 2736 "sql_yacc.yy"
  1563.     {
  1564.       Item_func_between *item= new Item_func_between(yyvsp[-5].item,yyvsp[-2].item,yyvsp[0].item);
  1565.       item->negate();
  1566.       yyval.item= item;
  1567.     }
  1568.     break;
  1569.   case 618:
  1570. #line 2741 "sql_yacc.yy"
  1571.     { yyval.item= or_or_concat(YYTHD, yyvsp[-2].item,yyvsp[0].item); }
  1572.     break;
  1573.   case 619:
  1574. #line 2742 "sql_yacc.yy"
  1575.     { yyval.item= new Item_cond_or(yyvsp[-2].item,yyvsp[0].item); }
  1576.     break;
  1577.   case 620:
  1578. #line 2743 "sql_yacc.yy"
  1579.     { yyval.item= new Item_cond_xor(yyvsp[-2].item,yyvsp[0].item); }
  1580.     break;
  1581.   case 621:
  1582. #line 2745 "sql_yacc.yy"
  1583.     {
  1584.     yyval.item= new Item_func_eq(new Item_func_soundex(yyvsp[-3].item),
  1585.  new Item_func_soundex(yyvsp[0].item));
  1586.   }
  1587.     break;
  1588.   case 622:
  1589. #line 2750 "sql_yacc.yy"
  1590.     { yyval.item= new Item_func_like(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].item); }
  1591.     break;
  1592.   case 623:
  1593. #line 2752 "sql_yacc.yy"
  1594.     { yyval.item= new Item_func_not(new Item_func_like(yyvsp[-4].item,yyvsp[-1].item,yyvsp[0].item)); }
  1595.     break;
  1596.   case 624:
  1597. #line 2753 "sql_yacc.yy"
  1598.     { yyval.item= new Item_func_regex(yyvsp[-2].item,yyvsp[0].item); }
  1599.     break;
  1600.   case 625:
  1601. #line 2755 "sql_yacc.yy"
  1602.     { yyval.item= new Item_func_not(new Item_func_regex(yyvsp[-3].item,yyvsp[0].item)); }
  1603.     break;
  1604.   case 626:
  1605. #line 2756 "sql_yacc.yy"
  1606.     { yyval.item= new Item_func_isnull(yyvsp[-2].item); }
  1607.     break;
  1608.   case 627:
  1609. #line 2757 "sql_yacc.yy"
  1610.     { yyval.item= new Item_func_isnotnull(yyvsp[-3].item); }
  1611.     break;
  1612.   case 628:
  1613. #line 2758 "sql_yacc.yy"
  1614.     { yyval.item= new Item_func_equal(yyvsp[-2].item,yyvsp[0].item); }
  1615.     break;
  1616.   case 629:
  1617. #line 2759 "sql_yacc.yy"
  1618.     { yyval.item= (*yyvsp[-1].boolfunc2creator)(0)->create(yyvsp[-2].item,yyvsp[0].item); }
  1619.     break;
  1620.   case 630:
  1621. #line 2761 "sql_yacc.yy"
  1622.     {
  1623.   all_any_subquery_creator(yyvsp[-3].item, yyvsp[-2].boolfunc2creator, yyvsp[-1].num, yyvsp[0].select_lex);
  1624. }
  1625.     break;
  1626.   case 631:
  1627. #line 2764 "sql_yacc.yy"
  1628.     { yyval.item= new Item_func_shift_left(yyvsp[-2].item,yyvsp[0].item); }
  1629.     break;
  1630.   case 632:
  1631. #line 2765 "sql_yacc.yy"
  1632.     { yyval.item= new Item_func_shift_right(yyvsp[-2].item,yyvsp[0].item); }
  1633.     break;
  1634.   case 633:
  1635. #line 2766 "sql_yacc.yy"
  1636.     { yyval.item= new Item_func_plus(yyvsp[-2].item,yyvsp[0].item); }
  1637.     break;
  1638.   case 634:
  1639. #line 2767 "sql_yacc.yy"
  1640.     { yyval.item= new Item_func_minus(yyvsp[-2].item,yyvsp[0].item); }
  1641.     break;
  1642.   case 635:
  1643. #line 2768 "sql_yacc.yy"
  1644.     { yyval.item= new Item_func_mul(yyvsp[-2].item,yyvsp[0].item); }
  1645.     break;
  1646.   case 636:
  1647. #line 2769 "sql_yacc.yy"
  1648.     { yyval.item= new Item_func_div(yyvsp[-2].item,yyvsp[0].item); }
  1649.     break;
  1650.   case 637:
  1651. #line 2770 "sql_yacc.yy"
  1652.     { yyval.item= new Item_func_int_div(yyvsp[-2].item,yyvsp[0].item); }
  1653.     break;
  1654.   case 638:
  1655. #line 2771 "sql_yacc.yy"
  1656.     { yyval.item= new Item_func_bit_or(yyvsp[-2].item,yyvsp[0].item); }
  1657.     break;
  1658.   case 639:
  1659. #line 2772 "sql_yacc.yy"
  1660.     { yyval.item= new Item_func_bit_xor(yyvsp[-2].item,yyvsp[0].item); }
  1661.     break;
  1662.   case 640:
  1663. #line 2773 "sql_yacc.yy"
  1664.     { yyval.item= new Item_func_bit_and(yyvsp[-2].item,yyvsp[0].item); }
  1665.     break;
  1666.   case 641:
  1667. #line 2774 "sql_yacc.yy"
  1668.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1669.     break;
  1670.   case 642:
  1671. #line 2775 "sql_yacc.yy"
  1672.     { yyval.item= new Item_func_mod(yyvsp[-2].item,yyvsp[0].item); }
  1673.     break;
  1674.   case 643:
  1675. #line 2777 "sql_yacc.yy"
  1676.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,0); }
  1677.     break;
  1678.   case 644:
  1679. #line 2779 "sql_yacc.yy"
  1680.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item,yyvsp[-1].item,yyvsp[0].interval,1); }
  1681.     break;
  1682.   case 646:
  1683. #line 2783 "sql_yacc.yy"
  1684.     { yyval.item=yyvsp[0].item; }
  1685.     break;
  1686.   case 648:
  1687. #line 2789 "sql_yacc.yy"
  1688.     {
  1689.     yyval.item= new Item_func_set_collation(yyvsp[-2].item,
  1690.     new Item_string(yyvsp[0].lex_str.str,
  1691.     yyvsp[0].lex_str.length,
  1692.                                                             YYTHD->charset()));
  1693.   }
  1694.     break;
  1695.   case 651:
  1696. #line 2798 "sql_yacc.yy"
  1697.     {
  1698.     yyval.item= new Item_func_set_user_var(yyvsp[-2].lex_str,yyvsp[0].item);
  1699.     Lex->uncacheable(UNCACHEABLE_RAND);
  1700.   }
  1701.     break;
  1702.   case 652:
  1703. #line 2803 "sql_yacc.yy"
  1704.     {
  1705.     yyval.item= new Item_func_get_user_var(yyvsp[0].lex_str);
  1706.     Lex->uncacheable(UNCACHEABLE_RAND);
  1707.   }
  1708.     break;
  1709.   case 653:
  1710. #line 2808 "sql_yacc.yy"
  1711.     {
  1712.             if (yyvsp[-1].lex_str.str && yyvsp[0].lex_str.str && check_reserved_words(&yyvsp[-1].lex_str))
  1713.             {
  1714.               yyerror(ER(ER_SYNTAX_ERROR));
  1715.               YYABORT;
  1716.             }
  1717.     if (!(yyval.item= get_system_var(YYTHD, (enum_var_type) yyvsp[-2].num, yyvsp[-1].lex_str, yyvsp[0].lex_str)))
  1718.       YYABORT;
  1719.   }
  1720.     break;
  1721.   case 655:
  1722. #line 2819 "sql_yacc.yy"
  1723.     { yyval.item= yyvsp[0].item; }
  1724.     break;
  1725.   case 656:
  1726. #line 2820 "sql_yacc.yy"
  1727.     { yyval.item= new Item_func_neg(yyvsp[0].item); }
  1728.     break;
  1729.   case 657:
  1730. #line 2821 "sql_yacc.yy"
  1731.     { yyval.item= new Item_func_bit_neg(yyvsp[0].item); }
  1732.     break;
  1733.   case 658:
  1734. #line 2823 "sql_yacc.yy"
  1735.     {
  1736.             yyval.item= negate_expression(YYTHD, yyvsp[0].item);
  1737.           }
  1738.     break;
  1739.   case 659:
  1740. #line 2827 "sql_yacc.yy"
  1741.     {
  1742.             yyval.item= negate_expression(YYTHD, yyvsp[0].item);
  1743.           }
  1744.     break;
  1745.   case 660:
  1746. #line 2830 "sql_yacc.yy"
  1747.     { yyval.item= yyvsp[-1].item; }
  1748.     break;
  1749.   case 661:
  1750. #line 2832 "sql_yacc.yy"
  1751.     {
  1752.     yyvsp[-1].item_list->push_front(yyvsp[-3].item);
  1753.     yyval.item= new Item_row(*yyvsp[-1].item_list);
  1754.   }
  1755.     break;
  1756.   case 662:
  1757. #line 2837 "sql_yacc.yy"
  1758.     {
  1759.     yyvsp[-1].item_list->push_front(yyvsp[-3].item);
  1760.     yyval.item= new Item_row(*yyvsp[-1].item_list);
  1761.   }
  1762.     break;
  1763.   case 663:
  1764. #line 2841 "sql_yacc.yy"
  1765.     { yyval.item= yyvsp[0].item; }
  1766.     break;
  1767.   case 664:
  1768. #line 2842 "sql_yacc.yy"
  1769.     { yyval.item= yyvsp[0].item; }
  1770.     break;
  1771.   case 665:
  1772. #line 2843 "sql_yacc.yy"
  1773.     { yyval.item= yyvsp[-1].item; }
  1774.     break;
  1775.   case 666:
  1776. #line 2845 "sql_yacc.yy"
  1777.     { yyvsp[-5].item_list->push_front(yyvsp[-2].item);
  1778.             Select->add_ftfunc_to_list((Item_func_match*)
  1779.                                         (yyval.item=new Item_func_match(*yyvsp[-5].item_list,yyvsp[-1].num))); }
  1780.     break;
  1781.   case 667:
  1782. #line 2848 "sql_yacc.yy"
  1783.     { yyval.item= new Item_func_ascii(yyvsp[-1].item); }
  1784.     break;
  1785.   case 668:
  1786. #line 2850 "sql_yacc.yy"
  1787.     {
  1788.     yyval.item= create_func_cast(yyvsp[0].item, ITEM_CAST_CHAR, -1, &my_charset_bin);
  1789.   }
  1790.     break;
  1791.   case 669:
  1792. #line 2854 "sql_yacc.yy"
  1793.     {
  1794.     yyval.item= create_func_cast(yyvsp[-3].item, yyvsp[-1].cast_type,
  1795.  Lex->length ? atoi(Lex->length) : -1,
  1796.  Lex->charset);
  1797.   }
  1798.     break;
  1799.   case 670:
  1800. #line 2860 "sql_yacc.yy"
  1801.     { yyval.item= new Item_func_case(* yyvsp[-2].item_list, yyvsp[-4].item, yyvsp[-1].item ); }
  1802.     break;
  1803.   case 671:
  1804. #line 2862 "sql_yacc.yy"
  1805.     {
  1806.     yyval.item= create_func_cast(yyvsp[-3].item, yyvsp[-1].cast_type,
  1807.  Lex->length ? atoi(Lex->length) : -1,
  1808.  Lex->charset);
  1809.   }
  1810.     break;
  1811.   case 672:
  1812. #line 2868 "sql_yacc.yy"
  1813.     { yyval.item= new Item_func_conv_charset(yyvsp[-3].item,yyvsp[-1].charset); }
  1814.     break;
  1815.   case 673:
  1816. #line 2870 "sql_yacc.yy"
  1817.     { yyval.item= new Item_default_value(yyvsp[-1].item); }
  1818.     break;
  1819.   case 674:
  1820. #line 2872 "sql_yacc.yy"
  1821.     { yyval.item= new Item_insert_value(yyvsp[-1].item); }
  1822.     break;
  1823.   case 675:
  1824. #line 2874 "sql_yacc.yy"
  1825.     {
  1826.     if (!yyvsp[-2].symbol.symbol->create_func)
  1827.     {
  1828.       net_printf(Lex->thd, ER_FEATURE_DISABLED,
  1829.  yyvsp[-2].symbol.symbol->group->name,
  1830.                  yyvsp[-2].symbol.symbol->group->needed_define);
  1831.       YYABORT;
  1832.     }
  1833.     yyval.item= ((Item*(*)(void))(yyvsp[-2].symbol.symbol->create_func))();
  1834.   }
  1835.     break;
  1836.   case 676:
  1837. #line 2885 "sql_yacc.yy"
  1838.     {
  1839.     if (!yyvsp[-3].symbol.symbol->create_func)
  1840.     {
  1841.       net_printf(Lex->thd, ER_FEATURE_DISABLED,
  1842.  yyvsp[-3].symbol.symbol->group->name,
  1843.                  yyvsp[-3].symbol.symbol->group->needed_define);
  1844.       YYABORT;
  1845.     }
  1846.     yyval.item= ((Item*(*)(Item*))(yyvsp[-3].symbol.symbol->create_func))(yyvsp[-1].item);
  1847.   }
  1848.     break;
  1849.   case 677:
  1850. #line 2896 "sql_yacc.yy"
  1851.     {
  1852.     if (!yyvsp[-5].symbol.symbol->create_func)
  1853.     {
  1854.       net_printf(Lex->thd, ER_FEATURE_DISABLED,
  1855.  yyvsp[-5].symbol.symbol->group->name,
  1856.                  yyvsp[-5].symbol.symbol->group->needed_define);
  1857.       YYABORT;
  1858.     }
  1859.     yyval.item= ((Item*(*)(Item*,Item*))(yyvsp[-5].symbol.symbol->create_func))(yyvsp[-3].item,yyvsp[-1].item);
  1860.   }
  1861.     break;
  1862.   case 678:
  1863. #line 2907 "sql_yacc.yy"
  1864.     {
  1865.     if (!yyvsp[-7].symbol.symbol->create_func)
  1866.     {
  1867.       net_printf(Lex->thd, ER_FEATURE_DISABLED,
  1868.  yyvsp[-7].symbol.symbol->group->name,
  1869.                  yyvsp[-7].symbol.symbol->group->needed_define);
  1870.       YYABORT;
  1871.     }
  1872.     yyval.item= ((Item*(*)(Item*,Item*,Item*))(yyvsp[-7].symbol.symbol->create_func))(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item);
  1873.   }
  1874.     break;
  1875.   case 679:
  1876. #line 2918 "sql_yacc.yy"
  1877.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item, yyvsp[-1].item, INTERVAL_DAY, 0);}
  1878.     break;
  1879.   case 680:
  1880. #line 2920 "sql_yacc.yy"
  1881.     { yyval.item= new Item_date_add_interval(yyvsp[-5].item, yyvsp[-2].item, yyvsp[-1].interval, 0); }
  1882.     break;
  1883.   case 681:
  1884. #line 2922 "sql_yacc.yy"
  1885.     { yyval.item= new Item_func_atan(yyvsp[-1].item); }
  1886.     break;
  1887.   case 682:
  1888. #line 2924 "sql_yacc.yy"
  1889.     { yyval.item= new Item_func_atan(yyvsp[-3].item,yyvsp[-1].item); }
  1890.     break;
  1891.   case 683:
  1892. #line 2926 "sql_yacc.yy"
  1893.     { yyval.item= new Item_func_char(*yyvsp[-1].item_list); }
  1894.     break;
  1895.   case 684:
  1896. #line 2928 "sql_yacc.yy"
  1897.     { yyval.item= new Item_func_char(*yyvsp[-3].item_list, yyvsp[-1].charset); }
  1898.     break;
  1899.   case 685:
  1900. #line 2930 "sql_yacc.yy"
  1901.     { yyval.item= new Item_func_charset(yyvsp[-1].item); }
  1902.     break;
  1903.   case 686:
  1904. #line 2932 "sql_yacc.yy"
  1905.     { yyval.item= new Item_func_coalesce(* yyvsp[-1].item_list); }
  1906.     break;
  1907.   case 687:
  1908. #line 2934 "sql_yacc.yy"
  1909.     { yyval.item= new Item_func_collation(yyvsp[-1].item); }
  1910.     break;
  1911.   case 688:
  1912. #line 2936 "sql_yacc.yy"
  1913.     { yyval.item= new Item_func_concat(* yyvsp[-1].item_list); }
  1914.     break;
  1915.   case 689:
  1916. #line 2938 "sql_yacc.yy"
  1917.     { yyvsp[-1].item_list->push_front(yyvsp[-3].item); yyval.item= new Item_func_concat_ws(*yyvsp[-1].item_list); }
  1918.     break;
  1919.   case 690:
  1920. #line 2940 "sql_yacc.yy"
  1921.     {
  1922.     Lex->time_zone_tables_used= &fake_time_zone_tables_list;
  1923.     yyval.item= new Item_func_convert_tz(yyvsp[-5].item, yyvsp[-3].item, yyvsp[-1].item);
  1924.   }
  1925.     break;
  1926.   case 691:
  1927. #line 2945 "sql_yacc.yy"
  1928.     { yyval.item= new Item_func_curdate_local(); Lex->safe_to_cache_query=0; }
  1929.     break;
  1930.   case 692:
  1931. #line 2947 "sql_yacc.yy"
  1932.     { yyval.item= new Item_func_curtime_local(); Lex->safe_to_cache_query=0; }
  1933.     break;
  1934.   case 693:
  1935. #line 2949 "sql_yacc.yy"
  1936.     {
  1937.     yyval.item= new Item_func_curtime_local(yyvsp[-1].item);
  1938.     Lex->safe_to_cache_query=0;
  1939.   }
  1940.     break;
  1941.   case 694:
  1942. #line 2954 "sql_yacc.yy"
  1943.     { yyval.item= create_func_current_user(); }
  1944.     break;
  1945.   case 695:
  1946. #line 2956 "sql_yacc.yy"
  1947.     { yyval.item= new Item_date_add_interval(yyvsp[-4].item,yyvsp[-2].item,yyvsp[-1].interval,0); }
  1948.     break;
  1949.   case 696:
  1950. #line 2958 "sql_yacc.yy"
  1951.     { yyval.item= new Item_date_add_interval(yyvsp[-4].item,yyvsp[-2].item,yyvsp[-1].interval,1); }
  1952.     break;
  1953.   case 697:
  1954. #line 2960 "sql_yacc.yy"
  1955.     {
  1956.     yyval.item= new Item_func_database();
  1957.             Lex->safe_to_cache_query=0;
  1958.   }
  1959.     break;
  1960.   case 698:
  1961. #line 2965 "sql_yacc.yy"
  1962.     { yyval.item= new Item_date_typecast(yyvsp[-1].item); }
  1963.     break;
  1964.   case 699:
  1965. #line 2967 "sql_yacc.yy"
  1966.     { yyval.item= new Item_func_dayofmonth(yyvsp[-1].item); }
  1967.     break;
  1968.   case 700:
  1969. #line 2969 "sql_yacc.yy"
  1970.     { yyvsp[-1].item_list->push_front(yyvsp[-3].item); yyval.item= new Item_func_elt(*yyvsp[-1].item_list); }
  1971.     break;
  1972.   case 701:
  1973. #line 2971 "sql_yacc.yy"
  1974.     { yyval.item= new Item_func_make_set(yyvsp[-3].item, *yyvsp[-1].item_list); }
  1975.     break;
  1976.   case 702:
  1977. #line 2973 "sql_yacc.yy"
  1978.     {
  1979.     yyval.item= new Item_func_encrypt(yyvsp[-1].item);
  1980.     Lex->uncacheable(UNCACHEABLE_RAND);
  1981.   }
  1982.     break;
  1983.   case 703:
  1984. #line 2977 "sql_yacc.yy"
  1985.     { yyval.item= new Item_func_encrypt(yyvsp[-3].item,yyvsp[-1].item); }
  1986.     break;
  1987.   case 704:
  1988. #line 2979 "sql_yacc.yy"
  1989.     { yyval.item= new Item_func_decode(yyvsp[-3].item,yyvsp[-1].lex_str.str); }
  1990.     break;
  1991.   case 705:
  1992. #line 2981 "sql_yacc.yy"
  1993.     { yyval.item= new Item_func_encode(yyvsp[-3].item,yyvsp[-1].lex_str.str); }
  1994.     break;
  1995.   case 706:
  1996. #line 2983 "sql_yacc.yy"
  1997.     { yyval.item= new Item_func_des_decrypt(yyvsp[-1].item); }
  1998.     break;
  1999.   case 707:
  2000. #line 2985 "sql_yacc.yy"
  2001.     { yyval.item= new Item_func_des_decrypt(yyvsp[-3].item,yyvsp[-1].item); }
  2002.     break;
  2003.   case 708:
  2004. #line 2987 "sql_yacc.yy"
  2005.     { yyval.item= new Item_func_des_encrypt(yyvsp[-1].item); }
  2006.     break;
  2007.   case 709:
  2008. #line 2989 "sql_yacc.yy"
  2009.     { yyval.item= new Item_func_des_encrypt(yyvsp[-3].item,yyvsp[-1].item); }
  2010.     break;
  2011.   case 710:
  2012. #line 2991 "sql_yacc.yy"
  2013.     { yyval.item= new Item_func_export_set(yyvsp[-5].item, yyvsp[-3].item, yyvsp[-1].item); }
  2014.     break;
  2015.   case 711:
  2016. #line 2993 "sql_yacc.yy"
  2017.     { yyval.item= new Item_func_export_set(yyvsp[-7].item, yyvsp[-5].item, yyvsp[-3].item, yyvsp[-1].item); }
  2018.     break;
  2019.   case 712:
  2020. #line 2995 "sql_yacc.yy"
  2021.     { yyval.item= new Item_func_export_set(yyvsp[-9].item, yyvsp[-7].item, yyvsp[-5].item, yyvsp[-3].item, yyvsp[-1].item); }
  2022.     break;
  2023.   case 713:
  2024. #line 2997 "sql_yacc.yy"
  2025.     { yyval.item= new Item_func_format(yyvsp[-3].item,atoi(yyvsp[-1].lex_str.str)); }
  2026.     break;
  2027.   case 714:
  2028. #line 2999 "sql_yacc.yy"
  2029.     { yyval.item= new Item_func_from_unixtime(yyvsp[-1].item); }
  2030.     break;
  2031.   case 715:
  2032. #line 3001 "sql_yacc.yy"
  2033.     {
  2034.     yyval.item= new Item_func_date_format (new Item_func_from_unixtime(yyvsp[-3].item),yyvsp[-1].item,0);
  2035.   }
  2036.     break;
  2037.   case 716:
  2038. #line 3005 "sql_yacc.yy"
  2039.     { yyvsp[-1].item_list->push_front(yyvsp[-3].item); yyval.item= new Item_func_field(*yyvsp[-1].item_list); }
  2040.     break;
  2041.   case 717:
  2042. #line 3007 "sql_yacc.yy"
  2043.     {
  2044. #ifdef HAVE_SPATIAL
  2045.     yyval.item= yyvsp[0].item;
  2046. #else
  2047.     net_printf(Lex->thd, ER_FEATURE_DISABLED,
  2048.                sym_group_geom.name, sym_group_geom.needed_define);
  2049.     YYABORT;
  2050. #endif
  2051.   }
  2052.     break;
  2053.   case 718:
  2054. #line 3017 "sql_yacc.yy"
  2055.     { yyval.item= new Item_func_get_format(yyvsp[-3].date_time_type, yyvsp[-1].item); }
  2056.     break;
  2057.   case 719:
  2058. #line 3019 "sql_yacc.yy"
  2059.     { yyval.item= new Item_func_hour(yyvsp[-1].item); }
  2060.     break;
  2061.   case 720:
  2062. #line 3021 "sql_yacc.yy"
  2063.     { yyval.item= new Item_func_if(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2064.     break;
  2065.   case 721:
  2066. #line 3023 "sql_yacc.yy"
  2067.     { yyval.item= new Item_func_insert(yyvsp[-7].item,yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2068.     break;
  2069.   case 722:
  2070. #line 3026 "sql_yacc.yy"
  2071.     { yyval.item= new Item_date_add_interval(yyvsp[0].item,yyvsp[-3].item,yyvsp[-2].interval,0); }
  2072.     break;
  2073.   case 723:
  2074. #line 3028 "sql_yacc.yy"
  2075.     {
  2076.             if (yyvsp[0].item->type() != Item::ROW_ITEM)
  2077.             {
  2078.               yyerror(ER(ER_SYNTAX_ERROR));
  2079.               YYABORT;
  2080.             }
  2081.             yyval.item= new Item_func_interval((Item_row *)yyvsp[0].item);
  2082.           }
  2083.     break;
  2084.   case 724:
  2085. #line 3037 "sql_yacc.yy"
  2086.     {
  2087.     yyval.item= new Item_func_last_insert_id();
  2088.     Lex->safe_to_cache_query= 0;
  2089.   }
  2090.     break;
  2091.   case 725:
  2092. #line 3042 "sql_yacc.yy"
  2093.     {
  2094.     yyval.item= new Item_func_last_insert_id(yyvsp[-1].item);
  2095.     Lex->safe_to_cache_query= 0;
  2096.   }
  2097.     break;
  2098.   case 726:
  2099. #line 3047 "sql_yacc.yy"
  2100.     { yyval.item= new Item_func_left(yyvsp[-3].item,yyvsp[-1].item); }
  2101.     break;
  2102.   case 727:
  2103. #line 3049 "sql_yacc.yy"
  2104.     { yyval.item= new Item_func_locate(yyvsp[-1].item,yyvsp[-3].item); }
  2105.     break;
  2106.   case 728:
  2107. #line 3051 "sql_yacc.yy"
  2108.     { yyval.item= new Item_func_locate(yyvsp[-3].item,yyvsp[-5].item,yyvsp[-1].item); }
  2109.     break;
  2110.   case 729:
  2111. #line 3053 "sql_yacc.yy"
  2112.     { yyvsp[-1].item_list->push_front(yyvsp[-3].item); yyval.item= new Item_func_max(*yyvsp[-1].item_list); }
  2113.     break;
  2114.   case 730:
  2115. #line 3055 "sql_yacc.yy"
  2116.     { yyvsp[-1].item_list->push_front(yyvsp[-3].item); yyval.item= new Item_func_min(*yyvsp[-1].item_list); }
  2117.     break;
  2118.   case 731:
  2119. #line 3057 "sql_yacc.yy"
  2120.     { yyval.item= new Item_func_log(yyvsp[-1].item); }
  2121.     break;
  2122.   case 732:
  2123. #line 3059 "sql_yacc.yy"
  2124.     { yyval.item= new Item_func_log(yyvsp[-3].item, yyvsp[-1].item); }
  2125.     break;
  2126.   case 733:
  2127. #line 3061 "sql_yacc.yy"
  2128.     {
  2129.     yyval.item= new Item_master_pos_wait(yyvsp[-3].item, yyvsp[-1].item);
  2130.     Lex->safe_to_cache_query=0;
  2131.   }
  2132.     break;
  2133.   case 734:
  2134. #line 3066 "sql_yacc.yy"
  2135.     {
  2136.     yyval.item= new Item_master_pos_wait(yyvsp[-5].item, yyvsp[-3].item, yyvsp[-1].item);
  2137.     Lex->safe_to_cache_query=0;
  2138.   }
  2139.     break;
  2140.   case 735:
  2141. #line 3071 "sql_yacc.yy"
  2142.     { yyval.item= new Item_func_microsecond(yyvsp[-1].item); }
  2143.     break;
  2144.   case 736:
  2145. #line 3073 "sql_yacc.yy"
  2146.     { yyval.item= new Item_func_minute(yyvsp[-1].item); }
  2147.     break;
  2148.   case 737:
  2149. #line 3075 "sql_yacc.yy"
  2150.     { yyval.item = new Item_func_mod( yyvsp[-3].item, yyvsp[-1].item); }
  2151.     break;
  2152.   case 738:
  2153. #line 3077 "sql_yacc.yy"
  2154.     { yyval.item= new Item_func_month(yyvsp[-1].item); }
  2155.     break;
  2156.   case 739:
  2157. #line 3079 "sql_yacc.yy"
  2158.     { yyval.item= new Item_func_now_local(); Lex->safe_to_cache_query=0;}
  2159.     break;
  2160.   case 740:
  2161. #line 3081 "sql_yacc.yy"
  2162.     { yyval.item= new Item_func_now_local(yyvsp[-1].item); Lex->safe_to_cache_query=0;}
  2163.     break;
  2164.   case 741:
  2165. #line 3083 "sql_yacc.yy"
  2166.     {
  2167.     yyval.item= YYTHD->variables.old_passwords ?
  2168.               (Item *) new Item_func_old_password(yyvsp[-1].item) :
  2169.       (Item *) new Item_func_password(yyvsp[-1].item);
  2170.   }
  2171.     break;
  2172.   case 742:
  2173. #line 3089 "sql_yacc.yy"
  2174.     { yyval.item=  new Item_func_old_password(yyvsp[-1].item); }
  2175.     break;
  2176.   case 743:
  2177. #line 3091 "sql_yacc.yy"
  2178.     { yyval.item = new Item_func_locate(yyvsp[-1].item,yyvsp[-3].item); }
  2179.     break;
  2180.   case 744:
  2181. #line 3093 "sql_yacc.yy"
  2182.     { yyval.item= new Item_func_rand(yyvsp[-1].item); Lex->uncacheable(UNCACHEABLE_RAND);}
  2183.     break;
  2184.   case 745:
  2185. #line 3095 "sql_yacc.yy"
  2186.     { yyval.item= new Item_func_rand(); Lex->uncacheable(UNCACHEABLE_RAND);}
  2187.     break;
  2188.   case 746:
  2189. #line 3097 "sql_yacc.yy"
  2190.     { yyval.item= new Item_func_replace(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2191.     break;
  2192.   case 747:
  2193. #line 3099 "sql_yacc.yy"
  2194.     { yyval.item= new Item_func_right(yyvsp[-3].item,yyvsp[-1].item); }
  2195.     break;
  2196.   case 748:
  2197. #line 3101 "sql_yacc.yy"
  2198.     { yyval.item= new Item_func_round(yyvsp[-1].item, new Item_int((char*)"0",0,1),0); }
  2199.     break;
  2200.   case 749:
  2201. #line 3102 "sql_yacc.yy"
  2202.     { yyval.item= new Item_func_round(yyvsp[-3].item,yyvsp[-1].item,0); }
  2203.     break;
  2204.   case 750:
  2205. #line 3104 "sql_yacc.yy"
  2206.     { yyval.item= new Item_date_add_interval(yyvsp[-3].item, yyvsp[-1].item, INTERVAL_DAY, 1);}
  2207.     break;
  2208.   case 751:
  2209. #line 3106 "sql_yacc.yy"
  2210.     { yyval.item= new Item_date_add_interval(yyvsp[-5].item, yyvsp[-2].item, yyvsp[-1].interval, 1); }
  2211.     break;
  2212.   case 752:
  2213. #line 3108 "sql_yacc.yy"
  2214.     { yyval.item= new Item_func_second(yyvsp[-1].item); }
  2215.     break;
  2216.   case 753:
  2217. #line 3110 "sql_yacc.yy"
  2218.     { yyval.item= new Item_func_substr(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2219.     break;
  2220.   case 754:
  2221. #line 3112 "sql_yacc.yy"
  2222.     { yyval.item= new Item_func_substr(yyvsp[-3].item,yyvsp[-1].item); }
  2223.     break;
  2224.   case 755:
  2225. #line 3114 "sql_yacc.yy"
  2226.     { yyval.item= new Item_func_substr(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2227.     break;
  2228.   case 756:
  2229. #line 3116 "sql_yacc.yy"
  2230.     { yyval.item= new Item_func_substr(yyvsp[-3].item,yyvsp[-1].item); }
  2231.     break;
  2232.   case 757:
  2233. #line 3118 "sql_yacc.yy"
  2234.     { yyval.item= new Item_func_substr_index(yyvsp[-5].item,yyvsp[-3].item,yyvsp[-1].item); }
  2235.     break;
  2236.   case 758:
  2237. #line 3120 "sql_yacc.yy"
  2238.     { yyval.item= new Item_time_typecast(yyvsp[-1].item); }
  2239.     break;
  2240.   case 759:
  2241. #line 3122 "sql_yacc.yy"
  2242.     { yyval.item= new Item_datetime_typecast(yyvsp[-1].item); }
  2243.     break;
  2244.   case 760:
  2245. #line 3124 "sql_yacc.yy"
  2246.     { yyval.item= new Item_func_add_time(yyvsp[-3].item, yyvsp[-1].item, 1, 0); }
  2247.     break;
  2248.   case 761:
  2249. #line 3126 "sql_yacc.yy"
  2250.     { yyval.item= new Item_func_trim(yyvsp[-1].item); }
  2251.     break;
  2252.   case 762:
  2253. #line 3128 "sql_yacc.yy"
  2254.     { yyval.item= new Item_func_ltrim(yyvsp[-1].item,yyvsp[-3].item); }
  2255.     break;
  2256.   case 763:
  2257. #line 3130 "sql_yacc.yy"
  2258.     { yyval.item= new Item_func_rtrim(yyvsp[-1].item,yyvsp[-3].item); }
  2259.     break;
  2260.   case 764:
  2261. #line 3132 "sql_yacc.yy"
  2262.     { yyval.item= new Item_func_trim(yyvsp[-1].item,yyvsp[-3].item); }
  2263.     break;
  2264.   case 765:
  2265. #line 3134 "sql_yacc.yy"
  2266.     { yyval.item= new Item_func_ltrim(yyvsp[-1].item); }
  2267.     break;
  2268.   case 766:
  2269. #line 3136 "sql_yacc.yy"
  2270.     { yyval.item= new Item_func_rtrim(yyvsp[-1].item); }
  2271.     break;
  2272.   case 767:
  2273. #line 3138 "sql_yacc.yy"
  2274.     { yyval.item= new Item_func_trim(yyvsp[-1].item); }
  2275.     break;
  2276.   case 768:
  2277. #line 3140 "sql_yacc.yy"
  2278.     { yyval.item= new Item_func_trim(yyvsp[-1].item,yyvsp[-3].item); }
  2279.     break;
  2280.   case 769:
  2281. #line 3142 "sql_yacc.yy"
  2282.     { yyval.item= new Item_func_round(yyvsp[-3].item,yyvsp[-1].item,1); }
  2283.     break;
  2284.   case 770:
  2285. #line 3144 "sql_yacc.yy"
  2286.     {
  2287.     if (yyvsp[-1].item_list != NULL)
  2288.       yyval.item = new Item_sum_udf_str(yyvsp[-3].udf, *yyvsp[-1].item_list);
  2289.     else
  2290.       yyval.item = new Item_sum_udf_str(yyvsp[-3].udf);
  2291.   }
  2292.     break;
  2293.   case 771:
  2294. #line 3151 "sql_yacc.yy"
  2295.     {
  2296.     if (yyvsp[-1].item_list != NULL)
  2297.       yyval.item = new Item_sum_udf_float(yyvsp[-3].udf, *yyvsp[-1].item_list);
  2298.     else
  2299.       yyval.item = new Item_sum_udf_float(yyvsp[-3].udf);
  2300.   }
  2301.     break;
  2302.   case 772:
  2303. #line 3158 "sql_yacc.yy"
  2304.     {
  2305.     if (yyvsp[-1].item_list != NULL)
  2306.       yyval.item = new Item_sum_udf_int(yyvsp[-3].udf, *yyvsp[-1].item_list);
  2307.     else
  2308.       yyval.item = new Item_sum_udf_int(yyvsp[-3].udf);
  2309.   }
  2310.     break;
  2311.   case 773:
  2312. #line 3165 "sql_yacc.yy"
  2313.     {
  2314.     if (yyvsp[-1].item_list != NULL)
  2315.       yyval.item = new Item_func_udf_str(yyvsp[-3].udf, *yyvsp[-1].item_list);
  2316.     else
  2317.       yyval.item = new Item_func_udf_str(yyvsp[-3].udf);
  2318.   }
  2319.     break;