Thread: How to show current schema of running queries in postgresql 13

How to show current schema of running queries in postgresql 13

From
陈锡汉
Date:
Hello,I use multi-schemas in one database in Postgres,such as

```
Postgres(instance)
 MyDB
   public
   MySchema1
     table1
     table2
   MySchema2
     table1
     table2
   MySchema3
     table1
     table2
```

And It's open to my users,my users will run queries,
such as
User1:
```
set search_path=MySchema1;
select * from table1,table2;
```

User2:
```
set search_path=MySchema2;
select * from table1,table2;
```

User3:
```
set search_path=MySchema3;
insert into table3 select * from MySchema1.table1,MySchema2.table2;
select * from table3;
```

I want to show current schema of running queries,But pg_stat_activity can only show database name, not schema name.

I want current schema (search_path ) as

| datname  | username | schema   | query   |
| -------- | -------- | -------- | -------- |
| MyDB     | User1    | MySchema1  | select * from table1,table2;  |
| MyDB     | User2    | MySchema2  | select * from table1,table2;  |
| MyDB     | User3    | MySchema3  | insert into table3 select * from MySchema1.table1,MySchema2.table2;  |

Is there any sys views can do it?

Thank you!
Best regards,
CavonChen



Re: How to show current schema of running queries in postgresql 13

From
Pavel Stehule
Date:
Hi

po 26. 6. 2023 v 8:39 odesílatel 陈锡汉 <cavonchen@163.com> napsal:
Hello,I use multi-schemas in one database in Postgres,such as

```
Postgres(instance)
 MyDB
   public
   MySchema1
     table1
     table2
   MySchema2
     table1
     table2
   MySchema3
     table1
     table2
```

And It's open to my users,my users will run queries,
such as
User1:
```
set search_path=MySchema1;
select * from table1,table2;
```

User2:
```
set search_path=MySchema2;
select * from table1,table2;
```

User3:
```
set search_path=MySchema3;
insert into table3 select * from MySchema1.table1,MySchema2.table2;
select * from table3;
```

I want to show current schema of running queries,But pg_stat_activity can only show database name, not schema name.

I want current schema (search_path ) as

| datname  | username | schema   | query   |
| -------- | -------- | -------- | -------- |
| MyDB     | User1    | MySchema1  | select * from table1,table2;  |
| MyDB     | User2    | MySchema2  | select * from table1,table2;  |
| MyDB     | User3    | MySchema3  | insert into table3 select * from MySchema1.table1,MySchema2.table2;  |

Is there any sys views can do it?

no, there is nothing for this purpose.

you can use application_name

so user can do

SET search_path=MySchema;
SET application_name = 'MySchema';
SELECT * FROM ...



 

Thank you!
Best regards,
CavonChen



Re: How to show current schema of running queries in postgresql 13

From
Pavel Stehule
Date:


po 26. 6. 2023 v 9:19 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi



no, there is nothing for this purpose.

you can use application_name

so user can do

SET search_path=MySchema;
SET application_name = 'MySchema';
SELECT * FROM ...


and application name is visible from pg_stat_activity

regards

Pavel Stehule
 


 

Thank you!
Best regards,
CavonChen



I have no way to force users doing this…


---- 回复的原邮件 ----
发件人Pavel Stehule<pavel.stehule@gmail.com>
日期2023年06月26日 17:51
收件人陈锡汉<cavonchen@163.com>
抄送至pgsql-general@lists.postgresql.org
主题Re: How to show current schema of running queries in postgresql 13


po 26. 6. 2023 v 9:19 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi



no, there is nothing for this purpose.

you can use application_name

so user can do

SET search_path=MySchema;
SET application_name = 'MySchema';
SELECT * FROM ...


and application name is visible from pg_stat_activity

regards

Pavel Stehule
 


 

Thank you!
Best regards,
CavonChen



Re: How to show current schema of running queries in postgresql 13

From
Pavel Stehule
Date:


po 26. 6. 2023 v 12:23 odesílatel 陈锡汉 <cavonchen@163.com> napsal:
I have no way to force users doing this…

Then there is only one possible way - via custom extension you can catch the SET SEARCH_PATH statement, and you can do this. If you cannot use own extension, then there is not any way.


 


---- 回复的原邮件 ----
发件人Pavel Stehule<pavel.stehule@gmail.com>
日期2023年06月26日 17:51
收件人陈锡汉<cavonchen@163.com>
抄送至pgsql-general@lists.postgresql.org
主题Re: How to show current schema of running queries in postgresql 13


po 26. 6. 2023 v 9:19 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi



no, there is nothing for this purpose.

you can use application_name

so user can do

SET search_path=MySchema;
SET application_name = 'MySchema';
SELECT * FROM ...


and application name is visible from pg_stat_activity

regards

Pavel Stehule
 


 

Thank you!
Best regards,
CavonChen