Пример #1
0
        public void write_patch_without_designated_owner()
        {
            var func = new FunctionBody(new FunctionName("public", "mt_upsert_target"), new string[0], theFunctionBody);


            var patch = new SchemaPatch();

            var options = new StoreOptions {
                OwnerName = null
            };

            var diff = new FunctionDiff(func, null);

            diff.WritePatch(options, patch);

            patch.UpdateDDL.ShouldNotContain("OWNER TO");
        }
Пример #2
0
        public void write_patch_with_designated_owner()
        {
            var func = new FunctionBody(new FunctionName("public", "mt_upsert_target"), new string[0], theFunctionBody);


            var patch = new SchemaPatch();

            var options = new StoreOptions {
                OwnerName = "bill"
            };

            var diff = new FunctionDiff(func, null);

            diff.WritePatch(options, patch);

            patch.UpdateDDL.ShouldContain("ALTER FUNCTION public.mt_upsert_target(jsonb, character varying, uuid, uuid) OWNER TO \"bill\";");
        }
Пример #3
0
        private List <FunctionDiff> getDiffFunctions(List <Function> functions1, List <Function> functions2, string dbname1, string dbname2)
        {
            // Logger
            DateTime start = DateTime.Now;

            logger.Info("[ getDiffFunctions ] - start time : " + start.ToString());

            List <FunctionDiff> rtn = new List <FunctionDiff>();

            functions1.Sort((a, b) => a.name.CompareTo(b.name));
            functions2.Sort((a, b) => a.name.CompareTo(b.name));

            int pos1 = 0, pos2 = 0;

            while (pos1 < functions1.Count() && pos2 < functions2.Count())
            {
                Function function1 = functions1[pos1];
                Function function2 = functions2[pos2];

                if (function1.name == function2.name)
                {
                    if (!function1.compare(function2))
                    {
                        FunctionDiff funDiff = new FunctionDiff(function1.name, true);
                        funDiff.different.Add(function1);
                        funDiff.different.Add(function2);
                        rtn.Add(funDiff);
                    }
                    pos1++;
                    pos2++;
                }
                else if (function1.name.CompareTo(function2.name) < 0)
                {
                    FunctionDiff funDiff = new FunctionDiff(function1.name, false);
                    funDiff.different.Add(function1);
                    funDiff.different.Add(new Function(dbname2, function1.name, "", false));
                    rtn.Add(funDiff);
                    pos1++;
                }
                else if (function1.name.CompareTo(function2.name) > 0)
                {
                    FunctionDiff funDiff = new FunctionDiff(function2.name, false);
                    funDiff.different.Add(new Function(dbname1, function2.name, "", false));
                    funDiff.different.Add(function2);
                    rtn.Add(funDiff);
                    pos2++;
                }
            }
            while (pos1 < functions1.Count())
            {
                Function     function1 = functions1[pos1];
                FunctionDiff funDiff   = new FunctionDiff(function1.name, false);
                funDiff.different.Add(function1);
                funDiff.different.Add(new Function(dbname2, function1.name, "", false));
                rtn.Add(funDiff);
                pos1++;
            }
            while (pos2 < functions2.Count())
            {
                Function     function2 = functions2[pos2];
                FunctionDiff funDiff   = new FunctionDiff(function2.name, false);
                funDiff.different.Add(new Function(dbname1, function2.name, "", false));
                funDiff.different.Add(function2);
                rtn.Add(funDiff);
                pos2++;
            }

            // Logger
            DateTime end = DateTime.Now;

            logger.Info("[ getDiffFunctions ] - end time : " + end.ToString() + " ; spend time : " + (end - start).ToString() + "\n");

            return(rtn);
        }