[GSoC] current working status

Started by Charles Cuiover 7 years ago8 messages
#1Charles Cui
charles.cui1984@gmail.com

Hi mentors and hackers,

The first evaluation is coming. Here is my progress so far. During the
first stage of work, I have implemented the thrift binary protocol as the
format of postgresql plugin. Currently, the main interface is byte. Users
who use this plugin need to provide thrift bytes to the plugin, and there
are helpers for each data type to parse out the value contained in the
bytes. This method has been verified by the use of several unit tests.
However, the current interface needs users understand thrift format very
well to use this plugin. After discussing with my mentors, it will be more
useful to implement the concept of "thrift type", which is a custom type
where user provides user understandable format(e.g., json), then the plugin
converts into byte. I am currently busy with implementing this feature and
still need sometime to complete it. If this part is done, I will go ahead
to implement thrift compact protocol. Let me know if you have comments.
You can always track the progress from github (
https://github.com/charles-cui/pg_thrift)

Thanks, Charles!

#2Aleksander Alekseeev
a.alekseev@postgrespro.ru
In reply to: Charles Cui (#1)
Re: [GSoC] current working status

Hello Charles,

The first evaluation is coming. Here is my progress so far. During
the first stage of work, I have implemented the thrift binary
protocol as the format of postgresql plugin. Currently, the main
interface is byte. Users who use this plugin need to provide thrift
bytes to the plugin, and there are helpers for each data type to
parse out the value contained in the bytes. This method has been
verified by the use of several unit tests. However, the current
interface needs users understand thrift format very well to use this
plugin. After discussing with my mentors, it will be more useful to
implement the concept of "thrift type", which is a custom type where
user provides user understandable format(e.g., json), then the plugin
converts into byte. I am currently busy with implementing this
feature and still need sometime to complete it. If this part is done,
I will go ahead to implement thrift compact protocol. Let me know if
you have comments. You can always track the progress from github
( https://github.com/charles-cui/pg_thrift)

Thanks for keeping us informed!

Unfortunately I'm having difficulties compiling your code on Linux with
PostgreSQL 10.4 or 11 and GCC 8.1.1. Here is a full list of warnings
and errors: https://afiskon.ru/s/6e/edbefe818e_pg-thrift-errors.txt

I also tried a VM with Ubuntu 16.04, PostgreSQL 9.6 and GCC 5.4.0. No
luck either. Please make sure that your code compiles on Linux. Users
will most likely try to run it on this OS.

It might be also a good idea to add your repository to travic-ci.org
service.

--
Best regards,
Aleksander Alekseev

#3Charles Cui
charles.cui1984@gmail.com
In reply to: Aleksander Alekseeev (#2)
Re: [GSoC] current working status

Hi Aleksander,

I saw the list of errors you posted. That's because I have some new
function implemented and pushed without testing(in order forget my change
in local machine).
So you are saying it is best to keep each commit workable. Right?

Thanks Charles.

2018-06-14 1:41 GMT-07:00 Aleksander Alekseeev <a.alekseev@postgrespro.ru>:

Show quoted text

Hello Charles,

The first evaluation is coming. Here is my progress so far. During
the first stage of work, I have implemented the thrift binary
protocol as the format of postgresql plugin. Currently, the main
interface is byte. Users who use this plugin need to provide thrift
bytes to the plugin, and there are helpers for each data type to
parse out the value contained in the bytes. This method has been
verified by the use of several unit tests. However, the current
interface needs users understand thrift format very well to use this
plugin. After discussing with my mentors, it will be more useful to
implement the concept of "thrift type", which is a custom type where
user provides user understandable format(e.g., json), then the plugin
converts into byte. I am currently busy with implementing this
feature and still need sometime to complete it. If this part is done,
I will go ahead to implement thrift compact protocol. Let me know if
you have comments. You can always track the progress from github
( https://github.com/charles-cui/pg_thrift)

Thanks for keeping us informed!

Unfortunately I'm having difficulties compiling your code on Linux with
PostgreSQL 10.4 or 11 and GCC 8.1.1. Here is a full list of warnings
and errors: https://afiskon.ru/s/6e/edbefe818e_pg-thrift-errors.txt

I also tried a VM with Ubuntu 16.04, PostgreSQL 9.6 and GCC 5.4.0. No
luck either. Please make sure that your code compiles on Linux. Users
will most likely try to run it on this OS.

It might be also a good idea to add your repository to travic-ci.org
service.

--
Best regards,
Aleksander Alekseev

#4Aleksander Alekseeev
a.alekseev@postgrespro.ru
In reply to: Charles Cui (#3)
Re: [GSoC] current working status

Hello Charles,

I saw the list of errors you posted. That's because I have some new
function implemented and pushed without testing(in order forget my
change in local machine).
So you are saying it is best to keep each commit workable. Right?

Ideally, yes. You can always create a separate branch to experiment with
new code and merge it to master branch when it becomes stable. This is
not a strict GSoC requirement or something like this, but a good
practice. If something goes wrong you can just delete an experimental
branch and go back to working master branch.

--
Best regards,
Aleksander Alekseev

#5Charles Cui
charles.cui1984@gmail.com
In reply to: Aleksander Alekseeev (#4)
Re: [GSoC] current working status

good idea, will keep a feature branch, and set up ci.

On Thu, Jun 14, 2018, 8:03 AM Aleksander Alekseeev <
a.alekseev@postgrespro.ru> wrote:

Show quoted text

Hello Charles,

I saw the list of errors you posted. That's because I have some new
function implemented and pushed without testing(in order forget my
change in local machine).
So you are saying it is best to keep each commit workable. Right?

Ideally, yes. You can always create a separate branch to experiment with
new code and merge it to master branch when it becomes stable. This is
not a strict GSoC requirement or something like this, but a good
practice. If something goes wrong you can just delete an experimental
branch and go back to working master branch.

--
Best regards,
Aleksander Alekseev

#6Charles Cui
charles.cui1984@gmail.com
In reply to: Charles Cui (#5)
Re: [GSoC] current working status

Hi mentors,

The repo currently can be build on my mac. You can check it out.
Also I am working on the CI config to monitor each commit.

Thanks

2018-06-14 8:29 GMT-07:00 Charles Cui <charles.cui1984@gmail.com>:

Show quoted text

good idea, will keep a feature branch, and set up ci.

On Thu, Jun 14, 2018, 8:03 AM Aleksander Alekseeev <
a.alekseev@postgrespro.ru> wrote:

Hello Charles,

I saw the list of errors you posted. That's because I have some new
function implemented and pushed without testing(in order forget my
change in local machine).
So you are saying it is best to keep each commit workable. Right?

Ideally, yes. You can always create a separate branch to experiment with
new code and merge it to master branch when it becomes stable. This is
not a strict GSoC requirement or something like this, but a good
practice. If something goes wrong you can just delete an experimental
branch and go back to working master branch.

--
Best regards,
Aleksander Alekseev

#7Aleksander Alekseeev
a.alekseev@postgrespro.ru
In reply to: Charles Cui (#6)
Re: [GSoC] current working status

Hello Charles,

The repo currently can be build on my mac. You can check it out.
Also I am working on the CI config to monitor each commit.

Tests pass on Arch Linux with PostgreSQL 11 and Ubuntu 16.04 with
PostgreSQL 9.6. However there is a name conflict in case of PostgreSQL
11: https://afiskon.ru/s/7a/fe681b17f0_paste.txt I suggest to rename
the procedure to `convert_int8_to_char`.

Also GCC still generates a lot of warnings (see my previous message).
I would advise to fix all these warnings, otherwise you can miss a
really important warning. Ideally, the code should be compiled with
-Wall flag.

--
Best regards,
Aleksander Alekseev

#8Charles Cui
charles.cui1984@gmail.com
In reply to: Aleksander Alekseeev (#7)
Re: [GSoC] current working status

got it, i will resolve all these warnings. One wired thing when i set up CI
is the docker image seems having a postgres version which conflicts with my
test version. So, CI is broken now ,although tests pass at my local box. I
will also figure this out.

On Fri, Jun 15, 2018, 1:34 AM Aleksander Alekseeev <
a.alekseev@postgrespro.ru> wrote:

Show quoted text

Hello Charles,

The repo currently can be build on my mac. You can check it out.
Also I am working on the CI config to monitor each commit.

Tests pass on Arch Linux with PostgreSQL 11 and Ubuntu 16.04 with
PostgreSQL 9.6. However there is a name conflict in case of PostgreSQL
11: https://afiskon.ru/s/7a/fe681b17f0_paste.txt I suggest to rename
the procedure to `convert_int8_to_char`.

Also GCC still generates a lot of warnings (see my previous message).
I would advise to fix all these warnings, otherwise you can miss a
really important warning. Ideally, the code should be compiled with
-Wall flag.

--
Best regards,
Aleksander Alekseev