Esempio n. 1
0
        private void DeparseImpalaValuesTableNode(ScriptWriter writer, ImpalaValuesTableNode node, QsiScript script)
        {
            writer.Write("VALUES ");

            writer.WriteJoin(", ", node.Rows, (w, row) =>
            {
                DeparseTreeNode(w, row, script);
            });

            if (!node.Order.IsEmpty)
            {
                writer.WriteSpace();
                DeparseTreeNode(writer, node.Order.Value, script);
            }

            if (!node.Order.IsEmpty)
            {
                writer.WriteSpace();
                DeparseTreeNode(writer, node.Order.Value, script);
            }

            if (!node.Limit.IsEmpty)
            {
                writer.WriteSpace();
                DeparseTreeNode(writer, node.Limit.Value, script);
            }
        }
Esempio n. 2
0
        private ValueTask <QsiTableStructure> BuildImpalaValuesTableStructure(TableCompileContext context, ImpalaValuesTableNode table)
        {
            if (table.Rows.Count == 0)
            {
                throw new QsiException(QsiError.Syntax);
            }

            var structure = new QsiTableStructure
            {
                Type = QsiTableType.Inline
            };

            var columnCount = table.Rows[0].ColumnValues.Count;

            foreach (var value in table.Rows[0].ColumnValues)
            {
                var column = structure.NewColumn();

                if (value is IQsiColumnExpressionNode {
                    Column: IQsiDerivedColumnNode {
                        Alias: { }
                    } derivedColumnNode
                })