Mercurial > hg > MonetDB-extend
view monetdbe/example1.c @ 37:e5d2d0c9b7b3
build libraries and included mal/sql in the library startup functions
author | Niels Nes <niels@cwi.nl> |
---|---|
date | Tue, 15 Dec 2020 14:13:55 +0100 (2020-12-15) |
parents | f100f14c0d0a |
children | 8122094c79b1 |
line wrap: on
line source
/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 1997 - July 2008 CWI, August 2008 - 2020 MonetDB B.V. */ #include "monetdbe.h" #include <stdlib.h> #include <stdio.h> #include <inttypes.h> #define error(msg) {fprintf(stderr, "Failure: %s\n", msg); return -1;} int main(void) { char* err = NULL; monetdbe_database mdbe = NULL; monetdbe_result* result = NULL; // second argument is a string for the db directory or NULL for in-memory mode if (monetdbe_open(&mdbe, NULL, NULL)) error("Failed to open database") if ((err = monetdbe_query(mdbe, "CREATE TABLE test (x integer, y string)", NULL, NULL)) != NULL) error(err) if ((err = monetdbe_query(mdbe, "INSERT INTO test VALUES (42, 'Hello'), (NULL, 'World')", NULL, NULL)) != NULL) error(err) if ((err = monetdbe_query(mdbe, "SELECT x, y FROM test; ", &result, NULL)) != NULL) error(err) fprintf(stdout, "Query result with %zu cols and %"PRId64" rows\n", result->ncols, result->nrows); for (int64_t r = 0; r < result->nrows; r++) { for (size_t c = 0; c < result->ncols; c++) { monetdbe_column* rcol; if ((err = monetdbe_result_fetch(result, &rcol, c)) != NULL) error(err) switch (rcol->type) { case monetdbe_int32_t: { monetdbe_column_int32_t * col = (monetdbe_column_int32_t *) rcol; if (col->data[r] == col->null_value) { printf("NULL"); } else { printf("%d", col->data[r]); } break; } case monetdbe_str: { monetdbe_column_str * col = (monetdbe_column_str *) rcol; if (col->is_null(col->data+r)) { printf("NULL"); } else { printf("%s", (char*) col->data[r]); } break; } default: { printf("UNKNOWN"); } } if (c + 1 < result->ncols) { printf(", "); } } printf("\n"); } if ((err = monetdbe_cleanup_result(mdbe, result)) != NULL) error(err) if (monetdbe_close(mdbe)) error("Failed to close database") return 0; }