1#![expect(
16 refining_impl_trait,
17 reason = "Some of the Row::iter() implementations returns ExactSizeIterator. Is this reasonable?"
18)]
19#![feature(trait_alias)]
20#![feature(type_alias_impl_trait)]
21#![feature(test)]
22#![feature(trusted_len)]
23#![feature(allocator_api)]
24#![feature(coroutines)]
25#![feature(map_try_insert)]
26#![feature(error_generic_member_access)]
27#![feature(portable_simd)]
28#![feature(once_cell_try)]
29#![allow(incomplete_features)]
30#![feature(iterator_try_collect)]
31#![feature(iter_order_by)]
32#![feature(binary_heap_into_iter_sorted)]
33#![feature(impl_trait_in_assoc_type)]
34#![feature(negative_impls)]
35#![feature(register_tool)]
36#![feature(btree_cursors)]
37#![feature(assert_matches)]
38#![feature(float_gamma)]
39#![feature(anonymous_lifetime_in_impl_trait)]
40#![feature(vec_into_raw_parts)]
41#![feature(exact_div)]
42#![feature(used_with_arg)]
43#![feature(iter_array_chunks)]
44#![feature(exact_size_is_empty)]
45#![feature(debug_closure_helpers)]
46#![feature(iter_from_coroutine)]
47#![register_tool(rw)]
48
49#[cfg_attr(not(test), allow(unused_extern_crates))]
50extern crate self as risingwave_common;
51
52#[macro_use]
55extern crate risingwave_error;
56use std::sync::OnceLock;
57
58pub use risingwave_error::common::{
59 bail_no_function, bail_not_implemented, no_function, not_implemented,
60};
61pub use risingwave_error::macros::*;
62
63#[macro_use]
64pub mod jemalloc;
65#[macro_use]
66pub mod error;
67#[macro_use]
68pub mod array;
69#[macro_use]
70pub mod util;
71pub mod acl;
72pub mod bitmap;
73pub mod cache;
74pub mod cast;
75pub mod lru;
76pub mod operator;
77pub mod opts;
78pub mod range;
79pub mod row;
80pub mod sequence;
81pub mod session_config;
82pub mod system_param;
83
84pub mod catalog;
85pub mod config;
86pub mod constants;
87pub mod field_generator;
88pub mod gap_fill;
89pub mod global_jvm;
90pub mod hash;
91pub mod id {
92 pub use risingwave_pb::id::*;
93}
94pub mod memory;
95pub mod metrics_reader;
96pub mod telemetry;
97pub mod test_utils;
98pub mod transaction;
99pub mod types;
100pub mod vector;
101pub mod vnode_mapping;
102
103pub mod test_prelude {
104 pub use super::array::{DataChunkTestExt, StreamChunkTestExt};
105 pub use super::catalog::test_utils::ColumnDescTestExt;
106}
107
108pub use risingwave_common_metrics::{
109 monitor, register_guarded_gauge_vec_with_registry,
110 register_guarded_histogram_vec_with_registry, register_guarded_int_counter_vec_with_registry,
111 register_guarded_int_gauge_vec_with_registry, register_guarded_uint_gauge_vec_with_registry,
112};
113pub use {
114 risingwave_common_log as log, risingwave_common_metrics as metrics,
115 risingwave_common_secret as secret, risingwave_license as license,
116};
117
118pub const RW_VERSION: &str = env!("CARGO_PKG_VERSION");
119
120pub const UNKNOWN_GIT_SHA: &str = "unknown";
122
123pub const PG_VERSION: &str = "13.14.0";
126pub const SERVER_VERSION_NUM: i32 = 130014;
128pub const SERVER_ENCODING: &str = "UTF8";
130pub const STANDARD_CONFORMING_STRINGS: &str = "on";
132
133pub static STATE_STORE_URL: OnceLock<String> = OnceLock::new();
134pub static DATA_DIRECTORY: OnceLock<String> = OnceLock::new();
135
136#[macro_export]
137macro_rules! git_sha {
138 ($env:literal) => {
139 match option_env!($env) {
140 Some(v) if !v.is_empty() => v,
141 _ => $crate::UNKNOWN_GIT_SHA,
142 }
143 };
144}
145
146pub const GIT_SHA: &str = git_sha!("GIT_SHA");
150
151pub fn current_cluster_version() -> String {
152 format!(
153 "PostgreSQL {}-RisingWave-{} ({})",
154 PG_VERSION, RW_VERSION, GIT_SHA
155 )
156}
157
158#[macro_export]
163macro_rules! panic_if_debug {
164 ($($arg:tt)*) => {
165 if cfg!(debug_assertions) {
166 panic!($($arg)*)
167 } else {
168 tracing::warn!($($arg)*)
169 }
170 };
171}