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

buildSelectQuery() — drizzle-orm Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  3f459852_55f4_d544_4624_42cc8b2004a6["buildSelectQuery()"]
  1da3f399_3da2_55ff_342e_fb92de5e010c["SingleStoreDialect"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|defined in| 1da3f399_3da2_55ff_342e_fb92de5e010c
  24c35043_6a76_7336_3e44_a38c73be89e1["buildRelationalQuery()"]
  24c35043_6a76_7336_3e44_a38c73be89e1 -->|calls| 3f459852_55f4_d544_4624_42cc8b2004a6
  4a664942_d2a4_176d_a746_ecda030d3d74["buildWithCTE()"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|calls| 4a664942_d2a4_176d_a746_ecda030d3d74
  625dcfbf_0612_f909_2143_34d4e88bb50c["buildSelection()"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|calls| 625dcfbf_0612_f909_2143_34d4e88bb50c
  20a80e8b_02c4_b4c7_180f_3bc7c4c5fc21["buildOrderBy()"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|calls| 20a80e8b_02c4_b4c7_180f_3bc7c4c5fc21
  27bb2127_ce03_aaf8_abe2_0189af2b27e5["buildLimit()"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|calls| 27bb2127_ce03_aaf8_abe2_0189af2b27e5
  c34ad8eb_a54d_5af8_42dd_3a7fda682b78["buildSetOperations()"]
  3f459852_55f4_d544_4624_42cc8b2004a6 -->|calls| c34ad8eb_a54d_5af8_42dd_3a7fda682b78
  style 3f459852_55f4_d544_4624_42cc8b2004a6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-orm/src/singlestore-core/dialect.ts lines 264–401

	buildSelectQuery(
		{
			withList,
			fields,
			fieldsFlat,
			where,
			having,
			table,
			joins,
			orderBy,
			groupBy,
			limit,
			offset,
			lockingClause,
			distinct,
			setOperators,
		}: SingleStoreSelectConfig,
	): SQL {
		const fieldsList = fieldsFlat ?? orderSelectedFields<SingleStoreColumn>(fields);
		for (const f of fieldsList) {
			if (
				is(f.field, Column)
				&& getTableName(f.field.table)
					!== (is(table, Subquery)
						? table._.alias
						/* : is(table, SingleStoreViewBase)
						? table[ViewBaseConfig].name */
						: is(table, SQL)
						? undefined
						: getTableName(table))
				&& !((table) =>
					joins?.some(({ alias }) =>
						alias === (table[Table.Symbol.IsAlias] ? getTableName(table) : table[Table.Symbol.BaseName])
					))(f.field.table)
			) {
				const tableName = getTableName(f.field.table);
				throw new Error(
					`Your "${
						f.path.join('->')
					}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?`,
				);
			}
		}

		const isSingleTable = !joins || joins.length === 0;

		const withSql = this.buildWithCTE(withList);

		const distinctSql = distinct ? sql` distinct` : undefined;

		const selection = this.buildSelection(fieldsList, { isSingleTable });

		const tableSql = (() => {
			if (is(table, Table) && table[Table.Symbol.IsAlias]) {
				return sql`${sql`${sql.identifier(table[Table.Symbol.Schema] ?? '')}.`.if(table[Table.Symbol.Schema])}${
					sql.identifier(table[Table.Symbol.OriginalName])
				} ${sql.identifier(table[Table.Symbol.Name])}`;
			}

			return table;
		})();

		const joinsArray: SQL[] = [];

		if (joins) {
			for (const [index, joinMeta] of joins.entries()) {
				if (index === 0) {
					joinsArray.push(sql` `);
				}
				const table = joinMeta.table;
				const lateralSql = joinMeta.lateral ? sql` lateral` : undefined;
				const onSql = joinMeta.on ? sql` on ${joinMeta.on}` : undefined;

				if (is(table, SingleStoreTable)) {
					const tableName = table[SingleStoreTable.Symbol.Name];
					const tableSchema = table[SingleStoreTable.Symbol.Schema];
					const origTableName = table[SingleStoreTable.Symbol.OriginalName];
					const alias = tableName === origTableName ? undefined : joinMeta.alias;
					joinsArray.push(
						sql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${
							tableSchema ? sql`${sql.identifier(tableSchema)}.` : undefined

Domain

Subdomains

Frequently Asked Questions

What does buildSelectQuery() do?
buildSelectQuery() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/singlestore-core/dialect.ts.
Where is buildSelectQuery() defined?
buildSelectQuery() is defined in drizzle-orm/src/singlestore-core/dialect.ts at line 264.
What does buildSelectQuery() call?
buildSelectQuery() calls 5 function(s): buildLimit, buildOrderBy, buildSelection, buildSetOperations, buildWithCTE.
What calls buildSelectQuery()?
buildSelectQuery() is called by 1 function(s): buildRelationalQuery.

Analyze Your Own Codebase

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

Try Supermodel Free