federated query in GCP big query with schema not working - postgresql

I am doing a POC to use bigquery's federated query feature.
I have a Cloud Sql postgresql db. All tables are part of app schema.
When I write a query like this it doesn't work.
SELECT
*
FROM
EXTERNAL_QUERY("xxxx.us.xxxx",
"SELECT * FROM app.meeting;");
If I use public schema table which I added for testing purpose then it works both way.
SELECT
*
FROM
EXTERNAL_QUERY("xxxx.us.xxxx",
"SELECT * FROM public.sampletable;");
OR
SELECT
*
FROM
EXTERNAL_QUERY("xxxx.us.xxxx",
"SELECT * FROM sampletable;");
What is the right way to use schema which is not public.

Related

Select All graphs from Apache Age

How do I choose all of the graphs in Apache Age?
I am encountering difficulty in selecting all of the graphs in Apache AGE. I have attempted to do so but have been unsuccessful
There is a table in the ag_catalog namespace that keeps track of all the graphs. You can select it with the following command:
SELECT * FROM ag_catalog.ag_graph;
If you have already set the search path by using:
SET search_path = ag_catalog, "$user", public;
You can select all graphs in the Database by using:
SELECT * FROM ag_graph;
Otherwise, if you have not set the search path. You can select all graphs in the Database by using:
SELECT * FROM ag_catalog.ag_graph;
Just like we use * in SQL to select all tables, we can also use * here to select all graphs.
The ag_catalog has all the information on the graphs created. The below query can help you to select all the graphs:
SELECT * FROM ag_catalog.ag_graph
You can use the following command
SELECT * FROM ag_catalog.ag_graph;
You can Use the following command to fetch all graph
SELECT * FROM ag_catalog.ag_graph;
For more information Visit here
For the convenience to deal with graphs in apache age, firstly set the search path to the following that would save your time from using prefix "ag_catalog" in every graph-related query
SET search_path = ag_catalog, "$user", public;
Then use the following query to get all graphs
SELECT * FROM ag_graph;
In case you haven't set the search path then you would have to use the following more detailed query which involves the namespace "ag_catalog"
SELECT * FROM ag_catalog.ag_graph;

What query can I use to distinguish Cloud SQL from Postgresql?

Is there a simple query that will let me distinguish Cloud SQL from stock PostgreSQL? Maybe something like select version() or select current_setting('server_version')?
(I don't have access to a Cloud SQL instance to experiment.)
For the most part, things are the same. You could try looking for the CLOUDSQLSUPERUSER role, which wouldn't existing on regular postgres (unless you or someone else has added it).
EDIT: added #enocom's suggestions for a query to do this:
select * from pg_catalog.pg_user where usename = 'cloudsqlsuperuser';

How to write a select statement for a table in postgres that is inside a schema?

I have a postgres DB and inside of it there are many schemas.
Each one of those schemas contains tables. For example:
Schema Name: personal has tables actions_takes, page_views etc
How can i write a SQL query or ActiveRecord query to query the table inside the schema?
Something like:
select * from actions_takes where user_id = 123;
I can create a model for each table and query it that way, but i want to write a script that passed a user goes over all tables and get the data for that user.
in pgAdmin 4 web console should use double quotation marks like following select statement
SELECT "col1", "col2"
FROM "schemaName".profile;
Point to specific table within a given schema using a dot notation schema.table_name. In your case it translates to
select * from personal.actions_takes where user_id = 123;
For me this query worked : select * from schemaName."Table_Name"

Select * query for granted columns in postgres

I granted permission for read_only user in postgres for some columns of a table using
grant select(col1,col2) on mytable to read_only_user;
I want to use
SELECT * FROM mytable
query from read_only_user.But I'm getting permission denied in output.I don't want to create view for this. But somehow I want the select * query to work for that user(not explicitly telling what are the columns like select col1,col2 from mytable).
Help me guys.Thanks in advance...
You cannot do that, and you shouldn't try.
SELECT * should never be used in code, it is only for ad hoc queries.
What are the problems:
If the table definition changes, your program will break.
You probably retrieve unnecessary columns, which will cause unnecessary data to be processed and may keep PostgreSQL from choosing a better execution plan.

No such table in ZSS Test Client window

Using the Test Client, I get a "No Such Table" error when trying to select some data from my database - sync was successful.
Here's my query: select * from schema.TableName.
Try with:
SELECT * FROM TableName
i.e. without the schema name in front
Or, if the table was from a schema other than dbo, it will be prefixed by the schema name + _ (see SQL Server Schemas in the ZSS Manager docs). So if the original table was MySchema.TableName, you'd use:
SELECT * from MySchema_TableName