Ejemplo n.º 1
0
        /// <summary>
        /// 新建物化视图
        /// </summary>
        private void CreateMV(EntityModel model, CqlMaterializedView view)
        {
            //TODO:考虑先尝试移除已存在的
            var sb = StringBuilderCache.Acquire();

            sb.Append("CREATE MATERIALIZED VIEW ");
            sb.Append($"\"{model.Id}_{view.Name}\" AS ");
            sb.Append($"SELECT * FROM \"{model.Name}\" WHERE "); //TODO:暂Select *
            for (int i = 0; i < view.PrimaryKey.PartitionKeys.Length; i++)
            {
                if (i != 0)
                {
                    sb.Append(" And ");
                }
                sb.Append($"\"{view.PrimaryKey.PartitionKeys[i]}\" IS NOT NULL");
            }
            if (view.PrimaryKey.ClusteringColumns != null)
            {
                for (int i = 0; i < view.PrimaryKey.ClusteringColumns.Length; i++)
                {
                    sb.Append($" And \"{model.GetMember(view.PrimaryKey.ClusteringColumns[i].MemberId, true).Name}\" IS NOT NULL");
                }
            }

            BuildPrimaryKey(sb, view.PrimaryKey, model);
            BuildOrderBy(sb, view.PrimaryKey, model);

            session.Execute(StringBuilderCache.GetStringAndRelease(sb));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 删除物化视图
 /// </summary>
 private void DropMV(EntityModel model, CqlMaterializedView view)
 {
     session.Execute($"DROP MATERIALIZED VIEW IF EXISTS \"{model.Id}_{view.Name}\"");
 }