You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@age.apache.org by jo...@apache.org on 2022/03/02 19:10:57 UTC
[incubator-age] branch master updated: Age load issue (#188)
This is an automated email from the ASF dual-hosted git repository.
joshinnis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-age.git
The following commit(s) were added to refs/heads/master by this push:
new ac4c7f9 Age load issue (#188)
ac4c7f9 is described below
commit ac4c7f96467f757b204450dc78df86dfed0d0c6a
Author: Shoaib <mu...@gmail.com>
AuthorDate: Wed Mar 2 20:09:44 2022 +0100
Age load issue (#188)
Refactored the agtype_access_operator and support functions to
eliminate the constant conversions back-and-forth.
Integrated the bulk import tool into AGE.
Also corrected the response to AGTV_NULL
Moved get_agtype_key from age_vle.c to agtype.c for usage by
others.
Adjusted 2 regression tests.
Co-authored-by: John Gemignani <jr...@gmail.com>
---
Makefile | 7 ++-
age--0.7.0.sql | 15 +++++
regress/expected/age_load.out | 6 +-
regress/sql/age_load.sql | 2 +-
src/backend/catalog/ag_label.c | 2 +-
src/backend/utils/load/ag_load_edges.c | 76 +++++++++++++++---------
src/backend/utils/load/ag_load_labels.c | 77 +++++++++++++++---------
src/backend/utils/load/age_load.c | 100 +++++++++++++++++++++++---------
src/include/utils/load/ag_load_labels.h | 3 +-
src/include/utils/load/age_load.h | 14 +++--
10 files changed, 204 insertions(+), 98 deletions(-)
diff --git a/Makefile b/Makefile
index 94a2a0f..b6ce35c 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,11 @@ OBJS = src/backend/age.o \
src/backend/utils/adt/ag_float8_supp.o \
src/backend/utils/adt/graphid.o \
src/backend/utils/ag_func.o \
- src/backend/utils/cache/ag_cache.o
+ src/backend/utils/cache/ag_cache.o \
+ src/backend/utils/load/ag_load_labels.o \
+ src/backend/utils/load/ag_load_edges.o \
+ src/backend/utils/load/age_load.o \
+ src/backend/utils/load/libcsv.o
EXTENSION = age
@@ -83,6 +87,7 @@ REGRESS = scan \
cypher_vle \
cypher_union \
cypher_merge \
+ age_load \
drop
srcdir=`pwd`
diff --git a/age--0.7.0.sql b/age--0.7.0.sql
index 851a089..a5212e0 100644
--- a/age--0.7.0.sql
+++ b/age--0.7.0.sql
@@ -108,6 +108,21 @@ RETURNS void
LANGUAGE c
AS 'MODULE_PATHNAME';
+CREATE FUNCTION ag_catalog.load_labels_from_file(graph_name name,
+ label_name name,
+ file_path text,
+ id_field_exists bool default true)
+ RETURNS void
+ LANGUAGE c
+ AS 'MODULE_PATHNAME';
+
+CREATE FUNCTION ag_catalog.load_edges_from_file(graph_name name,
+ label_name name,
+ file_path text)
+ RETURNS void
+ LANGUAGE c
+ AS 'MODULE_PATHNAME';
+
--
-- graphid type
--
diff --git a/regress/expected/age_load.out b/regress/expected/age_load.out
index cd727f4..c220b31 100644
--- a/regress/expected/age_load.out
+++ b/regress/expected/age_load.out
@@ -50,15 +50,15 @@ SELECT load_edges_from_file('agload_test_graph', 'has_city',
(1 row)
-SELECT table_catalog, table_schema, table_name, table_type
+SELECT table_catalog, table_schema, lower(table_name) as table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'agload_test_graph' ORDER BY table_name ASC;
table_catalog | table_schema | table_name | table_type
--------------------+-------------------+------------------+------------
- contrib_regression | agload_test_graph | City | BASE TABLE
- contrib_regression | agload_test_graph | Country | BASE TABLE
contrib_regression | agload_test_graph | _ag_label_edge | BASE TABLE
contrib_regression | agload_test_graph | _ag_label_vertex | BASE TABLE
+ contrib_regression | agload_test_graph | city | BASE TABLE
+ contrib_regression | agload_test_graph | country | BASE TABLE
contrib_regression | agload_test_graph | has_city | BASE TABLE
(5 rows)
diff --git a/regress/sql/age_load.sql b/regress/sql/age_load.sql
index 35663f1..fa2da0b 100644
--- a/regress/sql/age_load.sql
+++ b/regress/sql/age_load.sql
@@ -17,7 +17,7 @@ SELECT create_elabel('agload_test_graph','has_city');
SELECT load_edges_from_file('agload_test_graph', 'has_city',
'age_load/edges.csv');
-SELECT table_catalog, table_schema, table_name, table_type
+SELECT table_catalog, table_schema, lower(table_name) as table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'agload_test_graph' ORDER BY table_name ASC;
diff --git a/src/backend/catalog/ag_label.c b/src/backend/catalog/ag_label.c
index bd72db3..68b2c08 100644
--- a/src/backend/catalog/ag_label.c
+++ b/src/backend/catalog/ag_label.c
@@ -258,7 +258,7 @@ RangeVar *get_label_range_var(char *graph_name, Oid graph_oid,
relname = get_rel_name(label_cache->relation);
- return makeRangeVar(graph_name, relname, -1);
+ return makeRangeVar(graph_name, relname, 2);
}
/*
diff --git a/src/backend/utils/load/ag_load_edges.c b/src/backend/utils/load/ag_load_edges.c
index 92ad6bc..154f3c4 100644
--- a/src/backend/utils/load/ag_load_edges.c
+++ b/src/backend/utils/load/ag_load_edges.c
@@ -28,23 +28,28 @@
#include "utils/load/age_load.h"
-void edge_field_cb(void *field, size_t field_len, void *data) {
+void edge_field_cb(void *field, size_t field_len, void *data)
+{
csv_edge_reader *cr = (csv_edge_reader*)data;
- if (cr->error) {
+ if (cr->error)
+ {
cr->error = 1;
ereport(NOTICE,(errmsg("There is some unknown error")));
}
// check for space to store this field
- if (cr->cur_field == cr->alloc) {
+ if (cr->cur_field == cr->alloc)
+ {
cr->alloc *= 2;
cr->fields = realloc(cr->fields, sizeof(char *) * cr->alloc);
cr->fields_len = realloc(cr->header, sizeof(size_t *) * cr->alloc);
- if (cr->fields == NULL) {
+ if (cr->fields == NULL)
+ {
cr->error = 1;
ereport(ERROR,
- (errmsg("field_cb: failed to reallocate %zu bytes\n", sizeof(char *) * cr->alloc)));
+ (errmsg("field_cb: failed to reallocate %zu bytes\n",
+ sizeof(char *) * cr->alloc)));
}
}
cr->fields_len[cr->cur_field] = field_len;
@@ -54,7 +59,8 @@ void edge_field_cb(void *field, size_t field_len, void *data) {
}
// Parser calls this function when it detects end of a row
-void edge_row_cb(int delim __attribute__((unused)), void *data) {
+void edge_row_cb(int delim __attribute__((unused)), void *data)
+{
csv_edge_reader *cr = (csv_edge_reader*)data;
@@ -73,17 +79,21 @@ void edge_row_cb(int delim __attribute__((unused)), void *data) {
n_fields = cr->cur_field;
- if (cr->row == 0) {
+ if (cr->row == 0)
+ {
cr->header_num = cr->cur_field;
cr->header_row_length = cr->curr_row_length;
cr->header_len = (size_t* )malloc(sizeof(size_t *) * cr->cur_field);
cr->header = malloc((sizeof (char*) * cr->cur_field));
- for ( i = 0; i<cr->cur_field; i++) {
+ for ( i = 0; i<cr->cur_field; i++)
+ {
cr->header_len[i] = cr->fields_len[i];
cr->header[i] = strndup(cr->fields[i], cr->header_len[i]);
}
- } else {
+ }
+ else
+ {
object_graph_id = make_graphid(cr->object_id, (int64)cr->row);
start_id_int = strtol(cr->fields[0], NULL, 10);
@@ -94,19 +104,24 @@ void edge_row_cb(int delim __attribute__((unused)), void *data) {
start_vertex_graph_id = make_graphid(start_vertex_type_id, start_id_int);
end_vertex_graph_id = make_graphid(end_vertex_type_id, end_id_int);
- props = create_agtype_from_list_i(cr->header, cr->fields, n_fields, 3);
+ props = create_agtype_from_list_i(cr->header, cr->fields,
+ n_fields, 3);
- insert_edge_simple(cr->graph_id, cr->object_name, object_graph_id,
- start_vertex_graph_id, end_vertex_graph_id, props);
+ insert_edge_simple(cr->graph_id, cr->object_name,
+ object_graph_id, start_vertex_graph_id,
+ end_vertex_graph_id, props);
}
- for (i = 0; i < n_fields; ++i) {
+ for (i = 0; i < n_fields; ++i)
+ {
free(cr->fields[i]);
}
if (cr->error)
+ {
ereport(NOTICE,(errmsg("THere is some error")));
+ }
cr->cur_field = 0;
@@ -114,19 +129,14 @@ void edge_row_cb(int delim __attribute__((unused)), void *data) {
cr->row += 1;
}
-static int is_space(unsigned char c) {
+static int is_space(unsigned char c)
+{
if(c == CSV_SPACE || c == CSV_TAB) return 1;
return 0;
}
-/*
-static int is_comma(unsigned char c) {
- if (c == '\t') return 1;
- return 0;
-}
- */
-
-static int is_term(unsigned char c) {
+static int is_term(unsigned char c)
+{
if (c == CSV_CR || c == CSV_LF) return 1;
return 0;
}
@@ -135,7 +145,8 @@ int create_edges_from_csv_file(char *file_path,
char *graph_name,
Oid graph_id,
char *object_name,
- int object_id ) {
+ int object_id )
+{
FILE *fp;
struct csv_parser p;
@@ -144,7 +155,8 @@ int create_edges_from_csv_file(char *file_path,
unsigned char options = 0;
csv_edge_reader cr;
- if (csv_init(&p, options) != 0) {
+ if (csv_init(&p, options) != 0)
+ {
ereport(ERROR,
(errmsg("Failed to initialize csv parser\n")));
}
@@ -153,7 +165,8 @@ int create_edges_from_csv_file(char *file_path,
csv_set_term_func(&p, is_term);
fp = fopen(file_path, "rb");
- if (!fp) {
+ if (!fp)
+ {
ereport(ERROR,
(errmsg("Failed to open %s\n", file_path)));
}
@@ -170,15 +183,20 @@ int create_edges_from_csv_file(char *file_path,
cr.object_name = object_name;
cr.object_id = object_id;
- while ((bytes_read=fread(buf, 1, 1024, fp)) > 0) {
- if (csv_parse(&p, buf, bytes_read, edge_field_cb, edge_row_cb, &cr) != bytes_read) {
- ereport(ERROR, (errmsg("Error while parsing file: %s\n", csv_strerror(csv_error(&p)))));
+ while ((bytes_read=fread(buf, 1, 1024, fp)) > 0)
+ {
+ if (csv_parse(&p, buf, bytes_read, edge_field_cb,
+ edge_row_cb, &cr) != bytes_read)
+ {
+ ereport(ERROR, (errmsg("Error while parsing file: %s\n",
+ csv_strerror(csv_error(&p)))));
}
}
csv_fini(&p, edge_field_cb, edge_row_cb, &cr);
- if (ferror(fp)) {
+ if (ferror(fp))
+ {
ereport(ERROR, (errmsg("Error while reading file %s\n", file_path)));
}
diff --git a/src/backend/utils/load/ag_load_labels.c b/src/backend/utils/load/ag_load_labels.c
index 0b30970..216852d 100644
--- a/src/backend/utils/load/ag_load_labels.c
+++ b/src/backend/utils/load/ag_load_labels.c
@@ -64,24 +64,29 @@
#include "utils/load/age_load.h"
#include "utils/load/csv.h"
-void vertex_field_cb(void *field, size_t field_len, void *data) {
+void vertex_field_cb(void *field, size_t field_len, void *data)
+{
csv_vertex_reader *cr = (csv_vertex_reader *) data;
- if (cr->error) {
+ if (cr->error)
+ {
cr->error = 1;
ereport(NOTICE,(errmsg("There is some unknown error")));
}
// check for space to store this field
- if (cr->cur_field == cr->alloc) {
+ if (cr->cur_field == cr->alloc)
+ {
cr->alloc *= 2;
cr->fields = realloc(cr->fields, sizeof(char *) * cr->alloc);
cr->fields_len = realloc(cr->header, sizeof(size_t *) * cr->alloc);
- if (cr->fields == NULL) {
+ if (cr->fields == NULL)
+ {
cr->error = 1;
ereport(ERROR,
- (errmsg("field_cb: failed to reallocate %zu bytes\n", sizeof(char *) * cr->alloc)));
+ (errmsg("field_cb: failed to reallocate %zu bytes\n",
+ sizeof(char *) * cr->alloc)));
}
}
cr->fields_len[cr->cur_field] = field_len;
@@ -90,7 +95,8 @@ void vertex_field_cb(void *field, size_t field_len, void *data) {
cr->cur_field += 1;
}
-void vertex_row_cb(int delim __attribute__((unused)), void *data) {
+void vertex_row_cb(int delim __attribute__((unused)), void *data)
+{
csv_vertex_reader *cr = (csv_vertex_reader*)data;
agtype *props = NULL;
@@ -101,36 +107,47 @@ void vertex_row_cb(int delim __attribute__((unused)), void *data) {
n_fields = cr->cur_field;
- if (cr->row == 0) {
+ if (cr->row == 0)
+ {
cr->header_num = cr->cur_field;
cr->header_row_length = cr->curr_row_length;
cr->header_len = (size_t* )malloc(sizeof(size_t *) * cr->cur_field);
cr->header = malloc((sizeof (char*) * cr->cur_field));
- for (i = 0; i<cr->cur_field; i++) {
+ for (i = 0; i<cr->cur_field; i++)
+ {
cr->header_len[i] = cr->fields_len[i];
cr->header[i] = strndup(cr->fields[i], cr->header_len[i]);
}
} else {
if (cr->id_field_exists)
+ {
label_id_int = strtol(cr->fields[0], NULL, 10);
+ }
else
+ {
label_id_int = (int64)cr->row;
+ }
object_graph_id = make_graphid(cr->object_id, label_id_int);
- props = create_agtype_from_list(cr->header, cr->fields, n_fields, label_id_int);
- insert_vertex_simple(cr->graph_id, cr->object_name, object_graph_id, props);
+ props = create_agtype_from_list(cr->header, cr->fields,
+ n_fields, label_id_int);
+ insert_vertex_simple(cr->graph_id, cr->object_name,
+ object_graph_id, props);
}
- for (i = 0; i < n_fields; ++i) {
+ for (i = 0; i < n_fields; ++i)
+ {
free(cr->fields[i]);
}
if (cr->error)
+ {
ereport(NOTICE,(errmsg("THere is some error")));
+ }
cr->cur_field = 0;
@@ -138,19 +155,14 @@ void vertex_row_cb(int delim __attribute__((unused)), void *data) {
cr->row += 1;
}
-static int is_space(unsigned char c) {
+static int is_space(unsigned char c)
+{
if(c == CSV_SPACE || c == CSV_TAB) return 1;
return 0;
}
-/*
-static int is_comma(unsigned char c) {
- if (c == '\t') return 1;
- return 0;
-}
- */
-
-static int is_term(unsigned char c) {
+static int is_term(unsigned char c)
+{
if (c == CSV_CR || c == CSV_LF) return 1;
return 0;
}
@@ -159,7 +171,8 @@ int create_labels_from_csv_file(char *file_path,
Oid graph_id,
char *object_name,
int object_id,
- bool id_field_exists) {
+ bool id_field_exists)
+{
FILE *fp;
struct csv_parser p;
@@ -168,7 +181,8 @@ int create_labels_from_csv_file(char *file_path,
unsigned char options = 0;
csv_vertex_reader cr;
- if (csv_init(&p, options) != 0) {
+ if (csv_init(&p, options) != 0)
+ {
ereport(ERROR,
(errmsg("Failed to initialize csv parser\n")));
}
@@ -177,7 +191,8 @@ int create_labels_from_csv_file(char *file_path,
csv_set_term_func(&p, is_term);
fp = fopen(file_path, "rb");
- if (!fp) {
+ if (!fp)
+ {
ereport(ERROR,
(errmsg("Failed to open %s\n", file_path)));
}
@@ -198,16 +213,22 @@ int create_labels_from_csv_file(char *file_path,
- while ((bytes_read=fread(buf, 1, 1024, fp)) > 0) {
- if (csv_parse(&p, buf, bytes_read, vertex_field_cb, vertex_row_cb, &cr) != bytes_read) {
- ereport(ERROR, (errmsg("Error while parsing file: %s\n", csv_strerror(csv_error(&p)))));
+ while ((bytes_read=fread(buf, 1, 1024, fp)) > 0)
+ {
+ if (csv_parse(&p, buf, bytes_read, vertex_field_cb,
+ vertex_row_cb, &cr) != bytes_read)
+ {
+ ereport(ERROR, (errmsg("Error while parsing file: %s\n",
+ csv_strerror(csv_error(&p)))));
}
}
csv_fini(&p, vertex_field_cb, vertex_row_cb, &cr);
- if (ferror(fp)) {
- ereport(ERROR, (errmsg("Error while reading file %s\n", file_path)));
+ if (ferror(fp))
+ {
+ ereport(ERROR, (errmsg("Error while reading file %s\n",
+ file_path)));
}
fclose(fp);
diff --git a/src/backend/utils/load/age_load.c b/src/backend/utils/load/age_load.c
index 133b904..b80e950 100644
--- a/src/backend/utils/load/age_load.c
+++ b/src/backend/utils/load/age_load.c
@@ -58,62 +58,90 @@
#include "utils/load/ag_load_labels.h"
#include "utils/load/ag_load_edges.h"
-static agtype* create_empty_agtype(void) {
+static agtype* create_empty_agtype(void)
+{
agtype_in_state result;
memset(&result, 0, sizeof(agtype_in_state));
- result.res = push_agtype_value(&result.parse_state, WAGT_BEGIN_OBJECT, NULL);
- result.res = push_agtype_value(&result.parse_state, WAGT_END_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_BEGIN_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_END_OBJECT, NULL);
return agtype_value_to_agtype(result.res);
}
-agtype* create_agtype_from_list(char **header, char **fields, size_t fields_len, int64 vertex_id) {
+agtype* create_agtype_from_list(char **header, char **fields,
+ size_t fields_len, int64 vertex_id)
+{
agtype_in_state result;
int i;
memset(&result, 0, sizeof(agtype_in_state));
- result.res = push_agtype_value(&result.parse_state, WAGT_BEGIN_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_BEGIN_OBJECT, NULL);
- result.res = push_agtype_value(&result.parse_state, WAGT_KEY, string_to_agtype_value("id"));
- result.res = push_agtype_value(&result.parse_state, WAGT_VALUE, integer_to_agtype_value(vertex_id));
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_KEY,
+ string_to_agtype_value("__id__"));
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_VALUE,
+ integer_to_agtype_value(vertex_id));
- for (i = 0; i<fields_len; i++) {
- result.res = push_agtype_value(&result.parse_state, WAGT_KEY, string_to_agtype_value(header[i]));
- result.res = push_agtype_value(&result.parse_state, WAGT_VALUE, string_to_agtype_value(fields[i]));
+ for (i = 0; i<fields_len; i++)
+ {
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_KEY,
+ string_to_agtype_value(header[i]));
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_VALUE,
+ string_to_agtype_value(fields[i]));
}
- result.res = push_agtype_value(&result.parse_state, WAGT_END_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_END_OBJECT, NULL);
return agtype_value_to_agtype(result.res);
}
-agtype* create_agtype_from_list_i(char **header, char **fields, size_t fields_len, size_t start_index) {
+agtype* create_agtype_from_list_i(char **header, char **fields,
+ size_t fields_len, size_t start_index)
+{
agtype_in_state result;
size_t i;
if (start_index + 1 == fields_len)
+ {
return create_empty_agtype();
-
-
+ }
memset(&result, 0, sizeof(agtype_in_state));
- result.res = push_agtype_value(&result.parse_state, WAGT_BEGIN_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_BEGIN_OBJECT, NULL);
- for (i = start_index; i<fields_len; i++) {
- result.res = push_agtype_value(&result.parse_state, WAGT_KEY, string_to_agtype_value(header[i]));
- result.res = push_agtype_value(&result.parse_state, WAGT_VALUE, string_to_agtype_value(fields[i]));
+ for (i = start_index; i<fields_len; i++)
+ {
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_KEY,
+ string_to_agtype_value(header[i]));
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_VALUE,
+ string_to_agtype_value(fields[i]));
}
- result.res = push_agtype_value(&result.parse_state, WAGT_END_OBJECT, NULL);
+ result.res = push_agtype_value(&result.parse_state,
+ WAGT_END_OBJECT, NULL);
return agtype_value_to_agtype(result.res);
}
-void insert_edge_simple(Oid graph_id, char* label_name, graphid edge_id, graphid start_id, graphid end_id, agtype* edge_properties) {
+void insert_edge_simple(Oid graph_id, char* label_name, graphid edge_id,
+ graphid start_id, graphid end_id,
+ agtype* edge_properties)
+{
Datum values[6];
bool nulls[4] = {false, false, false, false};
@@ -126,15 +154,22 @@ void insert_edge_simple(Oid graph_id, char* label_name, graphid edge_id, graphid
values[2] = GRAPHID_GET_DATUM(end_id);
values[3] = AGTYPE_P_GET_DATUM((edge_properties));
- label_relation = heap_open(get_label_relation(label_name, graph_id), RowExclusiveLock);
- tuple = heap_form_tuple(RelationGetDescr(label_relation), values, nulls);
+ label_relation = heap_open(get_label_relation(label_name,
+ graph_id),
+ RowExclusiveLock);
+
+ tuple = heap_form_tuple(RelationGetDescr(label_relation),
+ values, nulls);
heap_insert(label_relation, tuple,
GetCurrentCommandId(true), 0, NULL);
heap_close(label_relation, RowExclusiveLock);
CommandCounterIncrement();
}
-void insert_vertex_simple(Oid graph_id, char* label_name, graphid vertex_id, agtype* vertex_properties) {
+void insert_vertex_simple(Oid graph_id, char* label_name,
+ graphid vertex_id,
+ agtype* vertex_properties)
+{
Datum values[2];
bool nulls[2] = {false, false};
@@ -144,8 +179,11 @@ void insert_vertex_simple(Oid graph_id, char* label_name, graphid vertex_id, agt
values[0] = GRAPHID_GET_DATUM(vertex_id);
values[1] = AGTYPE_P_GET_DATUM((vertex_properties));
- label_relation = heap_open(get_label_relation(label_name, graph_id), RowExclusiveLock);
- tuple = heap_form_tuple(RelationGetDescr(label_relation), values, nulls);
+ label_relation = heap_open(get_label_relation(label_name,
+ graph_id),
+ RowExclusiveLock);
+ tuple = heap_form_tuple(RelationGetDescr(label_relation),
+ values, nulls);
heap_insert(label_relation, tuple,
GetCurrentCommandId(true), 0, NULL);
heap_close(label_relation, RowExclusiveLock);
@@ -154,7 +192,8 @@ void insert_vertex_simple(Oid graph_id, char* label_name, graphid vertex_id, agt
PG_FUNCTION_INFO_V1(load_labels_from_file);
-Datum load_labels_from_file(PG_FUNCTION_ARGS) {
+Datum load_labels_from_file(PG_FUNCTION_ARGS)
+{
Name graph_name;
Name label_name;
@@ -198,13 +237,15 @@ Datum load_labels_from_file(PG_FUNCTION_ARGS) {
label_id = get_label_id(label_name_str, graph_id);
create_labels_from_csv_file(file_path_str, graph_name_str,
- graph_id, label_name_str, label_id, id_field_exists);
+ graph_id, label_name_str,
+ label_id, id_field_exists);
PG_RETURN_VOID();
}
PG_FUNCTION_INFO_V1(load_edges_from_file);
-Datum load_edges_from_file(PG_FUNCTION_ARGS) {
+Datum load_edges_from_file(PG_FUNCTION_ARGS)
+{
Name graph_name;
Name label_name;
@@ -244,7 +285,8 @@ Datum load_edges_from_file(PG_FUNCTION_ARGS) {
graph_id = get_graph_oid(graph_name_str);
label_id = get_label_id(label_name_str, graph_id);
- create_edges_from_csv_file(file_path_str, graph_name_str, graph_id, label_name_str, label_id);
+ create_edges_from_csv_file(file_path_str, graph_name_str,
+ graph_id, label_name_str, label_id);
PG_RETURN_VOID();
}
\ No newline at end of file
diff --git a/src/include/utils/load/ag_load_labels.h b/src/include/utils/load/ag_load_labels.h
index 9fd4ff4..5689c23 100644
--- a/src/include/utils/load/ag_load_labels.h
+++ b/src/include/utils/load/ag_load_labels.h
@@ -100,6 +100,7 @@ void vertex_field_cb(void *field, size_t field_len, void *data);
void vertex_row_cb(int delim __attribute__((unused)), void *data);
int create_labels_from_csv_file(char *file_path, char *graph_name, Oid graph_id,
- char *object_name, int object_id, bool id_field_exists);
+ char *object_name, int object_id,
+ bool id_field_exists);
#endif //AG_LOAD_LABELS_H
diff --git a/src/include/utils/load/age_load.h b/src/include/utils/load/age_load.h
index bdebde0..9eeca36 100644
--- a/src/include/utils/load/age_load.h
+++ b/src/include/utils/load/age_load.h
@@ -57,10 +57,14 @@
#ifndef INCUBATOR_AGE_ENTITY_CREATOR_H
#define INCUBATOR_AGE_ENTITY_CREATOR_H
-agtype* create_agtype_from_list(char **header, char **fields, size_t fields_len, int64 vertex_id);
-agtype* create_agtype_from_list_i(char **header, char **fields, size_t fields_len, size_t start_index);
-void insert_vertex_simple(Oid graph_id, char* label_name, graphid vertex_id, agtype* vertex_properties);
-void insert_edge_simple(Oid graph_id, char* label_name, graphid edge_id, graphid start_id,
- graphid end_id, agtype* end_properties);
+agtype* create_agtype_from_list(char **header, char **fields,
+ size_t fields_len, int64 vertex_id);
+agtype* create_agtype_from_list_i(char **header, char **fields,
+ size_t fields_len, size_t start_index);
+void insert_vertex_simple(Oid graph_id, char* label_name, graphid vertex_id,
+ agtype* vertex_properties);
+void insert_edge_simple(Oid graph_id, char* label_name, graphid edge_id,
+ graphid start_id, graphid end_id,
+ agtype* end_properties);
#endif //INCUBATOR_AGE_ENTITY_CREATOR_H