From af22f8238a2bfbe107243cf651c6a2997a5ab2ac Mon Sep 17 00:00:00 2001 From: "Aleksandar Tomic (SQL)" Date: Fri, 3 Dec 2021 19:01:36 +0100 Subject: [PATCH] clustered index in create table --- .../Statements/CreateTableStatement.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/QueryProcessing/Statements/CreateTableStatement.cs b/QueryProcessing/Statements/CreateTableStatement.cs index 6a4ae00..7a5843d 100644 --- a/QueryProcessing/Statements/CreateTableStatement.cs +++ b/QueryProcessing/Statements/CreateTableStatement.cs @@ -1,7 +1,6 @@ using MetadataManager; using PageManager; using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -30,6 +29,7 @@ public async Task BuildTree(Sql.DmlDdlSqlStatement statement, ITran Sql.DmlDdlSqlStatement.Create createStatement = (Sql.DmlDdlSqlStatement.Create)statement; string tableName = createStatement.Item.Table; var columns = createStatement.Item.ColumnList.ToList(); + string[] clusteredIndexes = createStatement.Item.ClusteredIndexList.ToArray(); MetadataTablesManager tableManager = this.metadataManager.GetTableManager(); @@ -57,7 +57,25 @@ public async Task BuildTree(Sql.DmlDdlSqlStatement statement, ITran } else throw new ArgumentException(); }).ToArray(); - tableCreateDefinition.ClusteredIndexPositions = new int[] { }; + + int[] clusteredIndexPositions = new int[clusteredIndexes.Length]; + int posIndex = 0; + foreach (string clusteredIndexName in clusteredIndexes) + { + int posColumn = 0; + foreach (string columnName in tableCreateDefinition.ColumnNames) + { + if (columnName == clusteredIndexName) + { + clusteredIndexPositions[posIndex] = posColumn; + } + posColumn++; + } + + posIndex++; + } + + tableCreateDefinition.ClusteredIndexPositions = clusteredIndexPositions; await tableManager.CreateObject(tableCreateDefinition, tran).ConfigureAwait(false);