@@ -413,3 +413,243 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
413
413
t
414
414
(1 row)
415
415
416
+ -- Temporary table with same name, re-created.
417
+ BEGIN;
418
+ CREATE TEMP TABLE temp_t (id int) ON COMMIT DROP;
419
+ SELECT * FROM temp_t;
420
+ id
421
+ ----
422
+ (0 rows)
423
+
424
+ COMMIT;
425
+ BEGIN;
426
+ CREATE TEMP TABLE temp_t (id int) ON COMMIT DROP;
427
+ SELECT * FROM temp_t;
428
+ id
429
+ ----
430
+ (0 rows)
431
+
432
+ COMMIT;
433
+ SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C";
434
+ calls | query
435
+ -------+------------------------------------------------------------------------
436
+ 1 | SELECT * FROM temp_t
437
+ 1 | SELECT * FROM temp_t
438
+ 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"
439
+ 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t
440
+ (4 rows)
441
+
442
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
443
+ t
444
+ ---
445
+ t
446
+ (1 row)
447
+
448
+ -- search_path with various schemas and temporary tables
449
+ CREATE SCHEMA pgss_schema_1;
450
+ CREATE SCHEMA pgss_schema_2;
451
+ -- Same attributes.
452
+ CREATE TABLE pgss_schema_1.tab_search_same (a int, b int);
453
+ CREATE TABLE pgss_schema_2.tab_search_same (a int, b int);
454
+ CREATE TEMP TABLE tab_search_same (a int, b int);
455
+ -- Different number of attributes, mapping types
456
+ CREATE TABLE pgss_schema_1.tab_search_diff_1 (a int);
457
+ CREATE TABLE pgss_schema_2.tab_search_diff_1 (a int, b int);
458
+ CREATE TEMP TABLE tab_search_diff_1 (a int, b int, c int);
459
+ -- Same number of attributes, different types
460
+ CREATE TABLE pgss_schema_1.tab_search_diff_2 (a int);
461
+ CREATE TABLE pgss_schema_2.tab_search_diff_2 (a text);
462
+ CREATE TEMP TABLE tab_search_diff_2 (a bigint);
463
+ -- First permanent schema
464
+ SET search_path = 'pgss_schema_1';
465
+ SELECT count(*) FROM tab_search_same;
466
+ count
467
+ -------
468
+ 0
469
+ (1 row)
470
+
471
+ SELECT a, b FROM tab_search_same;
472
+ a | b
473
+ ---+---
474
+ (0 rows)
475
+
476
+ SELECT count(*) FROM tab_search_diff_1;
477
+ count
478
+ -------
479
+ 0
480
+ (1 row)
481
+
482
+ SELECT count(*) FROM tab_search_diff_2;
483
+ count
484
+ -------
485
+ 0
486
+ (1 row)
487
+
488
+ SELECT a FROM tab_search_diff_2 AS t1;
489
+ a
490
+ ---
491
+ (0 rows)
492
+
493
+ SELECT a FROM tab_search_diff_2;
494
+ a
495
+ ---
496
+ (0 rows)
497
+
498
+ SELECT a AS a1 FROM tab_search_diff_2;
499
+ a1
500
+ ----
501
+ (0 rows)
502
+
503
+ -- Second permanent schema
504
+ SET search_path = 'pgss_schema_2';
505
+ SELECT count(*) FROM tab_search_same;
506
+ count
507
+ -------
508
+ 0
509
+ (1 row)
510
+
511
+ SELECT a, b FROM tab_search_same;
512
+ a | b
513
+ ---+---
514
+ (0 rows)
515
+
516
+ SELECT count(*) FROM tab_search_diff_1;
517
+ count
518
+ -------
519
+ 0
520
+ (1 row)
521
+
522
+ SELECT count(*) FROM tab_search_diff_2;
523
+ count
524
+ -------
525
+ 0
526
+ (1 row)
527
+
528
+ SELECT a FROM tab_search_diff_2 AS t1;
529
+ a
530
+ ---
531
+ (0 rows)
532
+
533
+ SELECT a FROM tab_search_diff_2;
534
+ a
535
+ ---
536
+ (0 rows)
537
+
538
+ SELECT a AS a1 FROM tab_search_diff_2;
539
+ a1
540
+ ----
541
+ (0 rows)
542
+
543
+ -- Temporary schema
544
+ SET search_path = 'pg_temp';
545
+ SELECT count(*) FROM tab_search_same;
546
+ count
547
+ -------
548
+ 0
549
+ (1 row)
550
+
551
+ SELECT a, b FROM tab_search_same;
552
+ a | b
553
+ ---+---
554
+ (0 rows)
555
+
556
+ SELECT count(*) FROM tab_search_diff_1;
557
+ count
558
+ -------
559
+ 0
560
+ (1 row)
561
+
562
+ SELECT count(*) FROM tab_search_diff_2;
563
+ count
564
+ -------
565
+ 0
566
+ (1 row)
567
+
568
+ SELECT a FROM tab_search_diff_2 AS t1;
569
+ a
570
+ ---
571
+ (0 rows)
572
+
573
+ SELECT a FROM tab_search_diff_2;
574
+ a
575
+ ---
576
+ (0 rows)
577
+
578
+ SELECT a AS a1 FROM tab_search_diff_2;
579
+ a1
580
+ ----
581
+ (0 rows)
582
+
583
+ RESET search_path;
584
+ -- Schema qualifications
585
+ SELECT count(*) FROM pgss_schema_1.tab_search_same;
586
+ count
587
+ -------
588
+ 0
589
+ (1 row)
590
+
591
+ SELECT a, b FROM pgss_schema_1.tab_search_same;
592
+ a | b
593
+ ---+---
594
+ (0 rows)
595
+
596
+ SELECT count(*) FROM pgss_schema_2.tab_search_diff_1;
597
+ count
598
+ -------
599
+ 0
600
+ (1 row)
601
+
602
+ SELECT count(*) FROM pg_temp.tab_search_diff_2;
603
+ count
604
+ -------
605
+ 0
606
+ (1 row)
607
+
608
+ SELECT a FROM pgss_schema_2.tab_search_diff_2 AS t1;
609
+ a
610
+ ---
611
+ (0 rows)
612
+
613
+ SELECT a FROM pgss_schema_2.tab_search_diff_2;
614
+ a
615
+ ---
616
+ (0 rows)
617
+
618
+ SELECT a AS a1 FROM pgss_schema_2.tab_search_diff_2;
619
+ a1
620
+ ----
621
+ (0 rows)
622
+
623
+ SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C";
624
+ calls | query
625
+ -------+------------------------------------------------------------------------
626
+ 3 | SELECT a FROM pgss_schema_2.tab_search_diff_2 AS t1
627
+ 9 | SELECT a FROM tab_search_diff_2 AS t1
628
+ 1 | SELECT a, b FROM pgss_schema_1.tab_search_same
629
+ 3 | SELECT a, b FROM tab_search_same
630
+ 0 | SELECT calls, query FROM pg_stat_statements ORDER BY query COLLATE "C"
631
+ 1 | SELECT count(*) FROM pgss_schema_1.tab_search_same
632
+ 1 | SELECT count(*) FROM pgss_schema_2.tab_search_diff_1
633
+ 3 | SELECT count(*) FROM tab_search_diff_1
634
+ 4 | SELECT count(*) FROM tab_search_diff_2
635
+ 3 | SELECT count(*) FROM tab_search_same
636
+ 1 | SELECT pg_stat_statements_reset() IS NOT NULL AS t
637
+ (11 rows)
638
+
639
+ DROP SCHEMA pgss_schema_1 CASCADE;
640
+ NOTICE: drop cascades to 3 other objects
641
+ DETAIL: drop cascades to table pgss_schema_1.tab_search_same
642
+ drop cascades to table pgss_schema_1.tab_search_diff_1
643
+ drop cascades to table pgss_schema_1.tab_search_diff_2
644
+ DROP SCHEMA pgss_schema_2 CASCADE;
645
+ NOTICE: drop cascades to 3 other objects
646
+ DETAIL: drop cascades to table pgss_schema_2.tab_search_same
647
+ drop cascades to table pgss_schema_2.tab_search_diff_1
648
+ drop cascades to table pgss_schema_2.tab_search_diff_2
649
+ DROP TABLE tab_search_same, tab_search_diff_1, tab_search_diff_2;
650
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
651
+ t
652
+ ---
653
+ t
654
+ (1 row)
655
+
0 commit comments