summaryrefslogtreecommitdiff
path: root/slicer/db/sqlSelectDeserializer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/db/sqlSelectDeserializer.cpp')
-rw-r--r--slicer/db/sqlSelectDeserializer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/slicer/db/sqlSelectDeserializer.cpp b/slicer/db/sqlSelectDeserializer.cpp
index 5c46e11..a7dd575 100644
--- a/slicer/db/sqlSelectDeserializer.cpp
+++ b/slicer/db/sqlSelectDeserializer.cpp
@@ -40,12 +40,15 @@ namespace Slicer {
void
SqlSelectDeserializer::DeserializeSimple(Slicer::ModelPartPtr mp)
{
- auto fmp = mp->GetAnonChild();
if (!cmd.fetch()) {
- throw NoRowsReturned();
+ if (!mp->IsOptional()) {
+ throw NoRowsReturned();
+ }
+ return;
}
SqlSourcePtr h = new SqlSource(cmd[0]);
if (!h->isNull()) {
+ auto fmp = mp->GetAnonChild();
fmp->Create();
fmp->SetValue(h);
fmp->Complete();
@@ -68,7 +71,10 @@ namespace Slicer {
SqlSelectDeserializer::DeserializeObject(Slicer::ModelPartPtr mp)
{
if (!cmd.fetch()) {
- throw NoRowsReturned();
+ if (!mp->IsOptional()) {
+ throw NoRowsReturned();
+ }
+ return;
}
DeserializeRow(mp);
if (cmd.fetch()) {