@@ -45,6 +45,13 @@ class IntoKeyword extends Component
4545 */
4646 public $ columns ;
4747
48+ /**
49+ * The values to be selected into (SELECT .. INTO @var1)
50+ *
51+ * @var ExpressionArray
52+ */
53+ public $ values ;
54+
4855 /**
4956 * @param Parser $parser The parser that serves as context.
5057 * @param TokensList $list The list of tokens that are being parsed.
@@ -102,14 +109,22 @@ public static function parse(Parser $parser, TokensList $list, array $options =
102109 }
103110
104111 if ($ state === 0 ) {
105- $ ret ->dest = Expression::parse (
106- $ parser ,
107- $ list ,
108- array (
109- 'parseField ' => 'table ' ,
110- 'breakOnAlias ' => true ,
111- )
112- );
112+ if ((isset ($ options ['fromInsert ' ])
113+ && $ options ['fromInsert ' ])
114+ || (isset ($ options ['fromReplace ' ])
115+ && $ options ['fromReplace ' ])
116+ ) {
117+ $ ret ->dest = Expression::parse (
118+ $ parser ,
119+ $ list ,
120+ array (
121+ 'parseField ' => 'table ' ,
122+ 'breakOnAlias ' => true ,
123+ )
124+ );
125+ } else {
126+ $ ret ->values = ExpressionArray::parse ($ parser , $ list );
127+ }
113128 $ state = 1 ;
114129 } elseif ($ state === 1 ) {
115130 if (($ token ->type === Token::TYPE_OPERATOR ) && ($ token ->value === '( ' )) {
@@ -140,8 +155,10 @@ public static function build($component, array $options = array())
140155 $ columns = !empty ($ component ->columns ) ?
141156 '(` ' . implode ('`, ` ' , $ component ->columns ) . '`) ' : '' ;
142157 return $ component ->dest . $ columns ;
158+ } elseif (isset ($ component ->values )) {
159+ return ExpressionArray::build ($ component ->values );
143160 } else {
144161 return 'OUTFILE " ' . $ component ->dest . '" ' ;
145162 }
146163 }
147- }
164+ }
0 commit comments