Example #1
0
        public void HugeCursorTest()
        {
            var db = new SPTestsDatabase();

            //// Huge cursor tests....
            var config = db.SingleFromQuery("SELECT current_setting('work_mem') work_mem, current_setting('log_temp_files') log_temp_files");

            //// huge data from SELECT *
            //var resultLargeSelectTest = await db.QueryWithParamsAsync("SELECT * FROM large");
            //foreach(var item in resultLargeSelectTest)
            //{
            //    int a = 1;
            //}

            //// huge data from (implicit) FETCH ALL
            //// AUTO-DEREFERENCE TWO HUGE, ONLY FETCH FROM ONE
            //var resultLargeProcTest = await db.QueryFromProcedureAsync("lump2", returnParams: new { abc = new Cursor() });
            //foreach (var item in resultLargeProcTest)
            //{
            //    Console.WriteLine(item.id);
            //    break;
            //}

            var results = await db.QueryMultipleFromProcedureAsync("lump2", returnParams : new { abc = new Cursor() });

            db.NpgsqlAutoDereferenceFetchSize = 4000000;
            await CheckMultiResultSetStructureAsync(results, 10000000, 10000000, true, true);

            // one item from cursor
            //using (var conn = db.OpenConnection())
            //{
            //    using (var trans = conn.BeginTransaction())
            //    {
            //        var result = db.ExecuteAsProcedure("lump2", returnParams: new { abc = new Cursor(), def = new Cursor() }, connection: conn);
            //        var singleItemTest = await db.QueryWithParamsAsync($@"FETCH 5000000 FROM ""{result.abc}"";", connection: conn);
            //        foreach (var item in singleItemTest)
            //        {
            //            Console.WriteLine(item.id);
            //            break;
            //        }
            //         NB plain Execute() did NOT take a connection, and changing this MIGHT be an API breaking change??? TEST...!
            //         (This is the first, and so far only, really unwanted side effect of trying to stay 100% non-breaking.)
            //        db.Execute($@"CLOSE ""{result.abc}"";", conn);
            //        trans.Commit();
            //    }
            //}
        }