2355{
2357
2359 {
2360 /* recurse if we're given a RawStmt */
2361 case T_RawStmt:
2363 break;
2364
2365 /* raw plannable queries */
2366 case T_InsertStmt:
2367 tag = CMDTAG_INSERT;
2368 break;
2369
2370 case T_DeleteStmt:
2371 tag = CMDTAG_DELETE;
2372 break;
2373
2374 case T_UpdateStmt:
2375 tag = CMDTAG_UPDATE;
2376 break;
2377
2378 case T_MergeStmt:
2379 tag = CMDTAG_MERGE;
2380 break;
2381
2382 case T_SelectStmt:
2383 tag = CMDTAG_SELECT;
2384 break;
2385
2386 case T_PLAssignStmt:
2387 tag = CMDTAG_SELECT;
2388 break;
2389
2390 /* utility statements --- same whether raw or cooked */
2391 case T_TransactionStmt:
2392 {
2394
2396 {
2398 tag = CMDTAG_BEGIN;
2399 break;
2400
2402 tag = CMDTAG_START_TRANSACTION;
2403 break;
2404
2406 tag = CMDTAG_COMMIT;
2407 break;
2408
2411 tag = CMDTAG_ROLLBACK;
2412 break;
2413
2415 tag = CMDTAG_SAVEPOINT;
2416 break;
2417
2419 tag = CMDTAG_RELEASE;
2420 break;
2421
2423 tag = CMDTAG_PREPARE_TRANSACTION;
2424 break;
2425
2427 tag = CMDTAG_COMMIT_PREPARED;
2428 break;
2429
2431 tag = CMDTAG_ROLLBACK_PREPARED;
2432 break;
2433
2434 default:
2435 tag = CMDTAG_UNKNOWN;
2436 break;
2437 }
2438 }
2439 break;
2440
2441 case T_DeclareCursorStmt:
2442 tag = CMDTAG_DECLARE_CURSOR;
2443 break;
2444
2445 case T_ClosePortalStmt:
2446 {
2448
2449 if (
stmt->portalname == NULL)
2450 tag = CMDTAG_CLOSE_CURSOR_ALL;
2451 else
2452 tag = CMDTAG_CLOSE_CURSOR;
2453 }
2454 break;
2455
2456 case T_FetchStmt:
2457 {
2459
2460 tag = (
stmt->ismove) ? CMDTAG_MOVE : CMDTAG_FETCH;
2461 }
2462 break;
2463
2464 case T_CreateDomainStmt:
2465 tag = CMDTAG_CREATE_DOMAIN;
2466 break;
2467
2468 case T_CreateSchemaStmt:
2469 tag = CMDTAG_CREATE_SCHEMA;
2470 break;
2471
2472 case T_CreateStmt:
2473 tag = CMDTAG_CREATE_TABLE;
2474 break;
2475
2476 case T_CreateTableSpaceStmt:
2477 tag = CMDTAG_CREATE_TABLESPACE;
2478 break;
2479
2480 case T_DropTableSpaceStmt:
2481 tag = CMDTAG_DROP_TABLESPACE;
2482 break;
2483
2484 case T_AlterTableSpaceOptionsStmt:
2485 tag = CMDTAG_ALTER_TABLESPACE;
2486 break;
2487
2488 case T_CreateExtensionStmt:
2489 tag = CMDTAG_CREATE_EXTENSION;
2490 break;
2491
2492 case T_AlterExtensionStmt:
2493 tag = CMDTAG_ALTER_EXTENSION;
2494 break;
2495
2496 case T_AlterExtensionContentsStmt:
2497 tag = CMDTAG_ALTER_EXTENSION;
2498 break;
2499
2500 case T_CreateFdwStmt:
2501 tag = CMDTAG_CREATE_FOREIGN_DATA_WRAPPER;
2502 break;
2503
2504 case T_AlterFdwStmt:
2505 tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER;
2506 break;
2507
2508 case T_CreateForeignServerStmt:
2509 tag = CMDTAG_CREATE_SERVER;
2510 break;
2511
2512 case T_AlterForeignServerStmt:
2513 tag = CMDTAG_ALTER_SERVER;
2514 break;
2515
2516 case T_CreateUserMappingStmt:
2517 tag = CMDTAG_CREATE_USER_MAPPING;
2518 break;
2519
2520 case T_AlterUserMappingStmt:
2521 tag = CMDTAG_ALTER_USER_MAPPING;
2522 break;
2523
2524 case T_DropUserMappingStmt:
2525 tag = CMDTAG_DROP_USER_MAPPING;
2526 break;
2527
2528 case T_CreateForeignTableStmt:
2529 tag = CMDTAG_CREATE_FOREIGN_TABLE;
2530 break;
2531
2532 case T_ImportForeignSchemaStmt:
2533 tag = CMDTAG_IMPORT_FOREIGN_SCHEMA;
2534 break;
2535
2536 case T_DropStmt:
2537 switch (((
DropStmt *) parsetree)->removeType)
2538 {
2540 tag = CMDTAG_DROP_TABLE;
2541 break;
2543 tag = CMDTAG_DROP_SEQUENCE;
2544 break;
2546 tag = CMDTAG_DROP_VIEW;
2547 break;
2549 tag = CMDTAG_DROP_MATERIALIZED_VIEW;
2550 break;
2552 tag = CMDTAG_DROP_INDEX;
2553 break;
2555 tag = CMDTAG_DROP_TYPE;
2556 break;
2558 tag = CMDTAG_DROP_DOMAIN;
2559 break;
2561 tag = CMDTAG_DROP_COLLATION;
2562 break;
2564 tag = CMDTAG_DROP_CONVERSION;
2565 break;
2567 tag = CMDTAG_DROP_SCHEMA;
2568 break;
2570 tag = CMDTAG_DROP_TEXT_SEARCH_PARSER;
2571 break;
2573 tag = CMDTAG_DROP_TEXT_SEARCH_DICTIONARY;
2574 break;
2576 tag = CMDTAG_DROP_TEXT_SEARCH_TEMPLATE;
2577 break;
2579 tag = CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION;
2580 break;
2582 tag = CMDTAG_DROP_FOREIGN_TABLE;
2583 break;
2585 tag = CMDTAG_DROP_EXTENSION;
2586 break;
2588 tag = CMDTAG_DROP_FUNCTION;
2589 break;
2591 tag = CMDTAG_DROP_PROCEDURE;
2592 break;
2594 tag = CMDTAG_DROP_ROUTINE;
2595 break;
2597 tag = CMDTAG_DROP_AGGREGATE;
2598 break;
2600 tag = CMDTAG_DROP_OPERATOR;
2601 break;
2603 tag = CMDTAG_DROP_LANGUAGE;
2604 break;
2606 tag = CMDTAG_DROP_CAST;
2607 break;
2609 tag = CMDTAG_DROP_TRIGGER;
2610 break;
2612 tag = CMDTAG_DROP_EVENT_TRIGGER;
2613 break;
2615 tag = CMDTAG_DROP_RULE;
2616 break;
2618 tag = CMDTAG_DROP_FOREIGN_DATA_WRAPPER;
2619 break;
2621 tag = CMDTAG_DROP_SERVER;
2622 break;
2624 tag = CMDTAG_DROP_OPERATOR_CLASS;
2625 break;
2627 tag = CMDTAG_DROP_OPERATOR_FAMILY;
2628 break;
2630 tag = CMDTAG_DROP_POLICY;
2631 break;
2633 tag = CMDTAG_DROP_TRANSFORM;
2634 break;
2636 tag = CMDTAG_DROP_ACCESS_METHOD;
2637 break;
2639 tag = CMDTAG_DROP_PUBLICATION;
2640 break;
2642 tag = CMDTAG_DROP_STATISTICS;
2643 break;
2644 default:
2645 tag = CMDTAG_UNKNOWN;
2646 }
2647 break;
2648
2649 case T_TruncateStmt:
2650 tag = CMDTAG_TRUNCATE_TABLE;
2651 break;
2652
2653 case T_CommentStmt:
2654 tag = CMDTAG_COMMENT;
2655 break;
2656
2657 case T_SecLabelStmt:
2658 tag = CMDTAG_SECURITY_LABEL;
2659 break;
2660
2661 case T_CopyStmt:
2662 tag = CMDTAG_COPY;
2663 break;
2664
2665 case T_RenameStmt:
2666
2667 /*
2668 * When the column is renamed, the command tag is created from its
2669 * relation type
2670 */
2674 break;
2675
2676 case T_AlterObjectDependsStmt:
2678 break;
2679
2680 case T_AlterObjectSchemaStmt:
2682 break;
2683
2684 case T_AlterOwnerStmt:
2686 break;
2687
2688 case T_AlterTableMoveAllStmt:
2690 break;
2691
2692 case T_AlterTableStmt:
2694 break;
2695
2696 case T_AlterDomainStmt:
2697 tag = CMDTAG_ALTER_DOMAIN;
2698 break;
2699
2700 case T_AlterFunctionStmt:
2702 {
2704 tag = CMDTAG_ALTER_FUNCTION;
2705 break;
2707 tag = CMDTAG_ALTER_PROCEDURE;
2708 break;
2710 tag = CMDTAG_ALTER_ROUTINE;
2711 break;
2712 default:
2713 tag = CMDTAG_UNKNOWN;
2714 }
2715 break;
2716
2717 case T_GrantStmt:
2718 {
2720
2721 tag = (
stmt->is_grant) ? CMDTAG_GRANT : CMDTAG_REVOKE;
2722 }
2723 break;
2724
2725 case T_GrantRoleStmt:
2726 {
2728
2729 tag = (
stmt->is_grant) ? CMDTAG_GRANT_ROLE : CMDTAG_REVOKE_ROLE;
2730 }
2731 break;
2732
2733 case T_AlterDefaultPrivilegesStmt:
2734 tag = CMDTAG_ALTER_DEFAULT_PRIVILEGES;
2735 break;
2736
2737 case T_DefineStmt:
2739 {
2741 tag = CMDTAG_CREATE_AGGREGATE;
2742 break;
2744 tag = CMDTAG_CREATE_OPERATOR;
2745 break;
2747 tag = CMDTAG_CREATE_TYPE;
2748 break;
2750 tag = CMDTAG_CREATE_TEXT_SEARCH_PARSER;
2751 break;
2753 tag = CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY;
2754 break;
2756 tag = CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE;
2757 break;
2759 tag = CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION;
2760 break;
2762 tag = CMDTAG_CREATE_COLLATION;
2763 break;
2765 tag = CMDTAG_CREATE_ACCESS_METHOD;
2766 break;
2767 default:
2768 tag = CMDTAG_UNKNOWN;
2769 }
2770 break;
2771
2772 case T_CompositeTypeStmt:
2773 tag = CMDTAG_CREATE_TYPE;
2774 break;
2775
2776 case T_CreateEnumStmt:
2777 tag = CMDTAG_CREATE_TYPE;
2778 break;
2779
2780 case T_CreateRangeStmt:
2781 tag = CMDTAG_CREATE_TYPE;
2782 break;
2783
2784 case T_AlterEnumStmt:
2785 tag = CMDTAG_ALTER_TYPE;
2786 break;
2787
2788 case T_ViewStmt:
2789 tag = CMDTAG_CREATE_VIEW;
2790 break;
2791
2792 case T_CreateFunctionStmt:
2794 tag = CMDTAG_CREATE_PROCEDURE;
2795 else
2796 tag = CMDTAG_CREATE_FUNCTION;
2797 break;
2798
2799 case T_IndexStmt:
2800 tag = CMDTAG_CREATE_INDEX;
2801 break;
2802
2803 case T_RuleStmt:
2804 tag = CMDTAG_CREATE_RULE;
2805 break;
2806
2807 case T_CreateSeqStmt:
2808 tag = CMDTAG_CREATE_SEQUENCE;
2809 break;
2810
2811 case T_AlterSeqStmt:
2812 tag = CMDTAG_ALTER_SEQUENCE;
2813 break;
2814
2815 case T_DoStmt:
2816 tag = CMDTAG_DO;
2817 break;
2818
2819 case T_CreatedbStmt:
2820 tag = CMDTAG_CREATE_DATABASE;
2821 break;
2822
2823 case T_AlterDatabaseStmt:
2824 case T_AlterDatabaseRefreshCollStmt:
2825 case T_AlterDatabaseSetStmt:
2826 tag = CMDTAG_ALTER_DATABASE;
2827 break;
2828
2829 case T_DropdbStmt:
2830 tag = CMDTAG_DROP_DATABASE;
2831 break;
2832
2833 case T_NotifyStmt:
2834 tag = CMDTAG_NOTIFY;
2835 break;
2836
2837 case T_ListenStmt:
2838 tag = CMDTAG_LISTEN;
2839 break;
2840
2841 case T_UnlistenStmt:
2842 tag = CMDTAG_UNLISTEN;
2843 break;
2844
2845 case T_LoadStmt:
2846 tag = CMDTAG_LOAD;
2847 break;
2848
2849 case T_CallStmt:
2850 tag = CMDTAG_CALL;
2851 break;
2852
2853 case T_ClusterStmt:
2854 tag = CMDTAG_CLUSTER;
2855 break;
2856
2857 case T_VacuumStmt:
2858 if (((
VacuumStmt *) parsetree)->is_vacuumcmd)
2859 tag = CMDTAG_VACUUM;
2860 else
2861 tag = CMDTAG_ANALYZE;
2862 break;
2863
2864 case T_ExplainStmt:
2865 tag = CMDTAG_EXPLAIN;
2866 break;
2867
2868 case T_CreateTableAsStmt:
2870 {
2873 tag = CMDTAG_SELECT_INTO;
2874 else
2875 tag = CMDTAG_CREATE_TABLE_AS;
2876 break;
2878 tag = CMDTAG_CREATE_MATERIALIZED_VIEW;
2879 break;
2880 default:
2881 tag = CMDTAG_UNKNOWN;
2882 }
2883 break;
2884
2885 case T_RefreshMatViewStmt:
2886 tag = CMDTAG_REFRESH_MATERIALIZED_VIEW;
2887 break;
2888
2889 case T_AlterSystemStmt:
2890 tag = CMDTAG_ALTER_SYSTEM;
2891 break;
2892
2893 case T_VariableSetStmt:
2895 {
2900 tag = CMDTAG_SET;
2901 break;
2904 tag = CMDTAG_RESET;
2905 break;
2906 default:
2907 tag = CMDTAG_UNKNOWN;
2908 }
2909 break;
2910
2911 case T_VariableShowStmt:
2912 tag = CMDTAG_SHOW;
2913 break;
2914
2915 case T_DiscardStmt:
2917 {
2919 tag = CMDTAG_DISCARD_ALL;
2920 break;
2922 tag = CMDTAG_DISCARD_PLANS;
2923 break;
2925 tag = CMDTAG_DISCARD_TEMP;
2926 break;
2928 tag = CMDTAG_DISCARD_SEQUENCES;
2929 break;
2930 default:
2931 tag = CMDTAG_UNKNOWN;
2932 }
2933 break;
2934
2935 case T_CreateTransformStmt:
2936 tag = CMDTAG_CREATE_TRANSFORM;
2937 break;
2938
2939 case T_CreateTrigStmt:
2940 tag = CMDTAG_CREATE_TRIGGER;
2941 break;
2942
2943 case T_CreateEventTrigStmt:
2944 tag = CMDTAG_CREATE_EVENT_TRIGGER;
2945 break;
2946
2947 case T_AlterEventTrigStmt:
2948 tag = CMDTAG_ALTER_EVENT_TRIGGER;
2949 break;
2950
2951 case T_CreatePLangStmt:
2952 tag = CMDTAG_CREATE_LANGUAGE;
2953 break;
2954
2955 case T_CreateRoleStmt:
2956 tag = CMDTAG_CREATE_ROLE;
2957 break;
2958
2959 case T_AlterRoleStmt:
2960 tag = CMDTAG_ALTER_ROLE;
2961 break;
2962
2963 case T_AlterRoleSetStmt:
2964 tag = CMDTAG_ALTER_ROLE;
2965 break;
2966
2967 case T_DropRoleStmt:
2968 tag = CMDTAG_DROP_ROLE;
2969 break;
2970
2971 case T_DropOwnedStmt:
2972 tag = CMDTAG_DROP_OWNED;
2973 break;
2974
2975 case T_ReassignOwnedStmt:
2976 tag = CMDTAG_REASSIGN_OWNED;
2977 break;
2978
2979 case T_LockStmt:
2980 tag = CMDTAG_LOCK_TABLE;
2981 break;
2982
2983 case T_ConstraintsSetStmt:
2984 tag = CMDTAG_SET_CONSTRAINTS;
2985 break;
2986
2987 case T_CheckPointStmt:
2988 tag = CMDTAG_CHECKPOINT;
2989 break;
2990
2991 case T_ReindexStmt:
2992 tag = CMDTAG_REINDEX;
2993 break;
2994
2995 case T_CreateConversionStmt:
2996 tag = CMDTAG_CREATE_CONVERSION;
2997 break;
2998
2999 case T_CreateCastStmt:
3000 tag = CMDTAG_CREATE_CAST;
3001 break;
3002
3003 case T_CreateOpClassStmt:
3004 tag = CMDTAG_CREATE_OPERATOR_CLASS;
3005 break;
3006
3007 case T_CreateOpFamilyStmt:
3008 tag = CMDTAG_CREATE_OPERATOR_FAMILY;
3009 break;
3010
3011 case T_AlterOpFamilyStmt:
3012 tag = CMDTAG_ALTER_OPERATOR_FAMILY;
3013 break;
3014
3015 case T_AlterOperatorStmt:
3016 tag = CMDTAG_ALTER_OPERATOR;
3017 break;
3018
3019 case T_AlterTypeStmt:
3020 tag = CMDTAG_ALTER_TYPE;
3021 break;
3022
3023 case T_AlterTSDictionaryStmt:
3024 tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY;
3025 break;
3026
3027 case T_AlterTSConfigurationStmt:
3028 tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION;
3029 break;
3030
3031 case T_CreatePolicyStmt:
3032 tag = CMDTAG_CREATE_POLICY;
3033 break;
3034
3035 case T_AlterPolicyStmt:
3036 tag = CMDTAG_ALTER_POLICY;
3037 break;
3038
3039 case T_CreateAmStmt:
3040 tag = CMDTAG_CREATE_ACCESS_METHOD;
3041 break;
3042
3043 case T_CreatePublicationStmt:
3044 tag = CMDTAG_CREATE_PUBLICATION;
3045 break;
3046
3047 case T_AlterPublicationStmt:
3048 tag = CMDTAG_ALTER_PUBLICATION;
3049 break;
3050
3051 case T_CreateSubscriptionStmt:
3052 tag = CMDTAG_CREATE_SUBSCRIPTION;
3053 break;
3054
3055 case T_AlterSubscriptionStmt:
3056 tag = CMDTAG_ALTER_SUBSCRIPTION;
3057 break;
3058
3059 case T_DropSubscriptionStmt:
3060 tag = CMDTAG_DROP_SUBSCRIPTION;
3061 break;
3062
3063 case T_AlterCollationStmt:
3064 tag = CMDTAG_ALTER_COLLATION;
3065 break;
3066
3067 case T_PrepareStmt:
3068 tag = CMDTAG_PREPARE;
3069 break;
3070
3071 case T_ExecuteStmt:
3072 tag = CMDTAG_EXECUTE;
3073 break;
3074
3075 case T_CreateStatsStmt:
3076 tag = CMDTAG_CREATE_STATISTICS;
3077 break;
3078
3079 case T_AlterStatsStmt:
3080 tag = CMDTAG_ALTER_STATISTICS;
3081 break;
3082
3083 case T_DeallocateStmt:
3084 {
3086
3087 if (
stmt->name == NULL)
3088 tag = CMDTAG_DEALLOCATE_ALL;
3089 else
3090 tag = CMDTAG_DEALLOCATE;
3091 }
3092 break;
3093
3094 /* already-planned queries */
3095 case T_PlannedStmt:
3096 {
3098
3099 switch (
stmt->commandType)
3100 {
3102
3103 /*
3104 * We take a little extra care here so that the result
3105 * will be useful for complaints about read-only
3106 * statements
3107 */
3109 {
3110 /* not 100% but probably close enough */
3112 {
3114 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3115 break;
3117 tag = CMDTAG_SELECT_FOR_SHARE;
3118 break;
3120 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3121 break;
3123 tag = CMDTAG_SELECT_FOR_UPDATE;
3124 break;
3125 default:
3126 tag = CMDTAG_SELECT;
3127 break;
3128 }
3129 }
3130 else
3131 tag = CMDTAG_SELECT;
3132 break;
3134 tag = CMDTAG_UPDATE;
3135 break;
3137 tag = CMDTAG_INSERT;
3138 break;
3140 tag = CMDTAG_DELETE;
3141 break;
3143 tag = CMDTAG_MERGE;
3144 break;
3147 break;
3148 default:
3150 (
int)
stmt->commandType);
3151 tag = CMDTAG_UNKNOWN;
3152 break;
3153 }
3154 }
3155 break;
3156
3157 /* parsed-and-rewritten-but-not-planned queries */
3158 case T_Query:
3159 {
3161
3162 switch (
stmt->commandType)
3163 {
3165
3166 /*
3167 * We take a little extra care here so that the result
3168 * will be useful for complaints about read-only
3169 * statements
3170 */
3172 {
3173 /* not 100% but probably close enough */
3175 {
3177 tag = CMDTAG_SELECT_FOR_KEY_SHARE;
3178 break;
3180 tag = CMDTAG_SELECT_FOR_SHARE;
3181 break;
3183 tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE;
3184 break;
3186 tag = CMDTAG_SELECT_FOR_UPDATE;
3187 break;
3188 default:
3189 tag = CMDTAG_UNKNOWN;
3190 break;
3191 }
3192 }
3193 else
3194 tag = CMDTAG_SELECT;
3195 break;
3197 tag = CMDTAG_UPDATE;
3198 break;
3200 tag = CMDTAG_INSERT;
3201 break;
3203 tag = CMDTAG_DELETE;
3204 break;
3206 tag = CMDTAG_MERGE;
3207 break;
3210 break;
3211 default:
3213 (
int)
stmt->commandType);
3214 tag = CMDTAG_UNKNOWN;
3215 break;
3216 }
3217 }
3218 break;
3219
3220 default:
3223 tag = CMDTAG_UNKNOWN;
3224 break;
3225 }
3226
3227 return tag;
3228}
@ TRANS_STMT_COMMIT_PREPARED
@ TRANS_STMT_ROLLBACK_PREPARED
CommandTag CreateCommandTag(Node *parsetree)
static CommandTag AlterObjectTypeCommandTag(ObjectType objtype)