diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java index 624b3fe..456ffd8 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/sql/SqlGenerator.java @@ -1,5 +1,6 @@ package org.zwobble.hobgoblin.compiler.output.generators.sql; +import org.zwobble.hobgoblin.compiler.ast.typed.Relation; import org.zwobble.hobgoblin.compiler.ast.typed.RelationTable; import org.zwobble.hobgoblin.compiler.ast.typed.TypedQueryDefinitionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTableDefinitionNode; @@ -56,7 +57,11 @@ public class SqlGenerator { TypedQueryDefinitionNode queryDefinition, TypesInfo typesInfo ) { - switch (queryDefinition.relation()) { + return generateRelation(queryDefinition.relation(), typesInfo); + } + + SqlSelectStatement generateRelation(Relation relation, TypesInfo typesInfo) { + switch (relation) { case RelationTable relationTable -> { var table = relationTable.table(); var schemaInfo = typesInfo.databaseSchemaInfo(table.databaseSchema()); @@ -73,14 +78,17 @@ public class SqlGenerator { }) .toList(); + // Order by the primary key to ensure stable ordering. + var orderBy = List.of( + new SqlOrderingTerm(new SqlRef( + generateColumnName(tableInfo.primaryKey().name()) + )) + ); + return new SqlSelectStatement( columns, generateTableName(table.name()), - List.of( - new SqlOrderingTerm(new SqlRef( - generateColumnName(tableInfo.primaryKey().name()) - )) - ) + orderBy ); } } |
