How to show current schema of running queries in postgresql 13

Started by 陈锡汉almost 3 years ago5 messagesgeneral
Jump to latest
#1陈锡汉
cavonchen@163.com

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

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: 陈锡汉 (#1)
Re: How to show current schema of running queries in postgresql 13

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 ...

Show quoted text

Thank you!
Best regards,
CavonChen

#3Pavel Stehule
pavel.stehule@gmail.com
In reply to: Pavel Stehule (#2)
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

Show quoted text

Thank you!
Best regards,
CavonChen

#4陈锡汉
cavonchen@163.com
In reply to: Pavel Stehule (#3)
回复:How to show current schema of running queries in postgresql 13

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

#5Pavel Stehule
pavel.stehule@gmail.com
In reply to: 陈锡汉 (#4)
Re: How to show current schema of running queries in postgresql 13

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.

Show quoted text

---- 回复的原邮件 ----
发件人 Pavel Stehule<pavel.stehule@gmail.com> <pavel.stehule@gmail.com>
日期 2023年06月26日 17:51
收件人 陈锡汉<cavonchen@163.com> <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