generate relational outputs v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 30 Jul 2019 15:51:35 +0200
branchv_0
changeset 4 925b15fb5c63
parent 3 0b932e05aa9f
child 5 cbc7817a3346
generate relational outputs
src/SqlHandler.h
--- a/src/SqlHandler.h	Tue Jul 30 14:01:21 2019 +0200
+++ b/src/SqlHandler.h	Tue Jul 30 15:51:35 2019 +0200
@@ -87,7 +87,8 @@
 	// TODO: sqlite3_column_type
 
 	std::string getString(int columnIndex) {
-		return (char *) sqlite3_column_text(stmt, columnIndex);
+		const char* value = (const char*) sqlite3_column_text(stmt, columnIndex);
+		return value ? value : ""; // TODO: support NULL values (when supported in relpipe format)
 	}
 
 };
@@ -132,13 +133,13 @@
 			prepared.setString(i + 1, convertor.to_bytes(statement.parameters[i].value));
 		}
 
-		for (int i = 0; i < columnCount; i++) {
-			printf("column %d ~ %s\n", i, prepared.getColumName(i).c_str());
-		}
+		std::vector<relpipe::writer::AttributeMetadata> metadata;
+		for (int i = 0; i < columnCount; i++) metadata.push_back({convertor.from_bytes(prepared.getColumName(i).c_str()), relpipe::writer::TypeId::STRING});
+		relationalWriter->startRelation(statement.relation, metadata, true);
 
 		while (prepared.next()) {
 			for (int i = 0; i < columnCount; i++) {
-				printf("column %d ~ %s = %s\n", i, prepared.getColumName(i).c_str(), prepared.getString(i).c_str());
+				relationalWriter->writeAttribute(convertor.from_bytes(prepared.getString(i)));
 			}
 		}
 	}