Because my Windows machine apparently decides to install updates over night (and thus reboot my machine), it has happened that I lost the query that I was writing for Redshift in the tool DBeaver. When you work with SQL Server Management Studio (SSMS), you typically don’t have this issue as a temporary copy is always saved. Close down SSMS, restart it and the queries are still there.
If you want to retrieve your query history, you can query the system table stl_query. You probably want to filter on a particular user (yourself). You can find the necessary info in the table pg_user.However, I got some weird errors when I tried to join the two tables together.
However, using a subquery does work:
SELECT userid, query,label,querytxt,starttime,endtime FROM stl_query q WHERE q.userid = (SELECT usesysid FROM pg_user u WHERE u.usename = 'myusername') ORDER BY starttime DESC
The only problem is that the query from the result is not formatted. Luckily DBeaver has a formatting option that can do this for you. You don’t have this issue in SSMS, especially when you use SQLPrompt where you can retrieve closed tabs. Snowflake also has a nice query history table you can query (and it has a visual history tab as well, where you can get the formatted query).
Update:
I forgot to mention that another drawback of getting unformatted code is that single line comments
-- you know, like this one
really mess up everything. Because if you want to use your automatic formatter, it will likely error out over syntax issues since part of your SQL code will suddenly be commented out. All the more reason to use block comments
/* like this one */
in your SQL scripts.
The post Get your Query History in Redshift first appeared on Under the kover of business intelligence.