Query Views and Synonyms Using the GraphQL Table Function

Query relational views and synonyms that resolve to views by using the GRAPHQL() table function.

Starting in 23.26.3, the GRAPHQL() table function supports queries against relational views and synonyms that resolve to views.

Query a Relational View

The following example creates a relational view that joins the driver and team tables:

CREATE OR REPLACE VIEW driver_team_v AS
SELECT
    d.driver_id,
    d.name   AS driver_name,
    d.points AS driver_points,
    t.name   AS team_name
FROM driver d
JOIN team t
  ON d.team_id = t.team_id;

You can query the relational view with the GRAPHQL() table function:

SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
    query getDriverTeamView {
        driver_team_v (limit: 2) {
            driverId: driver_id
            driverName: driver_name
            driverPoints: driver_points
            teamName: team_name
        }
    }
');

This query returns two driver rows from the view:

DATA
--------------------------------------------------------------------------------
{
  "driverId" : 101,
  "driverName" : "Lando Norris",
  "driverPoints" : 282,
  "teamName" : "McLaren Mercedes"
}

{
  "driverId" : 102,
  "driverName" : "Oscar Piastri",
  "driverPoints" : 384,
  "teamName" : "McLaren Mercedes"
}


2 rows selected.

Query a Synonym That Resolves to a View

The following example creates a synonym for the driver_team_v view:

CREATE OR REPLACE SYNONYM driver_team_syn FOR driver_team_v;

You can use the synonym name in a GraphQL query:

SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
    query {
        driver_team_syn (limit: 2) {
            driverId: driver_id
            driverName: driver_name
            driverPoints: driver_points
            teamName: team_name
        }
    }
');

This query returns two driver rows from the synonym:

DATA
--------------------------------------------------------------------------------
{
  "driverId" : 101,
  "driverName" : "Lando Norris",
  "driverPoints" : 282,
  "teamName" : "McLaren Mercedes"
}

{
  "driverId" : 102,
  "driverName" : "Oscar Piastri",
  "driverPoints" : 384,
  "teamName" : "McLaren Mercedes"
}


2 rows selected.