Home / Function/ buildRelationalQueryWithoutLateralSubqueries() — drizzle-orm Function Reference

buildRelationalQueryWithoutLateralSubqueries() — drizzle-orm Function Reference

Architecture documentation for the buildRelationalQueryWithoutLateralSubqueries() function in dialect.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  82000e3a_faae_8201_7ec2_d2c8f50015b0["buildRelationalQueryWithoutLateralSubqueries()"]
  9c5eee4c_4b78_a585_4038_d710de212097["MySqlDialect"]
  82000e3a_faae_8201_7ec2_d2c8f50015b0 -->|defined in| 9c5eee4c_4b78_a585_4038_d710de212097
  8998ff31_5c63_b62f_72b4_4e37cb165428["_getQuery()"]
  8998ff31_5c63_b62f_72b4_4e37cb165428 -->|calls| 82000e3a_faae_8201_7ec2_d2c8f50015b0
  8ae83588_d5c3_3834_94e9_82ba6770d1a1["buildSelectQuery()"]
  82000e3a_faae_8201_7ec2_d2c8f50015b0 -->|calls| 8ae83588_d5c3_3834_94e9_82ba6770d1a1
  94d9f720_4e7d_e435_7ca9_8ebc87bb567b["where()"]
  82000e3a_faae_8201_7ec2_d2c8f50015b0 -->|calls| 94d9f720_4e7d_e435_7ca9_8ebc87bb567b
  aa4aa497_8866_9da1_05e3_5ae70bf85be0["orderBy()"]
  82000e3a_faae_8201_7ec2_d2c8f50015b0 -->|calls| aa4aa497_8866_9da1_05e3_5ae70bf85be0
  style 82000e3a_faae_8201_7ec2_d2c8f50015b0 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-orm/src/mysql-core/dialect.ts lines 875–1168

	buildRelationalQueryWithoutLateralSubqueries({
		fullSchema,
		schema,
		tableNamesMap,
		table,
		tableConfig,
		queryConfig: config,
		tableAlias,
		nestedQueryRelation,
		joinOn,
	}: {
		fullSchema: Record<string, unknown>;
		schema: TablesRelationalConfig;
		tableNamesMap: Record<string, string>;
		table: MySqlTable;
		tableConfig: TableRelationalConfig;
		queryConfig: true | DBQueryConfig<'many', true>;
		tableAlias: string;
		nestedQueryRelation?: Relation;
		joinOn?: SQL;
	}): BuildRelationalQueryResult<MySqlTable, MySqlColumn> {
		let selection: BuildRelationalQueryResult<MySqlTable, MySqlColumn>['selection'] = [];
		let limit, offset, orderBy: MySqlSelectConfig['orderBy'] = [], where;

		if (config === true) {
			const selectionEntries = Object.entries(tableConfig.columns);
			selection = selectionEntries.map((
				[key, value],
			) => ({
				dbKey: value.name,
				tsKey: key,
				field: aliasedTableColumn(value as MySqlColumn, tableAlias),
				relationTableTsKey: undefined,
				isJson: false,
				selection: [],
			}));
		} else {
			const aliasedColumns = Object.fromEntries(
				Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]),
			);

			if (config.where) {
				const whereSql = typeof config.where === 'function'
					? config.where(aliasedColumns, getOperators())
					: config.where;
				where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
			}

			const fieldsSelection: { tsKey: string; value: MySqlColumn | SQL.Aliased }[] = [];
			let selectedColumns: string[] = [];

			// Figure out which columns to select
			if (config.columns) {
				let isIncludeMode = false;

				for (const [field, value] of Object.entries(config.columns)) {
					if (value === undefined) {
						continue;
					}

					if (field in tableConfig.columns) {
						if (!isIncludeMode && value === true) {
							isIncludeMode = true;
						}
						selectedColumns.push(field);
					}
				}

				if (selectedColumns.length > 0) {
					selectedColumns = isIncludeMode
						? selectedColumns.filter((c) => config.columns?.[c] === true)
						: Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
				}
			} else {
				// Select all columns if selection is not specified
				selectedColumns = Object.keys(tableConfig.columns);
			}

			for (const field of selectedColumns) {
				const column = tableConfig.columns[field]! as MySqlColumn;
				fieldsSelection.push({ tsKey: field, value: column });

Domain

Subdomains

Called By

Frequently Asked Questions

What does buildRelationalQueryWithoutLateralSubqueries() do?
buildRelationalQueryWithoutLateralSubqueries() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-core/dialect.ts.
Where is buildRelationalQueryWithoutLateralSubqueries() defined?
buildRelationalQueryWithoutLateralSubqueries() is defined in drizzle-orm/src/mysql-core/dialect.ts at line 875.
What does buildRelationalQueryWithoutLateralSubqueries() call?
buildRelationalQueryWithoutLateralSubqueries() calls 3 function(s): buildSelectQuery, orderBy, where.
What calls buildRelationalQueryWithoutLateralSubqueries()?
buildRelationalQueryWithoutLateralSubqueries() is called by 1 function(s): _getQuery.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free