diff --git a/Musoq.Evaluator.Tests/StringifyTests.cs b/Musoq.Evaluator.Tests/StringifyTests.cs index b12b4321..92cf1f46 100644 --- a/Musoq.Evaluator.Tests/StringifyTests.cs +++ b/Musoq.Evaluator.Tests/StringifyTests.cs @@ -19,6 +19,10 @@ public class StringifyTests : BasicEntityTestBase [DataRow("select 1 from #A.entities() a inner join #B.entities() b on a.Id = b.Id inner join #C.entities() c on a.Id = c.Id")] [DataRow("select 1 from #A.entities() a inner join #B.entities() b on a.Id = b.Id left outer join #C.entities() c on a.Id = c.Id")] [DataRow("select 1 from #A.entities() a inner join #B.entities() b on a.Id = b.Id right outer join #C.entities() c on a.Id = c.Id")] + [DataRow("select c.ContainerName, c2.ImageName, c.ContainerId from #stdin.text('Ollama', 'llama3.1') c inner join #stdin.text('Ollama', 'llama3.1') c2 on c.ContainerId = c2.ContainerId")] + [DataRow("table Example {};")] + [DataRow("table Example { Id 'System.Int32' };")] + [DataRow("table Example { Id 'System.Int32', Name 'System.String' };")] public void WhenToStringCalled_ShouldReturnSameQuery(string query) { diff --git a/Musoq.Parser/Musoq.Parser.csproj b/Musoq.Parser/Musoq.Parser.csproj index 5fb9fb4f..c0c2d4e5 100644 --- a/Musoq.Parser/Musoq.Parser.csproj +++ b/Musoq.Parser/Musoq.Parser.csproj @@ -3,7 +3,7 @@ net8.0 true - 3.0.6 + 3.0.7 Jakub Puchała Musoq https://github.com/Puchaczov/Musoq diff --git a/Musoq.Parser/Nodes/ArgsListNode.cs b/Musoq.Parser/Nodes/ArgsListNode.cs index 669ea611..074ee3fc 100644 --- a/Musoq.Parser/Nodes/ArgsListNode.cs +++ b/Musoq.Parser/Nodes/ArgsListNode.cs @@ -13,7 +13,7 @@ public ArgsListNode(Node[] args) Id = $"{nameof(ArgsListNode)}{argsId}"; } - public static ArgsListNode Empty => new(Array.Empty()); + public static ArgsListNode Empty => new([]); public Node[] Args { get; } diff --git a/Musoq.Parser/Nodes/CreateTableNode.cs b/Musoq.Parser/Nodes/CreateTableNode.cs index 18dc1957..e03197cc 100644 --- a/Musoq.Parser/Nodes/CreateTableNode.cs +++ b/Musoq.Parser/Nodes/CreateTableNode.cs @@ -28,16 +28,23 @@ public override void Accept(IExpressionVisitor visitor) public override string ToString() { var cols = new StringBuilder(); + + if (TableTypePairs.Length == 0) + return $"table {Name} {{}};"; + + if (TableTypePairs.Length == 1) + return $"table {Name} {{ {TableTypePairs[0].ColumnName} '{TableTypePairs[0].TypeName}' }};"; - cols.Append($"{TableTypePairs[0].ColumnName} {TableTypePairs[0].TypeName}"); + cols.Append($"{TableTypePairs[0].ColumnName} '{TableTypePairs[0].TypeName}', "); for (var i = 1; i < TableTypePairs.Length - 1; ++i) { - cols.Append($"{TableTypePairs[i].ColumnName} {TableTypePairs[i].TypeName}"); + cols.Append($"{TableTypePairs[i].ColumnName} '{TableTypePairs[i].TypeName}', "); } - cols.Append($"{TableTypePairs[^1].ColumnName} {TableTypePairs[^1].TypeName}"); - return $"CREATE TABLE {Name}"; + cols.Append($"{TableTypePairs[^1].ColumnName} '{TableTypePairs[^1].TypeName}'"); + + return $"table {Name} {{ {cols} }};"; } } } \ No newline at end of file diff --git a/Musoq.Parser/Nodes/CreateTransformationTableNode.cs b/Musoq.Parser/Nodes/CreateTransformationTableNode.cs index bbbeb04b..aa52ff1c 100644 --- a/Musoq.Parser/Nodes/CreateTransformationTableNode.cs +++ b/Musoq.Parser/Nodes/CreateTransformationTableNode.cs @@ -34,7 +34,7 @@ public override void Accept(IExpressionVisitor visitor) public override string ToString() { - return $"CREATE TRANSFORM TABLE {Name}"; + return $"create transform table {Name}"; } } } \ No newline at end of file diff --git a/Musoq.Parser/Nodes/CteExpressionNode.cs b/Musoq.Parser/Nodes/CteExpressionNode.cs index f7a98958..dcfc5d25 100644 --- a/Musoq.Parser/Nodes/CteExpressionNode.cs +++ b/Musoq.Parser/Nodes/CteExpressionNode.cs @@ -36,13 +36,11 @@ public override string ToString() query.Append("("); query.Append(InnerExpression[i].ToString()); query.Append("), "); - query.Append(Environment.NewLine); } query.Append("("); query.Append(InnerExpression[^1].ToString()); query.Append(") "); - query.Append(Environment.NewLine); query.Append(OuterExpression.ToString()); return query.ToString(); diff --git a/Musoq.Parser/Nodes/GroupByNode.cs b/Musoq.Parser/Nodes/GroupByNode.cs index 0002a407..104ea253 100644 --- a/Musoq.Parser/Nodes/GroupByNode.cs +++ b/Musoq.Parser/Nodes/GroupByNode.cs @@ -32,7 +32,7 @@ public override string ToString() ? string.Empty : Fields.Select(f => f.ToString()).Aggregate((a, b) => $"{a.ToString()}, {b.ToString()}"); return - $"GROUP BY {fields}{Having?.ToString()}"; + $"group by {fields}{Having?.ToString()}"; } } } \ No newline at end of file diff --git a/Musoq.Parser/Nodes/HavingNode.cs b/Musoq.Parser/Nodes/HavingNode.cs index d85c6c77..cc97338a 100644 --- a/Musoq.Parser/Nodes/HavingNode.cs +++ b/Musoq.Parser/Nodes/HavingNode.cs @@ -23,7 +23,7 @@ public override void Accept(IExpressionVisitor visitor) public override string ToString() { - return $"HAVING {Expression.ToString()}"; + return $"having {Expression.ToString()}"; } } } \ No newline at end of file diff --git a/Musoq.Parser/Nodes/RenameTableNode.cs b/Musoq.Parser/Nodes/RenameTableNode.cs index cf99b1f0..551f000b 100644 --- a/Musoq.Parser/Nodes/RenameTableNode.cs +++ b/Musoq.Parser/Nodes/RenameTableNode.cs @@ -25,7 +25,7 @@ public override void Accept(IExpressionVisitor visitor) public override string ToString() { - return $"RENAME {TableSourceName} AS {TableDestinationName}"; + return $"rename {TableSourceName} as {TableDestinationName}"; } } } \ No newline at end of file diff --git a/Musoq.Parser/Nodes/SetOperator.cs b/Musoq.Parser/Nodes/SetOperator.cs deleted file mode 100644 index 2db2a353..00000000 --- a/Musoq.Parser/Nodes/SetOperator.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Musoq.Parser.Tokens; - -namespace Musoq.Parser.Nodes -{ - public enum SetOperator - { - Except = TokenType.Except, - Union = TokenType.Union, - Intersect = TokenType.Intersect - } -} \ No newline at end of file