MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / sequence_set_variable

Method sequence_set_variable

src/adapter/src/coord/sequencer/inner.rs:1892–1983  ·  view source on GitHub ↗
(
        &self,
        session: &mut Session,
        plan: plan::SetVariablePlan,
    )

Source from the content-addressed store, hash-verified

1890
1891 #[instrument]
1892 pub(super) fn sequence_set_variable(
1893 &self,
1894 session: &mut Session,
1895 plan: plan::SetVariablePlan,
1896 ) -> Result<ExecuteResponse, AdapterError> {
1897 let (name, local) = (plan.name, plan.local);
1898 if &name == TRANSACTION_ISOLATION_VAR_NAME {
1899 self.validate_set_isolation_level(session)?;
1900 }
1901 if &name == vars::CLUSTER.name() {
1902 self.validate_set_cluster(session)?;
1903 }
1904
1905 let vars = session.vars_mut();
1906 let values = match plan.value {
1907 plan::VariableValue::Default => None,
1908 plan::VariableValue::Values(values) => Some(values),
1909 };
1910
1911 match values {
1912 Some(values) => {
1913 vars.set(
1914 self.catalog().system_config(),
1915 &name,
1916 VarInput::SqlSet(&values),
1917 local,
1918 )?;
1919
1920 let vars = session.vars();
1921
1922 // Emit a warning when deprecated variables are used.
1923 // TODO(database-issues#8069) remove this after sufficient time has passed
1924 if name == vars::OLD_AUTO_ROUTE_CATALOG_QUERIES {
1925 session.add_notice(AdapterNotice::AutoRouteIntrospectionQueriesUsage);
1926 } else if name == vars::CLUSTER.name()
1927 && values[0] == vars::OLD_CATALOG_SERVER_CLUSTER
1928 {
1929 session.add_notice(AdapterNotice::IntrospectionClusterUsage);
1930 }
1931
1932 // Database or cluster value does not correspond to a catalog item.
1933 if name.as_str() == vars::DATABASE.name()
1934 && matches!(
1935 self.catalog().resolve_database(vars.database()),
1936 Err(CatalogError::UnknownDatabase(_))
1937 )
1938 && session.vars().current_object_missing_warnings()
1939 {
1940 let name = vars.database().to_string();
1941 session.add_notice(AdapterNotice::DatabaseDoesNotExist { name });
1942 } else if name.as_str() == vars::CLUSTER.name()
1943 && matches!(
1944 self.catalog().resolve_cluster(vars.cluster()),
1945 Err(CatalogError::UnknownCluster(_))
1946 )
1947 && session.vars().current_object_missing_warnings()
1948 {
1949 let name = vars.cluster().to_string();

Callers 1

sequence_planMethod · 0.80

Calls 15

validate_set_clusterMethod · 0.80
vars_mutMethod · 0.80
into_firstMethod · 0.80
as_variant_strMethod · 0.80
is_bounded_stalenessMethod · 0.80
transaction_isolationMethod · 0.80
real_time_recencyMethod · 0.80
SqlSetClass · 0.50
nameMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected