I would create a circle around the point (x, y) with a radius of distance, and then use the information below to create a triangle with a greater height than the radius.
Then, using these two polygons, do ST_Intersection between the two geometries.
NOTE. This method only works if the angle is less than 180 degrees.
Note that if you lengthen the outer edges and meet them at an angle of 90 degrees from the middle of your arc, you have an angle and an adjacent side. Now you can SOH CAH TOA!

Get points B and C
Let the point A = (x, y)
To get the top point:
point B = (x + radius, y + (r * tan (angle)))
to get the bottom point:
point C = (x + radius, y - (r * tan (angle)))
Turn your triangle to you azimouth
Now that you have the triangle, you need to rotate it in your azimuth with pivot A. This means that you need point A at the origin when you rotate. Spinning is the hardest part. Its used in computer graphics all the time. (In fact, if you know OpenGL, you can get it to make a turn for you.)
NOTE. This method rotates counterclockwise at an angle (theta) around the origin. You may need to adjust your azimuth accordingly.
First step: translate your triangle so that A (your original x, y) is at 0,0. Regardless of what you added / subtracted at x and y, do the same for the other two points.
(You need to translate it, because you need to point A at the origin)
Second step: Then rotate points B and C using the rotation matrix. More details here , but I will give you the formula:

Your new point is (x', y')
Do this for points B and C.
Third step: Transfer them back to their original location by adding or subtracting. If you subtracted x for the last time, add it this time.
Finally, use the points {A, B, C} to create a triangle.
And then do ST_Intersection (geom_circle, geom_triangle);
Since this requires a lot of calculations, it would be better to write a program that performs all these calculations and then fills the table.